// ==UserScript== // @name JR Mturk Panda Crazy // @version 0.2.9 // @description Collects panda's for you at a certain cycle instead of timers. Lot of organizing of panda's and grouping them together to start and stop them at once. // @author (JohnnyRS on mturkgrind.com and mturkcrowd.com) johnnyrs@allbyjohn.com // @include http*://www.mturk.com/mturk/welcome?pandacrazy=on* // @require http://code.jquery.com/jquery-2.1.4.min.js // @require http://code.jquery.com/ui/1.11.4/jquery-ui.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-layout/1.3.0-rc-30.79/jquery.layout.min.js // @resource jQueryUICSS http://code.jquery.com/ui/1.11.4/themes/pepper-grinder/jquery-ui.css // @resource jQueryLayoutCSS https://cdnjs.cloudflare.com/ajax/libs/jquery-layout/1.3.0-rc-30.79/layout-default.css // @connect allbyjohn.com // @connect mturk.com // @connect tiny.cc // @connect ibotta.com // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_setClipboard // @namespace https://greasyfork.org/users/6406 // @downloadURL none // ==/UserScript== var gScriptVersion = "0.2.9"; var gScriptName = "pandacrazy"; var gDatabaseVersion = "JRAPR16-1.1-1.1.1"; // JR[Date]-[requesters DB Reset].[Alarms DB reset]-[requesters DB Version].[Options DB Version].[Tabs DB Version] var gResetDBVersion = gDatabaseVersion.split("-")[1]; var gDefaultDBVersion = gDatabaseVersion.split("-")[2]; var gLocation = window.location.href; var gSlowDownAuto = true; var gResetAllData = false; var gDelayedSave = false; var gScriptStatus = "normal"; var gNotification = true; var gFullQueue = false; var gFullQueueTimer = null; var gSavedSearchArea = ""; var gMyLayout = null, gAcceptedLogTab = null, gStatusLogTab = null, gQueueWatchTab = null, mCoinSound = []; var gMainData = {"hitCollection":{},"displayInfo":"1", "accepted":0,"skipped":0,"errors":0,"searched":0,"noHits":0,"fullQueue":0,"orphan":0,"tooFast":0, "hitsInQueue":0,"queueStatus":null,"notQual":0,"lastElapsed":0,"jobs":0,"payCounter":0,"projectedEarnings":0}; var gMainMenu = [{"name":"Main","theobject":null}]; var gDefaultRequestersOptions = {}; var gDefaultLayout = {}; var gDefaultSounds = {}; var gHitBgColor="#AFEEEE", gFilteredHitBgColor="#D1E5E5", gSearchesHitBgColor="#AED2D2", gButtonOffBgColor="#FFFFF0", gButtonOnBgColor="#008000"; var gButtonDelayHamBgColor="#00A3CC", gButtonDisabledBgColor="#D3D3D3", gHitMutedColor="#8B4513"; var gTitleColor="#000080", gButtonOffColor="black", gButtonOnColor="white", gButtonDisabledColor="#808080"; var gHitMutedBorderStyle="dotted", gHitBorderStyle="solid"; var gZingOptions = { "0.01":{"SearchGroupAllowed":1,"TallyCountTotalAllowed":0,"MaxProductsSearch":0,"AcceptCodesSearching":false,"MaxReceiptImages":3}, "0.03":{"SearchGroupAllowed":2,"TallyCountTotalAllowed":0,"MaxProductsSearch":2,"AcceptCodesSearching":true,"MaxReceiptImages":3}, "0.05":{"SearchGroupAllowed":3,"TallyCountTotalAllowed":0,"MaxProductsSearch":4,"AcceptCodesSearching":true,"MaxReceiptImages":4}, "0.07":{"SearchGroupAllowed":7,"TallyCountTotalAllowed":0,"MaxProductsSearch":5,"AcceptCodesSearching":true,"MaxReceiptImages":8} }; var gZingFuncOptions = { "1":{"filterName":"Parse Zing Hit Page","functionName":parseZingHitPage} }; var gAlarmSounds = { "less2":{"nameVar":"JR_PANDA_Soundless2","default":"http://tiny.cc/c6c1ay","audio":null,"desc":"Hits paying less than |: ","payRate":"0.02","lessMinutes":"99"}, "less2Short":{"nameVar":"JR_PANDA_Soundless2Short","default":"http://tiny.cc/kyh1ay","audio":null,"desc":"Hits paying less than | with a short timer less than | minute(s): ","payRate":"0.02","lessMinutes":"2"}, "less5":{"nameVar":"JR_PANDA_Soundless5","default":"http://tiny.cc/g7h1ay","audio":null,"desc":"Hits paying less than |: ","payRate":"0.05","lessMinutes":"99"}, "less5Short":{"nameVar":"JR_PANDA_Soundless5Short","default":"http://tiny.cc/99h1ay","audio":null,"desc":"Hits paying less than | with a short timer less than | minute(s): ","payRate":"0.05","lessMinutes":"5"}, "less15":{"nameVar":"JR_PANDA_Soundless15","default":"http://tiny.cc/qai1ay","audio":null,"desc":"Hits paying less than |: ","payRate":"0.15","lessMinutes":"99"}, "less15Short":{"nameVar":"JR_PANDA_Soundless15Short","default":"http://tiny.cc/uai1ay","audio":null,"desc":"Hits paying less than | with a short timer less than | minute(s): ","payRate":"0.15","lessMinutes":"8"}, "less99":{"nameVar":"JR_PANDA_Soundless99","default":"http://tiny.cc/gbi1ay","audio":null,"desc":"Hits paying MORE than |: ","payRate":"0.15","lessMinutes":"99"}, "fullQueue":{"nameVar":"JR_PANDA_FullQueue","default":"http://tiny.cc/wietby","audio":null,"desc":"You have a full queue!","payRate":"","lessMinutes":"99"}, "queueAlert":{"nameVar":"JR_PANDA_QueueAlert","default":"http://tiny.cc/cnxyby","audio":null,"desc":"Lowest timed hit in queue is less than || minutes.","payRate":"","lessMinutes":"5"}, "hasToPause":{"nameVar":"JR_PANDA_hasToPause","default":"http://tiny.cc/w823by","audio":null,"desc":"Logged out or captcha alarm!","payRate":"","lessMinutes":"99"}, }; var gLastAlarm = ""; var gSoundFile = null; var gTabIndex = 0; var gMouseDownTimeoutId = null; var gPressAndHold = false; var gQueueData = []; var gQueueCount = {}; var gMuteQueueWatch = false; var gGroupings = {}; var gGroupingsSort = []; var gGroupingData = {"JR First":{"theNumber":"0","description":"First grouping by default.","grouping":[],"delayed":[]}}; var gDefaultGroupingData = {"JR First":{"theNumber":"0","description":"First grouping by default.","grouping":[],"delayed":[]}}; var gTabsInfo = {}; var gDefaultTabsInfo = {"nextTabNumber":"4","tabCount":"3"}; var gTabsData = []; var gDefaultTabsData = [{"tabName":"Main","tabNumber":"1","positions":null},{"tabName":"Daily Hits","tabNumber":"2","positions":null},{"tabName":"Rare Hits","tabNumber":"3","positions":null}]; var gMainOptions = {}; var gDefaultMainOptions = {"cycleNumber":970,"HamCycleNumber":700,"autoSlowDown":true,"cycleAutoIncrease":10,"alarmVolume":80,"cycleIncrease":10,"cycleDecrease":10,"cycleAdding":650,"queueTimer":40000,"hamDelayTimer":20,"showHelpTooltips":true}; var gRequestersData = {}; var jobDataDefault = {"requesterName":"","requesterId":"","groupId":"","pay":"","title":"","duration":"0","hitsAvailable":0,"timeLeft":"", "continueURL":"","returnURL":"","durationParsed":null}; var gDefaultRequestersData = { "0":{"requesterName":gDatabaseVersion,"requesterId":28,"action":"","groupId":"","pay":"","qual":"","title":"","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "4":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"30B721SJLR5BYYBNQJ0CVKJESN00OC","pay":"0.01","qual":"ibotta","title":"Are these the same?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":15}, "5":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"30B721SJLR5BYYBNQJ0CVKJEQOZ0OB","pay":"0.01","qual":"","title":"Are these the same?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":15}, "6":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3ZXRRTK2NDCB5NW5M24C9P2OWG41OF","pay":"0.01","qual":"ibotta","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":8}, "7":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3NYGPW9OTYRQLJTE9DQJQJRQJ2IZPS","pay":"0.01","qual":"","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":8}, "8":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3R35RPFD7JUTQN8612HRYP7E6LZ1PV","pay":"0.03","qual":"ibotta","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":8}, "9":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3ZXRRTK2NDCB5NW5M24C9P2OVF61OE","pay":"0.03","qual":"","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":8}, "10":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3CRC4NO2BIQQWQ3GX0HLFPTFOD30SA","pay":"0.05","qual":"ibotta","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"60 minutes","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":12}, "11":{"requesterName":"Zing","requesterId":"AGVV5AWLJY7H2","action":"Panda","groupId":"3787DLY3Y49RIF1DIJQB3Z8BUNP1T2","pay":"0.05","qual":"","title":"Does this receipt contain the following products?","queueLimit":0,"duration":"0","audioforce":"less2","dailyLimit":0,"mute":false,"position":null,"tabNumber":"2","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":12}, "13":{"requesterName":"Viral Mturk","requesterId":"A2UFLDVZ75JD9M","action":"Panda","groupId":"3ZXEP6UEGGA75UPGRQ2UPK3XA4YO8B","pay":"0.25","qual":"","title":"Rate the quality of ads on YouTube","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "14":{"requesterName":"MyLikes","requesterId":"A239M0XNXTKQZ7","action":"Panda","groupId":"3EGCY5R6XY0PS57S4R2H1KZW7LSAYC","pay":"0.01","qual":"","title":"Identify Images with Mature Content","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "15":{"requesterName":"MyLikes","requesterId":"A239M0XNXTKQZ7","action":"Panda","groupId":"3USMLONC9E5D7T4TWRD6UWVBJLN85E","pay":"0.03","qual":"","title":"Identify Images with Mature Content","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "16":{"requesterName":"MyLikes","requesterId":"A239M0XNXTKQZ7","action":"Panda","groupId":"37G59K9AEU0BNMXNCLOH5POEZUC9YI","pay":"0.03","qual":"","title":"Identify Videos with Mature Content","queueLimit":0,"duration":"15 minutes","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "17":{"requesterName":"Steven Snow","requesterId":"A3GAVAUPTHM0B8","action":"Panda","groupId":"3X19M43Z4VULD73G1I2N3GGRYF10D8","pay":"0.06","qual":"","title":"steven snow search 3X..D8","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":3,"once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "18":{"requesterName":"Steven Snow","requesterId":"A3GAVAUPTHM0B8","action":"Panda","groupId":"3TJJ8HSJVIVGSMA3ZXVL0CV5EGV28D","pay":"0.05","qual":"","title":"steven snow url 3T..8D","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"3","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "19":{"requesterName":"Venue Quality","requesterId":"A14AT838CPSKA6","action":"Panda","groupId":"3EM4DVSA8U8J6KF08Q5EM8I2NYE308","pay":"0.01","qual":"","title":"locations same","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "20":{"requesterName":"Venue Quality","requesterId":"A14AT838CPSKA6","action":"Panda","groupId":"3D8O2NKTAGFJD90I499E0D26RON13W","pay":"0.01","qual":"","title":"locations adult","queueLimit":0,"duration":"5 minutes","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "21":{"requesterName":"Venue Quality","requesterId":"A14AT838CPSKA6","action":"Panda","groupId":"ZZAWVTYW3Z9ZTAX43ZD0","pay":"0.01","qual":"","title":"locations family","queueLimit":0,"duration":"0","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "22":{"requesterName":"Annabel","requesterId":"A3HB3KPJ2RZ2K8","action":"Panda","groupId":"3CVHT3IKTXQR8KSLQHD2N8KOQZPR06","pay":"0.50","qual":"","title":"Comparing two statements with each other","queueLimit":0,"duration":"60 minutes","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0}, "23":{"requesterName":"Rob Grady","requesterId":"AM07BBZNC6UTQ","action":"Panda","groupId":"33X7UBO5WUFB78Y5WJ3MVC35LFMU05","pay":"0.03","qual":"","title":"Transcribe Waffle House Guest Check","queueLimit":0,"duration":"5 minutes","audioforce":"","dailyLimit":0,"mute":false,"position":null,"tabNumber":"1","once":false,"dailyDone":0,"day":0,"filterMode":0,"hamTimer":20,"friendlyRName":"","friendlyTitle":"","queueHitLimit":0} }; var gExcludeIds = ["38FT9G80DL83PUCSQBVANJBIKGSLHM"]; var jqUI_CssSrc = GM_getResourceText("jQueryUICSS"); var jqLayout_CssSrc = GM_getResourceText("jQueryLayoutCSS"); Date.prototype.stdTimezoneOffset = function() { var jan = new Date(this.getFullYear(), 0, 1); var jul = new Date(this.getFullYear(), 6, 1); return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); } Date.prototype.dst = function() { return this.getTimezoneOffset() < this.stdTimezoneOffset(); } function formatAMPM(theFormat,theDate,theTimeZone) { var d = (theDate) ? theDate : new Date(); if (theTimeZone == "mturk") { var mturkTZOffset = -8; var today = new Date(); if (today.dst()) mturkTZOffset++; var utc = d.getTime() + (d.getTimezoneOffset() * 60000); var MturkTime = utc + (3600000 * mturkTZOffset); d = new Date(MturkTime); } var minutes = d.getMinutes().toString().length == 1 ? '0'+d.getMinutes() : d.getMinutes(), hours = d.getHours().toString().length == 1 ? '0'+d.getHours() : d.getHours(), ampm = d.getHours() >= 12 ? 'pm' : 'am', months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'], days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; if (theFormat=="short") return ('0' + (d.getMonth()+1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2) + '-' + d.getFullYear() + '(' + hours + ':' + minutes + ampm + ')'; else if (theFormat=="onlydate") return ('0' + (d.getMonth()+1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2) + '-' + d.getFullYear(); else return days[d.getDay()]+' '+months[d.getMonth()]+' '+d.getDate()+' '+d.getFullYear()+' '+hours+':'+minutes+ampm; } function formatTimeZone(theFormat,theDate,theTimeZone) { return formatAMPM(theFormat,theDate,theTimeZone); } function getTimeLeft(theTime) { if (theTime) { var tempArray = (theTime.indexOf("second") != -1) ? theTime.split("second")[0].trim().split(" ") : null; var seconds = (tempArray) ? tempArray[tempArray.length-1] : "0"; tempArray = (theTime.indexOf("minute") != -1) ? theTime.split("minute")[0].trim().split(" ") : null; var minutes = (tempArray) ? tempArray[tempArray.length-1] : "0"; tempArray = (theTime.indexOf("hour") != -1) ? theTime.split("hour")[0].trim().split(" ") : null; var hours = (tempArray) ? tempArray[tempArray.length-1] : "0"; tempArray = (theTime.indexOf("day") != -1) ? theTime.split("day")[0].trim().split(" ") : null; var days = (tempArray) ? tempArray[tempArray.length-1] : "0"; tempArray = (theTime.indexOf("week") != -1) ? theTime.split("week")[0].trim().split(" ") : null; var weeks = (tempArray) ? tempArray[tempArray.length-1] : "0"; return( {"weeks":weeks,"days":days,"hours":hours,"minutes":minutes,"seconds":seconds} ); } else return null; } function checkNotifications() { // Let's check if the browser supports notifications if (!("Notification" in window)) return false; else if (Notification.permission === "granted") return true; else if (Notification.permission !== 'denied') { Notification.requestPermission(function (permission) { if (permission === "granted") return true; }); } return false; } function showNotification( title, message, tag ) { var n = new Notification(title, { body: message, icon: "http://www.allbyjohn.com/mturk/Messaging-Online-icon.png", tag: tag}); if (navigator.userAgent.search("Chrome") >= 0) n.onshow = function () { setTimeout(n.close.bind(n), 20000); } } // Database using setValue and getValue function convertDatabase(theDataBase) { var newDataBase = {}; $.each(theDataBase, function( index, value ) { newDataBase[index] = value; if (newDataBase[index].action=="preta") newDataBase[index].action = "pantha"; }); newDataBase[0].requesterName = gDatabaseVersion; return newDataBase; } function convertTabDatabase() { if (gTabsData[0].tabName == "Holder") { // temporary for testing computer var newDataBase = []; gTabInfo = {"nextTabNumber":"" + gTabsData[0].tabNumber,"tabCount":"" + gTabsData.length} $.each(gTabsData, function( index, value ) { if (index>0) newDataBase.push(value); }); gTabsData = newDataBase; }; } function getBase64Audio(theData) { var base64AudioData = new Uint8Array(theData); var i = base64AudioData.length; var binaryString = new Array(i); while (i--) { binaryString[i] = String.fromCharCode(base64AudioData[i]); } var data = binaryString.join(''); return(window.btoa(data)); } function loadSoundFiles(soundNumber,keyArray,resetMe) { resetMe = resetMe || false; var savedDBVersion = gRequestersData[0].requesterName; var resetDBVersion = savedDBVersion.split("-")[1]; if (soundNumber < keyArray.length) { if ((gResetDBVersion.split(".")[1] > resetDBVersion.split(".")[1]) || gResetAllData) GM_deleteValue(gAlarmSounds[keyArray[soundNumber]].nameVar); var gotBase64 = (resetMe) ? null : GM_getValue(gAlarmSounds[keyArray[soundNumber]].nameVar,null); this.firstTime = this.firstTime || false; if (gotBase64 === null) { if (!this.firstTime) addToWaitDialog("For your first time this might take a few seconds.
Loading Alarms ",false); this.firstTime = true; requestUrl(gAlarmSounds[keyArray[soundNumber]].default,0,function(theResult,theNumber,data1,data2) { addToWaitDialog(" .",false); var base64 = getBase64Audio(theResult.response); GM_setValue(gAlarmSounds[keyArray[soundNumber]].nameVar,JSON.stringify(base64)); gAlarmSounds[keyArray[soundNumber]].audio = new Audio("data:audio/wav;base64," + base64); loadSoundFiles(soundNumber+1,keyArray,resetMe); },function() { errorRequest(); }, "", "", "arraybuffer"); } else { gAlarmSounds[keyArray[soundNumber]].audio = new Audio("data:audio/wav;base64," + JSON.parse(gotBase64)); loadSoundFiles(soundNumber+1,keyArray,resetMe); } } else continueLoading(); } function fillInGroupings() { $.each(gGroupingData, function( index, value ) { if (!value.grouping) value.grouping = []; gGroupings[index] = {"data":value,"collecting":false}; gGroupingsSort.push(index); defaultFillIn(value,gDefaultGroupingData["JR First"]); }); } function defaultFillIn(data,defaultData) { $.each(defaultData, function( index, value ) { if (!(index in data)) { data[index] = value; } }); } function loadInDBVersions(passedDatabase) { var tempData = null; if (passedDatabase) tempData = passedDatabase; else tempData = JSON.parse(GM_getValue("JR_PANDA_RequestersData",JSON.stringify(gDefaultRequestersData))); var savedDBVersion = tempData[0].requesterName; var resetDBVersion = savedDBVersion.split("-")[1]; var defaultDBVersion = savedDBVersion.split("-")[2]; if (gResetDBVersion.split(".")[0] > resetDBVersion.split(".")[0]) { GM_deleteValue("JR_PANDA_RequestersData"); tempData = JSON.parse(GM_getValue("JR_PANDA_RequestersData",JSON.stringify(gDefaultRequestersData))); } tempData = convertDatabase(tempData); $.each(tempData, function( index, value ) { defaultFillIn(value,gDefaultRequestersData[0]); }); return tempData; } function loadSettings() { if (gResetAllData) GM_deleteValue("JR_PANDA_RequestersData"); gRequestersData = loadInDBVersions(); if (gResetAllData) GM_deleteValue("JR_PANDA_MainOptions"); gMainOptions = JSON.parse(GM_getValue("JR_PANDA_MainOptions",JSON.stringify(gDefaultMainOptions))); defaultFillIn(gMainOptions,gDefaultMainOptions); if (gResetAllData) GM_deleteValue("JR_PANDA_TabsData"); gTabsData = JSON.parse(GM_getValue("JR_PANDA_TabsData",JSON.stringify(gDefaultTabsData))); gTabsInfo = JSON.parse(GM_getValue("JR_PANDA_TabsInfo",JSON.stringify(gDefaultTabsInfo))); convertTabDatabase(); $.each(gTabsData, function( index, value ) { defaultFillIn(value,gDefaultTabsData[0]); }); if (gResetAllData) GM_deleteValue("JR_PANDA_GroupingData"); gGroupingData = JSON.parse(GM_getValue("JR_PANDA_GroupingData",JSON.stringify(gDefaultGroupingData))); fillInGroupings(); loadSoundFiles(0,Object.keys(gAlarmSounds)); } function fillInSoundOptions(soundOptions) { $.each(soundOptions, function( index, value ) { gAlarmSounds[index].payRate = value.payRate; gAlarmSounds[index].lessMinutes = value.lessMinutes; }); } function setupSoundOptions() { var soundOptions = {}; $.each(gAlarmSounds, function( index, value ) { soundOptions[index] = {"payRate":value.payRate,"lessMinutes":value.lessMinutes}; }); return soundOptions; } function saveSettings(doAfter) { var soundOptions = setupSoundOptions(); GM_setValue("JR_PANDA_RequestersData",JSON.stringify(gRequestersData)); GM_setValue("JR_PANDA_MainOptions",JSON.stringify(gMainOptions)); GM_setValue("JR_PANDA_TabsData",JSON.stringify(gTabsData)); GM_setValue("JR_PANDA_TabsInfo",JSON.stringify(gTabsInfo)); GM_setValue("JR_PANDA_GroupingData",JSON.stringify(gGroupingData)); GM_setValue("JR_PANDA_SoundOptions",JSON.stringify(soundOptions)); if (doAfter) setTimeout( function() { doAfter(); },200); } function checkDelayedSave() { if (gDelayedSave) saveSettings(); } // Jquery Creating HTML elements Functions -------- function toggleButton(thisButton,doThisOn,doThisOff,mode,modeStatus) { // dothison = status on function, dothisOff = status off function, mode = status mode to force change to, modestatus = force on or off function var theStatus = $(thisButton).data("status"); // Get status of the button var doStatus = (modeStatus) ? modeStatus : (theStatus != "on" && theStatus!=mode) ? "on" : "off"; if (mode && theStatus!=mode) $(thisButton).data("status",mode); else $(thisButton).data("status",doStatus); if (doStatus=="on" && doThisOn) doThisOn($(thisButton).data("theNumber"),thisButton,mode); if (doStatus=="off" && doThisOff) doThisOff($(thisButton).data("theNumber"),thisButton,mode); updateHitColors($(thisButton).data("theNumber"),thisButton); } function toggleButtonOff(thisButton,doThisOn,doThisOff,passedMode) { $(thisButton).data("status","off"); updateHitColors($(thisButton).data("theNumber"),thisButton); if (doThisOff) doThisOff($(thisButton).data("theNumber"),thisButton,passedMode); } function toggleButtonOn(thisButton,doThisOn,doThisOff) { if ($(thisButton).data("status") == "off") { $(thisButton).data("status","on"); updateHitColors($(thisButton).data("theNumber"),thisButton); if (doThisOn) doThisOn($(thisButton).data("theNumber"),thisButton); } } function checkButtonsStatus() { if (gScriptStatus == "normal") return true; else return false; } function createDiv(theHtml) { var inner = (theHtml) ? theHtml : ""; return $('
').html(inner); } function createSpan(theHtml) { var inner = (theHtml) ? theHtml : ""; return $('').html(inner); } function createTextInput(theValue) { return $("").attr({ "type": "text", "value": theValue }); } function createCheckbox(theValue) { return $("").attr({ "type": "checkbox", "value": theValue }); } function createRadioButton(theName,theValue) { return $("").attr({ "type": "radio", "name": theName, "value": theValue }); } function createLink(theText,theUrl,theTarget,theTitle) { return $('',{text: theText,target: theTarget,title: theTitle,href: theUrl}); } function createSpanButton(toDo,theHtml,theBackgroundColor,theColor,theFontSize) { var backgroundColor = (theBackgroundColor) ? theBackgroundColor : "initial"; var textColor = (theColor) ? theColor : "initial"; var fontSize = (theFontSize) ? theFontSize : "9px"; var theButton = createSpan(theHtml).data("status","off") .data("backgroundColor",backgroundColor) .data("textColor",textColor) .data("htmlText",theHtml) .disableSelection() .dblclick(function(e) { e.stopPropagation(); }) .css({"font-size":fontSize, "padding":"0px 2px", "background-color":backgroundColor, "color":textColor, "border":"2px groove red", "cursor":"default", "margin":"0px 1px"}); if (toDo) theButton.click( function(e) { if (checkButtonsStatus()) {toDo(e);} }); return theButton; } function createContainer() { var containerDiv = createDiv(); containerDiv.css({"padding-left":"3px", "padding-right":"3px","padding-top":"0px","padding-bottom":"1px"}); return containerDiv; } function createPanels(goAppend) { var panelContainer = createContainer() .attr("id","panelContainer") .appendTo(goAppend); return panelContainer; } function createPanel(goAppend) { var panel = createContainer().appendTo(goAppend); return panel; } function createTabs(goAppend,isSortable,idName) { var tabList = $("