// ==UserScript==
// @name jovi
// @namespace http://zemlyaozer.com
// @include http://ovipets.com/*
// @include https://ovipets.com/*
// @description OviPets Grease Monkey script providing enhanced UI
// @version 1.23
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_listValues
// @grant GM_registerMenuCommand
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// ==/UserScript==
function joviC() {
// Egg Turning
var turnq = new Array;
this.turn = function () { turn(); };
function turn() {
console.log('turning');
var petc = $('.pet');
addturnq(petc);
if (turnq.length > 0) {
setTimeout(window.jovi.parseturnq, 1000);
} else {
setTimeout( function() { location.reload(); }, 50000 );
}
}
function addturnq(petc) {
for (var p = 0; p < petc.length; p++) {
var cp = petc[p];
var foundEgg = false;
var turnpat = new RegExp('Turn');
if (turnpat.test(cp.parentNode.innerHTML)) {
console.log('found egg');
foundEgg = true;
}
if (!foundEgg) {
console.log('No more eggs found continuing');
continue;
}
var petlA = cp.toString().split('&');
for (var q = 0; q < petlA.length; q++) {
if (petlA[q].match('pet')) {
var petA = petlA[q].split('=');
}
}
turnq.push({ id: petA[1] });
}
}
this.parseturnq = function () {
parseturnq();
};
this.goodtq = false;
function parseturnq() {
if (turnq.length > 0) {
this.goodtq = true;
console.log('turning busy state start ' + isbusy);
if (!isbusy)
busy();
var pet = turnq.pop();
console.log('cmd=pet_turn_egg&PetID=' + pet.id);
if (!testing) {
$.post('/cmd.php',{cmd: "pet_turn_egg",PetID: pet.id});
}
else "testing mode";
setTimeout(window.jovi.parseturnq, 1000);
} else {
console.log('turning busy state stop ' + isbusy);
if (isbusy)
busy();
if (alwaysturn) {
console.log('alwaysturn');
}
if (this.goodtq) {
setTimeout( function() { location.reload(); }, 5000);
}
}
}
// Always turn
var alwaysturn = false;
this.alwaysturnset = function() {
alwaysturnset();
};
function alwaysturnset() {
console.log('alwaysturnset: ');
if (!alwaysturn)
console.log("enable %s",GM_setValue('alwaysturn', true));
else
console.log("disable %s",GM_setValue('alwaysturn', false));
turn();
}
function alwaysturninit() {
alwaysturn = GM_getValue('alwaysturn',false);
var awaysturnchecked = alwaysturn ? 'checked' : '';
var tabsright = document.getElementsByClassName('tabs right')[0];
console.log(tabsright);
console.log('before adding toolbar');
tabsright.insertAdjacentHTML('beforeend', '<li id="jovitab"><span id="jovitabsp" class="search" title="Turn Eggs\nClick to turn eggs on this page.\nPage will refresh when done.\n\nDoes not hatch egss,\nso if there are still egg showing the turn symbol\nit likely means they need to be hatched."><a id="jovitaba" style="background-repeat: no-repeat;background-position: center;background-image:url(data:image/gif;base64,' + eggturnimage + ');"><span style="display: none;">Jovi</span></a></span></li>');
console.log('after adding toolbar');
var jt = document.getElementById('jovitab');
jt.onclick=function() { window.jovi.turn(); };
var maincontent = document.getElementById('main_content');
maincontent.insertAdjacentHTML('afterbegin','<div id="jovialwaysturn"><input type="checkbox" title="Always Turn\n Continuously turns eggs every 5 minutes." style="float:right;" ' + awaysturnchecked + ' ></div>');
var at = document.getElementById('jovialwaysturn');
at.onclick=function() { window.jovi.alwaysturnset(); };
at.style.position = "absolute";
at.style.right = "3px";
at.style.top = "3px";
at.onmouseover = '';
if(alwaysturn) setTimeout(turn, 1000);
}
// Feed
var feedq = new Array;
this.feed = function () {
feed();
};
function feed() {
console.log('feeding');
var tab = getCurrentTab();
var petc = tab.getElementsByClassName('pet');
addfeedq(petc);
if (feedq.length > 0) {
console.log('feed set parsefeedq');
setTimeout(window.jovi.parsefeedq, 1000);
}
}
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
function addfeedq(petc) {
for (var p = 0; p < petc.length; p++) {
var pets = petc[p];
if(hasClass(pets,'name')) {
var petlA = pets.toString().split('&');
for (var q = 0; q < petlA.length; q++) {
if (petlA[q].match('pet')) {
var petA = petlA[q].split('=');
}
}
feedq.push({
id: petA[1]
});
}
}
}
this.parsefeedq = function () {
parsefeedq();
};
function parsefeedq() {
if (feedq.length > 0) {
if (!isbusy)
busy();
var pet = feedq.pop();
if (!testing)
$.post('/cmd.php', {
cmd: 'pet_feed',
PetID: pet.id
});
setTimeout(window.jovi.parsefeedq, 1000);
} else {
if (isbusy)
busy();
this.isbulkfeeding = false;
}
}
function feedalltabscb(idx) {
var tab = getCurrentTab();
if(tab === 0) return (idx - 1);
if(tab.id == 'edit') {console.log('edit tab found exiting');return idx;}
var petc = tab.getElementsByClassName('pet');
addfeedq(petc);
if (feedq.length > 0) {
console.log('feed set parsefeedq');
setTimeout(window.jovi.parsefeedq, 1000);
}
return idx;
}
function feedalltabsret() {
if (feedq.length > 1) {
console.log('feedalltabsret set parsefeedq');
setTimeout(window.jovi.parsefeedq, 1000);
}
}
this.feedalltabs = function() { feedalltabs(); };
function feedalltabs() {
doalltabs(feedalltabscb,feedalltabsret,0);
}
// Check starving button
this.checkstarving = function () { checkstarving(); };
function checkstarving() {
doalltabs(function(idx) { console.log('cb idx ' + idx); return idx; },function() { checkstarvingp2(); },0);
}
this.checkstarvingp2 = function() { checkstarvingp2(); };
function checkstarvingp2() {
console.log('checkstarvingp2');
var alerts = document.getElementsByClassName('alert');
this.starvetabidx = 0;
// if(alerts.length > 0) {
// get pet class
// for(p=0;p<alerts.length;p++) {
// var pet = alerts[p].getElementsByClassName('pet');
// }
// alert("There are "+alerts.length+" pets starving.");
//}
var starvebtn = document.getElementById('jovistarvebtn');
var pets = document.getElementsByClassName('pet');
starvebtn.setAttribute('title','Starving pets '+alerts.length+' of '+pets.length);
}
function stravingbtn() {
// Add a button to check for starving pets
// http://cdn.ovipets.com/famfamfam/exclamation.png
var content = document.getElementById('main_content');
// insert at the top of content
content.insertAdjacentHTML('afterbegin','<img id="jovistarvebtn" title="Starving Pet Patrol\nCheck for starving pets on all tabs\nWhen complete it will stop changing tabs\nMouseover this again for information" src="//cdn.ovipets.com/famfamfam/exclamation.png" title="Check Starving" >');
var starvebtn = document.getElementById('jovistarvebtn');
starvebtn.style.position = "absolute";
starvebtn.style.right = "3px";
starvebtn.style.top = "3px";
starvebtn.onmouseover = '';
starvebtn.onclick = function(e){ window.jovi.checkstarving(); };
}
// Utility functions
var isbusy = false;
this.busy = function () {
busy();
};
this.doalltabs = function(cb,ret,idx) { doalltabs(cb,ret,idx); };
// Do cb on all tabs and compelete with ret
function doalltabs(cb,ret,idx) {
var tabs = document.getElementsByClassName('ui-tabs-anchor');
if(idx < tabs.length) {
var tab = tabs.item(idx);
tab.click();
idx++;
var doallidx = idx;
setTimeout(function() { doalltabs(cb,ret,cb(idx)); },1000);
} else {
tabs.item(0).click();
setTimeout(ret,1000);
}
}
// Change the state of the icon to show loader image
function busy() {
console.log('busy state: ' + isbusy);
if (!isbusy) {
document.getElementById('jovitaba').style.backgroundImage = 'url(data:image/gif;base64,' + ajaxloader + ')';
isbusy = true;
} else {
var revertImage;
if (sub == 'overview')
revertImage = feedimage;
else if (sub == 'hatchery')
revertImage = eggturnimage;
document.getElementById('jovitaba').style.backgroundImage = 'url(data:image/gif;base64,' + revertImage + ')';
isbusy = false;
}
}
// Get friends
function getfriends() {
console.log('checking friends');
var fs = document.getElementsByClassName('friends');
console.log(fs);
}
// Decode search
function getQueryVariable(variable) {
var query = window.location.toString().split('?');
if(query.length < 2) return 0;
var vars = query[1].split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
return decodeURIComponent(pair[1]);
}
}
return 0;
}
var ctab = 0;
// Get the current ovipets tab
function getCurrentTab(p) {
p = typeof p !== 'undefined' ? p : 0;
var panels = document.getElementsByClassName('ui-tabs-panel');
var elem;
for (p; p < panels.length; p++) {
if (panels[p].style.display != 'none') {
if(panels[p].childNodes.length > 0)
elem = panels[p].childNodes[0].childNodes[0];
else {
console.log('failed to retrieve tab info on tab ' + p );
return 0;
}
return elem;
}
}
console.log('fail getting current tab');
return 0;
}
this.isbulkfeeding = false;
function feedswitch() {
console.log('feedswitch isbulkfeeding currenty isbusy '+isbusy);
if(!isbusy) window.jovi.feed();
}
// Random number generator
function shuffle(o) {
for(var j, x, i = o.length; i; j = Math.floor(Math.random()*i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
function randlist(le,lo) {
var a = new Array();
a = le.val().split("\n");
a = a.filter(function(n){if(n.length > 0){return true;}});
if($("#addnumbers").is(":checked")) for(var i=0;i<a.length;i++) { a[i] = (i+1) + " " + a[i];}
a = shuffle(a);
var r = a.join("\n");
lo.val(r+"\n\nThere were "+a.length+" items in your list.\n"+"\nGenerated "+new Date().toUTCString());
}
function randnum(lo,up,out) {
var len = up.val() - lo.val() + 1;
var rn = Math.floor(Math.random()*len);
out.val(parseFloat(rn) + parseFloat(lo.val()));
}
function showrng() {
console.log($("#rngcontainer").length);
if($("#rngcontainer").length) {
$("#rngcontainer").remove();
} else {
var rnghtml = '<div id="rngcontainer" style="width: 600px;height: 400px; top: 200px;position:relative;top:80px;"><button id="closerng">X</button><div id="randlist" style="height: 330px; width: 400px; box-shadow: 2px 2px 20px 2px #1e223e; border-radius: 7px;padding: 10px;background-color: #FFF;float: left;" ><div>The Shuffler</div><textarea id="listentry" placeholder="Enter a list to be shuffled here." style="height: 200px;"></textarea><textarea id="listout" style="height:200px;" placeholder="After clicking \"Shuffle List\" the results will appear here." readonly onclick="this.select();"></textarea><br>Prefix lines with numbers <input type="checkbox" id="addnumbers" checked><input type="button" style="float: right;" value="Shuffle List" id="shufflebtn"><br><br>Random Number Generator<br><input type="text" value="1" size="4" id="lower">-<input type="text" value="10" size="4" id="upper"><input type="button" id="rndbtn" value="Pick"> <input type="text" size="4" readonly id="out"></div></div>';
document.getElementById("wrapper").insertAdjacentHTML('afterbegin', rnghtml);
$("#shufflebtn").on('click',function() { console.log('randlist'); randlist($('#listentry'),$('#listout')); });
$("#rndbtn").on('click',function() { console.log('randlist'); randnum($('#lower'),$('#upper'),$('#out')); });
$("#closerng").on('click',function() { showrng(); });
}
}
this.affectuis = function() { affectuis(); };
function affectuis() {
unsafeWindow.$("textarea").unbind('keyup').off('keyup').removeAttr('keyup');
$("textarea").click(function(e){ e.target.style.height = '100px';e.target.style.resize = 'vertical';});
// On document change check again
$('.ui-button').click(function(e) {
setTimeout(function() { unsafeWindow.$("textarea").unbind('keyup').off('keyup').removeAttr('keyup').click(function(e){ e.target.style.height = '100px';e.target.style.resize = 'vertical';});},1000);
});
}
var ta = 0;
this.editor = function() { editor(); };
function editor() {
console.log('editor');
var dialog = $('#dialog');
if(dialog.style.display == 'none') return;
ta = document.getElementById('dialog').parentNode.removeChild(dialog);
document.getElementById('wrapper').insertAdjacentHTML('afterend','<div id="jovitawrap" style="position: fixed; top: 10px; left: 10px;z-index: 10000;" ><textarea cols="120" rows="30" id="jovita"></textarea> <input type="button" onclick="window.jovi.editorsave();" value="Ok"></div>');
console.log('editor applied');
}
this.editorsave = function() {editorsave();};
function editorsave() {
console.log('editorsave');
var dialog = document.getElementById('dialog');
ta.value = document.getElementById('jovita').value;
var wr = document.getElementById('jovitawrap');
document.getElementById('wrapper').removeChild(wr);
}
var sub = '';
this.subsw = function () { subsw(); };
function subsw() {
console.log('subsw');
//style="background-repeat: no-repeat;background-position: center;background-image:url(data:image/gif;base64,' + joviimage + ' );"
affectuis();
console.log('post affect');
var tabsright = document.getElementsByClassName('tabs right')[0];
switch (getQueryVariable('sub')) {
case 'overview':
//if (getQueryVariable('usr') != 0)
// break;
sub = 'overview';
stravingbtn();
tabsright.insertAdjacentHTML('beforeend', '<li id="jovitab" title="Feed Time!\nClick to feed all pets on the current tab.\nDouble Click to feed all tabs.\n\nFeed all pets seems to stall on larger enclosure sets, stopping feeding after 2000 or so pets, to continue turning do not refresh the page and double click again, it should continue where you stopped. If you notice this bug, please comment on the ticket with the number that it is stopping on currently written to the console as qlen."><span id="jovitabsp" class="search"><a id="jovitaba" style="background-repeat: no-repeat;background-position: center;background-image:url(data:image/gif;base64,' + feedimage + ');"><span style="display: none;">Jovi</span></a></span></li>');
var jt = document.getElementById('jovitab');
//jt.onclick=function() { window.jovi.feed(); };
//jt.ondblclick=function() { console.log('feeding all tabs'); window.jovi.feedalltabs(); };
jt.onclick=function() { setTimeout(feedswitch,1000); };
jt.ondblclick=function() { this.isbulkfeeding = true; window.jovi.feedalltabs(); };
break;
case 'hatchery':
sub = 'hatchery';
if (showhatchery) {
alwaysturninit();
}
break;
case 'profile':
sub = 'profile';
var title = document.getElementById('profile').getElementsByClassName('ui-section-next')[0];
title.insertAdjacentHTML('beforebegin', '<img title="Feed Pet\nOr first action from the left\nThis makes it quick to burn through a few pets and feed, don\'t move your mouse." onclick="getElementById(\'profile\').getElementsByClassName(\'ui-button\')[0].click();" style="cursor: pointer;float: right;" src="data:image/png;base64,'+randomhat+'" />');
break;
default:
console.log('doing default jovi');
tabsright.insertAdjacentHTML('beforeend','<li id="showrng" title="Show Random Number Generator" style="cursor: pointer; float: right;"><span class="search"><a id="showrngd" style="background-repeat: no-repeat;background-position: center;background-image:url(data:image/gif;base64,' + randomhat + ');"><span style="display: none;">Jovi</span></a></span></li>');
$("#showrng").on('click',function() { showrng(); });
break;
}
window.onhashchange = function () {
setTimeout(window.jovi.subsw, 1000);
};
}
function init() {
console.log('init oppw');
switch (getQueryVariable('src')) {
case 'pets':
subsw();
break;
default:
null;
break;
}
//setTimeout('jovi.loop',1000);
}
this.init = function () {
init();
};
var testing = false;
var showhatchery = true;
var feedimage = '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';
var eggturnimage = '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';
var ajaxloader = 'R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==';
var randomhat = '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';
var joviimage = '';
}
window.jovi = new joviC;
function attach() {
if($("#menu").length)
$(function() { jovi.subsw(); });
else
setTimeout(attach,1000);
}
attach();
// Register click implement for restoring buttons onload doesn't fire
GM_registerMenuCommand('Manually Load Jovi',jovi.subsw);