HIT Monitor for worker.mturk.com

Browser/SMS/email alerts for mturk HITs

// ==UserScript== 
// @name        HIT Monitor for worker.mturk.com
// @description Browser/SMS/email alerts for mturk HITs
// @author      DCI
// @namespace   www.redpandanetwork.org
// @include     https://worker.mturk.com/HMworker
// @version     1.3
// @include     https://mail.google.com*
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_deleteValue
// @grant       GM_xmlhttpRequest
// @grant       GM_openInTab
// @grant       GM_setClipboard
// @include     https://worker.mturk.com/*secretredpandatreehouse*
// ==/UserScript==

if (window.location.toString() === "https://worker.mturk.com/HMworker"){
    document.title = "HIT Monitor";
    document.getElementsByTagName("body")[0].innerHTML = "";
    document.getElementsByTagName("body")[0].style.height = "100%";
    var headline = document.createElement("h1");
    headline.innerHTML = "HIT Monitor";
    headline.style.color = '#324F17'
    headline.style.fontSize = '48'
    headline.style.fontWeight = 'bold';
    headline.style.textAlign = 'center'
    headline.style.textDecoration = "underline";
    headline.style.marginBottom = "10px";
    var pageTable = document.createElement("table");
    document.getElementsByTagName('body')[0].appendChild(pageTable);
    document.getElementsByTagName('table')[0].appendChild(headline);
    //document.getElementsByTagName('table')[0].style.border = "thick solid #324F17";
    document.getElementsByTagName('table')[0].style.height = "100%";
    document.getElementsByTagName('table')[0].style.width = "100%";

    var whites = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(whites);
    whites.style.textAlign = 'center'
    whites.style.marginBottom = "0px";

    var ScanDelayMenu = document.createElement("select");
    ScanDelayMenu.style.height ="30px";
    ScanDelayMenu.style.width ="120px";
    ScanDelayMenu.style.margin = "5px";
    ScanDelayMenu.style.background = "#FFFFFF";
    ScanDelayMenu.style.color = 'rgb(50, 79, 23)';
    ScanDelayMenu.style.fontWeight = 'bold';
    ScanDelayMenu.style.border = "thick solid #324F17";
    whites.appendChild(ScanDelayMenu);
    var optionDisplay1 = document.createElement("option");
    var savedScanDelay = GM_getValue('scanDelay') ? GM_getValue('scanDelay') : "Scan Delay";
    if (savedScanDelay !== "Scan Delay"){
        optionDisplay1.text = savedScanDelay + " Seconds";
    } else{
        optionDisplay1.text = "Scan Delay";
        GM_setValue('scanDelay',10);
    };
    ScanDelayMenu.add(optionDisplay1);
    var option3 = document.createElement("option");
    option3.value = 3;
    option3.text = "3 Seconds";
    ScanDelayMenu.add(option3);
    var option5 = document.createElement("option");
    option5.value = 5;
    option5.text = "5 Seconds";
    ScanDelayMenu.add(option5);
    var option7 = document.createElement("option");
    option7.value = 7;
    option7.text = "7 Seconds";
    ScanDelayMenu.add(option7);
    var option10 = document.createElement("option");
    option10.value = 10;
    option10.text = "10 Seconds";
    ScanDelayMenu.add(option10);
    var option15 = document.createElement("option");
    option15.value = 15;
    option15.text = "15 Seconds";
    ScanDelayMenu.add(option15);
    var option20 = document.createElement("option");
    option20.value = 20;
    option20.text = "20 Seconds";
    ScanDelayMenu.add(option20);
    var option30 = document.createElement("option");
    option30.value = 30;
    option30.text = "30 Seconds";
    ScanDelayMenu.add(option30);
    var option45 = document.createElement("option");
    option45.value = 45;
    option45.text = "45 Seconds";
    ScanDelayMenu.add(option45);
    var option60 = document.createElement("option");
    option60.value = 60;
    option60.text = "60 Seconds";
    ScanDelayMenu.add(option60);
    ScanDelayMenu.addEventListener(
         'change',
         function() {
             var scanDelay = document.getElementsByTagName('select')[0].value;
             GM_setValue('scanDelay',scanDelay);},
         false
      );

    var SleepDelayMenu = document.createElement("select");
    SleepDelayMenu.style.height ="30px";
    SleepDelayMenu.style.width ="120px";
    SleepDelayMenu.style.margin = "5px";
    SleepDelayMenu.style.background = "#FFFFFF";
    SleepDelayMenu.style.color = 'rgb(50, 79, 23)';
    SleepDelayMenu.style.fontWeight = 'bold';
    SleepDelayMenu.style.border = "thick solid #324F17";
    whites.appendChild(SleepDelayMenu);
    var optionDisplay2 = document.createElement("option");
    var savedSleepDelay = GM_getValue('sleepDelay') ? GM_getValue('sleepDelay') : "Sleep Delay";
    if (savedSleepDelay !== "Sleep Delay"){
        optionDisplay2.text = savedSleepDelay + " Minutes";
    } else {
        optionDisplay2.text = "Sleep Delay"
    };
    optionDisplay2.value = savedSleepDelay;
    SleepDelayMenu.add(optionDisplay2);
    var choice0 = document.createElement("option");
    choice0.value = 0;
    choice0.text = "0 Minutes";
    SleepDelayMenu.add(choice0);
    var choiceHalf = document.createElement("option");
    choiceHalf.value = 0.5;
    choiceHalf.text = "0.5 Minutes";
    SleepDelayMenu.add(choiceHalf);
    var choice1 = document.createElement("option");
    choice1.value = 1;
    choice1.text = "1 Minute";
    SleepDelayMenu.add(choice1);
    var choice2 = document.createElement("option");
    choice2.value = 2;
    choice2.text = "2 Minutes";
    SleepDelayMenu.add(choice2);
    var choice3 = document.createElement("option");
    choice3.value = 3;
    choice3.text = "3 Minutes";
    SleepDelayMenu.add(choice3);
    var choice5 = document.createElement("option");
    choice5.value = 5;
    choice5.text = "5 Minutes";
    SleepDelayMenu.add(choice5);
    var choice7 = document.createElement("option");
    choice7.value = 7;
    choice7.text = "7 Minutes";
    SleepDelayMenu.add(choice7);
    var choice10 = document.createElement("option");
    choice10.value = 10;
    choice10.text = "10 Minutes";
    SleepDelayMenu.add(choice10);
    var choice15 = document.createElement("option");
    choice15.value = 15;
    choice15.text = "15 Minutes";
    SleepDelayMenu.add(choice15);
    var choice20 = document.createElement("option");
    choice20.value = 20;
    choice20.text = "20 Minutes";
    SleepDelayMenu.add(choice20);
    var choice30 = document.createElement("option");
    choice30.value = 30;
    choice30.text = "30 Minutes";
    SleepDelayMenu.add(choice30);
    var choice45 = document.createElement("option");
    choice45.value = 45;
    choice45.text = "45 Minutes";
    SleepDelayMenu.add(choice45);
    var choice60 = document.createElement("option");
    choice60.value = 60;
    choice60.text = "60 Minutes";
    SleepDelayMenu.add(choice60);
    SleepDelayMenu.addEventListener(
         'change',
         function() {
             var sleepDelay = document.getElementsByTagName('select')[1].value;
             GM_setValue('sleepDelay',sleepDelay);},
         false
      );

    var autoLaunchMenu = document.createElement("select");
    autoLaunchMenu.style.height ="30px";
    autoLaunchMenu.style.width ="120px";
    autoLaunchMenu.style.margin = "5px";
    autoLaunchMenu.style.background = "#FFFFFF";
    autoLaunchMenu.style.color = 'rgb(50, 79, 23)';
    autoLaunchMenu.style.fontWeight = 'bold';
    autoLaunchMenu.style.border = "thick solid #324F17";
    whites.appendChild(autoLaunchMenu);
    var optionDisplay = document.createElement("option");
    var savedAutoLaunch = GM_getValue('autoLaunch') ? GM_getValue('autoLaunch') : "Auto Launch";
    optionDisplay.value = savedAutoLaunch
    optionDisplay.text = savedAutoLaunch
    autoLaunchMenu.add(optionDisplay);
    var value1 = document.createElement("option");
    value1.value = "Auto ON";
    value1.text = "Auto ON";
    autoLaunchMenu.add(value1);
    var value2 = document.createElement("option");
    value2.value = "Auto OFF";
    value2.text = "Auto OFF";
    autoLaunchMenu.add(value2);
    autoLaunchMenu.addEventListener(
         'change',
         function() {
             var autoLaunch = document.getElementsByTagName('select')[2].value;
             GM_setValue('autoLaunch',autoLaunch);},
         false
      );

    var smsMenu = document.createElement("select");
    smsMenu.style.height ="30px";
    smsMenu.style.width ="120px";
    smsMenu.style.margin = "5px";
    smsMenu.style.background = "#FFFFFF";
    smsMenu.style.color = 'rgb(50, 79, 23)';
    smsMenu.style.fontWeight = 'bold';
    smsMenu.style.border = "thick solid #324F17";
    whites.appendChild(smsMenu);
    var smsOption = document.createElement("option");
    var savedSms = GM_getValue('sms') ? GM_getValue('sms') : "SMS Alert";
    smsOption.value = savedSms
    smsOption.text = savedSms
    smsMenu.add(smsOption);
    var value1 = document.createElement("option");
    value1.value = "SMS ON";
    value1.text = "SMS ON";
    smsMenu.add(value1);
    var value2 = document.createElement("option");
    value2.value = "SMS OFF";
    value2.text = "SMS OFF";
    smsMenu.add(value2);
    smsMenu.addEventListener(
         'change',
         function() {
             var smsValue = document.getElementsByTagName('select')[3].value;
             GM_setValue('sms',smsValue);},
         false
      );

    var dataClip = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(dataClip);
    dataClip.style.textAlign = 'center'
    dataClip.style.marginBottom = '35px'

    function importerer(){
        var importList = prompt('Import search list.\n\n**Warning** This will delete your current search list.');
        if (importList.length > 0){
            (GM_setValue("combined", importList));
            alert('Search list imported. Reload page.')
        }
    }

    var importer = document.createElement("input");
    importer.type = "button";
    importer.value = "Import";
    importer.style.height ="30px";
    importer.style.width ="120px";
    importer.style.margin = "5px";
    importer.style.marginTop = "0px";
    dataClip.appendChild(importer);
    importer.style.background = "#FFFFFF";
    importer.style.color = 'rgb(50, 79, 23)';
    importer.style.fontWeight = 'bold';
    importer.style.border = "thick solid #324F17";
    importer.addEventListener("click", importerer, false);

    function exporterer(){
        GM_setClipboard(GM_getValue('combined'));
        alert('Search list copied to clipboard');
    };

    var exporter = document.createElement("input");
    exporter.type = "button";
    exporter.value = "Export";
    exporter.style.height ="30px";
    exporter.style.width ="120px";
    exporter.style.margin = "5px";
    exporter.style.marginTop = "0px";
    dataClip.appendChild(exporter);
    exporter.style.background = "#FFFFFF";
    exporter.style.color = 'rgb(50, 79, 23)';
    exporter.style.fontWeight = 'bold';
    exporter.style.border = "thick solid #324F17";
    exporter.addEventListener("click", exporterer, false);

    function deleteAll(){
        var nuke = confirm('**WARNING** \n\nThis will delete all of your settings and your search list.\n\nAre you sure you want to do this?');
        if (nuke === true){
            GM_deleteValue("combined");
            GM_deleteValue("scanDelay");
            GM_deleteValue("sleepDelay");
            GM_deleteValue("autoLaunch");
            GM_deleteValue("run");
            GM_deleteValue("sms");
            alert('Storage Deleted');
        }
    };

    var deleter = document.createElement("input");
    deleter.type = "button";
    deleter.value = "Delete All";
    deleter.style.height ="30px";
    deleter.style.width ="120px";
    deleter.style.margin = "5px";
    deleter.style.marginTop = "0px";
    dataClip.appendChild(deleter);
    deleter.style.background = "#FFFFFF";
    deleter.style.color = 'rgb(50, 79, 23)';
    deleter.style.fontWeight = 'bold';
    deleter.style.border = "thick solid #324F17";
    deleter.addEventListener("click", deleteAll, false);

    function addSms(){
        var phone = prompt('Add email addresses.\n\n\If you do not know your phone\'s email address, ' + 
        'you can find out by sending a text from your phone to your email account. ' +
        'You can add multiple email addreses seperated by a comma.' +
        '\n\nIn order for this function to work, you need to have a gmail account and be logged ' +
        'into Google in the same browser that HIT Monitor is running in. ' + 
        'Also make sure to enable pop ups from this page.');
        GM_setValue('phoneNumber',phone);
    };

    var smsAdd = document.createElement("input");
    smsAdd.type = "button";
    smsAdd.value = "Add SMS";
    smsAdd.style.height ="30px";
    smsAdd.style.width ="120px";
    smsAdd.style.margin = "5px";
    smsAdd.style.marginTop = "0px";
    dataClip.appendChild(smsAdd);
    smsAdd.style.background = "#FFFFFF";
    smsAdd.style.color = 'rgb(50, 79, 23)';
    smsAdd.style.fontWeight = 'bold';
    smsAdd.style.border = "thick solid #324F17";
    smsAdd.addEventListener("click", addSms, false);

    var beforeGreens = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(beforeGreens);

    function toggle(){
        if (this.style.background ==='rgb(50, 79, 23) none repeat scroll 0% 0%' || this.style.background ==='rgb(50, 79, 23)'){
            this.style.background = 'rgb(255,0,0)';
            this.style.border = "thick solid rgb(255,0,0)"
            var buttonName = this.value;
            for (f = 0; f < combined.length; f++){
                if (combined[f].split('|*|')[0].trim() === buttonName.trim()){
                    dump.push(combined[f]);
                    combined.splice(f,1);
                };
            };
        }
        else {
            this.style.background = 'rgb(50, 79, 23)';
            this.style.border = 'thick solid rgb(50, 79, 23)';
            var buttonName = this.value;
            for (f = 0; f < dump.length; f++){
                if (dump[f].split('|*|')[0].trim() === buttonName.trim()){
                    combined.push(dump[f]);
                    dump.splice(f,1);
                };
            };            
        };
    };
    function scrap(){
      var nameButtons = document.getElementsByClassName('nameButton');
      for (f = 0; f < nameButtons.length; f++){
        if (nameButtons[f].style.background ==='rgb(255, 0, 0) none repeat scroll 0% 0%' || nameButtons[f].style.background ==='rgb(255, 0, 0)'){
          nameButtons[f].style.background = 'rgb(50, 79, 23)';
          nameButtons[f].style.border = 'thick solid rgb(50, 79, 23)';
          var buttonName = nameButtons[f].value;
          for (f = 0; f < dump.length; f++){
            if (dump[f].split('|*|')[0].trim() === buttonName.trim()){
              combined.push(dump[f]);
              dump.splice(f,1);
            }
          }  
        }
      }
    var permarray = GM_getValue("combined");
        for (f = 0; f < combined.length; f++){
            if (combined[f].split('|*|')[0].trim() === this.value.trim()){
                combined.splice(f,1);
                GM_setValue("combined", JSON.stringify(combined));
                this.remove();
            }
        }
    }

    function addNew(){
        var searchIn = prompt('Enter search term.\n\nYour search term can be anything that can be ' +
        'found from the search page, including inside of links. This means that you can use requester IDs and ' +
        'group IDs in addition to requester names, HIT titles, key words and description text.\n\n Search terms ' +
        'are not case sensitive.');
        if (searchIn !== null){
            var nameIn = prompt('Enter name.\n\nThe name is what will appear on your buttons and in alerts, but ' +
            'is not used in searches.');
        };
        if ((searchIn !== null) && (nameIn !== null)){
        var nameButtons = document.getElementsByClassName('nameButton');
            for (f = 0; f < nameButtons.length; f++){
            if (nameButtons[f].style.background ==='rgb(255, 0, 0) none repeat scroll 0% 0%' || nameButtons[f].style.background ==='rgb(255, 0, 0)'){
            nameButtons[f].style.background = 'rgb(50, 79, 23)';
            nameButtons[f].style.border = 'thick solid rgb(50, 79, 23)';
            var buttonName = nameButtons[f].value;
            for (f = 0; f < dump.length; f++){
              if (dump[f].split('|*|')[0].trim() === buttonName.trim()){
                combined.push(dump[f]);
                dump.splice(f,1);
              }
            }  
          }
        }
            combined.push(nameIn + "|*|" + searchIn);
            GM_setValue("combined", JSON.stringify(combined));
            var add = document.createElement("input");
            add.type = "button";
            add.setAttribute("class","nameButton");
            add.setAttribute("title", searchIn);
            add.value = nameIn;
            add.style.marginRight = "0";
            add.style.height ="25px";
            add.style.width ="auto";
            add.style.margin = "5px";
            greens.appendChild(add);
            add.style.background = 'rgb(50, 79, 23)';
            add.style.color = "#FFFFFF";
            add.style.fontWeight = 'bold';
            add.style.border = "thick solid #324F17";
            add.addEventListener("click", toggle, false);
            add.addEventListener("dblclick", scrap, false);
        };
    };

    var search = document.createElement("input");
    search.type = "button";
    search.value = "Add Search";
    search.style.height ="30px";
    search.style.width ="120px";
    search.style.margin = "5px";
    beforeGreens.appendChild(search);
    search.style.background = "#FFFFFF";
    search.style.color = 'rgb(50, 79, 23)';
    search.style.fontWeight = 'bold';
    search.style.border = "thick solid #324F17";
    search.addEventListener("click", addNew, false);

    function parse(){
        var d = new Date();
        var date = (d.getMonth() + 1) + "/" + d.getDate() + "/" +  d.getFullYear();
        var seconds = ('0'  + d.getSeconds()).slice(-2);
        var hours = d.getHours();
        var minutes = d.getMinutes();
        var ampm = hours >= 12 ? ' PM' : ' AM';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var shortTime = hours + ":" + minutes + ampm;
        var mediumTime = hours + ":" + minutes + ":" + seconds + ampm;
        var fullTime = date + " " + hours + ":" + minutes + ":" + seconds + ampm;
        scanTime.innerHTML = "Last scan: " + mediumTime;
        if (GM_getValue("run") === "running"){ 
            GM_xmlhttpRequest({
            method: "GET", 
            url: "https://worker.mturk.com/?page_size=20&filters[qualified]=false&sort=updated_desc",
            onload: function(response) {
                if (response.responseText.indexOf('Email (phone for mobile accounts)') !== -1){
                    var login = confirm("You must first log in to the worker site.")
                    if (login == true){
                       window.location.replace("https://worker.mturk.com/projects/secretredpandatreehouse/tasks");                         
                    }
                }   
                else {
                    for (f = 0; f < combined.length; f++){
                        if (response.responseText.toLowerCase().indexOf(combined[f].split('|*|')[1].toLowerCase()) !== -1){
                            if (response.responseText.toLowerCase().indexOf('/projects/' + combined[f].split('|*|')[1].toLowerCase()) !== -1){
                                var linko = "https://worker.mturk.com/projects/" + combined[f].split('|*|')[1] + "/tasks?ref=w_pl_prvw";
                            }
                            else if (response.responseText.toLowerCase().indexOf('/requesters/' + combined[f].split('|*|')[1].toLowerCase()) !== -1){
                                var linko = "https://worker.mturk.com/requesters/" + combined[f].split('|*|')[1] + "/projects?ref=w_pl_prvw";
                            }
                            else {
                                var linko = "https://worker.mturk.com/?filters%5Bsearch_term%5D=" + combined[f].split('|*|')[1] + "&page_number=1&sort=num_hits_desc&filters%5Bqualified%5D=false"
                            }
                            autoLaunch = document.getElementsByTagName('select')[2].value;
                            GM_setValue('autoLaunch',autoLaunch);
                            if (GM_getValue('autoLaunch') === 'Auto ON'){
                                GM_openInTab(linko); 
                            } 
                            BellSound = new Audio("http://static1.grsites.com/archive/sounds/musical/musical002.wav");
                            BellSound.play();
                            var smsCheck = GM_getValue('sms') ? GM_getValue('sms') : 'false';
                            if (smsCheck === 'SMS ON'){
                                var alertText = combined[f].split('|*|')[0] + " " + shortTime;    
                                var gmailCompose = window.open("https://mail.google.com/mail/u/0/h/?&cs=b&pv=tl&v=b");    
                                function getMessage(event){
                                    var msg = event.data;
                                    if (msg.toString() === "gmailLoaded"){
                                        gmailCompose.postMessage("alertData" + alertText, '*');
                                    }
                                }  
                                window.addEventListener("message", getMessage, false);
                            }
                            var alertLink = document.createElement('a');
                            alertLink.href = linko
                            alertLink.innerHTML = combined[f].split('|*|')[0];
                            temp.unshift(" " + combined[f].split('|*|')[0] + " " + shortTime);
                            recent.innerHTML = "Most recent: " + temp;
                            logs.innerHTML = fullTime + " ";
                            logs.appendChild(alertLink);
                            var alerted = combined[f].split('|*|')[0];
                            var buttonz = document.getElementsByClassName('nameButton'); 
                            for (b = 0; b < buttonz.length; b++){
                                if (buttonz[b].value.trim() === alerted.trim()){
                                    buttonz[b].style.background = 'rgb(255,0,0)';
                                    buttonz[b].style.border = "thick solid rgb(255,0,0)"
                                    var buttonName = buttonz[b].value;
                                    for (f = 0; f < combined.length; f++){
                                        if (combined[f].split('|*|')[0].trim() === buttonName.trim()){
                                            dump.push(combined[f]);
                                            combined.splice(f,1);
                                        }
                                    }
                                    setTimeout(function(){
                                  var sleepDelayPh = GM_getValue('sleepDelay') ? GM_getValue('sleepDelay') : 300;
                                        var buttonz = document.getElementsByClassName('nameButton'); 
                                        for (f = 0; f < buttonz.length; f++){
                                            if (buttonz[f].value === buttonName && (buttonz[f].style.background === 'rgb(255, 0, 0) none repeat scroll 0% 0%' || buttonz[f].style.background ==='rgb(255, 0, 0)')){
                                                buttonz[f].click();
                                            }
                                        }                            
                                    },60000 * GM_getValue('sleepDelay'));
                                }
                            }                
                        }
                    }             
                 }  
              }
            });
            setTimeout(function(){
              var scanDelayPh = GM_getValue('scanDelay') ? GM_getValue('scanDelay') : 10;
              parse();	  
          },1000 * GM_getValue('scanDelay'));
        };
    };

    GM_setValue("run", "off");

    function scan(){
        if (GM_getValue("run") === "running"){        
            GM_setValue("run", "off");
            run.value = "Run";
            run.style.background = 'rgb(255, 255, 255)';
            run.style.color = 'rgb(50, 79, 23)';
        } else { 
            GM_setValue("run", "running");
            run.value = "Running";
            run.style.color = 'rgb(255, 255, 255)';
            run.style.background = 'rgb(50, 79, 23)';
            parse();
        }; 
    };

    var run = document.createElement("input");
    run.type = "button";
    run.value = "Run";
    run.style.height ="30px";
    run.style.width ="120px";
    run.style.margin = "5px";
    beforeGreens.appendChild(run);
    run.style.background = "#FFFFFF";
    run.style.color = 'rgb(50, 79, 23)';
    run.style.fontWeight = 'bold';
    run.style.border = "thick solid #324F17";
    run.addEventListener("click", scan, false);

    var greens = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(greens);

    var scanTime = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(scanTime);
    scanTime.innerHTML = "Last scan:";
    scanTime.style.color = '#324F17'
    scanTime.style.fontSize = '16'
    scanTime.style.fontWeight = 'bold';
    scanTime.style.marginLeft = '6px';
    scanTime.style.marginTop = '18px';

    var logs = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(logs);
    logs.style.color = '#324F17'
    logs.style.fontSize = '16'
    logs.style.fontWeight = 'bold';
    logs.style.marginLeft = '6px';
    logs.style.marginTop = '18px';

    var recent = document.createElement('div');
    document.getElementsByTagName('table')[0].appendChild(recent);
    recent.style.color = '#324F17'
    recent.style.fontSize = '12'
    recent.style.fontWeight = 'bold';
    recent.style.marginLeft = '6px';
    recent.style.marginTop = '18px';



    var combined = [];
    var dump = [];
    var temp = [];

    GM_deleteValue("dataBase");
    var combinedPh = GM_getValue('combined') ? GM_getValue('combined') : "";

    var nameGet = JSON.parse(combinedPh);
    for (f=0; f < nameGet.length; f++){
        combined.push(nameGet[f]);
    };
    var alpha = combined.sort(function (a, b) {
        return a.toLowerCase().localeCompare(b.toLowerCase());
    });

    for (f=0; f < combined.length; f++){
        var add = document.createElement("input");
        add.type = "button";
        add.setAttribute("class","nameButton");
        add.setAttribute("title", alpha[f].split('|*|')[1]);
        add.value = alpha[f].split('|*|')[0];
        add.style.marginRight = "0";
        add.style.height ="25px";
        add.style.width ="auto";
        add.style.margin = "5px";
        add.style.fontWeight = 'bold';
        add.style.border = "thick solid #324F17";
        greens.appendChild(add);
        add.style.background = 'rgb(50, 79, 23)';
        add.style.color = "#FFFFFF";
    };    
    var nameButtons = document.getElementsByClassName('nameButton');
    for (f = 0; f < nameButtons.length; f++){ 
        nameButtons[f].addEventListener("click", toggle, false);
        nameButtons[f].addEventListener("dblclick", scrap, false);
    };    
};

if (window.location.toString().indexOf("mail.google.com") !== -1){ 
    
    var closeable = GM_getValue('closeable') ? GM_getValue('closeable') : 'false';
    if (closeable === 'true' && document.body.innerHTML.match("Your message has been sent")){
        GM_setValue('closeable','false');
        window.close();
    }
    
    if (document.body.innerHTML.match("Do you really want to use HTML Gmail?")){ 
        document.getElementsByTagName('input')[1].click();
    }    
    else {
        window.opener.postMessage("gmailLoaded", '*');  

        function retrieveMessage(event){
            var msg = event.data;
            if (msg.toString().indexOf('alertData') !== -1){
                document.getElementById('to').value = GM_getValue('phoneNumber');
                document.querySelectorAll("input[name='subject']")[0].value = "New HIT Alert: " + msg.replace('alertData','');
                document.querySelectorAll("textarea[name='body']")[0].value = "New HIT Alert: " + msg.replace('alertData','');
                GM_setValue('closeable','true'); 
                document.querySelectorAll("input[name='nvp_bu_send']")[0].click();               
            } else {
                    setTimeout(function(){
                    window.opener.postMessage("gmailLoaded", '*');
                    },0300);
            }
        }
        window.addEventListener("message", retrieveMessage, false);
    }
}

if (~window.location.toString().indexOf("secretredpandatreehouse")){
    window.location.replace("https://worker.mturk.com/HMworker");
}