Earth Empires Editor

Earth Empires Editor (EEE) adds several easy to use functions for EE.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name           Earth Empires Editor
// @namespace      Earth Empires Editor
// @author         Jabroni1134
// @description    Earth Empires Editor (EEE) adds several easy to use functions for EE.
// @include	   	   http://*.earthempires.com/*
// @include	   	   https://*.earthempires.com/*
// @exclude		   http://*.earthempires.com/loggedin
// @exclude		   https://*.earthempires.com/loggedin
// @match          http://*.earthempires.com/*
// @match          https://*.earthempires.com/*
// @version        1.15
// @grant         GM_addStyle
// @grant         GM_getValue
// @grant         GM_setValue
// @grant         GM_listValues
// @grant         GM_xmlhttpRequest
// ==/UserScript==

var scriptVersion=1.15;
var ChangeLog = scriptVersion+" Change Log: *Fixed some bugs on the AttackLog page.";

var path = window.location.toString();					// get the URL of the current page
var page = path.substring(path.lastIndexOf('/'));		// extract page name from URL

if(!GM_getValue('UNIQUEKEY',false)){
    var rand = Math.floor(Math.random()*10000000000000);
    GM_setValue('UNIQUEKEY',rand.toString());
}
var UNIQUEKEY = GM_getValue('UNIQUEKEY', false);

var turns = 0;
var turnsnum = Number($c("topbar").length) - 1;
turns = $c("topbar")[turnsnum].firstChild.firstChild.firstChild.innerHTML;
turns = Number(turns.replace(/\D/g, ''));
var cash = 0;
cash = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.innerHTML;
cash = Number(cash.replace(/\D/g, ''));
var start_pos =$c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.title.indexOf('(');
var cashturns = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.title.substring(0, start_pos)
cashturns = cashturns.replace(/\D/g,'');
if(cashturns == ""){
    cashturns = 300;
}
cashturns = Number(cashturns);
if(cashturns <= 20 && cashturns != ""){
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.style.color = 'RED';
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.style.fontSize = 'large';
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.innerHTML = 'Cash: '+cash.toLocaleString()+'('+cashturns+' turns)';
}

var bushels = 0;
bushels = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.innerHTML;
bushels = Number(bushels.replace(/\D/g, ''));
start_pos = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.title.indexOf('(');
var bushelsturns = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.title.substring(0, start_pos)
bushelsturns = Number(bushelsturns.replace(/\D/g,''));
if(bushelsturns == ""){
    bushelsturns = 300;
}
bushelsturns = Number(bushelsturns);
if(bushelsturns <= 20 && bushelsturns != ""){
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.style.color = 'RED';
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.style.fontSize = 'large';
    $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.innerHTML = 'Food: '+bushels.toLocaleString()+'('+bushelsturns+' turns)';
}





//==========================================
//Get/Set Functions
//Prefixes server name to settings
//==========================================
function getSetting(key,value){
    if (typeof value == "float") value+="";
    return GM_getValue(key,value);
}

function setSetting(key,value){
    if (typeof value == "float") value+="";
    return GM_setValue(key,value);
}

// Simple replacement of getelementbyid with $ to save typing
function $(variable)
{
    if(!variable) return;
    if (document.getElementById(variable)) return document.getElementById(variable);
}

// Simple replacement of getelementbyclass with $ to save typing
function $c(variable)
{
    if(!variable) return;
    if (document.getElementsByClassName(variable)) return document.getElementsByClassName(variable);
}

// Simple replacement of getelementbyname with $ to save typing
function $n(variable)
{
    if(!variable) return;
    if (document.getElementsByName(variable)) return document.getElementsByName(variable);
}

function parseNumber (val) {
  val = val.replace(/,/g, '');
  var multiplier = val.substr(-1).toLowerCase();
  if (multiplier == "k"){
    return parseFloat(val) * 1000;
  }else if (multiplier == "m"){
    return parseFloat(val) * 1000000;
  }else{
    return val;
  }
}
function cleanAttackLog(){
    var thisTime = new Date().getTime();
    var clean = thisTime - 60*60*24;
    if(getSetting( 'AttackLogLastClean', '0' ) < clean){
        setSetting( 'AttackLogLastClean', thisTime.toString() );
        var AttackLog = getSetting( 'AttackLog', '' )
        var AttackLogArray = AttackLog.split('::::::');
        var curTime = new Date().getTime();
        var youngestTime = curTime - 60*60*24*1000;
        if(AttackLogArray.length != 0){
            for(var i=0; i<AttackLogArray.length; ++i){
                var ALAS = AttackLogArray[i].split('::');
                if(ALAS.length <= 3){ continue; }
                if(youngestTime >= ALAS[1]){
                    AttackLog.split("::::::"+ALAS[0]+"::"+ALAS[1])
                    setSetting( 'AttackLog', AttackLog[0] );
                    continue;
                }
            }
        }
    }
}

//==========================================
// Check if new install
//==========================================
function installCheck(){
        var OldVersion = parseFloat(GM_getValue("scriptVersion",0+""));
        var NewVersion = parseFloat(scriptVersion);
        if (OldVersion===null || OldVersion==="" || OldVersion=="0.1"){
            GM_setValue("scriptVersion",NewVersion+"");
            insertNotification("You have sucessfully installed Earth Empires Editor Version: "+NewVersion+" to your web browser.<br /><br/>"+ChangeLog);
            return;
        } else if (NewVersion>OldVersion){
            GM_setValue("scriptVersion",NewVersion+"");
            insertNotification("You have sucessfully upgraded Earth Empires Editor From ("+OldVersion+") To ("+NewVersion+").<br/><br/>"+ChangeLog);
        }
}
function insertNotification(message){
    if (message !== null)
    {
        var notification = document.createElement("div");
        notification.setAttribute('id', 'gm_update_alert');
        var close = document.createElement("div");
        close.setAttribute('id', 'gm_update_alert_button_close');
        close.innerHTML = "Click to hide";
        close.addEventListener('click', function(event) {
            document.body.removeChild($('gm_update_alert'));
            document.body.removeChild($('gm_update_alert_button_close'));
        }, true);
        notification.innerHTML = '<div id="gm_update_title">Earth Empires Editor Notification</div><hr class="cphr" /><p>' + message + '</p>';
        notification.appendChild(close);
        document.body.insertBefore(notification, document.body.firstChild);
    }
}

//NOTE: These are simpy defaults. There's no need to edit these here in the script.
var MESSAGE_CLASS = "notifier";
var MESSAGE_CLASS_ERROR = "notifierError";

GM_addStyle('.notifier {background-color: Black;border: solid 1px;color: white;padding: 10px 10px 10px 10px;}}'+
            '.notifierError {background-color: Black;border: solid 2px;color: red;padding: 10px 10px 10px 10px;}}'+
            'hr.cphr {color: orange;  width: 400px;}'+
            '.cpscripttimes {text-align: center;margin:0 auto;width:200px;background-color: #191919;border: #333333 solid 1px;padding-bottom: 10px;color: white;margin-top: 10px;font-size: 8px;opacity: 0.82;  z-index: 0;}'+
            '#gm_update_alert {position: relative;top: 0px;left: 0px;margin:0 auto;width:600px;background-color: #191919;text-align: center;font-size: 11px;font-family: Tahoma;border: #333333 solid 1px;margin-bottom: 10px;padding-left: 0px;padding-right: 0px;padding-top: 10px;padding-bottom: 10px;opacity: 0.82;color: white;}'+
            '.gm_update_alert_buttons {'+
            '  position: relative;'+
            '  top: -5px;'+
            '  margin: 5px;'+
            '}'+
            '#gm_update_alert_button_close {'+
            '  position: absolute;'+
            '  right: 20px;'+
            '  top: 20px;'+
            '  padding: 3px 5px 3px 5px;'+
            '  border-style: outset;'+
            '  border-width: thin;'+
            '  z-index: 11;'+
            '  background-color: orange;'+
            '  color: #FFFFFF;'+
            '  cursor:pointer;'+
            '}'+
            '.gm_update_alert_buttons span, .gm_update_alert_buttons span a  {'+
            '  text-decoration:underline;'+
            '  color: #003399;'+
            '  font-weight: bold;'+
            '  cursor:pointer;'+
            '}'+
            '.gm_update_alert_buttons span a:hover  {'+
            '  text-decoration:underline;'+
            '  color: #990033;'+
            '  font-weight: bold;'+
            '  cursor:pointer;'+
            '}'+
            '#gm_update_title {'+
            '  font-weight:bold;'+
            '  color:orange;'+
            '}'+
            '.right_Menu {'+
            '	color: gold;'+
            '	font-weight: bold;'+
            '  font-size: 11px;'+
            '  cursor:pointer;'+
            '}'+
            '.right_MenuHeader {'+
            '	color: gold;'+
            '	font-weight: bold;'+
            '  font-size: 11px;'+
            '}'+
            '.left_Menu {'+
            '	color: #DDDDDD;'+
            '  font-size: 12px;'+
            '	font-weight: bold;'+
            '}');
//==========================================
// BUILD SCREEN
//==========================================
function page_build() {
    function UpdateTotals(){
        var t = $("contentarea").getElementsByTagName('input');
        var total = 0;
        var x = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                if(t[i].name == "build[cs]") continue;
                x = parseNumber(t[i].value);
                if(isNaN(x)) x = 0;
                total = Number(total) + Number(x);
            }
        }
        total = Math.ceil(total / BPT);
        total = Number($n("build[cs]")[0].value) + total;
        if(total > turns) {
            $("TotalTurns").innerHTML = "<font color='RED'><b>Turns: "+total+"</B></font>";
        }else{
            $("TotalTurns").innerHTML = "Turns: "+total;
        }
    }
    function PostToBox(variable){
        var textbox =  variable.parentNode.parentNode.cells[2].firstChild.value;
        var id = variable.innerHTML;
        switch (id){
            case "-":
                var newnum = Number(textbox) - Number(BPT);
                if(Number(newnum) < Number(0)){
                    newnum = 0;
                }
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(newnum);
                break;
            case "+":
                var newnum = Number(textbox) + Number(BPT);
                if(Number(newnum) > Number(mBuild2)){
                    break;
                }
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(textbox) + Number(BPT);
                break;
            case "Max BPT":
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(maxBPTnum);
                break;
            case "Max":
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(mBuild2);
                break;
            case "+4":
                var newnum = Number(textbox) + Number(4);
                if(Number(newnum) > Number(mBuild2) || Number(newnum) > Number(turns)){
                    break;
                }
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(newnum);
                break;
            case "-4":
                var newnum = Number(textbox) - Number(4);
                if(Number(newnum) < Number(0)){
                    newnum = 0;
                }
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(newnum);
                break;
            case "Max CS":
                if(Number(turns) > Number(mBuild2)){
                    variable.parentNode.parentNode.cells[2].firstChild.value = Number(mBuild2);
                }else{
                    variable.parentNode.parentNode.cells[2].firstChild.value = Number(turns);
                }
                break;
            case "0":
                variable.parentNode.parentNode.cells[2].firstChild.value = Number(0);
                break;
            default:

                break;
        }
        x = UpdateTotals();
    }
    var BPT = $c("BPT")[0].innerHTML;
    var table = $c("contenttable")[0];
    var mBuild = $("contentarea");
    var mBuild2 = mBuild.getElementsByTagName('span')[1].innerHTML;
    mBuild2 = parseFloat(mBuild2.replace(/,/g, ''));
    var row;
    var x;
    var maxBPTnum = 0;
    var turnNumber = 0;
    for (var i = 0; i<50; i++) {
        if(Number(maxBPTnum) + Number(BPT) > Number(mBuild2)){
            break;
        }
        maxBPTnum = Number(maxBPTnum) + Number(BPT);
   }
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "left";
        if (row.cells[0].innerHTML == "Structure") continue;
        if (row.cells[0].innerHTML == "Unused Land Area"){
            i++;
            row = table.rows[i];
            x = row.insertCell(-1);
            x.id = "TotalTurns";
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.innerHTML = "Turns: "+turnNumber;
            break;
        }
        row.cells[2].firstChild.onkeyup  = function(){UpdateTotals();};
        if (row.cells[0].innerHTML == "Construction Sites"){
            x.innerHTML = "<a id='"+i+"_cssubfour'>-4</a> | <a id='"+i+"_zero'>0</a> | <a id='"+i+"_csaddfour'>+4</a> | <a id='"+i+"_csmaxbuild'>Max CS</a>";
            x.style='cursor: pointer;';
            $(i+"_cssubfour").addEventListener("click", function(){PostToBox(this);}, false);
            $(i+"_zero").addEventListener("click", function(){PostToBox(this);}, false);
            $(i+"_csaddfour").addEventListener("click", function(){PostToBox(this);}, false);
            $(i+"_csmaxbuild").addEventListener("click", function(){PostToBox(this);}, false);
            continue;
        }
        x.innerHTML = "<a id='"+i+"_minus'>-</a> | <a id='"+i+"_zero'>0</a> | <a id='"+i+"_addBPT'>+</a> | <a id='"+i+"_maxBPT'>Max BPT</a> | <a id='"+i+"_maxbuild'>Max</a>";
        x.style='cursor: pointer;';
        $(i+"_minus").addEventListener("click", function(){PostToBox(this);}, false); 
        $(i+"_zero").addEventListener("click", function(){PostToBox(this);}, false); 
        $(i+"_addBPT").addEventListener("click", function(){PostToBox(this);}, false);
        $(i+"_maxBPT").addEventListener("click", function(){PostToBox(this);}, false);
        $(i+"_maxbuild").addEventListener("click", function(){PostToBox(this);}, false);
    }

  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: BUILD PAGE
*/

//==========================================
// RESEARCH SCREEN
//==========================================
function page_research() {
    function UpdateTotals(){
        var t = $("contentarea").getElementsByTagName('input');
        var total = 0;
        var x = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                x = parseNumber(t[i].value);
                if(isNaN(x)) x = 0;
                total = Number(total) + Number(x);
            }
        }
        total = Math.ceil(total / TPT);
        if(total > turns) {
            $("TotalTurns").innerHTML = "<font color='RED'><b>Turns: "+total+"</B></font>";
        }else{
            $("TotalTurns").innerHTML = "Turns: "+total;
        }
    }
    function PostToBox2(variable){
        var textbox =  variable.parentNode.parentNode.cells[3].firstChild.value;
        var id = variable.innerHTML;
        switch (id){
            case "-":
                var newnum = Number(textbox) - Number(TPT);
                if(Number(newnum) < Number(0)){
                    newnum = 0;
                }
                variable.parentNode.parentNode.cells[3].firstChild.value = Number(newnum);
                break;
            case "+":
                var newnum = Number(textbox) + Number(TPT);
                if(Number(newnum) > Number(maxTech)){
                    break;
                }
                variable.parentNode.parentNode.cells[3].firstChild.value = newnum;
                break;
            case "0":
                variable.parentNode.parentNode.cells[3].firstChild.value = Number(0);
                break;
            case "#":
                var input = prompt("Choose the amount of turns you want to use for this research item.", "0");
                if (input != null && isNaN(input) === false) {
                    var math = Number(TPT) * Number(input);
                    variable.parentNode.parentNode.cells[3].firstChild.value = Number(math);
                }
                break;
            default:

                break;
        }
        x = UpdateTotals();
    }
    var TPT = $c("TPT")[0].innerHTML;
    TPT = parseFloat(TPT.replace(/,/g, ''));
    var tablenum = Number($c("turntable").length) - 1;
    var table = $c("turntable")[tablenum];
    var maxTech = $("contentarea");
    maxTech = maxTech.getElementsByTagName('span')[1].innerHTML;
    maxTech = parseFloat(maxTech.replace(/,/g, ''));
    var row;
    var x;
    var maxTPTnum = 0;
    var turnNumber = 0;
    for (var i = 0; i<135; i++) {
        if(Number(maxTPTnum) + Number(TPT) > Number(maxTech)){
            break;
        }
        maxTPTnum = Number(maxTPTnum) + Number(TPT);
   }
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        row.cells[3].firstChild.onkeyup = function(){UpdateTotals();};
        x = row.insertCell(-1);
        x.align = "left";
        x.style.whiteSpace = 'nowrap';
        if (row.cells[0].innerHTML == "Technology") continue;
        x.innerHTML = "<a id='"+i+"_minus'>-</a> | <a id='"+i+"_zero'>0</a> | <a id='"+i+"_addTPT'>+</a> | <a id='"+i+"_Turns'>#</a>";
        x.style.cursor ='pointer';
        $(i+"_minus").addEventListener("click", function(){PostToBox2(this);}, false);
        $(i+"_zero").addEventListener("click", function(){PostToBox2(this);}, false);
        $(i+"_addTPT").addEventListener("click", function(){PostToBox2(this);}, false);
        $(i+"_Turns").addEventListener("click", function(){PostToBox2(this);}, false);
        if (row.cells[0].innerHTML == "SDI") {
            i++;
            row = table.rows[i];
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalTurns";
            x.innerHTML = "Turns: "+turnNumber;
            break;
        }
    }
  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: RESEARCH PAGE
*/

//==========================================
// MARKET SCREEN
//==========================================
function page_market() {
    function UpdateCosts(){
        var t = $c("contenttable ct")[0].getElementsByTagName('input');
        var total = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                x = t[i].parentNode.parentNode.cells[2].innerHTML;
                var n = x.indexOf('<');
                x = x.substring(1, n != -1 ? n : x.length);
                x = parseNumber(t[i].value) * Number(x);
                if(isNaN(x)) x = 0;
               t[i].parentNode.parentNode.cells[7].innerHTML = "$"+x.toLocaleString();
                total = Number(total) + Number(x);
            }
        }
        if(Number(total) > cash){
            $("TotalCost").innerHTML = "<font color='RED'><b>Total Cost: $"+total.toLocaleString()+"</b></font>";
        }else{
            $("TotalCost").innerHTML = "Total Cost: $"+total.toLocaleString();
        }
    }
    var table = $c("contenttable ct")[0];
    var row;
    var x;
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "left";
        x.style.whiteSpace = 'nowrap';
        x.id = i+"_Costs";
        if (row.cells[0].innerHTML == "Item") continue;
        x.innerHTML = "$0";
        row.cells[6].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[5].addEventListener("click", function(){UpdateCosts();}, false);        
        if (row.cells[0].innerHTML == "Oil Barrels") {
            i++;
            row = table.rows[i];
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalCost";
            x.innerHTML = "Total Cost: $0";
            row.cells[0].colSpan ='6';
            x.colSpan = '2';
            break;
        }
    }

  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: MARKET PAGE
*/

//==========================================
// MARKET BUY TECH SCREEN
//==========================================
function page_marketTech() {
    function UpdateCosts(){
        var t = $c("contenttable ct")[0].getElementsByTagName('input');
        var total = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                x = t[i].parentNode.parentNode.cells[2].innerHTML;
                var n = x.indexOf('<');
                x = x.substring(1, n != -1 ? n : x.length);
                x = parseNumber(t[i].value) * Number(x);
                if(isNaN(x)) x = 0;
               //t[i].parentNode.parentNode.cells[7].innerHTML = "$"+x.toLocaleString();
                total = Number(total) + Number(x);
            }
        }
        if(Number(total) > cash){
            $("TotalCost").innerHTML = "<font color='RED'><b>Total Cost: $"+total.toLocaleString()+"</b></font>";
        }else{
            $("TotalCost").innerHTML = "Total Cost: $"+total.toLocaleString();
        }
    }
    var table = $c("contenttable ct")[0];
    var row;
    var x;
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        row.cells[6].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[5].addEventListener("click", function(){UpdateCosts();}, false);
        if (row.cells[0].innerHTML.slice(0, 3) == "SDI") {
            i++;
            row = table.rows[i];
            row.cells[0].colSpan ='4';
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalCost";
            x.innerHTML = "Total Cost: $0";
            x.colSpan = '3';
            break;
        }
    }

  //  window.alert(BPT[0].innerHTML);
}

//==========================================
// MARKET SELL GOODS AND TECH SCREEN
//==========================================
function page_marketSell() {
    function UpdateCosts(){
        var total = 0;
        var total2 = 0;
        var tottax = 0;
        var t = $c("contenttable ct")[0].getElementsByTagName('input');
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text" && t[i].name.slice(0, 1) == "q"){
                x = t[i].parentNode.parentNode.cells[4].firstChild.value;
                x = parseNumber(t[i].value) * Number(x);
                if(isNaN(x)) x = 0;
               t[i].parentNode.parentNode.cells[6].innerHTML = "<font color='green'>$"+x.toLocaleString()+"</font>";
                total = Number(total) + Number(x);
            }
        }
        tottax = (tax / 100) * total;
        tottax = Math.ceil(tottax);
        total2 = total - tottax;
        total2 = Math.ceil(total2);
        $("TotalCost").innerHTML = "<b>$"+total.toLocaleString()+"</b><BR><font color='red'><b>$"+tottax.toLocaleString()+"</b></font><BR><font color='green'><b>$"+total2.toLocaleString()+"</b></font>";
    }
    var table = $c("contenttable ct")[0];
    var row;
    var x;

    var tax = $c("mTax")[0].innerHTML.replace(/\D/g, '');
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "right";
        x.style.whiteSpace = 'nowrap';
        x.id = i+"_Costs";
        if (row.cells[0].innerHTML == "Item"){
            x.innerHTML = "Income";
            continue;
        }
        if (row.cells[0].innerHTML === "") {
            continue;
        }
        x.innerHTML = "<font color='green'>$0</font>";
        row.cells[4].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[5].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[5].addEventListener("click", function(){UpdateCosts();}, false);
        if (row.cells[0].innerHTML.slice(0, 3) == "Oil" || row.cells[0].innerHTML.slice(0, 3) == "SDI") {
            if(row.cells[0].innerHTML.slice(0, 3) == "SDI") i++;
            i++;
            row = table.rows[i];
            row.cells[0].colSpan ='5';
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.innerHTML = "Income:<BR>Tax:<BR><font color='green'><b>Profit:</b></font>";
            x = row.insertCell(-1);
            x.align = "Right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalCost";
            x.innerHTML = "$0<BR>"+tax+"%<BR>$0";
            break;
        }
    }

  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: MARKET PAGE
*/

//==========================================
// PRIVATE MARKET SCREEN
//==========================================
function page_marketPrivate() {
    function UpdateCosts(){
        var t = $c("contenttable")[0].getElementsByTagName('input');
        var total = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                x = t[i].parentNode.parentNode.cells[2].innerHTML.slice(1);
                x = parseNumber(t[i].value) * Number(x);
                if(isNaN(x)) x = 0;
               t[i].parentNode.parentNode.cells[6].innerHTML = "$"+x.toLocaleString();
                total = Number(total) + Number(x);
            }
        }
        if(Number(total) > cash){
            $("TotalCost").innerHTML = "<font color='RED'><b>Total Cost: $"+total.toLocaleString()+"</b></font>";
        }else{
            $("TotalCost").innerHTML = "Total Cost: $"+total.toLocaleString();
        }
    }
    var table = $c("contenttable")[0];
    var row;
    var x;
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "Right";
        x.style.whiteSpace = 'nowrap';
        x.id = i+"_Costs";
        if (row.cells[0].innerHTML == "Unit"){ x.innerHTML = "Cost"; continue; }
        x.innerHTML = "$0";
        row.cells[5].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[4].addEventListener("click", function(){UpdateCosts();}, false);        
        if (row.cells[0].innerHTML == "Bushels") {
            i++;
            row = table.rows[i];
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalCost";
            x.innerHTML = "Total Cost: $0";
            row.cells[0].colSpan ='5';
            x.colSpan = '2';
            break;
        }
    }

  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: MARKET PAGE
*/

//==========================================
// PRIVATE MARKET SCREEN
//==========================================
function page_marketPrivateSellMilitary() {
    function UpdateCosts(){
        var t = $c("contenttable")[0].getElementsByTagName('input');
        var total = 0;
        for (var i = 0; t[i]; i++) {
            if(t[i].type == "text"){
                x = t[i].parentNode.parentNode.cells[1].innerHTML.slice(1);
                x = parseNumber(t[i].value) * Number(x);
                if(isNaN(x)) x = 0;
               t[i].parentNode.parentNode.cells[4].innerHTML = "$"+x.toLocaleString();
                total = Number(total) + Number(x);
            }
        }
            $("TotalCost").innerHTML = "<font color='Green'><b>Total Profit: $"+total.toLocaleString()+"</b></font>";
    }
    var table = $c("contenttable")[0];
    var row;
    var x;
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "Right";
        x.style.whiteSpace = 'nowrap';
        x.id = i+"_Costs";
        if (row.cells[0].innerHTML == "Unit"){ x.innerHTML = "Cost"; continue; }
        x.innerHTML = "$0";
        row.cells[3].firstChild.onkeyup = function(){UpdateCosts();};
        row.cells[3].addEventListener("click", function(){UpdateCosts();}, false);
        if (row.cells[0].innerHTML == "Food") {
            i++;
            row = table.rows[i];
            x = row.insertCell(-1);
            x.align = "right";
            x.style.whiteSpace = 'nowrap';
            x.id = "TotalCost";
            x.innerHTML = "Total Cost: $0";
            row.cells[0].colSpan ='3';
            x.colSpan = '2';
            break;
        }
    }

  //  window.alert(BPT[0].innerHTML);
}
/*
*  END: MARKET PAGE
*/

//==========================================
// EXPLORE SCREEN
//==========================================
function page_explore() {
    function Update(){
        x = $n("turns")[0].value;
        if(isNaN(x)) x = 0;
        x = x * Number(explorerate);
        $("totalland").innerHTML = "<font color='Green'><b>You will gain "+x+" Acres of land. (Humanitarians are not factored in.)</b></font>";
    }
    var explorerates = [99999,99999,99999,99999,99999,99999,21280,17882,15389,13484,11979,10761,9755,8909,8189,7569,7028,6553,6132,5757,5420,5116,4841,4589,4360,4149,3954,3774,3608,3453,3308,3173,3047,2928,2816,2711,2612,2518,2429,2345,2265,2189,2117,2048,1983,1920];
    var exploreratesrep = [99999,99999,99999,99999,99999,99999,99999,21620,18629,16342,14537,13075,11868,10853,9989,9245,8596,8026,7521,7071,6666,6302,5971,5669,5394,5141,4907,4691,4491,4305,4132,3970,3818,3676,3542,3416,3297,3184,3077,2977,2881,2789,2703,2620,2541,2466,2394,2325,2259,2196,2135,2077,2021,1967,1915];
    var x;
    var y;
    var div = $("contentarea");
    var totalland = 0;
    var acreshave = $("contentarea").getElementsByClassName("positive")[0].innerHTML;
    acreshave = Number(parseFloat(acreshave.replace(/,/g, '')));
    var unusedacres = $("contentarea").getElementsByClassName("positive")[1].innerHTML;
    unusedacres = Number(parseFloat(unusedacres.replace(/,/g, '')));
    var maxlandgrab = acreshave - unusedacres;
    var n = div.innerHTML.indexOf('about ');
    n = n + 5;
    var m = div.innerHTML.indexOf('acres');
    var explorerate = div.innerHTML.slice(n, m);
    if(isNaN(explorerate)) explorerate = 1;
    for (x = 0; x < explorerates.length; x++) {
        if(explorerates[x] <= Number(acreshave)){
            break;
        }
    }
    if((Number(x)-1) !== Number(explorerate)) explorerates = exploreratesrep;
    var maxtable = turns;
    var table = "<table class='contenttable ct' align='center'><tr><td style='background-color:  #400000; font-weight: bold; width: 110px;'>Turns Used</td><td style='background-color:  #400000; font-weight: bold; width: 110px;'>  Land gained  </td><td style='background-color:  #400000; font-weight: bold; width: 110px;'>  Total land  </td></tr>";
    var color = "#000000";
    var curexplorerate = 0;
    var lastexplorerate = 0;
    for (var i = 1; i <= maxtable; i++) {
        if (i * Number(explorerate) > maxlandgrab) break;
        for (x = 0; x < explorerates.length; x++) {
            if(explorerates[x] <= (i * Number(explorerate) + Number(acreshave))){
                curexplorerate = x;
                x--;
                break;
            }
        }
        if(lastexplorerate !== curexplorerate){
            table = table + "<tr><td style='background-color: #8B0000;' colSpan='3'>Explore rate will change to "+x+" below this.</td></tr>";
            lastexplorerate = curexplorerate;
        }

        table = table + "<tr><td style='background-color: "+color+";'>"+i+"</td><td style='background-color: "+color+";'>"+i * Number(explorerate)+" Acres</td><td style='background-color: "+color+";'>"+ (i * Number(explorerate) + Number(acreshave)) +"</td></tr>";
        if(color == "#000000"){ color = "#222222"; }else{ color = "#000000"; }
    }
    i--;
    table = table + "</table>";
    div.innerHTML = div.innerHTML + "<br><br><div id='totalland'>You can explore a max of "+ i +" turns.</div><br /><br /><div id='extrac'>"+table+"</div>";
    var t = div.getElementsByTagName('input');
    $n("turns")[0].onkeyup = function(){Update();};
}
/*
*  END
*/

//==========================================
// WAR SCREEN
//==========================================




function page_war() {
    var listening = false;
    var myRef = false;
    var lastpost = false;

    function ChangeAttack(){
        var miltable = $c("mil_table")[0];
        $c("contenttable")[0].rows[1].cells[0].style.display = '';
        $c("contenttable")[0].rows[1].cells[1].style.display = 'none';
        switch ( $('ATTTYPE').value){
            case "Standard":
            case "Planned":
                miltable.rows[1].style.display = '';
                miltable.rows[2].style.display = '';
                miltable.rows[3].style.display = '';
                break;
            case "Guerilla":
                miltable.rows[2].value = 0;
                miltable.rows[3].value = 0;
                miltable.rows[1].style.display = '';
                miltable.rows[2].style.display = 'none';
                miltable.rows[3].style.display = 'none';
                break;
            case "Bombing":
                miltable.rows[1].value = 0;
                miltable.rows[3].value = 0;
                miltable.rows[1].style.display = 'none';
                miltable.rows[2].style.display = '';
                miltable.rows[3].style.display = 'none';
                break;
            case "Artillery":
                miltable.rows[1].value = 0;
                miltable.rows[2].value = 0;
                miltable.rows[1].style.display = 'none';
                miltable.rows[2].style.display = 'none';
                miltable.rows[3].style.display = '';
                break;
            case "Declare":
                $c("contenttable")[0].rows[1].cells[0].style.display = 'none';
                miltable.rows[1].value = 0;
                miltable.rows[2].value = 0;
                miltable.rows[3].value = 0;
                                break;
            case "Missile":
                $c("contenttable")[0].rows[1].cells[0].style.display = 'none';
                $c("contenttable")[0].rows[1].cells[1].style.display = '';
                miltable.rows[1].value = 0;
                miltable.rows[2].value = 0;
                miltable.rows[3].value = 0;
                break;
        }
    }

      function monitor_PrepareAttack() {
         if($("attack_info")){
              var allInputs = $("attack_info").getElementsByTagName('input');
              for(var i=0; i<allInputs.length; ++i){
                  if(allInputs[i].value == "Send Attack"){
                      allInputs[i].removeAttribute('onclick');
                      allInputs[i].addEventListener("click", send_attack);
                      allInputs[i].addEventListener("click", monitor_SendAttack);
                  }
              }
         }else{
             setTimeout(function() { monitor_PrepareAttack(); }, 500);
         }
      }

      function monitor_SendAttack() {
          //Parse the results
          if($("warwrap")){
              if($("resend_button") && !listening){
                  $("resend_button").firstChild.removeAttribute('onclick');
                  $("resend_button").firstChild.addEventListener("click", send_attack);
                  $("resend_button").firstChild.addEventListener("click", monitor_SendAttack);
                  listening = true;
              }
              //LOG ATTACK
              var country = $('target_name').innerHTML;
              //RESULT PASS/FAIL
              var result = "FAILED";
              if($("warwrap").firstChild.getAttribute("class") == "positive"){
                  result = "SUCCESS";
              }
              //CURRENT TIME
              var d = new Date();
              var time = d.getTime();
              //TYPE
              var type = $('strike_type').innerHTML;
              //ATTACK GAINS
              var civs = 0;
              var oil = 0;
              var stoldcash = 0;
              var tech = 0;
              var acres = 0;
              if($('att_gains')){
                  var t = $('att_gains');
                  var children = t.children;
                  for (var i = 0; i < children.length; i++) {
                      var tc = children[i];
                      if(tc.innerHTML.includes("Civilians")){
                          civs = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Oil Barrels")){
                          oil = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("$")){
                          stoldcash = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Technology Points")){
                          tech = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Gained")){
                          var start_pos = tc.innerHTML.indexOf('Acres') + 1;
                          acres = tc.innerHTML.substring(start_pos)
                          acres = acres.replace(/\D/g,'');
                          continue;
                      }
                  }
              }
              //ATTACKER LOSSES
              var troops = 0;
              var jets = 0;
              var tanks = 0;
              if($('att_losses')){
                  var t = $('att_losses');
                  var children = t.children;
                  for (var i = 0; i < children.length; i++) {
                      var tc = children[i];
                      if(tc.innerHTML.includes("Troops")){
                          troops = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Jets")){
                          jets = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Tanks")){
                          tanks = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                  }
              }
              //DEFENDER LOSSES
              var ktroops = 0;
              var kturrets = 0;
              var ktanks = 0;
              if($('def_losses')){
                  var t = $('def_losses');
                  var children = t.children;
                  for (var i = 0; i < children.length; i++) {
                      var tc = children[i];
                      if(tc.innerHTML.includes("Troops")){
                          ktroops = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Turrets")){
                          kturrets = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                      if(tc.innerHTML.includes("Tanks")){
                          ktanks = tc.innerHTML.replace(/\D/g,'');
                          continue;
                      }
                  }
              }
              var t = oil+stoldcash+tech+acres+troops+jets+tanks+civs+ktroops+kturrets+ktanks;
              if(t == lastpost){
                  setTimeout(function() { monitor_SendAttack(); }, 100);
                  return;
              }
              var cash = 0;
              cash = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.innerHTML;
              cash = Number(cash.replace(/\D/g, ''));
              var start_pos =$c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.title.indexOf('(');
              var cashturns = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.title.substring(0, start_pos)
              cashturns = cashturns.replace(/\D/g,'');
              if(cashturns == ""){
                  cashturns = 300;
              }
              cashturns = Number(cashturns);
              if(cashturns <= 20 && cashturns != ""){
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.style.color = 'RED';
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.style.fontSize = 'large';
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[1].firstChild.innerHTML = 'Cash: '+cash.toLocaleString()+'('+cashturns+' turns)';
              }

              var bushels = 0;
              bushels = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.innerHTML;
              bushels = Number(bushels.replace(/\D/g, ''));
              start_pos = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.title.indexOf('(');
              var bushelsturns = $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.title.substring(0, start_pos)
              bushelsturns = Number(bushelsturns.replace(/\D/g,''));
              if(bushelsturns == ""){
                  bushelsturns = 300;
              }
              bushelsturns = Number(bushelsturns);
              if(bushelsturns <= 20 && bushelsturns != ""){
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.style.color = 'RED';
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.style.fontSize = 'large';
                  $c("topbar")[turnsnum].firstChild.firstChild.childNodes[2].firstChild.innerHTML = 'Food: '+bushels.toLocaleString()+'('+bushelsturns+' turns)';
              }
              if(cashturns <= 1){
                  alert("WARNING: You are out of CASH!");
              }
              if(bushelsturns <= 1){
                  alert("WARNING: You are out of BUSHELS!");
              }
              lastpost = t;
              var AttackLog = getSetting( 'AttackLog', '' );
              var log = country+"::"+time+"::"+result+"::"+type+"::"+oil+"::"+stoldcash+"::"+tech+"::"+acres+"::"+troops+"::"+jets+"::"+tanks+"::"+civs+"::"+ktroops+"::"+kturrets+"::"+ktanks;
              setSetting('AttackLog', AttackLog+log+'::::::');
         }else{
             setTimeout(function() { monitor_SendAttack(); }, 500);
         }
      }



    function monitorPage() {
        myRef = window.open('about:blank','AttackMonitor','left=20,top=20,width=1100,height=700,scrollbars=1');
        myRef.document.body.innerHTML = ''; //FIREFOX OLD
        myRef.document.write('<meta content="Earth" name="keywords"><html><head><meta content="en-us" http-equiv="Content-Language"></head><body background="" bgcolor="black" link="#00C0FF" text="#DDDDDD" vlink="#d3d3d3">');
        myRef.document.write('<h1 style="text-align: center;"><strong>Attack Monitor!</strong></h1><h4 style="text-align: center;">(This will list all your attacks in the last 24 hours)</h4>');
        var AttackLog = getSetting( 'AttackLog', '' );
        if(AttackLog === ''){ return; }
        var AttackLogArray = AttackLog.split('::::::');
        var LastCountry = 0;
        if(AttackLogArray.length != 0){
            for(var i=0; i<AttackLogArray.length; ++i){
                var ALAS = AttackLogArray[i].split('::');
                if(ALAS.length <= 3){
                    myRef.document.write('<tr bgcolor="#400000">');
                    myRef.document.write('<td style="color: Red; text-align: center;" colspan="3">Total Attacks: '+totattacks+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Oil">'+totoil.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Cash">$'+totcash.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Tech">'+tottech.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Land">'+totland.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostTroops">'+totlosttroops.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostJets">'+totlostjets.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostTanks">'+totlosttanks.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledCivs">'+totkilledcivs.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTroops">'+totkilledtroops.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTurrets">'+totkilledturrets.toLocaleString()+'</td>');
                    myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTanks">'+totkilledtanks.toLocaleString()+'</td>');
                    myRef.document.write('</tr>');
                    myRef.document.write('</table><br><br>');
                    continue;
                }
                if(LastCountry !== ALAS[0]){
                    if(LastCountry !== 0){
                        myRef.document.write('<tr bgcolor="#400000">');
                        myRef.document.write('<td style="color: Red; text-align: center;" colspan="3">Total Attacks: '+totattacks+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Oil">'+totoil.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Cash">$'+totcash.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Tech">'+tottech.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_Land">'+totland.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostTroops">'+totlosttroops.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostJets">'+totlostjets.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_LostTanks">'+totlosttanks.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledCivs">'+totkilledcivs.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTroops">'+totkilledtroops.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTurrets">'+totkilledturrets.toLocaleString()+'</td>');
                        myRef.document.write('<td style="color: Red; text-align: center;" id="Header_KilledTanks">'+totkilledtanks.toLocaleString()+'</td>');
                        myRef.document.write('</tr>');
                        myRef.document.write('</table><br><br>');
                    }
                    myRef.document.write('<table width="100%" border="1"><tbody><tr bgcolor="#400000"><td style="text-align: center;" colspan="14"><h4>'+ALAS[0]+'</h4></td></tr><tr bgcolor="#400000"><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td id="Header_Stolen" style="text-align: center;" colspan="3">&nbsp;Stolen</td><td id="Header_MilLost" style="text-align: center;" colspan="3">&nbsp;Military Lost</td><td id="Header_MilKilled" style="text-align: center;" colspan="4">&nbsp;Killed</td></tr><tr bgcolor="#400000"><td style="text-align: center;">Time</td><td style="text-align: center;">Result</td><td style="text-align: center;">Type</td><td id="Header_Oil" style="text-align: center;">Oil</td><td id="Header_Cash" style="text-align: center;">Cash</td><td id="Header_Tech" style="text-align: center;">Tech</td><td id="Header_Land" style="text-align: center;">Land</td><td id="Header_LostTroops" style="text-align: center;">Troops</td><td id="Header_LostJets" style="text-align: center;">Jets</td><td id="Header_LostTanks" style="text-align: center;">Tanks</td><td id="Header_KilledCivs" style="text-align: center;">Civs Killed</td><td id="Header_KilledTroops" style="text-align: center;">Troops</td><td id="Header_KilledTurrets" style="text-align: center;">Turrets</td><td id="Header_KilledTanks" style="text-align: center;">Tanks</td></tr>');
                    LastCountry = ALAS[0];
                    var totoil = 0;
                    var totcash = 0;
                    var tottech = 0;
                    var totland = 0;
                    var totlosttroops = 0;
                    var totlostjets = 0;
                    var totlosttanks = 0;
                    var totkilledcivs = 0;
                    var totkilledtroops = 0;
                    var totkilledturrets = 0;
                    var totkilledtanks = 0;
                    var totattacks = 0;
                }
                totoil = Number(totoil) + Number(ALAS[4]);
                totcash = Number(totcash) + Number(ALAS[5]);
                tottech =Number(tottech) + Number(ALAS[6]);
                totland = Number(totland) + Number(ALAS[7]);
                totlosttroops = Number(totlosttroops) + Number(ALAS[8]);
                totlostjets = Number(totlostjets) + Number(ALAS[9]);
                totlosttanks = Number(totlosttanks) + Number(ALAS[10]);
                totkilledcivs = Number(totkilledcivs) + Number(ALAS[11]);
                totkilledtroops = Number(totkilledtroops) + Number(ALAS[12]);
                totkilledturrets = Number(totkilledturrets) + Number(ALAS[13]);
                totkilledtanks = Number(totkilledtanks) + Number(ALAS[14]);
                totattacks++;
                myRef.document.write('<tr bgcolor="#262626">');
                myRef.document.write('<td style="text-align: center;">'+new Date(Number(ALAS[1])).toLocaleTimeString()+'</td>');
                myRef.document.write('<td style="text-align: center;">'+ALAS[2]+'</td>');
                myRef.document.write('<td style="text-align: center;">'+ALAS[3]+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_Oil">'+Number(ALAS[4]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_Cash">$'+Number(ALAS[5]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_Tech">'+Number(ALAS[6]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_Land">'+Number(ALAS[7]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_LostTroops">'+Number(ALAS[8]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_LostJets">'+Number(ALAS[9]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_LostTanks">'+Number(ALAS[10]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_KilledCivs">'+Number(ALAS[11]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_KilledTroops">'+Number(ALAS[12]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_KilledTurrets">'+Number(ALAS[13]).toLocaleString()+'</td>');
                myRef.document.write('<td style="text-align: center;" id="Header_KilledTanks">'+Number(ALAS[14]).toLocaleString()+'</td>');
                myRef.document.write('</tr>');
            }
        }
    }


    $("submit_att_button").addEventListener("click", monitor_PrepareAttack, false);


    function Update(variable){
        var num = 0;
        switch (variable.innerHTML){
            case "0":
                variable.parentNode.cells[2].firstChild.value = 0;
                break;
            case "1k":
                variable.parentNode.cells[2].firstChild.value = 1000;
                break;
            case "10k":
                variable.parentNode.cells[2].firstChild.value = 10000;
                break;
            case "1/4":
                num = variable.parentNode.cells[1].firstChild.innerHTML;
                num = Number(parseFloat(num.replace(/,/g, '')));
                num = Number(num) / 4 - 1;
                num = Math.floor(num);
                variable.parentNode.cells[2].firstChild.value = num;
                break;
            case "1/3":
                num = variable.parentNode.cells[1].firstChild.innerHTML;
                num = Number(parseFloat(num.replace(/,/g, '')));
                num = Number(num) / 3 - 1;
                num = Math.floor(num);
                variable.parentNode.cells[2].firstChild.value = num;
                break;
        }
    }

    function UpdateEffectiveBreak(variable){
        var num = 0;
        num = Number(parseNumber(variable.value));
        num = num * GovBonus * WeapBonus;
        num = Math.round(num);
        variable.parentNode.parentNode.cells[8].innerHTML = num.toLocaleString();
    }
    var GovBonus = getSetting("GovBonus","1");
    var WeapBonus = getSetting("WeapBonus","1");
    var y;
    var x;
    //REWORK TARGET SELECT
    x = $('attack_target');
    x.style.width = '400px';
    x.rows[0].cells[0].align = "Right";
    x.rows[0].cells[0].innerHTML = "";
    x.rows[0].cells[0].style.width = "1px";
    x.rows[0].cells[1].innerHTML = "Target:";
    x.rows[0].cells[1].align = "Right";
    x.rows[0].cells[1].style.width = "125px";
    x.rows[0].cells[2].align = "Left";
    $('targetnum').style.fontSize = "x-large";
    $('targetnum').style.backgroundColor = "Black";
    $('targetnum').style.color = "Red";
    $('ATTTYPE').style.width = "190px";
    $c('contenttable')[0].rows[0].cells[0].innerHTML = $c('contenttable')[0].rows[0].cells[0].innerHTML.slice(25, -1);
    $c('contenttable')[0].rows[0].cells[1].innerHTML = "";
    $('ATTTYPE').addEventListener("change", function(){ChangeAttack();}, false);
    var readiness = $('readiness');
    if(readiness.innerHTML < 70){
        readiness.style.color = "Yellow";
        readiness.style.fontSize = "large";
        if(readiness.innerHTML < 50){
            readiness.style.color = "Red";
            readiness.style.fontSize = "x-large";
        }
    }
    var oil = $("oil_support");
    var cm = $("m_cm").innerHTML;
    if(cm >= 1){
        cm = "<font color='Red' Size='2'>Chems: "+cm+"</font>";
    } else { cm = "Chems: "+cm; }
    var nm = $("m_nm").innerHTML;
    if(nm >= 1){
        nm = "<font color='Red' Size='2'>Nukes: "+nm+"</font>";
    } else { nm = "Nukes: "+nm; }
    var em = $("m_em").innerHTML;
    if(em >= 1){
        em = "<font color='Red' Size='2'>Cruise: "+em+"</font>";
    } else { em = "Cruise: "+em; }
    oil.parentNode.innerHTML = 'Oil Support: '+oil.innerHTML+' | '+cm+' | '+nm+' | '+em+' | <span onmouseover="this.style.cursor=\'pointer\';" id="LoadAttackLog"><font style="color: Orange; font-size: 12px;">Load Attack Log</font></span>';
    $('LoadAttackLog').addEventListener("click", function(){monitorPage();}, false);
    var table = $c("mil_table")[0];
    var row;
    for (var i = 0; table.rows[i]; i++) {
        row = table.rows[i];
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        if (row.cells[0].innerHTML == "Unit"){
            x.colSpan = 5;
            x.innerHTML = "Quick Sets";
            x = row.insertCell(-1);
            x.align = "Center";
            x.style.whiteSpace = 'nowrap';
            x.colSpan = 5;
            x.innerHTML = GovBonus+"*"+WeapBonus;
            continue;
        }
        x.innerHTML = "0";
        x.style='cursor: pointer;';
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        x.innerHTML = "1k";
        x.style='background-color:  #400000; font-weight: bold; cursor: pointer;';
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        x.innerHTML = "10k";
        x.style='cursor: pointer;';
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        x.innerHTML = "1/4";
        x.style='background-color:  #400000; font-weight: bold; cursor: pointer;';
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        x.innerHTML = "1/3";
        x.style='cursor: pointer;';
        x = row.insertCell(-1);
        x.align = "Center";
        x.style.whiteSpace = 'nowrap';
        x.innerHTML = "";
        x.style='cursor: pointer;';
        row.cells[2].firstChild.onkeyup = function(){UpdateEffectiveBreak(this);};
        row.cells[3].addEventListener("click", function(){Update(this);}, false);
        row.cells[4].addEventListener("click", function(){Update(this);}, false);
        row.cells[5].addEventListener("click", function(){Update(this);}, false);
        row.cells[6].addEventListener("click", function(){Update(this);}, false);
        row.cells[7].addEventListener("click", function(){Update(this);}, false);
    }
    ChangeAttack();


  //  window.alert(BPT[0].innerHTML);
}
/*
*  END
*/

//==========================================
// SPY PAGE
//==========================================
function page_spy() {

    //var type = $n("op")[0];
    //type.selectedIndex = 1;

}
/*
*  END
*/

//==========================================
// MAIN PAGE   //  window.alert(BPT[0].innerHTML);
//==========================================
function page_main() {
    var table = $('maintable');
    var land = table.rows[6].cells[1].innerHTML.slice(0, -6);
    land = Number(parseFloat(land.replace(/,/g, '')));
    var spies = table.rows[9].cells[4].innerHTML;
    spies = Number(parseFloat(spies.replace(/,/g, '')));
    var SPAL = spies / land;
    table.rows[9].cells[3].innerHTML = table.rows[9].cells[3].innerHTML + "<br>Raw SPAL";
    table.rows[9].cells[4].innerHTML = table.rows[9].cells[4].innerHTML + "<br>"+Math.round(SPAL);
}
/*
*  END
*/

//==========================================
// ADVISOR PAGE
//==========================================
function page_advisor() {
    var allTD = $('content').getElementsByTagName('td');			// get all TD elements
    //for(var i=0; i<allTD.length; ++i){
    //    if(allTD[i].innerHTML !== "Spies"){
    //        continue;
    //    }
    //   alert(i);
    //}
    var gov = $('content').getElementsByTagName('strong')[0].innerHTML;
    if(gov === "Dictatorship"){
        gov = 1.3;
        setSetting("GovBonus","1.25");
    }else{
        gov = 1;
        setSetting("GovBonus","1");
    }
    var spyTech = Number(allTD[72].innerHTML.replace(/[^0-9.]/g,''));
    var land = Number(parseFloat(allTD[16].innerHTML.replace(/[^0-9.]/g,'')));
    var spies = Number(parseFloat(allTD[112].innerHTML.replace(/[^0-9.]/g,'')));
    var WeapBonus = Number(parseFloat(allTD[66].innerHTML.replace(/[^0-9.]/g,'')));
    WeapBonus = Math.round(WeapBonus) / 100;
    setSetting("WeapBonus",WeapBonus);
    var rSPAL = Math.round(spies / land);
    var SPAL = Math.round(spies / land * (Number(spyTech) / 100) * Number(gov));
    var newRow = allTD[23].parentNode.parentNode.insertRow(-1);
    var cell1 = newRow.insertCell(0);
    var cell2 = newRow.insertCell(1);
    cell1.innerHTML = "Raw SPAL";
    cell1.style.backgroundColor = "#262626";
    cell1.style.color = "Orange";
    cell2.innerHTML = rSPAL;
    cell2.align = "right";
    cell2.style.backgroundColor = "#262626";
    cell2.style.color = "Orange";
    newRow = newRow.parentNode.insertRow(-1);
    cell1 = newRow.insertCell(0);
    cell2 = newRow.insertCell(1);
    cell1.innerHTML = "SPAL + Tech + Gov";
    cell1.style.backgroundColor = "#262626";
    cell1.style.color = "Orange";
    cell2.innerHTML = SPAL;
    cell2.align = "right";
    cell2.style.backgroundColor = "#262626";
    cell2.style.color = "Orange";
}
/*
*  END
*/

//==========================================
//MAIN LOAD
//==========================================

installCheck();
switch (page){
    case "/build":
        cleanAttackLog();
        page_build();
        break;
    case "/research":
        cleanAttackLog();
        page_research();
        break;
    case "/market":
        cleanAttackLog();
        page_market();
        break;
    case "/tech": //Market buy Tech
        page_marketTech();
        break;
    case "/sell":
        if($("contentarea")){
            page_marketPrivateSellMilitary();//Market Private Sell Military
        }else{
            page_marketSell();//Market Sell Goods
        }
        break;
    case "/private": //Private Market
        page_marketPrivate();
        break;
    case "/explore": //Explore Page
        page_explore();
        break;
    case "/war": //War
        page_war();
        break;
    case "/main": //mainpage
        cleanAttackLog();
        page_main();
        break;
    case "/spy": //SpyPage
        page_spy();
        break;
    case "/advisor": //advisor
        page_advisor();
        break;
    default:
        break;
}