Greasy Fork

来自缓存

Greasy Fork is available in English.

Pfandflaschensammler

Nach beendetem Pfandflaschensammeln wird ein Hinweis auf der zuletzt geoeffneten Seite ausgegeben und es kann zur Pfandflaschensammelseite weitergeleitet werden.

当前为 2015-03-09 提交的版本,查看 最新版本

// ==UserScript==
// @name           Pfandflaschensammler
// @namespace      http://userscripts.org/scripts/show/85124
// @author         lmk (wieder lauffaehig gemacht und erweitert von We1hnachtsmann)
// @license        GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @copyright      (c) 2009, lmk.
// @description    Nach beendetem Pfandflaschensammeln wird ein Hinweis auf der zuletzt geoeffneten Seite ausgegeben und es kann zur Pfandflaschensammelseite weitergeleitet werden.
// @grant          GM_getValue
// @grant          GM_setValue
// @grant          GM_xmlhttpRequest
// @grant          GM_deleteValue
// @grant          GM_listValues
// @include        http://*.pennergame.de/*
// @include        http://pennergame.de/*
// @include        http://*.dossergame.co.uk/*
// @include        http://dossergame.co.uk/*
// @include        http://*.menelgame.pl/*
// @include        http://menelgame.pl/*
// @include        http://*.bumrise.com/*
// @include        http://bumrise.com/*
// @include        http://*.clodogame.fr/*
// @include        http://clodogame.fr/*
// @include        http://*.mendigogame.es/*
// @include        http://mendigogame.es/*
// @include        http://*.mendigogame.com/*
// @include        http://mendigogame.com/*
// @include        http://*.faveladogame.com/*
// @include        http://faveladogame.com/*
// @include        http://*.bomzhuj.ru/*
// @include        http://bomzhuj.ru/*
// @exclude        http://*board.pennergame.de/*
// @exclude        http://mobile.pennergame.de/*
// @version        2.5.11 Spenden holen
// ==/UserScript==

// @version        2.5.11 Kamellen suchen
// @version        2.5.10 Unnötige Aufrufe der Eventseite abgestellt
// @version        2.5.9  Automatik funktionierte nicht mehr
// @version        2.5.8  Probleme mit Event-Seite behoben
// @version        2.5.7  Vatikan: Flaschenverkauf bei Überschreiten eines maximalen Füllgrads
// @version        2.5.6  Adventsspiel: Plätzchenklau, Korrektur
// @version        2.5.5  Adventsspiel: Plätzchenklau
// @version        2.5.4  Fehler bei Erkennung eines vorhandenen Updates behoben
// @version        2.5.3  Erkennung des beendeten Minigames fehlerhaft; Sammelmarken einlösen
// @version        2.5.2  automatischer Aufruf der Event-Seite falls nötig
// @version        2.5.1  erste Version Vatikan und neues Rentier-Spiel
// @version        2.4.3  Korrekturen; Gehalt automatisch abholen
// @version        2.4.2  Erweiterungen und Korrekturen für Eckfahnenspiel 2014
// @version        2.4.1  Wechsel auf greasyfork.org; Verbrechensstart erweitert
// @version        2.3.34 Anpassungen für Sommergame 2014 (Zollbeamter)
// @version        2.3.33 noch eine Korrektur zu Anpassungen für Ostergame 2014
// @version        2.3.32 Korrektur zu Anpassungen für Ostergame 2014
// @version        2.3.31 Anpassungen für Ostergame 2014
// @version        2.3.30 Fehler bei Anpassung an neues Karnevalgame behoben
// @version        2.3.29 Anpassung an neues Karnevalgame
// @version        2.3.28 kleine Korrektur: bei automatischen Verbrechen kam u.U. eine Abfrage
// @version        2.3.27 2. Korrektur zu Anpassungen an Xmas-Minigame 2013
// @version        2.3.26 Korrektur zu Anpassungen an Xmas-Minigame 2013
// @version        2.3.25 Anpassungen an Xmas-Minigame 2013
// @version        2.3.24 Skript lief nicht mehr richtig
// @version        2.3.23 Checkbox auf Login-Seite fehlte
// @version        2.3.22 Fehler im letzten Update behoben
// @version        2.3.21 Anpassung wegen anderen Aufbaus der Counter; Beseitigung von Fehlermeldungen
// @version        2.3.20 Erweiterung um Minispiel Piratenschatz
// @version        2.3.19 Erweiterung um Minispiel Zollkontrolle
// @version        2.3.18 Erweiterung um Kofferpackspiel
// @version        2.3.17 kein automatisches Wiedereinloggen, wenn explizit ausgeloggt wurde
// @version        2.3.16 automatisches Wiedereinloggen
// @version        2.3.15 Korrektur wegen Stadtfeind
// @version        2.3.14 Testmeldung entfernt
// @version        2.3.13 kleinere Erweiterungen; Reparatur nach Totalausfall
// @version        2.3.12 Korrektur wegen Stadtfeind
// @version        2.3.11 noch einmal Updateverfahren korrigiert
// @version        $Id: pfandflaschensammler.user.js 88 2015-03-09 07:47:00Z mkl $

/* Automatic click on "start collecting" | Automatischer Klick auf "Sammeln" */
var autoSubmit = true; //false;

/* Alert messages */
var msgDone1 = "Das Pfandflaschensammeln wurde beendet.";    // "Collecting done";
var msgDone2 = "Klicke auf OK um die Aktionsseite zu " + unescape("%F6") + "ffnen.";    // "Click ok to open actions-page";
var msgAttackEnemy = "Es wurde ein Angriff auf den Stadtfeind Nr. 1 gestartet. Seite aktualisieren ?";

/* Captcha select title*/
var strTime = "Zeit: ";  // "Time: ";

var intervalTime = 4000;
var done = " -/-"; // text after counter reached 0:00
var done0 = "00:00"; // alternative text after counter reached 0:00
var time = String(new Date().getTime());
var counter = done;
var fcounter = done;
var nameTime = "time";
var nameLastCollectTime = "LastCollectTime";
var checkInterval;
var TOWNEXTENSION = window.location.host;
var m_ownuserid;


var THISSCRIPTVERSION = GM_info.script.version.match(/[\d\.]*/)[0];
var THISSCRIPTNAME = GM_info.script.name;
var THISSCRIPTINSTALL_URLGF = "http://greasyfork.icu/scripts/1049-pfandflaschensammler";

var language = document.getElementsByName("language")[0].content;
// Version ermitteln
var oldVersion = 1;
if (!document.getElementById("login")) {
    var host = location.toString();
    var pos = host.lastIndexOf("//") + 2;
    host = host.substr(pos);
    pos = host.indexOf("/");
    host = host.substr(0, pos);
    GM_setValue("ErrorCounter_" + host, GM_getValue("ErrorCounter_" + host, 0) + 1);
    oldVersion = 0;
    setTimeout(reload, 10000);
}
else
    doTheAction();

// **********************************************************************************
// **********************************************************************************
// Funktion extrahiert die eigene UserID
// **********************************************************************************
// **********************************************************************************
function getOwnUserID() {
    // Eigene UserID ermitteln
    var ownuserid = document.getElementById('my-profile').innerHTML.split('href="/profil/id:')[1];
    ownuserid = ownuserid.split('/"')[0];

    return ownuserid;
}

// Holen einer Variablen mit User-Id
function PGu_getValue(varname, deflt) {
    return GM_getValue(TOWNEXTENSION + varname + m_ownuserid, deflt);
}

// Setzen einer Variablen mit User-Id
function PGu_setValue(varname, value) {
    GM_setValue(TOWNEXTENSION + varname + m_ownuserid, value);
}

// Leschen einer Variablen mit User-Id
function PGu_delete(varname) {
    GM_deleteValue(TOWNEXTENSION + varname + m_ownuserid);
}

// ***********************************************************************************************
// ***********************************************************************************************
// formats a date into the format "YYYY-MM-DD"
// ***********************************************************************************************
// ***********************************************************************************************
function FormatDate(DateToFormat) {
    var year = DateToFormat.getFullYear();
    var month = DateToFormat.getMonth() + 101 + "";
    var day = DateToFormat.getDate() + 100 + "";

    return year + "-" + month.slice(1) + "-" + day.slice(1);
}


// **********************************************************************************
// **********************************************************************************
// returns the promille value
// **********************************************************************************
// **********************************************************************************
function GetPromille(doc) {
    var promille = doc.getElementsByClassName("icon beer")[0].getElementsByTagName("a")[0];
    promille = Number(promille.innerHTML.trim().substr(0, 6).trim());

    return promille;
}

// ***********************************************************************************************
// ***********************************************************************************************
// check for a new script version and display a message, if there is one
// ***********************************************************************************************
// ***********************************************************************************************
function CheckForUpdate() {
    // create and format actual date
    var today = new Date();
    var tagesdatum = FormatDate(today);

    // if not searched for a new version of the script today
    if (GM_getValue("LastUpdateCheckGF","") != tagesdatum) {
        // **********************************************************************************
        // *** GM_XMLHTTPREQUEST *** Abrufen der Skriptseite von greasyfork.org
        // **********************************************************************************
        GM_xmlhttpRequest({method: 'GET',
            url: THISSCRIPTINSTALL_URLGF,
            headers:{ "Accept":"text/javascript; charset=UTF-8" },
            overrideMimeType:"application/javascript; charset=UTF-8",
            onload:function(responseDetails) {
                // Wenn die Seite erfolgreich abgerufen werden konnte
                if (responseDetails.status == 200) {
                    var content = responseDetails.responseText;

                    // Ermitteln der Skriptversion
                    if (content.indexOf("@version") != -1)
                        var scriptfullversion = content.split('@version')[1].trim().split('\n')[0];
                    else
                        var scriptfullversion = content.split('"script-show-version">').pop().split('</span')[0].split('<span>').pop();
                    var scriptversion = scriptfullversion.split(' ')[0];
                    scriptfullversion = scriptfullversion.substr(scriptversion.length+1);

                    // if there is a new version of the script
                    if (scriptversion != THISSCRIPTVERSION) {
                        // build the message
                        var alerttext = "Es gibt eine neue Version des Skriptes '" + THISSCRIPTNAME + "':\n\n" + scriptfullversion + "\n\nDie neue Version kann Fehlerbehebungen und/oder neue Funktionen beinhalten.\nHier gibt es weitere Infos über die neue Version:\n\n" + THISSCRIPTINSTALL_URLGF + "\n\nEine Aktualisierung ist empfehlenswert und kann direkt anschließend durchgeführt werden.\n\nHinweis: Die überprüfung auf neue Versionen wird nur einmal pro Tag durchgeführt."

                        // display the message
                        alert(alerttext);
                        // load the page with the new script for installation
                        window.location.href = THISSCRIPTINSTALL_URLGF+'/code/Pfandflaschensammler.user.js';
                    }
                }
            }
        });

        // memorize the new date
        GM_setValue("LastUpdateCheckGF", tagesdatum)
    }
}

// ***********************************************************************************************
// ***********************************************************************************************
// check for new minigame
// ***********************************************************************************************
// ***********************************************************************************************
function CheckNewMinigame() {
    var today = new Date();
    var timeout = PGu_getValue("minigame_wait", -1) - today.getTime();
    if (timeout < 2000)
        timeout = 2000;
    var enemy = document.getElementById("enemy_info");
    if (enemy) {
        var einfo = document.getElementById("wrap").innerHTML.split("#enemy_info").pop();
        if (einfo.indexOf("window.location") == -1)
            return;
        var addr = einfo.split("location")[1].split('"')[1];
        var tagesdatum = FormatDate(today);
        if (tagesdatum == PGu_getValue("minigame_date", "xx") && PGu_getValue("minigame_noon", "xx") != tagesdatum) {
            if (today.getHours() > 12) {
                PGu_setValue("minigame_noon", tagesdatum);
                PGu_setValue("minigame_date", "xx");
            }
        }
        if (PGu_getValue("minigame_date", "xx") != tagesdatum ||
            PGu_getValue("minigame_success", 0) == 0)
            if (window.location.pathname.indexOf(addr) == -1 && PGu_getValue("minigame_wait", -1) <= today.getTime()) {
                GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.host + addr, onload:function(responseDetails) {
                        var content = responseDetails.responseText;
                        var pos = content.indexOf('href="javascript:minigame_show');
                        if (pos == -1) {
                            PGu_setValue("minigame_date", tagesdatum);
                            if (today.getHours() > 12)
                                PGu_setValue("minigame_noon", tagesdatum);
                        }
                        else
                            window.location.href = window.location.protocol + '//' + window.location.host + addr;
                }});
                return;
            }
    }

    if (document.getElementById("display"))
        if (document.getElementById("display").getElementsByClassName("cbox").length > 0)
            timeout = DoNewMinigame();
        else if (document.getElementById("display").getElementsByClassName("modal_close").length == 0 ||
                 document.getElementById("display").style.display == "none") {
            var today = new Date();
            var tagesdatum = FormatDate(today);
            if (PGu_getValue("minigame_date", "xx") != tagesdatum ||
                PGu_getValue("minigame_success", 0) == 0) {
                var pos = document.getElementById("content").innerHTML.indexOf("minigame_show");
                if (pos != -1)
                    pos = document.getElementById("content").innerHTML.indexOf("minigame_show", pos+1);
                if (pos != -1)
                    unsafeWindow.minigame_show();
                else {
                    PGu_setValue("minigame_date", tagesdatum);
                    if (today.getHours() > 12)
                        PGu_setValue("minigame_noon", tagesdatum);
                    }
            }
        }
        window.setTimeout(CheckNewMinigame, timeout);
}
// ***********************************************************************************************
// ***********************************************************************************************
// play the new minigame
// ***********************************************************************************************
// ***********************************************************************************************
function DoNewMinigame () {
    var today = new Date();
    var tagesdatum = FormatDate(today);
    var tbl = document.getElementById("display").getElementsByClassName("cbox")[0];
    if (tbl.innerHTML.indexOf("_success.png") != -1 || tbl.innerHTML.indexOf("minigame_count") == -1) {
        PGu_setValue("minigame_success", 1);
        PGu_setValue("minigame_date", tagesdatum);
        PGu_setValue("minigame_noon", tagesdatum);
        if (today.getHours() < 12)
            var to = 43500;
        else
            var to = 86400;
        to = (to - today.getHours()*3600-today.getMinutes()*60-today.getSeconds()) * 1000;
        PGu_setValue("minigame_wait", to.toString());
        return to;
    }
    var trs = tbl.getElementsByTagName("tr");
    for (j = 0; j < trs.length; j++)
        if (trs[j].innerHTML.indexOf("minigame_count") != -1)
            break;
    if (j == trs.length)
        return 0;
    PGu_setValue("minigame_date", tagesdatum);
    if (today.getHours() > 12)
        PGu_setValue("minigame_noon", tagesdatum);

    if (trs[j].innerHTML.indexOf("minigame_countdown") != -1) {
        var span = trs[j].getElementsByTagName("span");
        var seks = 0;
        if (span.length > 0)
            for (jj = 0; jj < 1; jj++) {
                var timer = span[jj].innerHTML;
                if (timer == done) {
                    seks = 0;
                }
                else if (timer.indexOf(":") != -1) {
                    var time = timer.split(":");
                    seks = (parseInt(time[0])*60 + parseInt(time[1])) * 1000;
                }
            }
        if (seks == 0) {
            unsafeWindow.minigame_show();
            seks = 2000;
        }
        var time = Number(new Date().getTime()) + seks;
        PGu_setValue("minigame_wait", String(time));
        return seks;
    }
    if (trs[j].style.background.indexOf("_success.png") != -1 || trs[j].style.background.indexOf("_unsuccess.png") != -1 || trs[j].style.background.indexOf("_normal.png") != -1 ||
        trs[j].style.background.indexOf("_success.jpg") != -1 || trs[j].style.background.indexOf("_unsuccess.jpg") != -1 || trs[j].style.background.indexOf("_normal.jpg") != -1) {
        var success = PGu_getValue("minigame_success", 0);
        if (success == 1) {
            if (trs[j].style.background.indexOf("_success.png") == -1 ||
                trs[j].innerHTML.indexOf("minigame_count") != -1) {
                PGu_setValue("minigame_value", -1);
                PGu_setValue("minigame_success", 0);
                success = 0;
            }
            else
                return (86400-today.getHours()*3600-today.getMinutes()*60-today.getSeconds()) * 1000;
            }
        if (success == 0) {
            if (trs[j].style.background.indexOf("_success.png") != -1 ||
                trs[j].innerHTML.indexOf("minigame_count") == -1) {
                PGu_setValue("minigame_success", 1);
                PGu_setValue("minigame_date", tagesdatum);
                PGu_setValue("minigame_noon", tagesdatum);
                return (86400-today.getHours()*3600-today.getMinutes()*60-today.getSeconds()) * 1000;
            }
            else {
                var nextValue = PGu_getValue("minigame_value", -1) + 1;
                PGu_setValue("minigame_value", nextValue);
                document.getElementById("minigame_count").innerHTML = nextValue%10+1;
                var sub = trs[j].innerHTML.split("minigame_try('")[1].split("'")[0];
                unsafeWindow.minigame_try(sub);
            }
        }
    }
    return 2000;
}

// ***********************************************************************************************
// ***********************************************************************************************
// check for minigame and play it
// ***********************************************************************************************
// ***********************************************************************************************
function CheckMinigame () {
    if (window.location.pathname.indexOf("/activities/") == -1)
        return;
    var minigames = new Array("halloween", "summer13", "event/aug13_2");
    var tbl = document.getElementsByTagName("table");
    for (i = 0; i < tbl.length; i++) {
        for (var tk = 0; tk < minigames.length; tk++)
            if (tbl[i].innerHTML.indexOf("/" + minigames[tk] + "/") != -1)
                break;
        var trs = tbl[i].getElementsByTagName("tr");
        for (j = 0; j < trs.length; j++) {
            for (var k = 0; k < minigames.length; k++)
                if (trs[j].innerHTML.indexOf("/" + minigames[k] + "/") != -1)
                    break;
            if (tk < minigames.length || k < minigames.length) {
                var seks = 0;
                if (j + 1 < trs.length) {
                    var span = trs[j+1].getElementsByTagName("span");
                    if (span.length > 0)
                        for (jj = 0; jj < 1; jj++) {
                            var timer = span[jj].innerHTML;
                            if (timer == done) {
                                seks = 0;
                            }
                            else if (timer.indexOf(":") != -1) {
                                var time = timer.split(":");
                                seks = parseInt(time[0])*60 + parseInt(time[1]);
                            }
                        }
                }
                if (seks > 0) {
                    checkInt = window.setTimeout(CheckMinigame,seks*1000);
                    return;
                }
                else if (trs[j].style.background.indexOf("/success.jpg") != -1 || trs[j].style.background.indexOf("/fail.jpg") != -1 || trs[j].style.background.indexOf("/normal.jpg") != -1) {
                    var success = PGu_getValue("minigame_success", 0);
                    if (success == 1) {
                        if (trs[j].style.background.indexOf("/success.jpg") == -1) {
                            PGu_setValue("minigame_value", -1);
                            PGu_setValue("minigame_success", 0);
                            success = 0;
                        }
                        else
                            checkInt = window.setTimeout(reload, 300000);
                    }
                    if (success == 0) {
                        if (trs[j].style.background.indexOf("/success.jpg") != -1) {
                            PGu_setValue("minigame_success", 1);
                        }
                        else {
                            var options = trs[j].innerHTML.split('<option');
                            if (options.length == 1) {
                                reload();
                                break;
                            }

                            var nextValue = PGu_getValue("minigame_value", -1) + 1;
                            var nextVal = nextValue % (options.length-1);
                            nextVal = options[nextVal+1].split('<')[0];
                            if (nextVal.substr(0,6) == " value") {
                                nextVal = nextVal.split('"')[1];
                            }
                            else
                                nextVal = nextVal.substr(1);

                            GM_xmlhttpRequest({
                                       method:"POST",
                                       url: 'http://' + window.location.host + '/' + minigames[k] + '/minigame/',
                                       headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                       data: encodeURI('minigame_count='+nextVal),
                                       onload:function(responseDetails) {
                                              var pos = responseDetails.responseText.indexOf('/fail.jpg');
                                              if (pos == -1) {
                                                   window.location.href = window.location.protocol + '//' + window.location.host + '/activities/';
                                              }
                                              else {
                                                   PGu_setValue("minigame_value", nextValue);
                                                   window.location.href = window.location.protocol + '//' + window.location.host + '/activities/';
                                              }
                            }});
                        }
                    }
                    break;
                }
                else if (k < minigames.length) {
                    window.location.href = window.location.protocol + '//' + window.location.host + '/' + minigames[k] + '/minigame/';
                }
            }
            else if (trs[j].style.background.search(/\/xmas.*\/minigame/) != -1) {
                var seks = 0;
                if (j + 1 < trs.length) {
                    var span = trs[j+1].getElementsByTagName("span");
                    for (jj = 0; jj < 1; jj++) {
                        var timer = span[jj].innerHTML;
                        if (timer == done) {
                            seks = 0;
                        }
                        else {
                            var time = timer.split(":");
                            seks = parseInt(time[0])*60 + parseInt(time[1]);
                        }
                    }
                }
                if (seks > 0) {
                    checkInt = window.setTimeout(reload, seks*1000);
                    return;
                }
                else {
                    var success = PGu_getValue("XmasMini_success", 0);
                    if (success == 1) {
                        if (trs[j].style.background.indexOf("minigame_success") == -1) {
                            PGu_setValue("XmasMini_value", -1);
                            PGu_setValue("XmasMini_success", 0);
                            success = 0;
                        }
                        else
                            checkInt = window.setTimeout(reload, 600000);
                    }
                    if (success == 0) {
                        if (trs[j].style.background.indexOf("minigame_success") != -1) {
                            PGu_setValue("XmasMini_value", -1);
                            PGu_setValue("XmasMini_success", 1);
                            checkInt = window.setTimeout(reload, 600000);
                        }
                        else {
                            var options = trs[j].innerHTML.split('<option');
                            if (options.length == 1) {
                                reload();
                                break;
                            }

                            var nextValue = PGu_getValue("XmasMini_value", -1) + 1;
                            var nextVal = nextValue % (options.length-1);
                            nextVal = options[nextVal+1].split('<')[0];
                            if (nextVal.substr(0,6) == " value") {
                                nextVal = nextVal.split('"')[1];
                            }
                            else
                                nextVal = nextVal.substr(1);
                            var action = trs[j].innerHTML.match(/<form.*action=\"[^\"]*\"/)[0].split('"')[1];

                            GM_xmlhttpRequest({
                                   method:"POST",
                                   url: 'http://' + window.location.host + action,
                                   headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                   data: encodeURI('minigame_count='+nextVal),
                                   onload:function(responseDetails) {
                                          var pos = responseDetails.finalUrl.indexOf('event=');
                                          if (pos == -1) {
                                               window.location.href = window.location.protocol + '//' + window.location.host + '/activities/';
                                          }
                                          else {
                                               var rc = parseInt(responseDetails.finalUrl.substr(pos+6));
                                               if (rc == -2)
                                                   alert('Bitte Glühwein kaufen !!');
                                               else {
                                                   PGu_setValue("XmasMini_value", nextValue);
                                                   PGu_setValue("XmasMini_success", (rc==1?1:0));
                                                   window.location.href = responseDetails.finalUrl;
                                               }
                                          }
                            }});
                        }
                    }
                }
                break;
            }
            else if (trs[j].style.background.indexOf("/events/") != -1) {
                //alert(trs[j].style.background);
                var eventpos = trs[j].innerHTML.indexOf('/event/');
                var eventurl = "";
                minigames = new Array("easter14", "summer14", "krnvl");
                var multiple = 0;
                for (var k = 0; k < minigames.length; k++)
                    if (tbl[i].innerHTML.indexOf("/" + minigames[k] + "/") != -1)
                        break;
                var dk = (tbl[i].innerHTML.indexOf('span id="counter') != -1?1:2);
                if (eventpos != -1) {
                    var eventposend = trs[j].innerHTML.indexOf('"', eventpos);
                    eventurl = trs[j].innerHTML.substr(eventpos, eventposend - eventpos);
                    if (trs[j].innerHTML.substr(eventpos-8,6) == "action") {
                        var form = trs[j].getElementsByTagName("form")[0].innerHTML;
                        var inputs = form.split("<input");
                        var input = "";
                        for (ii = 1; ii < inputs.length; ii++) {
                            var name = inputs[ii].split('name="');
                            if (name.length > 1)
                                name = name[1].split('"')[0];
                            else
                                continue;
                            var value = inputs[ii].split('value="');
                            if (value.length > 1)
                                value = value[1].split('"')[0];
                            else
                                continue;
                            if (input != "")
                                input += "&";
                            input += name + "=" + value;
                        }
                        if (k < minigames.length) {
                            var seks = 0;
                            dk = 1;
                            if (j + 1 < trs.length) {
                                var span = trs[j+1].getElementsByTagName("span");
                                if (span.length > 0)
                                    for (jj = 0; jj < 1; jj++) {
                                        var timer = span[jj].innerHTML;
                                        if (timer == done) {
                                            seks = 0;
                                        }
                                        else if (timer.indexOf(":") != -1) {
                                            var time = timer.split(":");
                                            seks = parseInt(time[0])*60 + parseInt(time[1]);
                                        }
                                    }
                            }
                            if (seks > 0) {
                                checkInt = window.setTimeout(CheckMinigame,seks*1000);
                                return;
                            }
                            else if (trs[j].style.background.indexOf("success.jpg") != -1 || trs[j].style.background.indexOf("unsuccess.jpg") != -1 || trs[j].style.background.indexOf("normal.jpg") != -1) {
                                var success = PGu_getValue("minigame_success", 0);
                                if (success == 1) {
                                    if (trs[j].style.background.indexOf("success.jpg") == -1) {
                                        PGu_setValue("minigame_value", -1);
                                        PGu_setValue("minigame_success", 0);
                                        success = 0;
                                    }
                                    else
                                        checkInt = window.setTimeout(reload, 300000);
                                }
                                if (success == 0) {
                                    if (trs[j].style.background.indexOf("success.jpg") != -1) {
                                        PGu_setValue("minigame_success", 1);
                                    }
                                    else {
                                        var options = trs[j].innerHTML.split('<option');
                                            if (options.length != 1) {
                                            var nextValue = PGu_getValue("minigame_value", -1) + 1;
                                            var nextVal = nextValue % (options.length-1);
                                            nextVal = options[nextVal+1].split('<')[0];
                                            if (nextVal.substr(0,6) == " value") {
                                                nextVal = nextVal.split('"')[1];
                                            }
                                            else
                                                nextVal = nextVal.substr(1);
                                            if (input != "")
                                                input += "&";
                                            input += 'minigame_count='+nextVal;
                                            multiple = 1;
                                        }
                                    }
                                }
                            }
                            else if (k < minigames.length) {
                                window.location.href = window.location.protocol + '//' + window.location.host + '/' + minigames[k] + '/minigame/';
                            }
                        }
                        GM_xmlhttpRequest({
                               method:"POST",
                               url: 'http://' + window.location.host + eventurl,
                               headers: {'Content-type': 'application/x-www-form-urlencoded'},
                               data: encodeURI(input),
                               onload:function(responseDetails) {
                                  if (multiple == 1)
                                      PGu_setValue("minigame_value", nextValue);
                                  var pos = responseDetails.finalUrl.indexOf('event=');
                                  if (pos == -1 || !multiple) {
                                      window.location.href = window.location.protocol + '//' + window.location.host + '/activities/';
                                  }
                                  else {
                                      var rc = parseInt(responseDetails.finalUrl.substr(pos+6));
                                      PGu_setValue("minigame_success", (rc==1?1:0));
                                      window.location.href = responseDetails.finalUrl;
                                  }
                               }
                        });
                    }
                    else if (eventurl.indexOf("mayevent") == -1) {
                        window.location.href = window.location.protocol + '//' + window.location.host + eventurl;
                        GM_setValue(TOWNEXTENSION + "eventURL", eventurl);
                    }
                    break;
                }
                if (j + dk < trs.length) {
                    var seks = 0;
                    var span = trs[j+dk].getElementsByTagName("span");
                    for (jj = 0; jj < 1; jj++) {
                        var timer = span[jj].innerHTML;
                        if (timer == done) {
                            seks = 0;
                        }
                        else {
                            var time = timer.split(":");
                            seks = parseInt(time[0])*60 + parseInt(time[1]);
                        }
                    }
                    if (seks > 0) {
                        checkInt = window.setTimeout(reload, seks*1000);
                        return;
                    }
                    else {
                        var eventurl = PG_getValue(TOWNEXTENSION + "eventURL", "");
                        if (eventurl != "")
                            window.location.href = window.location.protocol + '//' + window.location.host + eventurl;
                    }
                }
                break;
            }
        }
    }
}

function insertCheckBox() {
    var newtd = document.createElement("td");
    newtd.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
    newtd.innerHTML = '<input name="BCCheckbox" id="BCCheckbox" type="checkbox"><span style="vertical-align: bottom">&nbsp;Automatisch sammeln</span>';
    document.getElementsByName("xycoords")[0].parentNode.insertBefore(newtd, document.getElementsByName("xycoords")[0]);
    document.getElementById("BCCheckbox").checked = PGu_getValue("AutoCollect", false);
    // Click-Handler hinzufügen
    document.getElementById("BCCheckbox").addEventListener("click", function(event) {
        // Klickstatus speichern
        PGu_setValue("AutoCollect", this.checked);
        if (this.checked) {
            var timeOptions = document.getElementsByName("time")[0];
            PGu_setValue(nameLastCollectTime, timeOptions.selectedIndex);
            }
    }, false);
}
function insertCheckBox2() {
    var newtd = document.createElement("td");
    newtd.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
    var male = "";
    if (PGu_getValue("AutoCrime", false))
        male = " (noch " + PGu_getValue("AutoCrimeFkt", 0) + " Mal)";
    newtd.innerHTML = '<input name="SCCheckbox" id="SCCheckbox" type="checkbox"><span style="vertical-align: bottom">&nbsp;Automatisch starten' + male + '</span>';
    var buttons = document.getElementsByTagName("button");
    if (buttons.length > 0)
        var button = buttons[0];
    else {
        buttons = document.getElementsByName("xycoords");
        var button = buttons[buttons.length-1];
    }
    button.parentNode.insertBefore(newtd, button);
    document.getElementById("SCCheckbox").checked = PGu_getValue("AutoCrime", false);
    // Click-Handler hinzufügen
    document.getElementById("SCCheckbox").addEventListener("click", function(event) {
        // Klickstatus speichern
        if (this.checked) {
            if (PGu_getValue("AutoCrimePic", "") == "") {
                if (TOWNEXTENSION == "VT")
                    alert("Bitte erst Sünde festlegen !!");
                else
                    alert("Bitte erst Verbrechen festlegen !!");
                this.checked = false;
            }
            if (PGu_getValue("AutoCrimeFkt", -1) <= 0)
                PGu_setValue("AutoCrimeFkt", 1);
        }
        PGu_setValue("AutoCrime", this.checked);
        reload();
    }, false);
}

function insertCheckBox3(button) {
    var crimepic = button.parentNode.parentNode.innerHTML.split('plunder_crime/')[1].split('"')[0];
    var name = 'CbButton_' + crimepic;
    var newtd = document.createElement("td");
    newtd.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
    newtd.innerHTML = '<input name="CbCrime" id="' + name +'" type="checkbox"><span style="vertical-align: bottom">&nbsp;diese' + (TOWNEXTENSION=="VT"?" Sünde":"s Verbrechen") + '&nbsp;&nbsp;</span><input name="CbCrimeFkt" style="width:30px" id="' + name +'Fkt"><span style="vertical-align: bottom">mal automatisch starten</span>';
    button.parentNode.appendChild(newtd, button);
    var crimep = PGu_getValue("AutoCrimePic", 0);
    if (crimep == crimepic) {
        document.getElementById(name).checked = true;
        document.getElementById(name+"Fkt").value=PGu_getValue("AutoCrimeFkt",1);
    }
    // Click-Handler hinzufügen
    document.getElementById(name+"Fkt").addEventListener("change", function(event) {
        var crimeFkt = parseInt(document.getElementById(this.id).value);
        if (isNaN(crimeFkt))
            crimeFkt = 1;
        document.getElementById(this.id).value = crimeFkt;
        PGu_setValue("AutoCrimeFkt", crimeFkt);
    }, false);


    // Click-Handler hinzufügen
    document.getElementById(name).addEventListener("click", function(event) {
        var crimepic = this.id.split("_")[1];
        crimepic = this.parentNode.parentNode.parentNode.innerHTML.split('plunder_crime/')[1].split('"')[0];
        if (this.parentNode.parentNode.innerHTML.split("start_crime(").length > 1)
            var crimeNr = this.parentNode.parentNode.innerHTML.split("start_crime(")[1].split(")")[0];
        else
            var crimeNr = 0;
        // Klickstatus speichern
        if (this.checked) {
            PGu_setValue("AutoCrime", true);
            PGu_setValue("AutoCrimePic", crimepic);
            PGu_setValue("AutoCrimeNr", crimeNr);
            var crimeFkt = parseInt(document.getElementById(this.id+"Fkt").value);
            if (isNaN(crimeFkt) || crimeFkt <= 0)
                crimeFkt = 1;
            document.getElementById(this.id+"Fkt").value = crimeFkt;
            PGu_setValue("AutoCrimeFkt", crimeFkt);
            var buttons = document.getElementsByName("CbCrime");
            for (i = 0; i < buttons.length; i++) {
                var crimep = buttons[i].parentNode.parentNode.parentNode.innerHTML.split('plunder_crime/')[1].split('"')[0];
                if (crimepic != crimep) {
                    document.getElementById(buttons[i].id).checked = false;
                    document.getElementById(buttons[i].id+"Fkt").value = "";
                }
            }
        }
        else {
            PGu_setValue("AutoCrimePic", "");
            PGu_setValue("AutoCrimeNr", 0);
            PGu_setValue("AutoCrimeFkt", 0);
            PGu_setValue("AutoCrime", false);
        }
    }, false);
}
function insertCheckBox4() {
    var newtd = document.createElement("li");
    newtd.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
    newtd.innerHTML = '<input name="GSCheckbox" id="GSCheckbox" type="checkbox"><span style="vertical-align: bottom">&nbsp;Geld automatisch einsacken</span>';
    var tieritems = document.getElementsByClassName("tieritemA");
    for (i = 0; i < tieritems.length; i++) {
        if (tieritems[i].innerHTML.indexOf("minijobs") != -1 || tieritems[i].innerHTML.indexOf("change_please") != -1) {
            var lis = tieritems[i].getElementsByClassName("double");
			if (lis.length == 0)
                lis = tieritems[i].getElementsByClassName("first");
			lis = lis[lis.length-1].getElementsByTagName("li");
            lis[lis.length-1].parentNode.appendChild(newtd, lis[lis.length-1]);
            document.getElementById("GSCheckbox").checked = PGu_getValue("getSalary", false);
            // Click-Handler hinzufügen
            document.getElementById("GSCheckbox").addEventListener("click", function(event) { 
                // Klickstatus speichern
                PGu_setValue("getSalary", this.checked);
            }, false);
        }
    }
}

// ***********************************************************************************************
// ***********************************************************************************************
// check for enemy game and play it
// ***********************************************************************************************
// ***********************************************************************************************
function CheckEnemygame () {
    if (!document.getElementById("enemy_info"))
        return;
    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/enemies/', onload:function(responseDetails) {
            var content = responseDetails.responseText;
            var pos = content.indexOf('id="fight_button');
            if (pos != -1) {
                if (content.substr(pos, 100).indexOf('counter(') == -1)
                    setTimeout(Enemyattack, 1500);
                return;
            }
            pos = content.indexOf('hp_bar_blue');
            if (pos == -1) {
                return;
            }
            else {
                var poscnt = content.indexOf('counter(', pos);
                if (poscnt != -1) {
                    var cnt = parseInt(content.substr(poscnt+8).split(")")[0].split(',')[0]);
                    if (cnt > 0)
                        setTimeout(enemyreload, cnt*1000);
                }
            }
        }
    });
}

// ***********************************************************************************************
// ***********************************************************************************************
// buy luck
// ***********************************************************************************************
// ***********************************************************************************************
function LoseKaufen (inputs, anzLose) {
    if (anzLose <= 0) {
        reload();
        return;
    }

    var data = "";
    var preis = 1;
    var anz = (anzLose > 10?10:anzLose);
    for (i = 1; i < inputs.length; i++) {
        var name = inputs[i].split('name="').pop().split('"')[0];
        var val = (name=="menge"?anz:inputs[i].split('value="').pop().split('"')[0]);
        if (name == "preis_cent")
            preis = Number(val) / 100;
        if (name == "submitForm") {
            var pos = val.indexOf("1.00");
            if (pos != -1)
                val = val.substr(0, pos) + preis*anz + val.substr(pos+1);
        }    
        data = data + name + "=" + val + "&";
    }
    GM_xmlhttpRequest({method: 'POST',
                       url: 'http://'+window.location.hostname+'/city/games/buy/',
                       headers: {'Content-type': 'application/x-www-form-urlencoded'},
                       data: encodeURI(data.substr(0,data.length-1)),
                       onload: function(responseDetails) {
                           LoseKaufen(inputs, anzLose - anz);
                       }
    });
}

// ***********************************************************************************************
// ***********************************************************************************************
// handle a mission
// ***********************************************************************************************
// ***********************************************************************************************
function HandleMission (missionname, content)
{
    var pos = content.indexOf(missionname + '.png');
    if (pos == -1)
        return -1;
    var mission = content.substr(pos).split("</table>")[0];
    pos = mission.indexOf("counter(");
    var counter = 0;
    if (pos != -1) {
        counter = mission.substr(pos).split("counter(")[1].split(")")[0].trim();
        if (counter == done)
            counter = 0;
        else
            counter = Number(counter)
        if (counter < 3600)
            setTimeout(reload, (counter<3?3:counter) * 1000);
    }
    PGu_setValue("NextStart"+missionname, counter);
    var pos = mission.indexOf('job_notdone');
    if (pos != -1) {
        if (missionname == "kieztour")
            PGu_setValue("KiezTourAct", 1);
        if (mission.substr(pos).split("<br")[0].indexOf("Rubbellose") == -1)
            return -1;
        return pos;
    }
    if (missionname == "kieztour")
        PGu_setValue("KiezTourAct", 0);

    if (content.indexOf("return cancel_popup(") != -1)
        return -1;

    pos = mission.indexOf("mission_item_notready");
    if (pos != -1) {
        var amount = mission.substr(pos).split('class="amount">x')[1].split('</span')[0].trim();
        var muss = Number(amount.split("(")[0].trim());
        var ist = Number(amount.split("(")[1].split(")")[0].trim());
        if (ist < muss) {
            GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/gang/stuff/',
                onload:function(responseDetails) {
                    var content = responseDetails.responseText;
                    var select = content.split('Plunder einzahlen')[1].split('<select')[1].split('</select')[0];
                    var text = select.split(missionname=="casino"?">Jetons":">Bierdeckel");
                    if (text.length == 1)
                        return;
                    var id = text[0].split('<option').pop().split('value="')[1].split('"')[0];
                    var menge = Number(text[1].split(']</option')[0].split('[x')[1].trim());
                    if (menge > 0) {
                        var fehlt = muss - ist;
                        if (fehlt > menge)
                            fehlt = menge;
                        var data = select.split('name="')[1].split('"')[0] + "=" + id;
                        var form = content.split('Plunder einzahlen')[1].split('<form')[1].split('</form')[0];
                        var action = form.split('action="')[1].split('"')[0];
                        var inputs = form.split('<input');
                        for (i = 1; i < inputs.length; i++) {
                            var name = inputs[i].split('name="').pop().split('"')[0];
                            var val = (name=="f_count"?fehlt:inputs[i].split('value="').pop().split('"')[0]);
                            data += "&" + name + "=" + val;
                        }
                        GM_xmlhttpRequest({method: 'POST',
                               url: 'http://'+window.location.hostname+action,
                               headers: {'Content-type': 'application/x-www-form-urlencoded'},
                               data: encodeURI(data),
                               onload: function(responseDetails) {
                               reload();
                               }
                        });
                    }
                }
            });
            return -1;
        }
    }
    pos = mission.indexOf("mission_button_on");
    if (pos == -1) {
        pos = mission.indexOf('show_city_list(');
        if (pos == -1)
            return -1;
        if (mission.substr(pos,40).indexOf('deactivate') != -1)
            return -1;
        var pid = mission.substr(pos+15).split(",")[0];
        GM_xmlhttpRequest({method: 'POST',
                       url: 'http://'+window.location.hostname+'/gang/missions/plunder/enable/',
                       headers: {'Content-type': 'application/x-www-form-urlencoded'},
                       data: encodeURI('pid='+pid),
                       onload: function(responseDetails) {
                           reload();
                       }
        });
        return 0;
    }
    if (mission.substr(pos).indexOf('start_mission(') != -1) {
        var id = mission.substr(pos).split('start_mission(')[1].split(')')[0];
        pos = mission.indexOf('show_city_list(');
        var pid = mission.substr(pos+15).split(",")[0];
		GM_xmlhttpRequest({method:"GET",
			url: 'http://' + window.location.hostname + '/city/games/',
			onload:function(responseDetails) {
				if (missionname == "casino") {
				    var content = responseDetails.responseText;
				    var to = 0;
					var nochlose = Number(content.split("Du kannst heute noch ").pop().split(" ")[0]);
					if (nochlose == 0)
						return;
					var pos = content.indexOf("/city/games/buy/");
					if (pos == -1)
						return;
					var gesamt = Number(mission.match(/Kauft \d* Rubbel/)[0].split(" ")[1]);
					if (gesamt < nochlose)
						nochlose = gesamt;
					var table = content.substr(pos).split("/table")[0];
					var tr = table.split("<tr").pop();
					var inputs = tr.split("<input");
				}
				GM_xmlhttpRequest({method: 'POST',
                    url: 'http://'+window.location.hostname+'/gang/missions/start/',
                    headers: {'Content-type': 'application/x-www-form-urlencoded'},
                    data: encodeURI('mission_id='+id+'&cancel=false'),
                    onload: function(responseDetails) {
                         var to = (responseDetails.responseText.indexOf("aktuelle Mission erst abschl") != -1);
                         if (to)
                             setTimeout(reload, 30000);
                         else {
                             var m_ownusername = document.getElementsByClassName('zleft profile-data')[0].getElementsByTagName("a")[0].getElementsByTagName("span")[0].innerHTML;
                             GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/gang/admin/log/', onload:function(responseDetails) {
                                     var start = responseDetails.responseText.split(' wurde gestartet');
                                     var pos = start[0].lastIndexOf("</td>");
                                     var to = 0;
                                     if (pos == -1)
                                         to = 30;
                                     if (start[0].substr(0, pos).substr(-m_ownusername.length) != m_ownusername)
                                         to = 30;
                                     if (to > 0) {
                                         setTimeout(reload, to*1000);
                                         return;
                                     }
                                     if (missionname == "kieztour") {
                                         GM_xmlhttpRequest({method: 'POST',
                                                     url: 'http://'+window.location.hostname+'/gang/admin/massmail/',
                                                     headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                                     data: encodeURI('f_subject=Mission Kiez-Tour läuft&sel=Alle&f_text='),
                                                     onload: function(responseDetails) {
                                                     }
                                         });
                                     }
                                     GM_xmlhttpRequest({method: 'POST',
                                                 url: 'http://'+window.location.hostname+'/gang/missions/plunder/enable/',
                                                 headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                                 data: encodeURI('pid='+pid),
                                                 onload: function(responseDetails) {
                                                         if (missionname == "casino")
                                                             LoseKaufen(inputs, nochlose);
                                                         else
                                                             reload();
                                                 }
                                     });
                                 }
                             });
                         }
                    }
				});
			}
		 });
    }
    else if (mission.substr(pos).indexOf('reward_popup(') != -1 || mission.substr(pos).indexOf('/missions/reward/') != -1) {
        window.location = 'http://'+window.location.hostname+'/gang/missions/reward/';
    }
    return 0;
}
// ***********************************************************************************************
// ***********************************************************************************************
// check for mission
// ***********************************************************************************************
// ***********************************************************************************************
function CheckMission () {
    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/gang/missions/', onload:function(responseDetails) {
            var content = responseDetails.responseText;
            var mission = content.split('class="gang_mission"')[1].split("</table>")[0];
            if (mission.substr(pos).indexOf('reward_popup(') != -1 || mission.substr(pos).indexOf('/missions/reward/') != -1) {
                   window.location = 'http://'+window.location.hostname+'/gang/missions/reward/';
                return;
            }
            pos = content.indexOf('boost_button');
            if (pos != -1)
                pos = content.substr(pos).indexOf('activate_boost(');
            if (pos != -1) {
                var inputs = content.split('id="boost_form"')[1].split("</form>")[0];
                var action = inputs.split('action="')[1].split('"')[0];
                var inputs = inputs.split("<input");
                var data = "";
                for (i = 1; i < inputs.length; i++) {
                    var name = inputs[i].split('name="').pop().split('"')[0];
                    var val = inputs[i].split('value="').pop().split('"')[0];
                    data = data + name + "=" + val + "&";
                }
                GM_xmlhttpRequest({method: 'POST',
                                   url: 'http://'+window.location.hostname+action,
                                   headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                   data: encodeURI(data.substr(0,data.length-1)),
                                   onload: function(responseDetails) {
                                       reload();
                                   }
                });
                return;
            }
            pos = HandleMission("casino", content);
            if (pos > 0) {
                var pos2 = content.indexOf('casino.png');
                var mission = content.substr(pos2).split("</table>")[0];
                var kauf = mission.substr(pos).split("<br")[1].split("</span")[0].split(">").pop().trim();
                kauf = kauf.split("/");
                var gekauft = Number(kauf[0].trim());
                var gesamt = Number(kauf[1].trim());
                if (gekauft == gesamt)
                    return;
                var m_ownusername = document.getElementsByClassName('zleft profile-data')[0].getElementsByTagName("a")[0].getElementsByTagName("span")[0].innerHTML;
                GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/gang/admin/log/', onload:function(responseDetails) {
                        var casino = responseDetails.responseText.split('Mission "Casino-Besuch" wurde gestartet');
                        var pos = casino[0].lastIndexOf("</td>");
                        var to = 0;
                        if (pos == -1)
                            to = 30;
                        if (casino[0].substr(0, pos).substr(-m_ownusername.length) != m_ownusername)
                            to = 30;
                        if (to > 0) {
                            var now = new Date().getTime();
							var tdiff = now - Number(PGu_getValue("LastLoseKauf", "0"));
							if (tdiff > 60000) {
								PGu_setValue("LastLoseKauf", now+"");
								tdiff = 0;
							}
							if (tdiff < to*1000) {
								setTimeout(reload, to*1000 - tdiff);
								return;
                            }
                        }
                        GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/city/games/', onload:function(responseDetails) {
                                var content = responseDetails.responseText;
                                var nochlose = content.split("Du kannst heute noch ").pop().split(" ")[0];
                                if (nochlose == 0)
                                    return;
                                if (gesamt - gekauft < nochlose)
                                    nochlose = gesamt - gekauft;
                                if (nochlose > 100)
                                    nochlose = 100;
                                var pos = content.indexOf("/city/games/buy/");
                                if (pos == -1)
                                    return;
                                var table = content.substr(pos).split("/table")[0];
                                var tr = table.split("<tr").pop();
                                var inputs = tr.split("<input");
                                LoseKaufen(inputs, nochlose);
                            }
                        });
                    }
                });
                return;
            }
            if (pos == -1 && TOWNEXTENSION == "HH") {
                var pos = content.indexOf('casino.png');
                var casino = false;
                if (pos > 0) {
                    var mission = content.substr(pos).split("</table>")[0];
                    pos = mission.indexOf("counter(");
                    if (pos != -1) {
                        var counter = mission.substr(pos).split("counter(")[1].split(")")[0].trim();
                        if (counter == done)
                            counter = "0";
                        if (Number(counter) < 10000)
                            casino = true;
                    }
                }
                if (!casino)
                    HandleMission("kieztour", content);
                return;
            }
        }
    });
}

function getSeks(counter) {
    if (counter == done)
        return 0;

    var cnt = counter.split(":");
    var seks = 0;
    for (i = 0; i < cnt.length; i++)
        seks = seks * 60 + Number(cnt[i]);
    return seks;
}

function getvcounter () {
    var vcounter = done;
    if (document.getElementsByClassName("chest_counter").length == 0) {
        var tbl = document.getElementsByTagName("table");
        for (i = tbl.length - 1; i > 0; i--)
            if (tbl[i].className)
                if (tbl[i].className == "cbox")
                    break;
        var trs = tbl[i].getElementsByTagName("tr");
        if (trs.length > 2) {
            var span = trs[2].getElementsByTagName("span");
            for (i = 0; i < span.length; i++) {
                if (span[i].id)
                    if (span[i].id.substr(0, 7) == "counter") {
                        vcounter = span[i].innerHTML;
                        if (vcounter.trim() == done0)        // is the time 00:00 ?
                            vcounter = done;
                        break;
                    }
            }
        }
    }
    return getSeks(vcounter);
}

function submit(){

    if(window.location.pathname.indexOf("/activities/") != -1 && window.location.pathname.indexOf("/crime/") == -1 && autoSubmit){

        if (document.getElementsByClassName("chest_key_on").length > 0) {
            var href = document.getElementsByClassName("chest_menu")[0].getElementsByClassName("chest_button")[0].href;
            window.location.href = href;
        }

        if (getvcounter() != 0) {
            var lastURL = PGu_getValue("AutoCollURL", "");
            if (lastURL != "") {
                PGu_setValue ("AutoCollURL", "");
                window.location.replace( lastURL );
            }
            else {
                PGu_setValue(nameTime, time);
                PGu_setValue("AskedForCollect", 0);
                checkInterval = window.setInterval(check,intervalTime);
            }
            return;
        }

        var lastCollectTime = PGu_getValue(nameLastCollectTime,0);
        if (PGu_getValue("KiezTourAct", 0) == 1)
            lastCollectTime = 0;

        var evt = document.createEvent("HTMLEvents");
        evt.initEvent("change", true, true);

        var timeOptions = document.getElementsByName("time")[0];
        if (!timeOptions)
            refer();

		if (lastCollectTime > 0) {
			var options = timeOptions.innerHTML.split('value="');
			if (options.length < lastCollectTime + 2)
		        lastCollectTime = 0;
			else {
                var minopt = Number(options[1].split('"')[0]);
                var selopt = Number(options[lastCollectTime+1].split('"')[0]);
                var nextTime = PGu_getValue("NextStartkieztour", -1);
                if (nextTime >= 0 && nextTime + minopt*60 < selopt*60 && lastCollectTime > 0)
					lastCollectTime = 0;
			}
		}
        timeOptions.selectedIndex = lastCollectTime;

        timeOptions.dispatchEvent(evt);
        timeOptions.addEventListener( "change",
                          function(){  PGu_setValue(nameLastCollectTime, document.getElementsByName("time")[0].selectedIndex);
                               timeOptionsCaptcha.selectedIndex = timeOptions.selectedIndex; },
                          true );

        var timeOptionsCaptcha = timeOptions.cloneNode(true);
        timeOptionsCaptcha.selectedIndex = timeOptions.selectedIndex;
        timeOptionsCaptcha.addEventListener( "change",
                             function(){ PGu_setValue(nameLastCollectTime, document.getElementsByName("time")[0].selectedIndex);
                                 timeOptions.selectedIndex = timeOptionsCaptcha.selectedIndex;},
                             true);

/*        var captchaHolder = document.getElementById("holder");
        var infoText = captchaHolder.insertBefore(document.createElement('p'),captchaHolder.getElementsByTagName("span")[1]);
        infoText.innerHTML = strTime;
        infoText.appendChild(timeOptionsCaptcha);
        infoText.style.margin = "0px";
        infoText.style.marginTop = "8px";
        captchaHolder.getElementsByTagName("span")[1].style.marginTop = "-8px";
        captchaHolder.getElementsByTagName("span")[1].style.marginLeft = "-10px";

        var cancelButton = captchaHolder.getElementsByClassName("cancel")[0];
        cancelButton.style.margin = "0px";
        cancelButton.style.marginLeft = "10px";
        infoText.appendChild(cancelButton);*/

        var crimePic = PGu_getValue("AutoCrimePic", "");
        var crimeFkt = PGu_getValue("AutoCrimeFkt", 0);
        var crimeTO = "";
        if (PGu_getValue("AutoCrime", false) && crimePic != "" && crimeFkt > 0) {
            var crimeNr = PGu_getValue("AutoCrimeNr", -1);
            if (crimeNr > 0) {
                crimeTO = " if (document.getElementById('SCCheckbox').checked) window.location = window.location.protocol + '//' + window.location.host + '/activities/crime/?start_crime=" + crimeNr + "'";
                PGu_setValue("AutoCrimeFkt", crimeFkt - 1);
            }
            else if (crimeNr == 0) {
                GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/activities/crime/', onload:function(responseDetails) {
                        var content = responseDetails.responseText;
                        var buttons = content.split("plunder_crime/");
                        for (i = 1; i < buttons.length; i++) {
                            var crimep = buttons[i].split('"')[0];
                            if (crimePic == crimep) {
                                crimeNr = buttons[i].split("start_crime(")[1].split(")")[0];
                                PGu_setValue("AutoCrimeNr", crimeNr);
                                reload();
                                break;
                            }
                        }
                }});
            }
            else {
                PGu_setValue("AutoCrimePic", "");
                PGu_setValue("AutoCrime", false);
                setTimeout(reload, 1000);
            }
        }
        if (crimeTO != "")
            setTimeout("if (document.getElementById('SCCheckbox'))" + crimeTO + ";", 2000); // fails often if to fast
        else
            setTimeout("if (document.getElementById('BCCheckbox')) if (document.getElementById('BCCheckbox').checked) document.getElementsByName('Submit2')[0].click();", 3000); // fails often if to fast
    }
    else {
        PGu_setValue(nameTime, time); //store time for each domain to prevent multiple run in same domain
        checkInterval = window.setInterval(check,intervalTime);
    }
}

function check(){

    function setPetCollectDay(day, status) {
        var val = PGu_getValue("AutoPetCollectDay", "0000000");
        val = val.substr(0, day) + (status?"1":"0") + val.substr(day + 1);
        PGu_setValue("AutoPetCollectDay", val);
        PGu_setValue("AutoPetCollect", val != "0000000");
        return;
    }

    if (window.location.pathname.indexOf("/pet/") != -1) {
        if (document.getElementById("submit_sets") && !document.getElementById("Checkbox1")) {
            var divs = document.getElementsByClassName("pet_tab_help");
            var newdiv = divs[divs.length-1].cloneNode(true);
            newdiv.innerHTML = "<h1>Automatisches Einlösen</h1><span>Hier kannst Du einstellen, wann Deine Gegenstände automatisch eingelöst werden sollen.</span><div>  </div>";
            var newtdMo = document.createElement("td");
            newtdMo.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdMo.innerHTML = '<input name="CheckboxMo" id="Checkbox1" type="checkbox"><span style="vertical-align: bottom">&nbsp;Montag&nbsp;</span>';
            newdiv.appendChild(newtdMo);
            var newtdDi = document.createElement("td");
            newtdDi.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdDi.innerHTML = '<input name="CheckboxDi" id="Checkbox2" type="checkbox"><span style="vertical-align: bottom">&nbsp;Dienstag&nbsp;</span>';
            newdiv.appendChild(newtdDi);
            var newtdMi = document.createElement("td");
            newtdMi.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdMi.innerHTML = '<input name="CheckboxMi" id="Checkbox3" type="checkbox"><span style="vertical-align: bottom">&nbsp;Mittwoch&nbsp;</span>';
            newdiv.appendChild(newtdMi);
            var newtdDo = document.createElement("td");
            newtdDo.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdDo.innerHTML = '<input name="CheckboxDo" id="Checkbox4" type="checkbox"><span style="vertical-align: bottom">&nbsp;Donnerstag&nbsp;</span>';
            newdiv.appendChild(newtdDo);
            var newtdFr = document.createElement("td");
            newtdFr.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdFr.innerHTML = '<input name="CheckboxFr" id="Checkbox5" type="checkbox"><span style="vertical-align: bottom">&nbsp;Freitag&nbsp;</span>';
            newdiv.appendChild(newtdFr);
            var newtdSa = document.createElement("td");
            newtdSa.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdSa.innerHTML = '<input name="CheckboxSa" id="Checkbox6" type="checkbox"><span style="vertical-align: bottom">&nbsp;Samstag&nbsp;</span>';
            newdiv.appendChild(newtdSa);
            var newtdSo = document.createElement("td");
            newtdSo.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdSo.innerHTML = '<input name="CheckboxSo" id="Checkbox0" type="checkbox"><span style="vertical-align: bottom">&nbsp;Sonntag&nbsp;</span>';
            newdiv.appendChild(newtdSo);
            var newtdvon = document.createElement("td");
            newtdvon.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdvon.innerHTML = '<span style="vertical-align: top">&nbsp;von&nbsp;</span><input name="vonZeit" id="vonZeit" type="text" style="width:15px;">';
            newdiv.appendChild(newtdvon);
            var newtdbis = document.createElement("td");
            newtdbis.setAttribute('style', 'padding-top: 10px; padding-bottom: 10px');
            newtdbis.innerHTML = '<span style="vertical-align: top">&nbsp;bis&nbsp;</span><input name="vonZeit" id="bisZeit" type="text" style="width:15px;"><span style="vertical-align: top">&nbsp;Uhr&nbsp;</span>';
            newdiv.appendChild(newtdbis);
            divs[divs.length-1].parentNode.appendChild(newdiv);
            // Status setzen und Click-Handler hinzufügen
            for (i = 0; i < 7; i++) {
                document.getElementById("Checkbox"+i).checked = PGu_getValue("AutoPetCollectDay", "0000000").substr(i, 1) == "1";
                document.getElementById("Checkbox"+i).addEventListener("click", function(event) {
                    setPetCollectDay(this.id.substr(-1), this.checked);
                }, false);
            }
            document.getElementById("vonZeit").value = PGu_getValue("AutoPetCollectBegH", 11);
            document.getElementById("vonZeit").addEventListener("change", function(event) {
                var val = document.getElementById(this.id).value;
                if (isNaN(val) || parseInt(val) < 0 || parseInt(val) > 23) {
                    alert("Bitte eine Zahl von 0 bis 23 eingeben");
                    document.getElementById(this.id).value = PGu_getValue("AutoCollectBegH", 11);
                    return false;
                }
                else
                    PGu_setValue("AutoPetCollectBegH", parseInt(val));
            }, true);
            document.getElementById("bisZeit").value = PGu_getValue("AutoPetCollectEndH", 12);
            document.getElementById("bisZeit").addEventListener("change", function(event) {
                var val = document.getElementById(this.id).value;
                if (isNaN(val) || parseInt(val) < 0 || parseInt(val) > 23) {
                    alert("Bitte eine Zahl von 0 bis 23 eingeben");
                    document.getElementById(this.id).value = PGu_getValue("AutoCollectEndH", 12);
                    return false;
                }
                else
                    PGu_setValue("AutoPetCollectEndH", parseInt(val));
            }, false);
        }
    }

    if(PGu_getValue(nameTime) != time){ //script started somewhere else
        clearInterval(checkInterval);
        return 0;
    }

    var c=1;
    var posci = document.getElementById("enemy_info")?0:-1;
    if (posci != -1)
        posci = document.getElementById("enemy_info").innerHTML.indexOf('enemy_counter_info');
    if (posci != -1)
        posci = document.getElementById("enemy_info").innerHTML.substr(posci+20,100).indexOf("counter");
    if (posci != -1)
        c=2;
    var crime = false;
    try{
        fcounter = document.getElementById("counter"+c).innerHTML;
        counter = document.getElementById("counter"+(c+1)).innerHTML;
        crime = document.getElementById("counter"+(c+1)).parentNode.innerHTML.split("counter(")[1].split(")")[0].split('"')[1].indexOf("crime") != -1;
        if (counter.trim() == done0)        // is the time 00:00 ?
            counter = done;
    }
    catch(err){
    }

    var promille = GetPromille(document);
    if (fcounter == done && counter == done || PGu_getValue("AutoCrime", false) && PGu_getValue("AutoCrimeFkt", 0) > 0 && counter == done) {
        if(window.location.pathname.indexOf("/activities/") != -1 && window.location.pathname.indexOf("/crime/") == -1){
            if (document.getElementsByClassName("chest_key_on").length > 0) {
                var href = document.getElementsByClassName("chest_menu")[0].getElementsByClassName("chest_button")[0].href;
                window.location.href = href;
            }

            if (getvcounter() != 0)
                return;                // do nothing, if a crime is planned

            clearInterval(checkInterval); // stop script
            setTimeout(reload, 2000);
        } else {
            GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/activities/', onload:function(responseDetails) {
                    var content = responseDetails.responseText;

                    var text = content.split("setupForm('/activities/bottle/'");
                    if (text.length > 1) {
                        text = text[1].split('>')[0].split(' ');
                        text = text[text.length-1];
                    }
                    if (text == "disabled") {
                        clearInterval(checkInterval); // stop script
                        checkInterval = window.setInterval(check,intervalTime*5);
                    }
                    /* deaktiviert !!
                    else if (PGu_getValue("AutoCollect", false)) {
                        var lastCollectTime = PGu_getValue(nameLastCollectTime, 0);
                        var timesplit = content.split('name="time"')[1].split("<option");
                        if (timesplit.length > lastCollectTime + 1)
                            var dauer = timesplit[lastCollectTime+1].split('value="')[1].split('"')[0];
                        else
                            var dauer = 10;
                        GM_xmlhttpRequest({method:'POST',
                                           url: 'http://' + window.location.hostname + '/activities/bottle/',
                                           headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                           data: encodeURI('bottlecollect_pending=True'),
                                           onload:function(responseDetails) {
                            var content = responseDetails.responseText;

                                GM_xmlhttpRequest({method:'POST',
                                                   url: 'http://' + window.location.hostname + '/activities/bottle/',
                                                   headers: {'Content-type': 'application/x-www-form-urlencoded'},
                                                   data: encodeURI('sammeln='+dauer),
                                                   onload:function(responseDetails) {
                                    var content = responseDetails.responseText;
                                    var text = content.split("setupForm('/activities/bottle/'");
                                    if (text.length > 1) {
                                        text = text[1].split('>')[0].split(' ');
                                        text = text[text.length-1];
                                    }
                                    if (text == "disabled") {
                                        clearInterval(checkInterval); // stop script
                                        checkInterval = window.setInterval(check,intervalTime*5);
                                    }
                                }});
                        }});
                    } */
                    else {
                        clearInterval(checkInterval); // stop script
                        setTimeout(refer, 10000);
                    }
            }});
        }
    }
    else if (crime && getSeks(counter) < 60 && promille > 0) {
        if (PGu_getValue("AutoCrimeURL", "") == "")
            PGu_setValue ("AutoCrimeURL", location.toString());
        if (location.toString().substr(-5) != "food/")
            window.location.href = window.location.protocol + "//" + window.location.host + "/stock/foodstuffs/food/";
        else {
            var breads = 0;
            var items = document.getElementsByClassName("item_list");
            for (var i = items.length - 1; i >= 0; i--) {
                breads = Number(items[i].getElementsByTagName("tr")[0].getElementsByTagName("td")[1].innerHTML.split(">")[1].split(" ")[0]);
                var effect = -Number(document.getElementsByName("promille")[i].value)/100;
                if (i > 0 && effect > promille)
                    continue;
                var id = document.getElementsByName("id")[i].value;
                if (i == 0)
                    var nrofbreads = Math.min(Math.ceil(promille/effect), breads);
                else
                    var nrofbreads = Math.min(Math.floor(promille/effect), breads);
                // **********************************************************************************
                // *** GM_XMLHTTPREQUEST *** POSTEN der Essensnutzung
                // **********************************************************************************
                GM_xmlhttpRequest({method: 'POST',
                    url: 'http://' + window.location.hostname + '/stock/foodstuffs/use/',
                    headers: {'Content-type': 'application/x-www-form-urlencoded'},
                    data: encodeURI('item=&promille=&id='+id+'&menge=' + nrofbreads),
                    onload: function(responseDetails) {
                        window.location.href = PGu_getValue("AutoCrimeURL", "");
                        PGu_setValue ("AutoCrimeURL", "");
                    }
                });
                break;
            }
        }
    }
    else if (PGu_getValue("RefreshInterval", 0) > 0)
        setTimeout(reload, PGu_getValue("RefreshInterval", 0) * 60000);
}

function refer(){
    var box = PGu_getValue("AutoCollect", false) || PGu_getValue("AutoCrime", false) && PGu_getValue("AutoCrimeFkt", 0) > 0;
    if (box) {          // check input field in Mails and SB
        var f_text = document.getElementById("f_text");
        if (f_text)
            box = f_text.value == "";
    }

    if (!box && PGu_getValue("AskedForCollect", 0) < 3) {
        box = window.confirm( msgDone1 + "\n" + msgDone2 );
        PGu_setValue("AskedForCollect", PGu_getValue("AskedForCollect", 0) + 1);
    }
    if (box) {
        PGu_setValue("AutoCollURL", location.toString());
        window.location.href = window.location.protocol + "//" + window.location.host + "/activities/";
    }
}

function reload(){
    if (oldVersion || !autoSubmit)
        alert(msgDone1);
    if (window.location.toString().indexOf("event") != -1)
        window.location.href = window.location.toString();
    else
        window.location.href = window.location.protocol + "//" + window.location.host + "/activities/";
}

function enemyreload(){
    var box = true;
                        // check input field in Mails and SB
    var f_text = document.getElementById("f_text");
    if (f_text)
        box = f_text.value == "";

    if (!box) {
        box = window.confirm( msgAttackEnemy );
    }
    if (box) {
        window.location.href = location.toString();
    }
}

function Enemyattack(){
    GM_xmlhttpRequest({
           method:"POST",
           url: 'http://' + window.location.host + '/enemies/start_fight/',
           headers: {'Content-type': 'application/x-www-form-urlencoded'},
           data: encodeURI(''),
           onload:function(responseDetails) {
               enemyreload();
           }
           });
}

function DoPetCollect() {
    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/pet/tab/collections/', onload:function(responseDetails) {
            var content = responseDetails.responseText;
            var ptArray = new Array();
            var uls = content.split("tabcontainer").pop().split('id="ul_');
            for (i = 1; i < uls.length; i++) {
                var set = uls[i].split('">')[0];
                var spans = uls[i].split("trade_in")[0].split("</span>");
                var trade = uls[i].split("trade_in")[1].split("</div>")[0].split(">")[0].split("value=").pop();
                var points = parseInt(trade.split(")")[0].split("(").pop());
                var codeset = new Array();
                var minanz = 99999;
                for (j = 0; j < spans.length - 1; j++) {
                    var code = spans[j].split("item_count_")[1].split('">')[0];
                    var anz = Number(spans[j].split(">").pop());
                    codeset.push(new Array(code, anz));
                    if (anz < minanz)
                        minanz = anz;
                }
                if (minanz == 0)
                    continue;
                for (j = 0; j < ptArray.length; j++)
                   if (ptArray[j][2] <= points)
                       break;

                ptArray.splice(j, 0, new Array(set, codeset, points));
            }
            for (i = 0; i < ptArray.length; i++) {
                var rew = ptArray[i][0];
                var special = "";
                if (rew.substr(0,8) == "special_") {
                    special = "?special=true";
                    rew = rew.substr(8);
                }
                var minanz = 99999;
                for (j = 0; j < ptArray[i][1].length; j++) {
                    if (ptArray[i][1][j][1] < minanz)
                        minanz = ptArray[i][1][j][1];
                }
                if (minanz == 0)
                    continue;
                for (j = i; j < ptArray.length; j++)
                    for (k = 0; k < ptArray[i][1].length; k++)
                        for (kk = 0; kk < ptArray[j][1].length; kk++)
                            if (ptArray[i][1][k][0] == ptArray[j][1][kk][0]) {
                                ptArray[j][1][kk][1] -= minanz;
                                break;
                            }
                GM_xmlhttpRequest({
                    method: 'GET', url: 'http://' + window.location.hostname + '/pet/get_collection_reward/'+rew+"/"+minanz+"/"+special,
                    onload: function(responseDetails) {
                    }
                });
                        
                window.setTimeout("window.location.href = '" + location.toString() + "'", 2000);
                return;
            }
    }});
    return;
}

function SellBottles(menge, price)
{
    if (menge <= 0)
        return;

    GM_xmlhttpRequest({
        method: 'POST', url: 'http://' + window.location.hostname + '/stock/bottle/sell/',
        headers: {'Content-type': 'application/x-www-form-urlencoded'},
        data: encodeURI('chkval='+price+"&max="+menge+"&sum="+menge),
        onload: function(responseDetails) {
        }
    });
}

function CheckGhosts() {
    var ghostPages = new Array('activities', 'activities/crime', 'city/medicine', 'city/stuff', 'city/supermarket',
                               'skills', 'stock/bottle', 'messages', 'itemsale', 'stock');
    function testGhost(i) {
        if (i >= ghostPages.length) {
            PGu_setValue("ghostIndex", i);
            return;
        }

        GM_xmlhttpRequest({
            method: 'GET', url: 'http://' + window.location.hostname + '/' + ghostPages[i] + '/',
            onload: function(responseDetails) {
                var content = responseDetails.responseText;
                var ghosts = content.split('class="ghost_container"').length;
                if (ghosts > 1) {
                    PGu_setValue("ghostIndex", i + 1);
                    window.location.href = 'http://' + window.location.hostname + '/' + ghostPages[i] + '/';
                }
                else
                    testGhost(i+1);
            }
        });
        return;
    }

    var today = new Date();
    var tagesdatum = FormatDate(today);
    var gi = PGu_getValue("ghostIndex", 0);
    if (gi >= ghostPages.length)  {
        if (PGu_getValue("ghostTest", "") != tagesdatum && today.getTime() % 86400000 > 300000) {
            gi = 0;
            PGu_setValue("ghostTest", tagesdatum);
            PGu_setValue("ghostTestNoon", "");
        }
        else if (PGu_getValue("ghostTestNoon", "") != tagesdatum && today.getHours() > 12) {
            gi = 0;
            PGu_setValue("ghostTestNoon", tagesdatum);
        }
    }

    var ghosts = document.getElementsByClassName("ghost_container");
    if (ghosts.length > 0) {
        gi = 0;
        PGu_setValue("ghostTest", tagesdatum);
        PGu_setValue("ghostTestNoon", tagesdatum);
    }

    for (i = 0; i < ghosts.length; i++)
        setTimeout('document.getElementsByClassName("ghost_container")['+i+'].click();', 1000);

    testGhost(gi);
}

function WashMe(id, cnt) {
    // **********************************************************************************
    // *** GM_XMLHTTPREQUEST *** POSTEN des Kommandos zum Waschen
    // **********************************************************************************
    GM_xmlhttpRequest({method: 'POST', url: 'http://' + window.location.hostname + '/city/washhouse/buy/', headers: {'Content-type': 'application/x-www-form-urlencoded'},
        data: encodeURI('id=' + id),
        onload: function(responseDetails) {
            if (cnt > 1)
                WashMe(id, cnt-1);
            else
                reload();
        }
     });
}

function getSalary() {
	GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/overview/', onload:function(responseDetails) {
		var content = responseDetails.responseText;
		var fass = content.split("Fassungsverm")[1].match(/[\d.,]+/);
		var maxmoney = Number(fass[0].replace(/[.,]/g,''));
		var mon = content.split('class="icon money"')[1].split("</a>")[0];
		var money = Number(mon.split(">").pop().match(/[\d,.]+/)[0].replace(/[.,]/g, ''));
		if (content.indexOf("Lohn abholen") != -1) {
			var salary = Number(content.split(" jetzt einsacken")[0].match(/[\d,.]+/g).pop().replace(/[.,]/g, ''));
			if (money + salary < maxmoney) {
				var text = content.split("music_payout")[1];
				var val = text.split('value="')[1].split('"')[0];
				var name = text.split('name="')[1].split('"')[0];
				GM_xmlhttpRequest({
					method: 'POST', url: 'http://' + window.location.hostname + '/overview/music_payout/',
					headers: {'Content-type': 'application/x-www-form-urlencoded'},
					data: encodeURI(name+"="+val),
					onload: function(responseDetails) {
					}
				});
			}
			return;
		}

		if (money == maxmoney)
			return;
		var pos = content.search(/Du hast heute \d* Spenden erhalten/);
		if (pos <= 0)
		    return;
		var spenden = content.substr(pos).match(/Du hast heute \d* Spenden erhalten[^\d]*\d*/);
		if (spenden.length < 1)
		    return;
		var rest = Number(spenden[0].split(" ").pop());
		if (rest <= 0) {
			var stuff = PGu_getValue("aktPlunder", "");
			if (stuff != "") {
				PGu_setValue("aktPlunder", "");
				// **********************************************************************************
				// *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels
				// **********************************************************************************
				GM_xmlhttpRequest({method: 'POST', url: 'http://' + window.location.hostname + '/stock/plunder/change/', headers: {'Content-type': 'application/x-www-form-urlencoded'},
					data: encodeURI('from_f=0&f_plunder=' + stuff),
					onload: function(responseDetails) {
						reload();
					}
				});
			}
		    return;
		}
		var time = Number(content.split('class="icon fight')[1].split("counter(")[1].split(",")[0]);
		if (time > 0 && time < 60)
		    return;
		time = Number(content.split('class="icon rank')[1].split("counter(")[1].split(",")[0]);
		if (time > 0 && time < 60)
		    return;
		var got = Number(spenden[0].split(" ")[3]);
		var link = content.substr(pos).split('value="')[1].split('"')[0];
		var clean = content.match(/Sauberkeit:[^\d]*\d*/);
		if (clean.length < 1)
		    return;
		clean = Number(clean[0].split(">")[1]);
		if (clean < 100) {
			var id = 2;
			var cnt = 1;
			if (clean >= 20) {
				var id = 1;
				var cnt = Math.ceil((100 - clean) / 20);
			}
			WashMe(id, cnt);
		    return;
		}
	    pos = content.search("Angelegte Plunder");
		if (pos <= 0)
			return;
		var table = content.substr(pos).split("<table")[1].split("</table>")[0];
		var tabs = table.split("<tr")[2].split("<td");
		if (tabs.length > 3)
			var pltab = 3;
		else
			var pltab = 1;
		var aktPlunder = tabs[pltab].split('src="')[1].split('"')[0];
	    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/stock/plunder/ajax/?c='+pltab, onload:function(responseDetails) {
		    var content = responseDetails.responseText;
			var bonus = content.match(/ Einnahmen durch Spenden um \d*%/g);
			var maxp = -1;
			for (i = 0; i < bonus.length; i++)
			   if (maxp < 0)
			      maxp = i;
		       else if (bonus[i] > bonus[maxp])
			      maxp = i;
			var trs = content.split("<table")[1].split("</table")[0].split("<tr");
			var zp = aktPlunder;
			var aktstuff = -1;
            for (i = 1; i < trs.length && maxp >= 0; i++)
			    if (trs[i].indexOf(aktPlunder) != -1) {
					aktstuff = trs[i].split("change_stuff('")[1].split("'")[0];
					break;
				}
			var stuff = -1;
            for (i = 1; i < trs.length && maxp >= 0; i++)
			    if (trs[i].indexOf(bonus[maxp]) != -1) {
					zp = trs[i].split('src="')[1].split('"')[0];
					stuff = trs[i].split("change_stuff('")[1].split("'")[0];
					break;
				}
		    if (zp != aktPlunder) {
                PGu_setValue("aktPlunder", aktstuff);
                // **********************************************************************************
                // *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels
                // **********************************************************************************
                GM_xmlhttpRequest({method: 'POST', url: 'http://' + window.location.hostname + '/stock/plunder/change/', headers: {'Content-type': 'application/x-www-form-urlencoded'},
                    data: encodeURI('from_f=0&f_plunder=' + stuff),
                    onload: function(responseDetails) {
                        reload();
                    }
                });
				return;
			}
			GM_xmlhttpRequest({
					method: 'POST',
					url: 'http://pennerga.me/donate.php',
					headers: {'Content-type': 'application/x-www-form-urlencoded'},
					data: encodeURI('url='+link+'&Submit=Donate'),
					onload: function(responseDetails) { 
						reload();
					}
			});
		}
		});
	}
	});
}

// Die eigentliche Funktion
function doTheAction () {
    if (document.getElementsByClassName('zleft profile-data').length > 0)
        oldVersion = 0;

    /*-*/
    var host = window.location.host;
    if (host.substr(0,4) == "www.")
        host = host.substr(4);
    if (host.substr(0,7) == "change.")
        host = host.substr(7);
    if (GM_getValue(host + "_autologin", "xxx") == "xxx") {
        GM_setValue(host + "_autologin", GM_getValue("www." + host + "_autologin", false));
        GM_setValue(host + "_username", GM_getValue("www." + host + "_username", ""));
        GM_setValue(host + "_password", GM_getValue("www." + host + "_password", ""));
        GM_deleteValue("www." + host + "_autologin");
        GM_deleteValue("www." + host + "_username");
        GM_deleteValue("www." + host + "_password");
        GM_deleteValue("change." + host + "_autologin");
        GM_deleteValue("change." + host + "_username");
        GM_deleteValue("change." + host + "_password");
    }

    var login = document.getElementById("loginform");
    if (login) {
        login.addEventListener('submit', function(event) {
                 var input = document.getElementById("loginform").getElementsByTagName("input");
                 for (var i = 0; i < input.length; i++) {
                     if (input[i].name == "username" || input[i].name == "password")
                         GM_setValue(host + "_" + input[i].name, input[i].value);
                 }
                 return true;
            }, false);
    }

    var myprof = document.getElementById("my-profile");
    if (!myprof) {
        function doLogin() {
            var login = document.getElementById("loginform");
            var input = login.getElementsByTagName("input");
            var i = input.length - 1;
            if (GM_getValue(host + "_username", "") != "" && GM_getValue(host + "_password", "") != "") {
                document.getElementById("login_username").value = GM_getValue(host + "_username", "");
                document.getElementById("password").value = GM_getValue(host + "_password", "");
                input[i].click();
            }
            else if (document.getElementById("login_username").value != "" &&
                document.getElementById("password").value != "") {
                input[i].click();
            }
        }
        var user = document.getElementById("login_username");
        if (user) {
            var chb = document.createElement("input");
            chb.type="checkbox";
            chb.id="autologin";
            chb.title="Auto-Login";
            user.parentNode.appendChild(chb, user);
            document.getElementById("autologin").checked = GM_getValue(host + "_autologin", false);
            // Click-Handler hinzufügen
            document.getElementById("autologin").addEventListener("click", function(event) {
                // Klickstatus speichern
                GM_setValue(host + "_autologin", this.checked);
            }, false);
        }
        if (GM_getValue(host + "_autologin", false))
            window.setTimeout(doLogin, 10000);
        return;
    }
    else if (myprof.getElementsByTagName("form").length > 0) {
        var input = myprof.getElementsByTagName("input");
        if (input.length > 0) {
            myprof.getElementsByTagName("form")[0].addEventListener('mouseup', function(event) {
                GM_setValue(host + "_autologin", false);
            }, false);
        }
    }
    var mobBut = document.getElementById("mobile_button");
    if (mobBut)
        if (mobBut.innerHTML == "Logout") {
            mobBut.getElementsByTagName("form")[0].addEventListener('mouseup', function(event) {
                GM_setValue(host + "_autologin", false);
            }, false);
        }

    // ***********************************************************************************************
    // ***********************************************************************************************
    // -------- Start of program--------------
    // ***********************************************************************************************
    // ***********************************************************************************************

    PGu_setValue("RefreshInterval", 10);
    // Wenn in Berlin gespielt wird
    m_ownuserid = getOwnUserID();
    if (language == "bl_DE") {
        TOWNEXTENSION = 'B';
    // Wenn in München gespielt wird
    } else if (language == "mu_DE") {
        TOWNEXTENSION = 'MU';
    // Wenn in Köln gespielt wird
    } else if (language == "kl_DE") {
        TOWNEXTENSION = 'K';
    // Wenn in Hamburg gespielt wird
    } else if (language == "de_DE") {
        TOWNEXTENSION = 'HH';
    // Wenn in Hamburg reloaded gespielt wird
    } else if (language == "hr_DE") {
        TOWNEXTENSION = 'HR';
    // Wenn in Operation Pennersturm gespielt wird
    } else if (language == "s6_DE") {
        TOWNEXTENSION = 'OP';
    // Wenn in Sylt gespielt wird
    } else if (language == "sy_DE") {
        TOWNEXTENSION = 'SY';
    // Wenn in Malle gespielt wird
    } else if (language == "ml_DE") {
        TOWNEXTENSION = 'ML';
    // Wenn im Vatikan gespielt wird
    } else if (language == "vt_DE") {
        TOWNEXTENSION = 'VT';
        PGu_setValue("RefreshInterval", 5);
    }
    else if (language == "us_EN") {
        TOWNEXTENSION = 'NY';
    }
    else if (language == "kr_PL") {
        TOWNEXTENSION = 'KR';
    }
    else if (language == "pl_PL" || language == "wr_PL") {
        TOWNEXTENSION = 'WA';
    }
    else if (language == "ma_FR") {
        TOWNEXTENSION = 'MS';
    }
    else if (language == "fr_FR" || language == "cr_FR") {
        TOWNEXTENSION = 'PA';
    }
    else if (language == "ba_ES") {
        TOWNEXTENSION = 'BA';
    }
    else if (language == "es_ES" || language == "er_ES") {
        TOWNEXTENSION = 'MD';
    }
    else if (language == "sp_BR") {
        TOWNEXTENSION = 'SP';
    }
    else if (language == "pt_BR") {
        TOWNEXTENSION = 'RJ';
    }
    else if (language == "ru_RU") {
        TOWNEXTENSION = 'MO';
    }
    else if (language == "en_EN") {
        TOWNEXTENSION = 'LO';
    }

    if(window.location.pathname.indexOf("/stock/bottle/") != -1){
        var trs = document.getElementsByClassName("item_list")[0].getElementsByTagName("tr");
        var trnr = (TOWNEXTENSION == "VT"?3:1);
        var tr1 = trs[trnr].cloneNode(true);
        var tr2 = trs[trnr].cloneNode(true);
        var inp1 = document.createElement("input");
        inp1.id = "minmoney";
        inp1.type = "text";
        inp1.value = PGu_getValue("minMoney", 0);
        inp1.size = "9";
        var inp3 = document.createElement("input");
        inp3.type = "button";
        inp3.value = "übernehmen";
        inp3.addEventListener("click", function(event) {
            PGu_setValue("minMoney", document.getElementById("minmoney").value);
        }, false);
        if (TOWNEXTENSION == "VT") {
            tr1.getElementsByTagName("td")[0].innerHTML = 'Mindestgeldbetrag:';
            tr1.getElementsByTagName("td")[1].appendChild(inp1, tr1.getElementsByTagName("td")[1]);
            tr1.getElementsByTagName("td")[1].appendChild(inp3, tr1.getElementsByTagName("td")[1]);
        }
        else {
            tr1.getElementsByTagName("td")[1].innerHTML = 'Mindestgeldbetrag:';
            tr1.getElementsByTagName("span")[0].parentNode.removeChild(tr1.getElementsByTagName("span")[0]);
            tr1.getElementsByTagName("td")[2].appendChild(inp1, tr1.getElementsByTagName("td")[1]);
            tr1.getElementsByTagName("td")[2].appendChild(inp3, tr1.getElementsByTagName("td")[1]);
        }
        trs[trnr].parentNode.appendChild(tr1, trs[trnr]);
        var inp2 = document.createElement("input");
        inp2.id = "minprice";
        inp2.type = "text";
        inp2.value = "0," + ("0" + PGu_getValue("bottleprice", "0")).substr(-2);
        inp2.size = "5";
        var inp4 = document.createElement("input");
        inp4.type = "button";
        inp4.value = "übernehmen";
        inp4.addEventListener("click", function(event) {
            if (document.getElementById("minprice").value.substr(0,2) != "0,")
                alert ("Wert unzulässig!");
            else
                PGu_setValue("bottleprice", Number(document.getElementById("minprice").value.substr(2)));
        }, false);
        if (TOWNEXTENSION == "VT") {
            tr2.getElementsByTagName("td")[0].innerHTML = 'Mindestverkaufspreis Flaschen:';
            tr2.getElementsByTagName("td")[1].appendChild(inp2, tr2.getElementsByTagName("td")[1]);
            tr2.getElementsByTagName("td")[1].appendChild(inp4, tr2.getElementsByTagName("td")[1]);
        }
        else {
            tr2.getElementsByTagName("td")[1].innerHTML = 'Mindestverkaufspreis Flaschen:';
            tr2.getElementsByTagName("span")[0].parentNode.removeChild(tr2.getElementsByTagName("span")[0]);
            tr2.getElementsByTagName("td")[2].appendChild(inp2, tr2.getElementsByTagName("td")[2]);
            tr2.getElementsByTagName("td")[2].appendChild(inp4, tr2.getElementsByTagName("td")[2]);
        }
        trs[trnr].parentNode.appendChild(tr2, trs[trnr+1]);
        if (TOWNEXTENSION == "VT") {
            var tr3 = trs[trnr].cloneNode(true);
            var inp6 = document.createElement("input");
            inp6.id = "maxfill";
            inp6.type = "text";
            inp6.value = PGu_getValue("maxfillbottle", 90);
            inp6.size = "5";
            var inp8 = document.createElement("input");
            inp8.type = "button";
            inp8.value = "übernehmen";
            inp8.addEventListener("click", function(event) {
                if (isNaN(document.getElementById("maxfill").value) ||
                    Number(document.getElementById("maxfill").value) < 1 ||
                    Number(document.getElementById("maxfill").value) > 100)
                    alert ("Wert unzulässig!");
                else
                    PGu_setValue("maxfillbottle", Number(document.getElementById("maxfill").value));
            }, false);
            tr3.getElementsByTagName("td")[0].innerHTML = 'Maximaler Flaschenfüllgrad:';
            tr3.getElementsByTagName("td")[1].appendChild(inp6, tr3.getElementsByTagName("td")[1]);
            tr3.getElementsByTagName("td")[1].appendChild(inp8, tr3.getElementsByTagName("td")[1]);
            trs[trnr].parentNode.appendChild(tr3, trs[trnr+1]);
        }
    }

    if (PGu_getValue("minMoney", 0) > 0) {
        var price = Number(document.getElementsByClassName("icon bottle")[0].innerHTML.split(">")[1].match(/\d+/));
        if (price >= PGu_getValue("bottleprice")) {
            GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/overview/', onload:function(responseDetails) {
                var content = responseDetails.responseText;
                var fass = content.split("Fassungsverm")[1].match(/[\d.,]+/);
                var maxmoney = Number(fass[0].replace(/[.,]/g,''));
                var mon = content.split('class="icon money"')[1].split("</a>")[0];
                var money = Number(mon.split(">").pop().match(/[\d,.]+/)[0].replace(/[.,]/g, ''));
                if (money < maxmoney && money/100 < PGu_getValue("minMoney", 0))
                    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/stock/bottle/', onload:function(responseDetails) {
                        var content = responseDetails.responseText;
                        var maxmenge = Math.floor((Math.min(PGu_getValue("minMoney", 0)*100, maxmoney)-money)/price) + 1;
                        var menge = Math.min(maxmenge, Number(content.split('id="max"')[1].split('value="')[1].split('"')[0]));
                        SellBottles(menge, price);
                    }});
            }});
        }
    }

    var maxfill = PGu_getValue("maxfillbottle", 90);
    if (maxfill > 0 && TOWNEXTENSION == "VT") {
        var price = Number(document.getElementsByClassName("icon bottle")[0].innerHTML.split(">")[1].match(/\d+/));
        GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/activities/', onload:function(responseDetails) {
            var content = responseDetails.responseText;
            var fass = content.split("Fassungsverm")[1].match(/[\d.,]+/);
            GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/stock/bottle/', onload:function(responseDetails) {
                var content = responseDetails.responseText;
                var p = content.indexOf('id="hp_bar_blue"');
                var p2 = content.lastIndexOf("<span", p);
                var p3 = content.indexOf("</span", p);
                var text = content.substring(p2, p3+10).split("</span>");
                var bottles = text[0].split("</strong>")[0].split("<strong>").pop().split(" ")[0];
                if (bottles > fass * maxfill / 100) {
                    var menge = Math.floor(bottles - fass * maxfill / 100);
                    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/overview/', onload:function(responseDetails) {
                        var content = responseDetails.responseText;
                        var fass = content.split("Fassungsverm")[1].match(/[\d.,]+/);
                        var maxmoney = Number(fass[0].replace(/[.,]/g,''));
                        var mon = content.split('class="icon money"')[1].split("</a>")[0];
                        var money = Number(mon.split(">").pop().match(/[\d,.]+/)[0].replace(/[.,]/g, ''));
                        menge = Math.min(menge, Math.floor((maxmoney - money) / price));
                        SellBottles(menge, price);
                    }});
                }
            }});
        }});
    }

//    alert(PGu_getValue("minigame_value"));
    CheckForUpdate();

    CheckMinigame();

    CheckNewMinigame();

    CheckEnemygame();

//    CheckMission();

	if (PGu_getValue("getSalary", false))
		getSalary();

    var today = new Date();
    var tagesdatum = FormatDate(today);
    var ghosts = document.getElementsByClassName("ghost_container");
    var to = 10;
    if (ghosts.length > 0) {
        to = 1;
        if (PGu_getValue("ghostTest", "") != tagesdatum) {
            PGu_setValue("ghostIndex", 0);
            PGu_setValue("ghostTest", tagesdatum);
            PGu_setValue("ghostTestNoon", tagesdatum);
        }
    }

    for (i = 0; i < ghosts.length; i++)
        setTimeout('document.getElementsByClassName("ghost_container")['+i+'].click();', 1000);

    setTimeout (CheckGhosts, to * 1000);

    GM_xmlhttpRequest({method:"GET", url: 'http://' + window.location.hostname + '/city/plundershop/', onload:function(responseDetails) {
    }});
    if (PGu_getValue(nameLastCollectTime, -1) == -1) {
        var keys = GM_listValues();
        for (i = 0; i < keys.length; i++) {
            var val = keys[i];
            if (val.indexOf("-") != -1 || val.indexOf("pennersturm") != -1)
                GM_deleteValue(val);
        }
        PGu_setValue(nameLastCollectTime, 0);
    }

    var c=1;
    var posci = document.getElementById("enemy_info")?0:-1;
    if (posci != -1)
        posci = document.getElementById("enemy_info").innerHTML.indexOf('enemy_counter_info');
    if (posci != -1)
        posci = document.getElementById("enemy_info").innerHTML.substr(posci+20,100).indexOf("counter");
    if (posci != -1)
        c=2;
    try{
        fcounter = document.getElementById("counter"+c).innerHTML;
        counter = document.getElementById("counter"+(c+1)).innerHTML;
        if (counter.trim() == done0)        // is the time 00:00 ?
            counter = done;
    }
    catch(err){
    }

    var now = new Date();
    var day = now.getDay();
    var hour = now.getHours();
    if (PGu_getValue("AutoPetCollect", false)) {
        var cDay = PGu_getValue("AutoPetCollectDay", "0000000");
        var cBeg = PGu_getValue("AutoPetCollectBegH", 0);
        var cEnd = PGu_getValue("AutoPetCollectEndH", 0);
        if (cDay.substr(day, 1) == "1" &&
           ((cBeg < cEnd && hour >= cBeg && hour <= cEnd) ||
            (cBeg >= cEnd && (hour >= cBeg || hour < cEnd))))
            DoPetCollect();
    }

    if(window.location.pathname.indexOf("/activities/crime/") != -1){
        var buttons = document.getElementsByClassName("button_area");
        for (i = 0; i < buttons.length; i++)
            insertCheckBox3(buttons[i], i);
    }
    else if(window.location.pathname.indexOf("/activities/") != -1){
        var timeOptions = document.getElementsByName("time")[0];
        timeOptions.selectedIndex = PGu_getValue(nameLastCollectTime,0);
        insertCheckBox();
        insertCheckBox2();
    }
    else if(window.location.pathname.indexOf("/overview/") != -1){
        insertCheckBox4();
    }

    if (fcounter == done && counter == done || PGu_getValue("AutoCrime", false) && PGu_getValue("AutoCrimeFkt", 0) > 0 && counter == done)
        submit();
    else {
        var lastURL = PGu_getValue("AutoCollURL", "");
        if (lastURL != "") {
            PGu_setValue ("AutoCollURL", "");
            window.location.replace( lastURL );
        }
        else {
            PGu_setValue(nameTime, time);
            PGu_setValue("AskedForCollect", 0);
            checkInterval = window.setInterval(check,intervalTime);
        }
    }
}