// ==UserScript==
// @name TravianFarBeyond
// @description EthereaL ProphetS Travian Script
// @re-fix and personalization by Freeky (aka SLY)
// @re-Build from srectch - 09/2009  by Freeky (aka SLY)
// @based on the original script from Victor Garcia (aka Croc)
// @some images and ideias from ms99 in: Travian3 Beyond ML&CN
// @Contributors nicknames are provided in the header or inside of the functions
// @include http://*.travian*.*/*.php*
// @require language.js
// @require buldingsandunits.js
// @require genericfunctions.js
// @require images.js
// @exclude http://*.travian*.*/hilfe.php*
// @exclude http://*.travian*.*/index.php*
// @exclude http://*.travian*.*/anleitung.php*
// @exclude http://*.travian*.*/impressum.php*
// @exclude http://*.travian*.*/anmelden.php*
// @exclude http://*.travian*.*/gutscheine.php*
// @exclude http://*.travian*.*/spielregeln.php*
// @exclude http://*.travian*.*/links.php*
// @exclude http://*.travian*.*/geschichte.php*
// @exclude http://*.travian*.*/tutorial.php*
// @exclude http://*.travian*.*/manual.php*
// @exclude http://*.travian*.*/ajax.php*
// @exclude http://*.travian*.*/ad/*
// @exclude http://*.travian*.*/chat/*
// @exclude http://forum.travian*.*
// @exclude http://board.travian*.*
// @exclude http://shop.travian*.*
// @exclude http://*.travian*.*/activate.php*
// @exclude http://*.travian*.*/support.php*
// @exclude http://help.travian*.*
// @exclude *.css
// @exclude *.js
// @version 3.14
// @date    23/03/2011
// ==/UserScript==

//Thanks to the Contributors:
//RedSonja Translation to Dutch (nl Lang) and ßeta Testing


//Cookies description
//edificiosPorFila  - Number os buildings per row on center village
//meteplayerLinks   - true or false value.
//ID_WW             - ID from WW village. 

//MenuLinks         
//AutoComplete
//    0 - Village Name
//    1 - Village ID
//    2 - Building ID
//    3 - GID
//    4 - Building Name
//    5 - Building Level
//    6 - Time to next event
//    7 - index
//    8 - Tipe of building (T - Temporary)

//AutoProd
//    0 - Village Name
//    1 - Village ID
//    2 - Time to next event
//    3 - ID villages to sent resources from
//    4 - Name village to sent resources from
//    5 - Time of Last send!
//    6 - Times to arrive resourses
//    7 - Resourses split("#")
//    8 - zID

//AutoDestroy
//
//AutoAttack Cookie
//    0 - Village Name
//    1 - Village ID
//    2 - Attacked Village ID
//    3 - Number of Attacks
//    4 - Time to next Attack
//    5 - Time to wait between Attacks
//    6 - Troop to send and kata 1/2 targets split("#")
//    7 - Type of Attack (0 - reenforcment, 1 - Normal, 2 - Assault)
//    8 - Server Type of Attack (0 - Normal, 1 - Multi-Wave)
//
//AutoMarket Cookie
//    0 - Village Name
//    1 - Village ID
//    2 - Where to Village zID
//    3 - Number of sends
//    4 - Time to next send
//    5 - Time to wait between sends
//    6 - Resourses to send split("#")
//
//AutoMarketShowCheckBox Cookie (Show All villages in market)
//AutoAttackShowCheckBox Cookie (Show All villages in rally point)

// Functions
{
    //TravianFarBeyond Configuration
    function funcTFBSetup()
    {
        if ( funcGetElemByID('TFBSetupTable') ) funcRemoveElem(funcGetElemByID('TFBSetupTable'));

        var _TFBSetupTable = document.createElement("TABLE");
        _TFBSetupTable.setAttribute("id","TFBSetupTable");
        _TFBSetupTable.setAttribute("cellpadding","1");
        _TFBSetupTable.setAttribute("cellspacing","1");
        var _TFBSetupTableHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","3");
        _TH.innerHTML = funcTranslate('SETUP') + " " + funcTranslate('VER') + " " + tfb_version;
        _TR.appendChild(_TH);
        _TFBSetupTableHead.appendChild(_TR);
        var _TR = document.createElement("TR");
        var _TD = document.createElement("TD");
        _TD.setAttribute("colspan","3");
        _TD.innerHTML = funcTranslate('SETUPDESC1');
        _TR.appendChild(_TD);
        _TFBSetupTableHead.appendChild(_TR);
        _TFBSetupTable.appendChild(_TFBSetupTableHead);

        //Delete Cookies
        var _TFBSetupTableHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","3");
        _TH.innerHTML = funcTranslate('SETUPCOOKIES');
        _TR.appendChild(_TH);
        _TFBSetupTableHead.appendChild(_TR);
        _TFBSetupTable.appendChild(_TFBSetupTableHead);

        var _TFBSetupTableBody = document.createElement("tbody");
        var _TR = document.createElement("TR");
        var _TD = document.createElement("TD");
        _TD.setAttribute("colspan","3");
        
        var _deleteCookies = funcElem("A", funcTranslate('DELETEALLCOOKIES'));
        _deleteCookies.setAttribute("href", "javascript:void(0)");
        _deleteCookies.setAttribute("title", funcTranslate('DELETEALLCOOKIES'));
        _deleteCookies.addEventListener("click", funcEraseAllServersAndUserCookies, 0);
        _TD.appendChild(_deleteCookies);
        _TR.appendChild(_TD);
        _TFBSetupTableBody.appendChild(_TR);

        var _TR = document.createElement("TR");
        var _TD = document.createElement("TD");
        _TD.setAttribute("colspan","3");
        var _deleteCookies = funcElem("A", funcTranslate('DELETETHISSCOOKIES'));
        _deleteCookies.setAttribute("href", "javascript:void(0)");
        _deleteCookies.setAttribute("title", funcTranslate('DELETETHISSCOOKIES'));
        _deleteCookies.addEventListener("click", funcEraseAllServerCookies, 0);
        _TD.appendChild(_deleteCookies);
        _TR.appendChild(_TD);
        _TFBSetupTableBody.appendChild(_TR);

        var _TR = document.createElement("TR");
        var _TD = document.createElement("TD");
        _TD.setAttribute("colspan","3");
        var _deleteCookies = funcElem("A", funcTranslate('DELETETHISUCOOKIES'));
        _deleteCookies.setAttribute("href", "javascript:void(0)");
        _deleteCookies.setAttribute("title", funcTranslate('DELETETHISUCOOKIES'));
        _deleteCookies.addEventListener("click", funcEraseAllUserCookies, 0);
        _TD.appendChild(_deleteCookies);
        _TR.appendChild(_TD);
        _TFBSetupTableBody.appendChild(_TR);
        
        _TFBSetupTable.appendChild(_TFBSetupTableBody);


        //Cookies Genericas!
        var _TFBSetupTableHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","3");
        _TH.innerHTML = funcTranslate('SETUPDESC2');
        _TR.appendChild(_TH);
        _TFBSetupTableHead.appendChild(_TR);
        _TFBSetupTable.appendChild(_TFBSetupTableHead);

        var _TFBSetupTableBody = document.createElement("tbody");
        var _TR = document.createElement("TR");
        
        //edificiosPorFila - Buildings By RoW
        var _TD = document.createElement("TD");
        _TD.innerHTML = funcTranslate('EDIFICIOSFS') + "&nbsp;";
        var _EDIFICIOSF = funcSelectTime(16, '_EDIFICIOSF');
        _EDIFICIOSF.selectedIndex = funcReadCookie("edificiosPorFila");
        _TD.appendChild(_EDIFICIOSF);
        _TR.appendChild(_TD);

        //Quick Links
        var _TD = document.createElement("TD");
        _TD.innerHTML = funcTranslate('LINKRAPIDOSS') + "&nbsp;";
        var _checkBox = funcCheckBox("_LINKRAPIDOSS", funcDummy);
        _checkBox.checked = funcReadCookie("meteplayerLinks");
        _TD.appendChild(_checkBox);
        _TR.appendChild(_TD);

        //WW ID
        var _TD = document.createElement("TD");
        _TD.innerHTML = 'WW zID&nbsp;<input class="text" type="text" id="_wwID" name="_wwID" maxlength="8" value=' + funcReadCookie("ID_WW") + ' size=4 Style="text-align: center;"/>';
        _TR.appendChild(_TD);

        _TFBSetupTableBody.appendChild(_TR);
       _TFBSetupTable.appendChild(_TFBSetupTableBody);




        
        funcFindElem("//div[@id='content' and @class='player']", XPFirst).appendChild(_TFBSetupTable);
        var _DIV = document.createElement("DIV");
        var _btnSave = funcBtn(1, '_btn_TFBSetup_save', funcTFBSetupSaveEvent());
        _DIV.innerHTML = "<br>";
        _DIV.align = "center";
        _DIV.appendChild(_btnSave);
        funcFindElem("//div[@id='content' and @class='player']", XPFirst).appendChild(_DIV);

        funcRemoveElem(funcGetElemByID("footer"));
    }    
    
    function funcTFBSetupSaveEvent()
    {
        return function()
        {
            funcCreateCookie("edificiosPorFila", funcGetElemByID('_EDIFICIOSF').selectedIndex);
            funcCreateCookie("meteplayerLinks", funcGetElemByID('_LINKRAPIDOSS').checked);
            funcCreateCookie("ID_WW", funcGetElemByID('_wwID').value);
            alert("SAVED");
        }
    }
    
    
    // Show Script Loading Time
    function funcScriptLoadTime()
    {
/* LOG */ //funcWriteLog("funcScriptLoadTime");
/*
        var scriptLoadTime = new Date().getTime() - scriptStartTime;
        var _span = funcElem("span", "<br><font color='blue'>TFB</font>: " + scriptLoadTime + " ms, " + funcTranslate('AT') + " " + func2Zero(new Date().getHours()) + ':' + func2Zero(new Date().getMinutes()));
        if ( ! funcFindElem("//div[@id='ltime']", XPFirst) ) return;
        funcFindElem("//div[@id='ltime']", XPFirst).appendChild(_span);
*/
/*
        _span = document.createElement("span");
        _span.setAttribute("id","TFBTimeOut");
        _span.innerHTML =  "<br>Refreshing in: " + funcSeconds2Time(180);        
        funcFindElem("//div[@id='ltime']", XPFirst).appendChild(_span);
*/        
        var _LoadTime = funcFindElem("//div[@id='ltime']", XPFirst);
        if ( !_LoadTime ) return;
        var scriptLoadTime = new Date().getTime() - scriptStartTime;
        _LoadTime.innerHTML += "<font color='blue'>TFB</font>: " + scriptLoadTime + " ms, " + funcTranslate('AT') + " " + func2Zero(new Date().getHours()) + ':' + func2Zero(new Date().getMinutes());
        
    }
    
    function funcGetAldeiaData()
    {
/* LOG */ //funcWriteLog("funcGetAldeiaData");
        var lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr", XPList);
        if (lista_aldeias == null) return;
        if ( lista_aldeias.snapshotLength > 0 )
        {
            for (var n=0; n < lista_aldeias.snapshotLength; n++)
            {
                if(lista_aldeias.snapshotItem(n).innerHTML.indexOf('<td class="dot hl">') != -1)
                {
                    lista_aldeias.snapshotItem(n).childNodes[2].innerHTML.search(/\?newdid=(\d+)/);
                    selected_village_data[0] = RegExp.$1;    // newdID
                    selected_village_data[1] = lista_aldeias.snapshotItem(n).childNodes[2].textContent;  // Name
                    selected_village_data[2] = parseInt(lista_aldeias.snapshotItem(n).childNodes[3].textContent.split("|")[0].split("(")[1]);    // X
                    selected_village_data[3] = parseInt(lista_aldeias.snapshotItem(n).childNodes[3].textContent.split("|")[1].split(")")[0]);    // Y
                    selected_village_data[4] = funcxy2id(selected_village_data[2], selected_village_data[3]);    // zID
                    selected_village_data[5] = parseInt(lista_aldeias.snapshotItem(n).childNodes[2].innerHTML.split('">')[0].split('&amp;id=')[1]);    // ID do Edificio
                    return;
                }    
            }
        }
        else
        {
            selected_village_data[0] = funcReadCookie("capital_ID");    // newdID
            selected_village_data[1] = funcReadCookie("capital_Name");  // Name
            selected_village_data[2] = funcReadCookie("capital_X");    // X
            selected_village_data[3] = funcReadCookie("capital_Y");    // Y
            selected_village_data[4] = funcReadCookie("capital_zID");    // zID
            if ( location.href.indexOf ('?id=') > -1 )
            {
                location.href.search(/\?id=(\d+$)/);
                selected_village_data[5] = RegExp.$1;    // ID do Edificio
            }
            else
            {
                if ( location.href.indexOf ('&id=') > -1 )
                {
                    location.href.search(/\&id=(\d+$)/);
                    selected_village_data[5] = RegExp.$1;    // ID do Edificio
                }
                else
                {
                    selected_village_data[5] = 0;    // ID do Edificio    
                }
            }
        }
    }
    
    function funcGetResourcesData()
    {
/* LOG */ //funcWriteLog("funcGetResourcesData");
        for (var i = 0; i < 4; i++) 
        {
            var a = funcGetElemByID('l' + (4-i));
            if ( a == null ) return;
            actual_resources[i] = a.innerHTML.split("/")[0];
            total_resources[i] = a.innerHTML.split("/")[1];
            resources_per_hour[i] =  a.title;
            resources_per_sec[i] = resources_per_hour[i]/3600;
        }
    }
    
    function funcLeftMenuLinks()
    {
/* LOG */ //funcWriteLog("funcLeftMenuLinks");
        var menu = funcFindElem("//div[@id='side_navi']//p", XPFirst);
        if ( menu == null ) return;
        var _deleteNode = false;
        for (var i = 0; i < menu.childNodes.length - 1; i++)
        {
            _deleteNode = false;
            if (menu.childNodes[i].nodeName != "A") i++;
            
            if (menu.childNodes[i].href.indexOf("http://www.travian") != -1) _deleteNode = true;
            else if (menu.childNodes[i].href.indexOf("logout.php") != -1) _deleteNode = true;
            if (_deleteNode)                
            {
                funcRemoveElem(menu.childNodes[i]);
                i--;
                funcRemoveElem(menu.childNodes[i]);                
                i--;
            }
        }
        var menu = funcFindElem("//div[@id='side_navi']//p", XPList);
        funcRemoveElem(menu.snapshotItem(1));
        funcRemoveElem(menu.snapshotItem(2).childNodes[2]);
        funcRemoveElem(menu.snapshotItem(2).childNodes[2]);
        
        var ID_WW = funcReadCookie("ID_WW");
        if (ID_WW != null && ID_WW != "" && ID_WW !=0)
        {
            var links = [   
                [funcTranslate('LOGIN'), "login.php"],
                0,
                [funcTranslate('SIMULATOR'), "warsim.php"],
                [funcTranslate('COMP'), "http://trcomp.sourceforge.net/?lang=" + server_name, "_blank"],
                0,
                ['WW:', "statistiken.php?id=6"],
                ['- ' + funcTranslate('ENV_TROPAS'), "a2b.php?z=" + ID_WW],
                ['- ' + funcTranslate('ENVTTROPAS'), "a2b.php?z=" + ID_WW + "&F=tropatoda"],
                ['- ' + funcTranslate('ENVIAR_PALHA'), "build.php?z=" + ID_WW + "&gid=17&F=palha"],
                0
            ];
        }
        else
        {
            var links = [   
                [funcTranslate('LOGIN'), "login.php"],
                0,
                [funcTranslate('SIMULATOR'), "warsim.php"],
                [funcTranslate('COMP'), "http://trcomp.sourceforge.net/?lang=" + server_name, "_blank"]
            ];              
        };
        for(var i = 0; i < links.length; i++)
        {
            if(links[i])
            {
                var a = funcElem("A", links[i][0]);
                if(links[i][1]) a.href = links[i][1];
                if(links[i][2]) a.setAttribute('target', links[i][2]);
                menu.snapshotItem(0).appendChild(a);
            }
            else menu.snapshotItem(0).appendChild(document.createElement('P'));
        }
        menu.snapshotItem(2).appendChild(document.createElement('P'));
        var a = funcElem("A", "~ " + funcTranslate('VER') + " " + tfb_version + " ~");
        a.setAttribute("href", "javascript:void(0)");
        a.setAttribute("title", funcTranslate('CHECK'));
        a.addEventListener("click", function(){ funcUpdateScript(true); }, 0);
        menu.snapshotItem(2).appendChild(a);        
    }

    function funcMainTopLinks()
    {
/* LOG */ //funcWriteLog("funcMainTopLinks");
        funcGetElemByID('ltime').setAttribute('style', 'width:175px; top:35px;');
        var barra = funcGetElemByID("mtop");
        funcRemoveElem(barra.childNodes[10]);
        funcRemoveElem(barra.childNodes[10]);
        funcRemoveElem(barra.childNodes[10]);
        funcRemoveElem(barra.childNodes[10]);
        barra.setAttribute('style', 'width:666px; left:180px;');
        var Mapa4 = ["0,0,35,33", "35,0,70,33", "0,33,35,67", "35,33,70,67"];
        var Mapa3 = ["0,0,70,33", "0,33,35,67", "35,33,70,67"];
        barra.innerHTML += '<img id="mercado123" usemap="#mercado" src="' + local_Images["mercado_gs"] + '">';
        barra.innerHTML += '<img id="militar123" usemap="#militar" src="' + local_Images["militar_gs"] + '">';
        barra.innerHTML += '<img id="alianca123" usemap="#alianca" src="' + local_Images["alianca_gs"] + '">';
        barra.innerHTML += '<a href="spieler.php?s=2"><img id="setup" src="' + local_Images["tbconf_gs"] + '" onmouseover="this.src=\'' + local_Images["tbconf"] + '\';" onmouseout="this.src=\'' + local_Images["tbconf_gs"] + '\';" title="' + funcTranslate('SETUP') + '"></a>';
        barra.innerHTML += '<map name="mercado" onmouseover="mercado123.src=\'' + local_Images["mercado"] + '\';" onmouseout="mercado123.src=\'' + local_Images["mercado_gs"] + '\';"><area shape="rect" coords="'+ Mapa3[0] +'" href="build.php?gid=17" title="' + funcTranslate('MERCADO') + '"><area shape="rect" coords="'+ Mapa3[1] +'" href="build.php?gid=17&t=1" title="' + funcTranslate('COMPRAR') + '"><area shape="rect" coords="'+ Mapa3[2] +'" href="build.php?gid=17&t=2" title="' + funcTranslate('VENDER') + '"></map>';
        barra.innerHTML += '<map name="militar" onmouseover="militar123.src=\'' + local_Images["militar"] + '\';" onmouseout="militar123.src=\'' + local_Images["militar_gs"] + '\';"><area shape="rect" coords="'+ Mapa4[0] +'" href="build.php?gid=16" title="' + funcTranslate('PUNTO') + '"><area shape="rect" coords="'+ Mapa4[1] +'" href="build.php?gid=19" title="' + funcTranslate('CUARTEL') + '"><area shape="rect" coords="'+ Mapa4[2] +'" href="build.php?gid=20" title="' + funcTranslate('CORRAL') + '"><area shape="rect" coords="'+ Mapa4[3] +'" href="build.php?gid=21" title="' + funcTranslate('TALLER') + '"></map>';
        barra.innerHTML += '<map name="alianca" onmouseover="alianca123.src=\'' + local_Images["alianca"] + '\';" onmouseout="alianca123.src=\'' + local_Images["alianca_gs"] + '\';"><area shape="rect" coords="'+ Mapa4[0] +'" href="allianz.php" title="' + funcTranslate('ALIANZAVG') + '"><area shape="rect" coords="'+ Mapa4[1] +'" href="allianz.php?s=2" title="' + funcTranslate('ALIANZAFL') + '"><area shape="rect" coords="'+ Mapa4[2] +'" href="allianz.php?s=3" title="' + funcTranslate('ATAQUES') + '"><area shape="rect" coords="'+ Mapa4[3] +'" href="allianz.php?s=4" title="' + funcTranslate('NOTICIAS') + '"></map>';
    } 
    
    // Set timers and timeouts
    function funcSetTimers()
    {
/* LOG */ //funcWriteLog("funcSetTimers");        
        setInterval(function () 
                    {
                        var relojes = funcFindElem("//*[@id='TFBTimeOutAndRefresh' or @id='TFBTimeOut']", XPList);
                        for (var i = 0; i < relojes.snapshotLength; i++)
                        {
                            var tiempo = funcTime2Seconds(relojes.snapshotItem(i).textContent) - 1;
                            if (tiempo >= 0) relojes.snapshotItem(i).innerHTML = funcSeconds2Time(tiempo);
                            else if (relojes.snapshotItem(i).id == 'TFBTimeOutAndRefresh') document.location.reload();
                        }
                    },1000);
    }
    
     // Village Links
    function funcVillageLinks()
    {
/* LOG */ //funcWriteLog("funcVillageLinks");
        var cities = funcFindElem("//table[@id='vlist']//td[@class='link']", XPList);
        if (!cities) return;
        
        var full_tr = funcFindElem("//table[@id='vlist']//tbody//tr", XPList);
        var citiesx = funcFindElem("//table[@id='vlist']//div[@class='cox']", XPList);
        var citiesy = funcFindElem("//table[@id='vlist']//div[@class='coy']", XPList);
        for (var i = 0; i < cities.snapshotLength; i++)
        {
            var id = funcxy2id(citiesx.snapshotItem(i).textContent.split("(")[1], citiesy.snapshotItem(i).textContent.split(")")[0]);
            var novo_td = document.createElement("TD");
            novo_td.setAttribute("class", "link");
            var novo_div = document.createElement("DIV");
            novo_div.style.height = "15px";
            novo_div.innerHTML += "<a href='a2b.php?z=" + id + "'><img class='iReport iReport8' src='img/x.gif' title='" + funcTranslate('ENV_TROPAS') + "'></a>";
            novo_div.innerHTML += "&nbsp;<a href='build.php?z=" + id + "&gid=17'><img class='iReport iReport14' src='img/x.gif' title='" + funcTranslate('ENVIAR') + "'></a>";
            novo_div.innerHTML += "&nbsp;<a href='build.php?z=" + id + "&gid=17&F=dist'><img class='iReport iReport13' src='img/x.gif' title='" + funcTranslate('DISTREC') + "'></a>";
            novo_td.appendChild(novo_div);
            full_tr.snapshotItem(i).appendChild(novo_td);
        }
    }        

    // Addicional information about hero
    function funcHeroStatus()
    {
/* LOG */ //funcWriteLog("funcHeroStatus");
        if (funcFindElem("//table[@id='distribution']//tr//th[@colspan='5']//a[contains(@href, '&rename')]", XPFirst) == null ) return;
        var _tabela = funcFindElem("//table[@id='distribution']", XPFirst);
		var ttd=_tabela.getElementsByTagName("th");
		var level=parseInt(ttd[0].textContent.match(/\s(\d+)\s\(/).pop());
		ttd=_tabela.getElementsByTagName("td");
		var percent=parseInt(ttd[21].textContent.match(/(\d+)\%/).pop());
		var an=100*(level);
		var an1=100*(level+1);
		var sn=0.5*an*(level+1);
		var sn1=0.5*an1*(level+2);
		var unitpercent=an1*percent/100;
		var kills=sn+unitpercent;
        funcFindElem("//span[@class='info']", XPFirst).innerHTML = funcFindElem("//span[@class='info']", XPFirst).innerHTML + ' - ' + funcTranslate('OBJECTIVO') + ': ' + an1 + ' ' + funcTranslate('MORTES') +'!';
        var _thead = document.createElement("THEAD");
        var _tr = document.createElement("TR");
        var _td = document.createElement("TD");
        _td.innerHTML = funcTranslate('MORTEST') + ':';
        _tr.appendChild(_td);
        var _td = document.createElement("TD");
        _td.innerHTML = kills;
        _tr.appendChild(_td);
        var _td = document.createElement("TD");
        _td.innerHTML = funcTranslate('FALTA') + ':';
        _td.setAttribute("style", "text-align:right;");
        _tr.appendChild(_td);
        var _td = document.createElement("TD");
        _td.setAttribute("style", "text-align:center;");
        _td.colSpan = 2;
        _td.innerHTML = sn1-kills;
        _tr.appendChild(_td);
        _thead.appendChild(_tr);
        _tabela.appendChild(_thead);
    }

    // Get the Capital ID Single Village
    function funcGetCapitalIDSingleVillage(_xmlHttpRequest)
    {
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        var newdID = _doc[0].evaluate("//ns:input[@type='hidden' and @name='did']", _doc[1], nsResolver, XPFirst, null);
        funcCreateCookie("capital_ID", newdID.singleNodeValue.value);
    }

    // Get the Capital ID
    function funcGetCapitalID(_xmlHttpRequest)
    {
/* LOG */ //funcWriteLog("funcGetCapitalID");
        var capital_Data = [0, 0, 0, 0, 0];// newdID, Name, X, Y, zID
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        var _table_villages = _doc[0].evaluate("//ns:table[@id='villages']//ns:tbody//ns:tr", _doc[1], nsResolver, XPList, null);
        for ( var _i = 0; _i < _table_villages.snapshotLength; _i++ )
        {
            if (_table_villages.snapshotItem(_i).innerHTML.search('class="none3"') != -1) 
            {
                _table_villages.snapshotItem(_i).innerHTML.search(/\karte.php\?d=(\d+)/);
                capital_Data[1] = _table_villages.snapshotItem(_i).textContent.split(" (")[0];    // Name
                capital_Data[2] = _table_villages.snapshotItem(_i).textContent.split("(")[2].split(")")[0].replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"").split("|")[0]; //X
                capital_Data[3] = _table_villages.snapshotItem(_i).textContent.split("(")[2].split(")")[0].replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"").split("|")[1]; //Y
                _table_villages.snapshotItem(_i).innerHTML.search(/\karte.php\?d=(\d+)/);
                capital_Data[4] = RegExp.$1;
                var lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr", XPList);
                if ( lista_aldeias.snapshotLength == 0 )
                {
                    ajaxRequest("spieler.php?s=1", "GET", null, funcGetCapitalIDSingleVillage, funcDummy);
                }
                else
                {
                    for (var n=0; n < lista_aldeias.snapshotLength; n++)
                    {
                        if( funcxy2id(parseInt(lista_aldeias.snapshotItem(n).childNodes[3].textContent.split("|")[0].split("(")[1]), parseInt(lista_aldeias.snapshotItem(n).childNodes[3].textContent.split("|")[1].split(")")[0])) == capital_Data[4])
                        {
                            lista_aldeias.snapshotItem(n).innerHTML.search(/\?newdid=(\d+)/);
                            capital_Data[0] = RegExp.$1;    // newdID
                            funcCreateCookie("capital_ID",   capital_Data[0]);
                            break;
                        }
                    }
                    
                }
            }
        }
        funcCreateCookie("capital_Name", capital_Data[1]);
        funcCreateCookie("capital_X",    capital_Data[2]);
        funcCreateCookie("capital_Y",    capital_Data[3]);
        funcCreateCookie("capital_zID",  capital_Data[4]);
    }
    
    function funcCapitalID(_verify)
    {
/* LOG */ //funcWriteLog("funcCapitalID");
        if ( funcReadCookie("capital_ID") == null || funcReadCookie("capital_ID") == 0 || _verify == true) ajaxRequest("spieler.php", "GET", null, funcGetCapitalID, funcDummy);
        return funcReadCookie("capital_ID");
    }

    // Realiza un resumen de la pagina de produccion
    function funcShowResourcesTable()
    {
/* LOG */ //funcWriteLog("funcShowResourcesTable");
        var capital_ID = funcCapitalID(false);
        var _fieldsonmaxlevel = true;
        var maxlvl = 10;
        if (selected_village_data[0] == capital_ID) maxlvl = 25;

        var field_array = new Array(4);
        for(i = 0; i < 4; i ++) {
            field_array[i] = new Array(26);
            for(j = 0; j <= 25; j++) {
                field_array[i][j] = new Array(2);
                field_array[i][j][0] = 0;
                field_array[i][j][1] = 0;
            }
        }
		// there are 12 types of villages ( only 6 for game servers < T3.5)
		var dist = [
			[3, 3, 0, 3, 3, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //9 crop
			[2, 3, 0, 2, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1],
			[0, 3, 0, 2, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //4-4-4-6
			[0, 3, 0, 1, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1],
			[0, 3, 0, 2, 0, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1],
			[3, 3, 0, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3], //15 crop
			[0, 3, 3, 0, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //4-4-3-7
			[2, 3, 3, 0, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //3-4-4-7
			[2, 3, 3, 0, 0, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //4-3-4-7
			[2, 3, 0, 1, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1], //3-5-4-6
			[2, 0, 0, 2, 0, 3, 3, 2, 2, 1, 1, 2, 0, 3, 3, 1, 3, 3], //4-3-5-6
			[0, 3, 0, 0, 1, 1, 2, 3, 3, 2, 2, 3, 3, 0, 3, 1, 0, 1]  //5-4-3-6
		];
        var village_type = parseInt(funcFindElem("//div[@id='village_map']", XPFirst).className.split('f')[1]);
        for (var i = 1; i <= 18; i++){
            var a = funcFindElem("//img[starts-with(@class, 'reslevel rf" + i + " level')]", XPFirst);
            if (a)
            {
                field_array[dist[village_type - 1][i - 1]][a.className.split(' level')[1]][0]++;
                field_array[dist[village_type - 1][i - 1]][a.className.split(' level')[1]][1]=i;
            }
            else
            {
                field_array[dist[village_type - 1][i - 1]][0][0]++;
                field_array[dist[village_type - 1][i - 1]][0][1]=i;
            }
        }
        
        var table = document.createElement('TABLE');
        table.setAttribute("id", "resumen");
        table.setAttribute("class", "tbg");
        table.setAttribute("cellpadding", "0");
        table.setAttribute("cellspacing", "1");
        table.setAttribute("border", "0");
        
        var fila1 = document.createElement('TR');
        var fila2 = document.createElement('TR');
        table.appendChild(fila1);
        table.appendChild(fila2);
        for (var i = 0; i < 4; i++)
        {
            var td1 = funcElem('TD', '<img src="img/x.gif" class="r' + (i+1) + '" title="' + funcTranslate('RECURSO' + (i+1)) + '">');
            td1.setAttribute("width", "25%");
            td1.setAttribute("align", "center");
            
            fila1.appendChild(td1);
            var td2 = document.createElement('TD');
            td2.setAttribute("style", "vertical-align:top");
            
            fila2.appendChild(td2);
            var table2 = document.createElement('TABLE');
            table2.setAttribute("cellspacing", "0");
            table2.setAttribute("border", "0");
            
            td2.appendChild(table2);
            for (var j = 0; j < maxlvl; j++)
            {
                if (field_array[i][j][0] > 0 && buildingCost[i+1][j+1] != null)
                {
                    _fieldsonmaxlevel = false;
                    var fila3 = document.createElement('TR');
                    fila3.setAttribute("class", "none");

                    var imagen = '<div style="width: 0%;">'
                    var _left = 0;
                    if ( j > 9 ) _left = 5;
                    if ( i == 0 )
                        imagen += '<span style="color:blue; position:relative; top:39px; left:' + (32 - _left) + 'px;">' + j + '</span>';
                    else if ( i == 3 )
                        imagen += '<span style="color:blue; position:relative; top:39px; left:' + (31 - _left) + 'px;">' + j + '</span>';                    
                    else
                        imagen += '<span style="color:blue; position:relative; top:41px; left:' + (33 - _left) + 'px;">' + j + '</span>';
                    imagen += '<img src="' + local_Images["r" + i] + '" border="0" title="' + funcTranslate('RECURSO' + (i+1)) + '">';
                    imagen += '</div>';
                    var td = funcElem("TD", imagen);
                    fila3.appendChild(td);
                    var restante = funcCalculateResourceTime(buildingCost[i+1][j+1]);
                    var td3 = document.createElement('TD');
                    td3.setAttribute('class', 'c f7');
                    td3.setAttribute('id', 'recurso_' + i);
                    fila3.appendChild(td3);
                    table2.appendChild(fila3);
                    var recursos1= new Array;
                    if (restante != null) 
                    {
                        td3.innerHTML = restante;
                    }
                    else
                    {
                        td3.innerHTML = '<a href="build.php?id=' + field_array[i][j][1] + '"><b><font color=green>' + funcTranslate('SUBIR_NIVEL') + '</b></font>' + '</a>';
                    }
                }
            }
        }

        if (_fieldsonmaxlevel == false)
        {
            var pixel=funcGetTablePosition();
            table.style.position = 'absolute';
            table.style.width = pixel[1];
            table.style.top = pixel[0];
            document.body.appendChild(table);
            funcRemoveElem(funcGetElemByID("footer"));
        }
    }

    function funcShowBuildingsTable()
    {
/* LOG */ //funcWriteLog("funcShowBuildingsTable");
        var edificiosPorFila = funcReadCookie("edificiosPorFila");
        if (edificiosPorFila == null || edificiosPorFila == 0) 
        {
            edificiosPorFila = prompt(funchtml2ascii(funcTranslate('EDIFICIOSF')));
            funcCreateCookie("edificiosPorFila", edificiosPorFila);
        }
        var _showtable = false;
        var buildingsData = new Array(); // [Descs, Links, Images, Level, gID];
        var _tmp1 = funcFindElem('//map[@id="map2"]/area/@title', XPList);
        var _tmp2 = funcFindElem('//map[@id="map2"]/area/@href', XPList);
        var _tmp3 = funcFindElem('//div[@id="village_map"]/img/@class', XPList);
        for ( var i = 0; i < _tmp3.snapshotLength - 1; i++ )
        {
            if ( _tmp1.snapshotItem(i) == null ) break;
            buildingsData[i] = new Array();
            buildingsData[i][0] = _tmp1.snapshotItem(i).textContent;
            buildingsData[i][1] = _tmp2.snapshotItem(i).textContent;
            buildingsData[i][2] = _tmp3.snapshotItem(i).textContent;
            buildingsData[i][3] = 0;
            buildingsData[i][4] = 0;
        }
		switch (user_Tribe) 
		{
			case 0: buildingsData[buildingsData.length - 1][2] = "user tribe g31"; break;
			case 10: buildingsData[buildingsData.length - 1][2] = "user tribe g32"; break;
			case 20: buildingsData[buildingsData.length - 1][2] = "user tribe g33"; break;
		}        
        var table = document.createElement('TABLE');
        table.setAttribute("id", "resumen");
        table.setAttribute("class", "tbg");
        table.setAttribute("cellpadding", "0");
        table.setAttribute("cellspacing", "1");
        table.setAttribute("border", "0");        
        var j = 0;
        for(var i = 0; i < buildingsData.length; i++) 
        {
            if(buildingsData[i][2].split(" ")[2] != 'iso')
            {
                
                // Por cada edificio se recoge su nivel y su codigo en el juego
                buildingsData[i][3] = parseInt(buildingsData[i][0].split(" ")[buildingsData[i][0].split(" ").length - 1]);
                
                if ( isNaN(buildingsData[i][3]) ) buildingsData[i][3] = 0;
                buildingsData[i][4] = parseInt(buildingsData[i][2].split(" g")[1]);
                
                if (buildingCost[buildingsData[i][4]] != null && buildingCost[buildingsData[i][4]][ buildingsData[i][3] + 1 ] != null)
                {
                    if (j % edificiosPorFila == 0)
                    {
                        var fila = document.createElement('TR');
                        table.appendChild(fila);
                    }
                    j++; _showtable = 1;

                    if      (buildingsData[i][4] == 31) buildingsData[i][2] = local_Images["muralla"];
                    else if (buildingsData[i][4] == 32) buildingsData[i][2] = local_Images["empalizada"];
                    else if (buildingsData[i][4] == 33) buildingsData[i][2] = local_Images["terraplen"];

                    var td = document.createElement("TD");
                    fila.appendChild(td);

                    var table2 = document.createElement('TABLE');
                    table2.setAttribute("cellspacing", "0");
                    table2.setAttribute("border", "0");
                    td.appendChild(table2);

                    var fila2 = document.createElement('TR');
                    table2.appendChild(fila2);

                    var td2 = document.createElement("TD");
                    td2.setAttribute('class', 'f10');
                    if ( buildingsData[i][4] == 31 || buildingsData[i][4] == 32 || buildingsData[i][4] == 33 )
                        td2.innerHTML = '<a href="' + buildingsData[i][1] + '">' + buildingsData[i][0] + '<br/><img src="' + buildingsData[i][2]  + '" border="0"></a>';
                    else
                        td2.innerHTML = '<a href="' + buildingsData[i][1] + '">' + buildingsData[i][0] + '<br/><img src="img/x.gif" class="' + buildingsData[i][2]  + '" border="0"></a>';
                    fila2.appendChild(td2);

                    var fila3 = document.createElement('TR');
                    table2.appendChild(fila3);
                    var restante = funcCalculateResourceTime(buildingCost[buildingsData[i][4]][buildingsData[i][3]+1]);
                    var td3 = document.createElement("TD");
                    td3.setAttribute('class', 'c f7');
                    fila3.appendChild(td3);
                    if (restante != null) td3.innerHTML = restante;
                    else td3.innerHTML = '<b><font color=green>' + funcTranslate('SUBIR_NIVEL') + '</b></font>';
                }
            }
        }
        if (_showtable == true)
        {
            while (j % edificiosPorFila != 0) { j++; fila.appendChild(document.createElement("TD")); }
            pixel=funcGetTablePosition();
            
            table.style.position = 'absolute';
            table.style.width = pixel[1];
            table.style.top = pixel[0];
            document.body.appendChild(table);
            funcRemoveElem(funcGetElemByID("footer"));
//            funcGetElemByID("footer").insertBefore(table, funcGetElemByID("mfoot"));
        }        
    }

    function funcBlinkMap(ev)
    {
/* LOG */ //funcWriteLog("funcBlinkMap");
        var marker=funcGetElemByID('mapmarker');
        var tar=ev.target
        for(var i=0;i<5;i++)
        {
            if(tar.nodeName!='TR')
            {
                tar=tar.parentNode;
            }
            else 
                break;
        }
        funcMoveElement(funcGetElemByID('mapmarker'), funcGetElemByID(tar.getAttribute('mt')));
        marker.style.display='';
    }

    function funcWait2ShowMapTable()
    {
/* LOG */ //funcWriteLog("funcWait2ShowMapTable");
        if (funcGetElemByID('tabla_mapa')) funcRemoveElem(funcGetElemByID('tabla_mapa'));
        setTimeout(funcShowMapTable, 500);
    }
    
    function funcShowMapTable()
    {
/* LOG */ //funcWriteLog("funcShowMapTable");
        var table = document.createElement('TABLE');
        table.setAttribute("id", "tabla_mapa");
        table.setAttribute("sortCol", -1);
        table.setAttribute("align", "center");
        table.setAttribute("cellspacing", "1");
        table.setAttribute("cellpadding", "0");
        table.setAttribute("border", "0");        
        
        var thead = document.createElement("THEAD"); 
        var tbody = document.createElement("TBODY"); 
        var fila = document.createElement('TR');
        var etiquetas_tabla = ['JUGADOR', 'ALIANZA', 'NALDEA', 'HAB', 'MAT_PRIMAS' , 'COORD', 'ACCION'];
        for (var i = 0; i < 7; i++){
            var td = funcElem('TD', funcTranslate(etiquetas_tabla[i]));
            if (i < 5)
            {
                if ( i == 3 ) td.addEventListener("click", funcSortTable('tabla_mapa', i, 'int'), 0);
                else td.addEventListener("click", funcSortTable('tabla_mapa', i), 0); 
                td.style.cursor = "pointer";
            }
            fila.appendChild(td);
        }
        thead.appendChild(fila); 
        table.appendChild(thead);
        
        var area;
        var f_id_aldea = 0;
        var _village_type = 
        [
            [0],
            [3,3,3,9 ],
            [3,4,5,6 ],
            [4,4,4,6 ],
            [4,5,3,6 ],
            [5,3,4,6 ],
            [1,1,1,15],
            [4,4,3,7 ],
            [3,4,4,7 ],
            [4,3,4,7 ],
            [3,5,6,6 ],
            [4,3,5,6 ],
            [5,4,3,6 ]
        ];
        for(var i = 6; i > -1; i--)
        { 
            for(var j = 0; j < 7; j++) 
            {
                f_id_aldea++;
                area = funcGetElemByID('a_'+j+'_'+i).wrappedJSObject;
                var cellinfo=area.details;
                var inforow = document.createElement('TR');
                inforow.setAttribute("align", "center");
                var href=area.href;                
                if (cellinfo && cellinfo.name !=null ) 
                { 
                    inforow.appendChild(funcElem('TD', '<center><font color="blue"><b>' + cellinfo.name + '</b></font></center>'));
                    inforow.appendChild(funcElem('TD', '<center>' + cellinfo.ally + '</center>'));
                    inforow.appendChild(funcElem('TD', '<center><a href="' + href + '">' + cellinfo.dname + '</a></center>'));
                    inforow.appendChild(funcElem('TD', '<center>' + cellinfo.ew + '</center>'));
                }
                else
                {
                    inforow.appendChild(funcElem('TD', '<center>-<center>'));
                    inforow.appendChild(funcElem('TD', '<center>-<center>'));
                    inforow.appendChild(funcElem('TD', '<center>-<center>'));
                    inforow.appendChild(funcElem('TD', '<center>-<center>'));
                }
                if ( href != '' )
                {
                    var _info = '';
                    if (cellinfo.nr == 0)
                    {
                        switch(cellinfo.typ)
                        {
                            case  1:  
                            case  2: _info = '+25% <img src="img/x.gif" class="r1" width="18" height="12" border="0" title="' + funcTranslate('RECURSO1') + '">'; break;
                            case  3: _info = '+25% <img src="img/x.gif" class="r1" width="18" height="12" border="0" title="' + funcTranslate('RECURSO1') + '"> +25% <img src="img/x.gif" class="r4" width="18" height="12" border="0" title="' + funcTranslate('RECURSO4') + '">'; break;
                            case  4: 
                            case  5: _info = '+25% <img src="img/x.gif" class="r2" width="18" height="12" border="0" title="' + funcTranslate('RECURSO2') + '">'; break;
                            case  6: _info = '+25% <img src="img/x.gif" class="r2" width="18" height="12" border="0" title="' + funcTranslate('RECURSO2') + '"> +25% <img src="img/x.gif" class="r4" width="18" height="12" border="0" title="' + funcTranslate('RECURSO4') + '">'; break;
                            case  7: 
                            case  8: _info = '+25% <img src="img/x.gif" class="r3" width="18" height="12" border="0" title="' + funcTranslate('RECURSO3') + '">'; break;
                            case  9: _info = '+25% <img src="img/x.gif" class="r3" width="18" height="12" border="0" title="' + funcTranslate('RECURSO3') + '"> +25% <img src="img/x.gif" class="r4" width="18" height="12" border="0" title="' + funcTranslate('RECURSO4') + '">'; break;
                            case 10: 
                            case 11: _info = '+25% <img src="img/x.gif" class="r4" width="18" height="12" border="0" title="' + funcTranslate('RECURSO4') + '">'; break;
                            case 12: _info = '+50% <img src="img/x.gif" class="r4" width="18" height="12" border="0" title="' + funcTranslate('RECURSO4') + '">'; break;
                            default: _info = '????';
                        };
                    }
                    else
                    {
                        for (var n = 0; n < 4; n++)
                        {
                            _info += _village_type[cellinfo.nr][n] + '<img src="img/x.gif" class="r' + (n+1) + '" title="' + funcTranslate('RECURSO' + (n+1)) + '">';
                            if (n < 3) _info += ',&nbsp;';
                        }
                    }
                    inforow.appendChild(funcElem('TD', '<center>' + _info + '</center>'));
                    inforow.appendChild(funcElem('TD', '<center><a href="' + href + '">' + cellinfo.x + " , " + cellinfo.y + '</a></center>'));
                    inforow.appendChild(funcElem('TD', '<center><a href="' + href.replace("karte.php?d", "a2b.php?z") + '"><img src="' + local_Images["att1"] + '" style="height:13px; position:relative; margin:3px 0px 1px 3px; display: inline" title="' + funcTranslate('ATACAR') + '" alt="' + funcTranslate('ATACAR') + '"></a> / <a href="' + href.replace("karte.php?d", "build.php?z") + '&gid=17"><img class="r4" src="img/x.gif" title="' + funcTranslate('ENVIAR') + '"></a></center>'));
                    
                }
                else
                {
                    inforow.appendChild(funcElem('TD', '<center>-</center>'));
                    inforow.appendChild(funcElem('TD', '<center>-</center>'));
                    inforow.appendChild(funcElem('TD', '<center>-</center>'));
                }
                inforow.addEventListener('click',funcBlinkMap,false);
                inforow.style.cursor = "pointer";
                inforow.setAttribute('mt', 'i_' + j + '_' + i);
                tbody.appendChild(inforow);
                

            }
        }
        table.style.position = 'absolute';
        table.style.width = "680px";
        table.style.top = "530px";
        table.style.left = "2px";
        table.appendChild(tbody);
        funcFindElem('//div[@id="map_content"]',XPFirst).appendChild(funcElem('div','<img id="mapmarker" class="mt1" src="' + local_Images["imgmarker"] + '" style="z-index: 100; color: RGB(249, 201, 16); display: none">'));
        
        if (funcGetElemByID('raidFavs'))
        {
            funcGetElemByID('raidFavs').style.position = 'absolute';
            funcGetElemByID('raidFavs').style.width = "500px";
            funcGetElemByID('raidFavs').style.top = "530px";
            funcGetElemByID('raidFavs').style.left = "150px";
            document.body.appendChild(funcGetElemByID('raidFavs'));
            table.style.top = funcGetElemByID('raidFavs').clientHeight + 540 + "px";
            document.body.appendChild(table);
        }
        else
        {
            document.body.appendChild(table);
        }
        funcRemoveElem(funcGetElemByID("footer"));
    }

    function funcDistribuiRecursosMercado()
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcDistribuiRecursosMercado");
            var maximo = unsafeWindow.carry * unsafeWindow.haendler;
            var por_cada = parseInt(maximo / 3);
            var madeira = por_cada;
            var barro = por_cada;
            var ferro = por_cada;
            if (madeira > actual_resources[0]) madeira = actual_resources[0];
            if (barro > actual_resources[1]) barro = actual_resources[1];
            if (ferro > actual_resources[2]) ferro = actual_resources[2];
            
            var sobra = maximo - madeira - barro - ferro;
            if (sobra > 0) 
            {
                var sobra_ferro = actual_resources[2] - ferro;
                if (sobra_ferro > 0)
                {
                    if (sobra_ferro > sobra)
                    {
                        ferro += sobra;
                        sobra = 0;
                    }
                    else
                    {
                        ferro += sobra_ferro;
                        sobra -= sobra_ferro;
                    }
                }
            }
            if (sobra > 0) 
            {
                var sobra_barro = actual_resources[1] - barro;
                if (sobra_barro > 0)
                {
                    if (sobra_barro > sobra)
                    {
                        barro += sobra;
                        sobra = 0;
                    }
                    else
                    {
                        barro += sobra_barro;
                        sobra -= sobra_barro;
                    }
                }
            }
            if (sobra > 0) 
            {
                var sobra_madeira = actual_resources[0] - madeira;
                if (sobra_madeira > 0){
                    if (sobra_madeira > sobra)
                    {
                        madeira += sobra;
                        sobra = 0;
                    }
                    else
                    {
                        madeira += sobra_madeira;
                        sobra -= sobra_madeira;
                    }
                }
            }
            funcGetElemByTag('input')[1].value = madeira;
            funcGetElemByTag('input')[2].value = barro;
            funcGetElemByTag('input')[3].value = ferro;
        }
    }

    function funcCrearEventoRecursosMercado(recurso, cantidad)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcCrearEventoRecursosMercado");
            var _input_value = funcGetElemByID('r' + parseInt(recurso + 1));
            if (_input_value.value == '') var suma = 0; else var suma = parseInt(_input_value.value);
            suma += cantidad;
            if (suma > actual_resources[recurso]) suma = actual_resources[recurso];
            var max_capacidad = parseInt(funcFindElem("//p//b", XPFirst).innerHTML);
            var max_comercian = parseInt(funcFindElem("//table[@id='send_select']", XPFirst).innerHTML.split(' ')[1].split('/')[0]);
            var max_transport = max_capacidad * max_comercian;
            if (suma > max_transport) suma = max_transport;
            _input_value.value = suma;
        }
    }

    function funcRecursosMercado()
    {
/* LOG */ //funcWriteLog("funcRecursosMercado");
        var max_capacidad = unsafeWindow.carry;
        var cantidades = [250, 500, 1000];
        var repetido = false;
        for (var i = 0; i < cantidades.length; i++) if (max_capacidad == cantidades[i]){ repetido = true; break; }
        if (!repetido) cantidades = [500, 1000, max_capacidad];
        var tabela_envia_recursos = funcFindElem("//table[@id='send_select']", XPFirst);
        var k = 0;
        var tabela_envia_recursos_child = tabela_envia_recursos.childNodes[tabela_envia_recursos.childNodes.length == 2 ? 1 : 0].childNodes;
        for (var i = 0; i < tabela_envia_recursos_child.length; tabela_envia_recursos_child.length == 8 ? i += 2 : i++)
        {
            tabela_envia_recursos_child[i].removeChild(tabela_envia_recursos_child[i].childNodes[tabela_envia_recursos_child[i].childNodes.length > 4 ? 7 : 5]);
            for(var j = 0; j < cantidades.length; j++)
            {
                var enlace = document.createElement('TD');
                enlace.setAttribute("class", "max");
                enlace.href = "javascript:void(0)";
                enlace.innerHTML = '<a href="#">(' + cantidades[j] + ')</a>';
                enlace.addEventListener('click', funcCrearEventoRecursosMercado(k, cantidades[j]), false);
                tabela_envia_recursos_child[i].appendChild(enlace);
            }
            k++;
        }
        var td = document.createElement('TD');
        td.setAttribute("colspan", "7");
        var enlace = document.createElement('A');
        enlace.href = "javascript:void(0)";
        enlace.innerHTML = funcTranslate('DISTREC');
        enlace.addEventListener('click', funcDistribuiRecursosMercado(), false);
        td.appendChild(enlace);
        tabela_envia_recursos.appendChild(td);
        
        if (location.href.match("&F=dist"))
        {
            var maximo = unsafeWindow.carry * unsafeWindow.haendler;
            var por_cada = parseInt(maximo / 3);
            var madeira = por_cada;
            var barro = por_cada;
            var ferro = por_cada;
            if (madeira > actual_resources[0]) madeira = actual_resources[0];
            if (barro > actual_resources[1]) barro = actual_resources[1];
            if (ferro > actual_resources[2]) ferro = actual_resources[2];
            var sobra = maximo - madeira - barro - ferro;
            if (sobra > 0) {
                var sobra_ferro = actual_resources[2] - ferro;
                if (sobra_ferro > 0){ if (sobra_ferro > sobra){ ferro += sobra; sobra = 0; } else { ferro += sobra_ferro; sobra -= sobra_ferro; }}
            }
            if (sobra > 0) {
                var sobra_barro = actual_resources[1] - barro;
                if (sobra_barro > 0){ if (sobra_barro > sobra) { barro += sobra; sobra = 0; } else{ barro += sobra_barro; sobra -= sobra_barro; }}
            }
            if (sobra > 0) {
                var sobra_madeira = actual_resources[0] - madeira;
                if (sobra_madeira > 0){ if (sobra_madeira > sobra) { madeira += sobra; sobra = 0; } else{ madeira += sobra_madeira; sobra -= sobra_madeira; }}
            }
            funcGetElemByTag('input')[1].value = madeira;
            funcGetElemByTag('input')[2].value = barro;
            funcGetElemByTag('input')[3].value = ferro;
            funcGetElemByName('s1')[0].click();
            return;
        }
        else if (location.href.match("&F=palha")) 
        {
            var maximo = unsafeWindow.carry * unsafeWindow.haendler;
            if (actual_resources[3] > maximo){ funcGetElemByTag('input')[4].value = maximo; } else { funcGetElemByTag('input')[4].value = actual_resources[3]; }
            funcGetElemByName('s1')[0].click();
            return;
        }

        if (funcFindElem("//table[@class='traders']", XPList).snapshotLength > 0 )
        {
            var _rescursos = [0,0,0,0,0];
            var _tabela = funcFindElem("//table[@class='traders']", XPList);
            var _td_tempo;
            var _recursos;
            for (_n = 0; _n < _tabela.snapshotLength; _n++)
            {
                if ( _tabela.snapshotItem(_n).rows[2].cells[1].childNodes[0].className == "f10" )
                {
                    for (_i = 0; _i < 4; _i++ ) _rescursos[_i] += Number(_tabela.snapshotItem(_n).rows[2].cells[1].textContent.replace('2x', '').replace('3x', '').split(' | ')[_i]);
                    _td_tempo = _tabela.snapshotItem(_n).rows[1];
                    _recursos = _tabela.snapshotItem(_n).rows[2].cells[0].textContent;
                }
            }
            _rescursos[4] = _rescursos[0] + _rescursos[1] + _rescursos[2] + _rescursos[3];
            if ( _rescursos[4] > 0 )
            {
                var tabela_total_mercadorias = document.createElement("TABLE");
                tabela_total_mercadorias.setAttribute("id", "Mercadorias_a_chegar");
                tabela_total_mercadorias.setAttribute("cellpadding", "1");
                tabela_total_mercadorias.setAttribute("cellspacing", "1");
                tabela_total_mercadorias.setAttribute("class", "traders");
                var _thead = document.createElement("thead");
                var tr = document.createElement("TR");
                var td_header = document.createElement("TD");
                td_header.setAttribute("colspan", "3");
                td_header.innerHTML = "<b>" + funcTranslate('TOTALMERCHEG') + "</b>";
                tr.appendChild(td_header);
                _thead.appendChild(tr);
                tabela_total_mercadorias.appendChild(_thead);
                var _tbody = document.createElement("tbody");
                tr = document.createElement("TR");                    
                var _th = document.createElement("TH");
                _th.innerHTML = _td_tempo.cells[0].innerHTML;
                tr.appendChild(_th);
                var td = document.createElement("TD");
                var _div = document.createElement("DIV");
                _div.setAttribute("class", "in");
                var sp = document.createElement("span");
                sp.setAttribute("id","TFBTimeOutAndRefresh");
                sp.textContent = _td_tempo.cells[1].childNodes[1].textContent.split(" ")[0];
                _div.appendChild(sp);
                _div.innerHTML += " " + _td_tempo.cells[1].childNodes[1].textContent.split(" ")[1];
                td.appendChild(_div);
                _div = document.createElement("DIV");
                _div.setAttribute("class", "at");
                _div.innerHTML = _td_tempo.cells[1].childNodes[3].textContent
                tr.appendChild(td);
                td.appendChild(_div);
                _tbody.appendChild(tr);                    
                tabela_total_mercadorias.appendChild(_tbody);  
                tr = document.createElement("TR");
                tr.setAttribute("class", "res");
                _th = document.createElement("TH");
                _th.innerHTML = _recursos;
                tr.appendChild(_th);
                td = document.createElement("TD");
                td.setAttribute("colspan", "2");
                var _alert = false;
                var _total_row = '';
                for ( var _n = 0; _n < 4; _n++ )
                {
                    td.innerHTML += '<img class="iReport iReport1' + (_n + 1) + '" src="img/x.gif" title="' + funcTranslate('RECURSO' + (_n + 1)) + '">';
                    _total_row +=  '<img class="r' + (_n + 1) + '" src="img/x.gif" title="' + funcTranslate('RECURSO' + (_n + 1)) + '">';
                    if ( Number(actual_resources[_n]) + Number(_rescursos[_n]) > Number(total_resources[_n]))
                    {
                        td.innerHTML += '<font color="red"> ' + _rescursos[_n].toLocaleString() + '</font>';
                        _total_row += '<font color="red"> ' + (Number(actual_resources[_n]) + Number(_rescursos[_n])).toLocaleString() + '</font>';
                        _alert = true;
                    }
                    else
                    {                             
                        td.innerHTML += '<font color="navy"> ' + _rescursos[_n].toLocaleString() + '</font>';
                        _total_row += '<font color="navy"> ' + (Number(actual_resources[_n]) + Number(_rescursos[_n])).toLocaleString() + '</font>';                            
                    }
                    if ( _n < 3 )
                    {
                        td.innerHTML += "&nbsp;&nbsp;";
                        _total_row += "&nbsp;|&nbsp;";
                    }
                }
                tr.appendChild(td);
                tabela_total_mercadorias.appendChild(tr);
                

                tr = document.createElement("TR");
                tr.setAttribute("class", "res");
                _th = document.createElement("TH");
                _th.innerHTML = "<b>" + funcTranslate('TOTAL') + "</b>";
                tr.appendChild(_th);
                td = document.createElement("TD");
                td.setAttribute("colspan", "2");
                td.innerHTML = _total_row;
                tr.appendChild(td);
                tabela_total_mercadorias.appendChild(tr);

                if ( _alert )
                {
                    td_header.innerHTML += ' = <b><font color="red">' + _rescursos[4].toLocaleString() + '</b></font>';
                }
                else
                {
                    td_header.innerHTML += ' = <b><font color="navy">' + _rescursos[4].toLocaleString() + '</b></font>';
                }                    
                funcFindElem("//table[@class='traders']", XPFirst).parentNode.insertBefore(tabela_total_mercadorias, funcFindElem("//table[@class='traders']", XPFirst));
            }
        }
    }

    function funcGetUserTribe(_xmlHttpRequest)
    {
/* LOG */ //funcWriteLog("funcGetUserTribe");
        if     (_xmlHttpRequest.responseText.indexOf('img class="unit u1" src="img/x.gif"') > -1)  user_Tribe = 0;
        else if(_xmlHttpRequest.responseText.indexOf('img class="unit u11" src="img/x.gif"') > -1) user_Tribe = 10;
        else if(_xmlHttpRequest.responseText.indexOf('img class="unit u21" src="img/x.gif"') > -1) user_Tribe = 20;
        funcCreateCookie("user_tribe", user_Tribe);
    }
    
    function funcCulturePointsTable()
    {
/* LOG */ //funcWriteLog("funcCulturePointsTable");
        var main_page_bold = funcFindElem("//div[@id='build']//b", XPList);
        var pc_prod_total = parseInt(main_page_bold.snapshotItem(1).innerHTML);
        var pc_actual = parseInt(main_page_bold.snapshotItem(2).innerHTML);
        var pc_aldea_prox = parseInt(main_page_bold.snapshotItem(3).innerHTML);
        
        var aldeas_actuales = funcPC2villages(pc_aldea_prox);
        var aldeas_posibles = funcPC2villages(pc_actual);
        
        var texto = '<table align="center" cellspacing="1" cellpadding="2"><THEAD><td>' + funcTranslate('NALDEA') + '</td><td>' + funcTranslate('PC') + "</td></THEAD>";
        texto += '<tr><td style="text-align:center;">' + (aldeas_actuales + 1) + '</td><td style="text-align:center;">';
        if (pc_aldea_prox < pc_actual)
        {
            texto += funcTranslate('FUNDAR');
        }
        else
        {
            var tiempo = ((pc_aldea_prox - pc_actual) / pc_prod_total) * 86400;
            var fecha = new Date();
            fecha.setTime(fecha.getTime() + (tiempo * 1000));
            var texto_tiempo = funcCalcularTextoTiempo(fecha);
            texto += funcTranslate('FALTA') + ' <b>' + (pc_aldea_prox - pc_actual) + '</b> ' + funcTranslate('PC') +'<br/>';
            texto += funcTranslate('LISTO') + " " + texto_tiempo;
        }
        texto += '</td></tr>';
        for (var i = 1; i < 5; i++)
        {
            texto += '<tr><td style="text-align:center;">' + (aldeas_actuales + i + 1) + '</td><td style="text-align:center;">';
            var pc_necesarios = funcVillages2PC(aldeas_actuales + i);
            if (pc_necesarios < pc_actual) texto += funcTranslate('FUNDAR');
            else{
                var tiempo = ((pc_necesarios - pc_actual) / pc_prod_total) * 86400;
                var fecha = new Date();
                fecha.setTime(fecha.getTime() + (tiempo * 1000));
                var texto_tiempo = funcCalcularTextoTiempo(fecha);
                texto += funcTranslate('FALTA') + ' <b>' + (pc_necesarios - pc_actual) + '</b> ' + funcTranslate('PC') +'<br/>';
                texto += funcTranslate('LISTO') + " " + texto_tiempo;
            }
            texto += '</td></tr>';
        }
        texto += '</table>';
        main_page_bold.snapshotItem(3).parentNode.innerHTML += "<p>" + texto + "</p>";
    }
    
    function funcBattleReport()
    {
/* LOG */ //funcWriteLog("funcBattleReport");
        if (!funcFindElem("//table[@id='attacker']", XPFirst)) return;
        
        var botin = null;
        
        var _tbody_goods = funcFindElem("//tbody[@class='goods']//div[@class='res']", XPFirst);
        var _goods = _tbody_goods;
        if (_goods != null)
        {
            _goods = _goods.textContent.split("|");
            var pillage = new Array();
            pillage[0] = parseInt(_goods[0]);
            pillage[1] = parseInt(_goods[1]);
            pillage[2] = parseInt(_goods[2]);
            pillage[3] = parseInt(_goods[3]);
            botin = funcArraySum(pillage);
/*
            var info_pillage = '';
            for (var i = 0; i < 4; i++)
            {
                info_pillage += '<img src="img/x.gif" class="r' + (i+1) + '" title="' + funcTranslate('RECURSO' + (i+1)) + '"> ';
                info_pillage += pillage[i];
                if (i < 3) info_pillage += ' + '; else info_pillage += ' = ';
            }
            info_pillage += botin.toLocaleString();
            _tbody_goods.innerHTML = info_pillage;
            _tbody_goods.setAttribute("align", "Left");
*/
        }
        var lost = new Array();
        var carry = new Array();
        var survi = new Array();
        var powerA = new Array();
        var powerI = new Array();
        var powerC = new Array();
        
        // For each participante in the battle
        var _report_details = funcFindElem("//table[@id='attacker' or @class='defender']", XPList);
        for(var g = 0; g < _report_details.snapshotLength; g++)
        {
            carry[g] = 0; 
            powerA[g] = 0;  
            powerI[g] = 0;  
            powerC[g] = 0;  
            var tt = _report_details.snapshotItem(g);
            var num_elementos = tt.rows[1].cells.length - 1;
            if (tt.rows.length > 3 )
            {
                var _bodycount = false;
                for(var j = 1; j < 11; j++)
                { 
                    // Recupera la cantidades de tropa de cada tipo que han intervenido
                    var u = unitsCost[tt.rows[1].cells[j].getElementsByTagName('img')[0].className.split('unit u')[1]];
                    var p = tt.rows[3] ? tt.rows[3].cells[j].innerHTML : 0; 
                    // Basandose en el coste por unidad y su capacidad, se calculan las perdidas y la capacidad de carga total
                    var ptu = funcArrayByN(u, p);
                    lost[g] = funcArrayAdd(lost[g], ptu.slice(3, 7));
                    carry[g] += (tt.rows[2] ? tt.rows[2].cells[j].innerHTML - p : 0) * u[8];
                    //Power Ataque / inf / cav
                    if ( g == 0 )
                    {
                        powerA[g] += (tt.rows[2] ? tt.rows[2].cells[j].innerHTML : 0) * u[0];
                    }
                    else
                    {
                        powerI[g] += (tt.rows[2] ? tt.rows[2].cells[j].innerHTML : 0) * u[1];
                        powerC[g] += (tt.rows[2] ? tt.rows[2].cells[j].innerHTML : 0) * u[2];
                    }
                    survi[g, j] = Number(tt.rows[2].cells[j].innerHTML) - Number(tt.rows[3].cells[j].innerHTML);
                    if ( (Number(tt.rows[3].cells[j].innerHTML) != 0) && (Number(tt.rows[2].cells[j].innerHTML) != Number(tt.rows[3].cells[j].innerHTML)) ) _bodycount = true;
                }
                if (tt.rows[1].cells.length > 11)
                {
                    survi[g, 11] = Number(tt.rows[2].cells[11].innerHTML) - Number(tt.rows[3].cells[11].innerHTML);
                    if ( (Number(tt.rows[3].cells[11].innerHTML) != 0) && (Number(tt.rows[2].cells[11].innerHTML) != Number(tt.rows[3].cells[11].innerHTML)) ) _bodycount = true;
                }
                
                // Based on Travian3 Beyond ML&CN
                if ( g == 0 )
                {
                    tt.rows[1].cells[0].innerHTML = '<img style="position:relative; top: 4px;" class="att_all" src="img/x.gif"><font color="blue" size="1px"> - ' + powerA[g].toLocaleString() + '</font>';
                }
                else
                {
                    tt.rows[1].cells[0].innerHTML = '<img style="position:relative; top: 4px;" class="def_i" src="img/x.gif"><font color="red" size="1px"> - ' + powerI[g].toLocaleString() + ' <br><img style="position:relative; top: 4px;" class="def_c" src="img/x.gif"> - ' + powerC[g].toLocaleString() + '</font>';
                }

                //Trops that survive
                if ( _bodycount )
                {
                    var fila = document.createElement("TR");
                    fila.appendChild(funcElem("TH", funcTranslate('SORTUDOS')));
                    for(var j = 1; j < tt.rows[1].cells.length; j++)
                    { 
                        var informe = document.createElement("TD");
                        if ( survi[g, j] == 0 ) informe.className = "none";
                        informe.innerHTML = "<center>" + survi[g, j] + "</center>";
                        fila.appendChild(informe);
                    }
                    if ( g == 0 )
                    {
                        for ( var _j = 4; _j < tt.rows.length; _j++ )
                        {
                            if ( tt.rows[_j].cells[1].getAttribute("colspan") )
                            {
                                tt.rows[_j].parentNode.insertBefore(fila, tt.rows[_j]);
                                break;
                            }
                        }
                    }
                    else
                    {
                        tt.appendChild(fila);    
                    }
                }
                
                // Anyade la nueva informacion como una fila adicional en cada tabla
                var perdidas = funcArraySum(lost[g]);
                if ( perdidas > 0 )
                {
                    var informe = document.createElement("TD");
                    for (var i = 0; i < 4; i++)
                    {
                        informe.innerHTML += '<img src="img/x.gif" class="r' + (i+1) + '" title="' + funcTranslate('RECURSO' + (i+1)) + '"> ';
                        informe.innerHTML += lost[g][i];
                        if (i < 3) informe.innerHTML += ' + '; else informe.innerHTML += ' = ';
                    }                  
                    informe.innerHTML += perdidas.toLocaleString();
                    informe.colSpan = num_elementos;
                    var _tbody = document.createElement("tbody");
                    _tbody.className = "goods";
                    var fila = document.createElement("TR");
                    fila.appendChild(funcElem("TH", funcTranslate('PERDIDAS')));
                    fila.appendChild(informe);
                    _tbody.appendChild(fila);
                    tt.appendChild(_tbody);
                }
            }
            
            // Solo para el atacante se calcula y muestra la rentabilidad y eficiencia del ataque
            if (g == 0 && botin != null)
            {
                var _tbody = document.createElement("tbody");
                _tbody.className = "goods";
                
                // La rentabilidad muestra el botin en comparacion con las perdidas
                if ( perdidas > 0 )
                {
                    var fila_datos = document.createElement("TR");
                    var datos = document.createElement("TD");
                    datos.colSpan = num_elementos;
    
                    var rentabilidad = Math.round((botin - perdidas) * 100 / botin);
                    if (botin == 0) if (perdidas == 0) rentabilidad = 0; else rentabilidad = -100;  
                    datos.innerHTML = rentabilidad + "%";
                    fila_datos.appendChild(funcElem("TH", funcTranslate('RENT')));
                    fila_datos.appendChild(datos);
                    _tbody.appendChild(fila_datos);
                }
                
                // La eficiencia muestra el botin en comparacion con la cantidad de tropas utilizadas
                if ( botin > 0 && carry[g] > 0)
                {
                    var fila_datos = document.createElement("TR");
                    var datos = document.createElement("TD");
                    datos.colSpan = num_elementos;
                    var eficiencia = 100 - Math.round((carry[g] - botin) * 100 / carry[g]);         
                    if (carry[g] == 0) eficiencia = 0;
                    datos.innerHTML = eficiencia + "%";
                    fila_datos.appendChild(funcElem("TH", funcTranslate('EFICIENCIA')));
                    fila_datos.appendChild(datos);
                    _tbody.appendChild(fila_datos);
                }
                
                tt.appendChild(_tbody);
            }
        }
    }
    
    function funcSwitchToVillage(_id) 
    {
/* LOG */ //funcWriteLog("funcSwitchToVillage");        
    	if ( isNaN(_id) ) return;
    	if ( _id == selected_village_data[0] ) return;
    	ajaxRequest("dorf1.php?newdid=" + selected_village_data[0], "GET", null, funcDummy, funcDummy);
    }
    
    // Get General Information used by the script and fill up generic variables
    function funcGetGeneralData()
    {
/* LOG */ //funcWriteLog("funcGetGeneralData");
        // Global variables defenition and initialization
        tfb_version = "3.14";       // TravianFarBeyond Script Version
        tfb_lang = "en";            // Server language -> Script language
        user_ID = 0;                // User ID
        server_Time = 0;            // Server Time
        server_Day = 0;             // Server Day
        server_name = '';           // Server Name
        speedx = 0;                 // Is server Speed? 0 - No, 1 - Yes;
        actual_resources = new Array(4);  // Actual Resources
        actual_resources = [0,0,0,0];
        total_resources  = new Array(4);  // Total capacity of warehouse
        total_resources = [0,0,0,0];
        resources_per_sec = new Array(4);  // Produccion per second
        resources_per_sec = [0,0,0,0];
        resources_per_hour = new Array(4);  // Produccion per hour
        resources_per_hour = [0,0,0,0];
        selected_village_data = new Array(5);  // Selected Village Data!
        selected_village_data[0] = 0;    // ID
        selected_village_data[1] = ' ';  // Name
        selected_village_data[2] = 0;    // X
        selected_village_data[3] = 0;    // Y
        plus = false;
        user_Tribe = '';
        //tfb_aux = new Array(5); //DummY
        autosDelay = 5000;
        

        // End of Global variables defenition and initialization

        // Info on Resources
        funcGetResourcesData();
            
        funcFindElem("//link[contains(@href, '/lang.css?')]", XPFirst).href.search(/\/lang\/([^\/]+)\//);
        tfb_lang = RegExp.$1;
        
        funcFindElem("//a[contains(@href, 'spieler.php?uid=')]", XPFirst).href.search(/spieler.php\?uid=(\d+)/);
        user_ID = RegExp.$1;
        
        server_Time = funcFindElem("//div[@id='ltime']//span[@id='tp1']", XPFirst).innerHTML;
        server_Day = new Date().getDate();

        location.href.search(/http:\/\/(.*)\//);
        server_name = RegExp.$1;
        
        server_name.search(/(.*).travian/);
        var temp = RegExp.$1;
        if (temp.split("speed").length >1) speedx=1;
        // Plus
        imgPlus = funcGetElemByID("logo");
    	if (imgPlus != null)
    	{
    		if (imgPlus.nodeName == "IMG")
    		{
    			if (imgPlus.className && (imgPlus.className == "plus" || imgPlus.className == "logo_plus")) plus = true;
    		}
    		else if (imgPlus.nodeName == "A")
    		{
    			if (imgPlus.firstChild && imgPlus.firstChild.className == "logo_plus") plus = true;
    		}
    	}
    	//Check 1st time on server with this user and ask to delete old unused cookies!
    	funcCheckFirstTimeAndDeleteOldCookies();

        // Info on the Selected village
        funcGetAldeiaData();

        //Get User Tribe ( from cookie if exist)
        user_Tribe = funcReadCookie("user_tribe");
        if (user_Tribe != 0 && user_Tribe != 10 && user_Tribe != 20) ajaxRequest("a2b.php", "GET", null, funcGetUserTribe, funcDummy);

        //Check for version Update
        funcCheckUpdate();
    }
    
    function funcAutoLogin()
    {
/* LOG */ //funcWriteLog("funcAutoLogin");
        var _span = document.createElement("span");
        var errorLogin = funcFindElem("//span[@class='error']", XPList);
        if ( errorLogin.snapshotItem(0).textContent.length < 2 && errorLogin.snapshotItem(1).textContent.length < 2 )
        {
            _span.innerHTML = "TravianFarBeyond... Auto Login in: ";
            funcGetElemByID("content").appendChild(_span);
            _span = document.createElement("span");
            _span.setAttribute("id","TFBTimeOut");
            _span.innerHTML = funcSeconds2Time(10);
            funcGetElemByID("content").appendChild(_span);
            funcSetTimers();        
            setTimeout(function() { funcGetElemByID("btn_login").click(); } , 10666);
        }
        else
        {
            _span.innerHTML = "TravianFarBeyond... ErroR in login / password";
            funcGetElemByID("content").appendChild(_span);            
        }              
    }

    function funcPreviewReportMessageShow( _xmlHttpRequest, _reportType )
    {
/* LOG */ //funcWriteLog("funcPreviewReportMessageShow");
        if ( !funcGetElemByID("_infoformReport") ) 
        {
            funcRemoveElem(funcGetElemByID("footer"));
            var _infoform = document.createElement("form");
    		_infoform.id = "_infoformReport";
    		_infoform.setAttribute('style', 'margin: 10px 0px 0px 0px; position:absolute; height:1600px; width:502px; left:25px;');
            var _infodiv = document.createElement("DIV");
            _infodiv.id = "_infodivReport";
    		_infoform.appendChild(_infodiv);
    		
    		funcGetElemByID("content").appendChild(_infoform);
    		funcGetElemByID("content").style.height = "2000px";
	    }
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        if ( _reportType == 0 )
        {
            var _showtable = _doc[0].evaluate("//ns:table[@id='report_surround']//ns:tbody", _doc[1], nsResolver, XPFirst, null);
        }
        else
        {
            var _showtable = _doc[0].evaluate("//ns:div[@id='read_content' and @class='msg_content']//ns:div[@class='message']", _doc[1], nsResolver, XPFirst, null);
        }
        funcGetElemByID("_infodivReport").innerHTML = _showtable.singleNodeValue.innerHTML;
    }

    function funcPreviewReportMessage( _link, _reportType )
    {
/* LOG */ //funcWriteLog("funcPreviewReportMessage");
        return function() { ajaxRequest(_link, "GET", null, funcPreviewReportMessageShow, funcDummy, _reportType ); }
    }
    
    function funcSelectAllMsg()
    {
/* LOG */ //funcWriteLog("funcSelectAllMsg");
        if ( funcGetElemByID("content").className == "reports" )
        {
            var _msgTableTextLine = funcFindElem("//table[@id='overview']//tbody//tr//td[@class='sub']//div", XPList);
            var _msgTableTextLinehref = funcFindElem("//table[@id='overview']//tbody//tr//td[@class='sub']//div//a", XPList);
            var _reportType = 0;
            var _left = "390px";
        }
        else if ( funcGetElemByID("content").className == "messages" )
        {
            var _msgTableTextLine = funcFindElem("//table[@id='overview']//tbody//tr//td[@class='top']", XPList);
            var _msgTableTextLinehref = funcFindElem("//table[@id='overview']//tbody//tr//td[@class='top']//a", XPList);
            var _reportType = 1;
            var _left = "265px";
        }
        else return;
                                
        if ( _msgTableTextLine.snapshotLength < 2 ) return;
        for ( _i = 0; _i < _msgTableTextLine.snapshotLength; _i++ )
        {

            var _preview = funcElem("A", "<img src='img/x.gif' style='position:absolute; left:" + _left + "; margin:0px 0px 0px 0px; display: inline' class='iReport iReport10' border='0' alt='" + funcTranslate('PREVIEWRM') + "' title='" + funcTranslate('PREVIEWRM') + "'>");
            _preview.href = "javascript:void(0);";
            _preview.addEventListener("click", funcPreviewReportMessage( _msgTableTextLinehref.snapshotItem(_i).href, _reportType), 0);
            _msgTableTextLine.snapshotItem(_i).appendChild(_preview);
        }
        

        var _msgTableFooter = funcFindElem("//table[@id='overview']//tfoot//tr//th", XPFirst);
        if ( _msgTableFooter && !plus) _msgTableFooter.innerHTML = '<input style="font-weight:bold; font-size:8pt; height:14pt" id="mtodo_id" name="mtodo" type="checkbox" value="0" onClick="for(var x = 0; x < document.msg.elements.length; x++) document.msg.elements[x].checked = checked;"/>';
    }
    
    function funcCaculateBuildTime()
    {
/* LOG */ //funcWriteLog("funcCaculateBuildTime");
        // Get building needs paragraf
        var _building = funcFindElem("//p[@id='contract']", XPFirst);
        if ( _building == null ) return;
        if (_building.textContent.indexOf(funcTranslate('LASTLEVEL')) != -1 ) return;
        var recursos = _building.textContent.split(":")[1].split("|").splice(0,4);
        _building.appendChild(funcElem("DIV", funcCalculateResourceTime(recursos)));
    }

    // Based on Travian3 Beyond - ML&CN by ms99 (Nux, Lux, Szabka)
    function funcShowMapTroopDef()
    {
/* LOG */ //funcWriteLog("funcShowMapTroopDef");
        var _table_rows = funcFindElem("//table[@id='troop_info' and @class='tableNone']//tr", XPList);
        if (  _table_rows.snapshotLength < 1 ) return;
        if ( _table_rows.snapshotItem(1).cells.length < 2 ) return;
        var _DefPower = [0, 0];
        for ( var _i = 1; _i < _table_rows.snapshotLength; _i++ )
        {
            _DefPower[0] += Number(_table_rows.snapshotItem(_i).cells[1].textContent) * unitsCost[_table_rows.snapshotItem(_i).getElementsByTagName('img')[0].className.split('unit u')[1]][1];
            _DefPower[1] += Number(_table_rows.snapshotItem(_i).cells[1].textContent) * unitsCost[_table_rows.snapshotItem(_i).getElementsByTagName('img')[0].className.split('unit u')[1]][2];
        }
        var _tr = document.createElement("TR");
        var _td = document.createElement("TD");
        _td.colSpan = 3;
        _td.innerHTML = '&nbsp;';
        _tr.appendChild(_td);
        funcFindElem("//table[@id='troop_info']//tbody", XPFirst).appendChild(_tr);
        
        _tr = document.createElement("TR");
        _td = document.createElement("TD");
        _td.className = "ico";
        _td.innerHTML = '<img class="def_c" src="img/x.gif">';
        _tr.appendChild(_td);
        _td = document.createElement("TD");
        _td.className = "val";
        _td.innerHTML = '#';
        _tr.appendChild(_td);
        _td = document.createElement("TD");
        _td.className = "desc";
        _td.innerHTML = '<b><font color="red">' + _DefPower[0].toLocaleString() + '</b></font>';
        _tr.appendChild(_td);
        funcFindElem("//table[@id='troop_info']//tbody", XPFirst).appendChild(_tr);
        
        _tr = document.createElement("TR");
        _td = document.createElement("TD");
        _td.className = "ico";
        _td.innerHTML = '<img class="def_i" src="img/x.gif">';
        _tr.appendChild(_td);
        _td = document.createElement("TD");
        _td.className = "val";
        _td.innerHTML = '#';
        _tr.appendChild(_td);
        _td = document.createElement("TD");
        _td.className = "desc";
        _td.innerHTML = '<b><font color="red">' + _DefPower[1].toLocaleString() + '</b></font>';
        _tr.appendChild(_td);
        funcFindElem("//table[@id='troop_info']//tbody", XPFirst).appendChild(_tr);        
    }

    function funcShowMenuLinks()
    {
/* LOG */ //funcWriteLog("funcShowMenuLinks");
        var _table = document.createElement('TABLE');
        _table.setAttribute("id", "MenuLinks");
        _table.setAttribute("cellpadding", "1");
        _table.setAttribute("cellspacing", "1");
        
        var _thead = document.createElement('THEAD');
        var _tr = document.createElement('TR');
        var _td = document.createElement('TD');

        var _add = funcElem("A", '<font color="green">+</font>');

        _add.href = "javascript:void(0);";
        _add.addEventListener("click", function()
            {
                var a = prompt(funchtml2ascii(funcTranslate('LINKURL')));
                if (a == null || a == '') return;
                var b = prompt(funchtml2ascii(funcTranslate('LINKTEXT')));
                if (b == null || b == '') return;
                funcAppendCookie("MenuLinks", [b, a]); 
                funcShowAutoS('MenuLinks'); 
            }, 0);        
        _td.appendChild(_add);
        _td.appendChild(funcElem("B", "&nbsp;&nbsp;" + funcTranslate('MARCADORES')));
        _tr.appendChild(_td);
        _thead.appendChild(_tr);
        _table.appendChild(_thead);
        var _tbody = document.createElement('TBODY');
        
        var _links = funcReadCookieArray("MenuLinks");
        for (var i = 0; i < _links.length; i++)
        {
            var _tr = document.createElement('TR');
            var _td = document.createElement('TD');
            _td.innerHTML = "<span>&#8226;</span>&nbsp; <a href='" + _links[i][1] + "'>" + _links[i][0] + "</a>&nbsp;&nbsp;&nbsp;";

            var _delete = funcElem("A", "<img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
            _delete.href = "javascript:void(0);";
            _delete.addEventListener("click", funcDeleteFromCookieEvent("MenuLinks", i, function(){funcShowAutoS('MenuLinks');}), 0);
            _td.appendChild(_delete);
            _tr.appendChild(_td);
            _tbody.appendChild(_tr);
        }
        _table.appendChild(_tbody);
        funcGetElemByID("MenuLinksMainDIV").appendChild(_table);
    }
   
    function funcGetVillageNameByID(_id)
    {
/* LOG */ //funcWriteLog("funcGetVillageNameByID");
        var lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr//a[@href='?newdid=" + _id + "']", XPFirst);
        if (lista_aldeias == null) 
        {
            lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr//a[starts-with(@href, '?newdid=" + _id + "&')]", XPFirst);
            if (lista_aldeias == null) return null;
        }
        return lista_aldeias.textContent;
    }
   
    function funcAutoProd( _index )
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoProd");            
            var _autoProdCookie = funcReadCookieArray("AutoProd");
            if ( ( _autoProdCookie[_index][1] != selected_village_data[0] ) || ( funcGetElemByID("content").className != "village1" ) )
            {
                document.location.href = "dorf1.php?newdid=" + _autoProdCookie[_index][1];
                return;
            }
            if ( funcGetElemByID('resumen') == null )
            {
                funcDeleteFromCookie("AutoProd", _index);
                funcShowAutoS('AutoProd');
                funcSetAutoTimers();
                return;
            }
            var _nextField = [[parseInt(resources_per_hour[0]),0], [parseInt(resources_per_hour[1]),1], [parseInt(resources_per_hour[2] * 1.25),2], [ parseInt(resources_per_hour[3]) > 5 ? parseInt(resources_per_hour[3]) * 1.5 : parseInt(resources_per_hour[3]),3]];
            var _swap = false;
            var _aux = 0;
            
            do
            {
                _swap = false;
                for ( _i = 0 ; _i < 3 ; _i++ )
                {
                    if ( _nextField[_i][0] > _nextField[_i + 1][0] )
                    {
                        _swap = true;
                        _aux = _nextField[_i + 1];
                        _nextField[_i + 1] = _nextField[_i];
                        _nextField[_i] = _aux;
                    }
                }
            }
            while ( _swap == true );

            //Set new Field to upgrade!
            _swap = false;
            for ( _i = 0 ; _i < 4 ; _i++ )
            {
                _aux = funcFindElem("//table[@id='resumen']//td[@id='recurso_" + _nextField[_i][1] + "']//a", XPFirst);
                if ( _aux != null )
                {
                    _aux = _aux + "";
                    _aux.search(/build.php\?id=(\d+$)/);
                    var _newCookiePart =
                    [
                        selected_village_data[1], //Nome Aldeia
                        selected_village_data[0], //ID ALDEIA
                        RegExp.$1, //ID da Zona do Edificio
                        'gid' + parseInt(_nextField[_i][1] + 1), //GID
                        funcTranslate('RECURSO' + parseInt(_nextField[_i][1] + 1)), //Nome Edificio
                        parseInt(funcFindElem("//table[@id='resumen']//td[@id='recurso_" + _nextField[_i][1] + "']", XPFirst).parentNode.textContent) + 1, // Nivel do Edificio
                        new Date().getTime(),  //Time to next event
                        0, //index
                        'T' //Tipe of building (T - Temporary)
                    ];
                    funcAppendCookie("AutoComplete", _newCookiePart);
                    _swap = true;
                    break;
                }
            }
            funcDeleteFromCookie("AutoProd", _index);
            var _timeNOW = new Date();
            if ( _autoProdCookie[_index][6] < _timeNOW.getTime() ) _autoProdCookie[_index][6] = 0;
            if ( _autoProdCookie[_index][6] > _timeNOW.getTime() + 600000 || _autoProdCookie[_index][6] == 0 )
            {
                _autoProdCookie[_index][2] = _timeNOW.getTime() + 600000;
            }
            else
            {
                _autoProdCookie[_index][2] = _autoProdCookie[_index][6];
            }
            
            funcAppendCookie("AutoProd", _autoProdCookie[_index]);
            funcShowAutoS('AutoProd');
            //Check for resources needs!!!
            if ( _autoProdCookie[_index][3] != 0 )
            {
                if ( _autoProdCookie[_index][6] == 0 )
                {
                    var _rescursos = new Array(4);
                    _rescursos = [0,0,0,0];
                    if ( total_resources[0] - actual_resources[0] - resources_per_hour[0]*2 > 100 ) _rescursos [0] = total_resources[0] - actual_resources[0] - resources_per_hour[0]*2;
                    if ( total_resources[1] - actual_resources[1] - resources_per_hour[1]*2 > 100 ) _rescursos [1] = total_resources[1] - actual_resources[1] - resources_per_hour[1]*2;
                    if ( total_resources[2] - actual_resources[2] - resources_per_hour[2]*2 > 100 ) _rescursos [2] = total_resources[2] - actual_resources[2] - resources_per_hour[2]*2;
                    if ( total_resources[3] - actual_resources[3] - resources_per_hour[3]*2 > 100 ) _rescursos [3] = total_resources[3] - actual_resources[3] - resources_per_hour[3]*2;

                    if ( funcArraySum(_rescursos) > 0 )
                    {
                        var _newCookiePart =
                        [
                            _autoProdCookie[_index][4], //Village Name
                            _autoProdCookie[_index][3], //Village ID
                            _autoProdCookie[_index][8], // Where to Village zID
                            1, //Number of sends
                            new Date().getTime() + 15000, //Time to next send
                            0, //Time to wait between sends
                            _rescursos.join("#") //Resourses to send split("#")
                        ];
                        funcAppendCookie("AutoMarket", _newCookiePart);
                        _swap = true;
                    }
                }
            }
            funcSetAutoTimers();
        }
    }
   
    function funcAddAutoProd()
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAddAutoProd");
            var _autoProdCookie = funcReadCookieArray("AutoProd");
            for (var _i = 0; _i < _autoProdCookie.length; _i++)
            {
                if ( _autoProdCookie[_i][1] == selected_village_data[0] )
                {
                    if ( confirm(funcTranslate('AUTOPRODRESVIL3')) )
                    {
                        funcDeleteFromCookie("AutoProd", _i);
                    }
                    else
                    {
                        return;
                    }
                }
            }

            var _timeNOW = new Date();

            var _newCookiePart =
            [
                selected_village_data[1], //Nome Aldeia
                selected_village_data[0], //ID ALDEIA
                new Date().getTime(),  //Time to next event
                0,  //ID village to sent resources from
                0,  //Name village to sent resources from
                0,  //Time of Last send
                0,  //Times to arrive resourses
                0,  //Resourses split("#")
                selected_village_data[4]   //    8 - zID
            ];
            var _tosent = prompt(funchtml2ascii(funcTranslate('AUTOPRODRESVIL')));
            if (_tosent != null)
            {
                _newCookiePart[3] = "";
                _newCookiePart[4] = "";
                var _temp = _tosent.split(";");
                var _texto = funcTranslate('AUTOPRODRESVIL2');
                for (_i = 0; _i < _temp.length; _i++)
                {
                    var _aux = funcGetVillageNameByID(_temp[_i]);
                    if ( _aux == null )
                    {
                        alert("eRRoR: " + _temp[_i]);
                    }
                    else
                    {
                        if (_newCookiePart[3].indexOf(_temp[_i]) == -1)
                        {
                            _texto = _texto + "\n" + _aux;
                            if (_newCookiePart[3] != "" ) _newCookiePart[3] = _newCookiePart[3] + ";";
                            _newCookiePart[3] = _newCookiePart[3] + _temp[_i];
                            if (_newCookiePart[4] != "" ) _newCookiePart[4] = _newCookiePart[4] + ";";
                            _newCookiePart[4] = _newCookiePart[4] + _aux;
                        }
                    }
                }
                if (_newCookiePart[3] == "") return;
                if (!confirm(_texto)) return;
            }
            funcAppendCookie("AutoProd", _newCookiePart); 
            funcShowAutoS('AutoProd');
            funcSetAutoTimers(); 
        }
    }
   
    function funcShowAutoProd()
    {
/* LOG */ //funcWriteLog("funcShowAutoProd");
        var _table = document.createElement('TABLE');
        _table.setAttribute("id", "AutoProd");
        _table.setAttribute("cellpadding", "1");
        _table.setAttribute("cellspacing", "1");
        
        var _thead = document.createElement('THEAD');
        var _tr = document.createElement('TR');
        var _td = document.createElement('TD');

        var _add = funcElem("A", '<font color="green">+</font>');

        _add.href = "javascript:void(0);";
        _add.addEventListener("click", funcAddAutoProd(), 0);
        _td.appendChild(_add);
        _td.appendChild(funcElem("B", "&nbsp;&nbsp;AutoProd"));
        _tr.appendChild(_td);
        _thead.appendChild(_tr);
        _table.appendChild(_thead);
        var _tbody = document.createElement('TBODY');
        
        var _autoProdCookie = funcReadCookieArray("AutoProd");
        
        for (var _i = 0; _i < _autoProdCookie.length; _i++) { _autoProdCookie[_i][7] = _i; }
        _autoProdCookie.sort();
        var lista_aldeias = funcFindElem("//table[@id='vlist']", XPFirst);
        if (lista_aldeias != null)
        {
            while (funcGetElemByID("AutoProd_Aldeias"))
            {
                funcRemoveElem(funcGetElemByID("AutoProd_Aldeias"));
            }
            for (var i = 0; i < _autoProdCookie.length; i++)
            {
                
                lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr//a[@href='?newdid=" + _autoProdCookie[i][1] + "']", XPFirst);
                if (lista_aldeias == null) 
                {
                    lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr//a[starts-with(@href, '?newdid=" + _autoProdCookie[i][1] + "&')]", XPFirst);
                }
                if (lista_aldeias == null)
                {
                    funcDeleteFromCookie("AutoProd", i);
                }
                var novo_div = document.createElement('DIV');
                novo_div.style.height = "15px";
                novo_div.setAttribute("id", "AutoProd_Aldeias");
                var _time = new Date();
                _time.setTime(parseInt(_autoProdCookie[i][2]));
                            
                novo_div.innerHTML = funcCalcularTextoTiempo(_time) + "&nbsp;";
                if (_autoProdCookie[i][3] != 0)
                {
                    novo_div.innerHTML = novo_div.innerHTML + "(" + _autoProdCookie[i][4] + ")";
                }
                novo_div.innerHTML = novo_div.innerHTML + "&nbsp;";
                
                var _update = funcElem("A", "<img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
                _update.href = "javascript:void(0);";
                _update.addEventListener("click", funcShowAutoProdUpdateEvent( _autoProdCookie[i]),0);
                novo_div.appendChild(_update);
                novo_div.appendChild(funcElem("span", "&nbsp"));
                
                
                var _delete = funcElem("A", "<img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
                _delete.href = "javascript:void(0);";
                _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoProd", _autoProdCookie[i][7], function(){funcShowAutoS('AutoProd');}), 0);
                novo_div.appendChild(_delete);
                lista_aldeias.parentNode.parentNode.parentNode.appendChild(novo_div);
            }
        }
        else
        { 
            for (var i = 0; i < _autoProdCookie.length; i++)
            {
                var _tr = document.createElement('TR');
                var _td = document.createElement('TD');
                var _time = new Date();
                _time.setTime(parseInt(_autoProdCookie[i][2]));
                            
                _td.innerHTML = "<span>&#8226;</span>&nbsp; <a href='dorf1.php?newdid=" + _autoProdCookie[i][1] + "'>" + _autoProdCookie[i][0] + "</a>&nbsp;" + funcCalcularTextoTiempo(_time) + "&nbsp;";
                if (_autoProdCookie[i][3] != 0)
                {
                    _td.innerHTML = _td.innerHTML + "(" + _autoProdCookie[i][4] + ")";
                }
                _td.innerHTML = _td.innerHTML + "&nbsp;&nbsp;";
                
                var _update = funcElem("A", "<img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
                _update.href = "javascript:void(0);";
                _update.addEventListener("click", funcShowAutoProdUpdateEvent( _autoProdCookie[i]),0);
                _td.appendChild(_update);
                _td.appendChild(funcElem("span", "&nbsp"));
                
                var _delete = funcElem("A", "<img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
                _delete.href = "javascript:void(0);";
                _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoProd", _autoProdCookie[i][7], function(){funcShowAutoS('AutoProd');}), 0);
                _td.appendChild(_delete);
                _tr.appendChild(_td);
                _tbody.appendChild(_tr);
            }
            _table.appendChild(_tbody);
        }
        funcGetElemByID("AutoProdMainDIV").appendChild(_table);
    }   

    function funcShowAutoProdUpdateEvent(_autoProdCookie)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcShowAutoProdUpdateEvent");
            funcDeleteFromCookie("AutoProd", _autoProdCookie[7]);
            _autoProdCookie[2] = new Date().getTime();
            funcAppendCookie("AutoProd", _autoProdCookie);
            funcSetAutoTimers();
        }
    }
    
    function funcAddAutoCompleteAjax(_xmlHttpRequest, _newCookiePart, _index)
    {
/* LOG */ //funcWriteLog("funcAddAutoCompleteAjax");
        funcAddAutoComplete(_newCookiePart, _index, 0);
    }
    
    function funcAutoCompleteCheckWorkDone(_xmlHttpRequest, _newCookiePart, _index)
    {
/* LOG */ //funcWriteLog("funcAutoCompleteCheckWorkDone");
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        var _table_const = _doc[0].evaluate("//ns:table[@id='building_contract']//ns:span[starts-with(@id, 'timer')]", _doc[1], nsResolver, XPFirst, null);
        var _time = '0:10:00';
        if ( _table_const )
        {
            if ( _table_const.singleNodeValue )
            {
                if ( _table_const.singleNodeValue.innerHTML )
                {
                  _time = _table_const.singleNodeValue.innerHTML;
                }
            }
        }
        funcAddAutoComplete(_newCookiePart, _index, _time);
    }
    
    function funcAutoCompleteCheckLevel(_newCookiePart)
    {
/* LOG */ //funcWriteLog("funcAutoCompleteCheckLevel");
        if ( _newCookiePart[3] == 'gid1' ||  _newCookiePart[3] == 'gid2' || _newCookiePart[3] == 'gid3' || _newCookiePart[3] == 'gid4'  || _newCookiePart[3] == 'gid23' || _newCookiePart[3] == 'gid35')
        {
            if ( _newCookiePart[5] > 10 )
            {
                return false;        
            } 
        }
        else if ( _newCookiePart[3] == 'gid5' ||  _newCookiePart[3] == 'gid6' || _newCookiePart[3] == 'gid7' || _newCookiePart[3] == 'gid8' || _newCookiePart[3] == 'gid9')
        {
            if ( _newCookiePart[5] > 5 )
            {
                return false;        
            } 
        }
        else if ( _newCookiePart[3] == 'gid40' )
        {
            if ( _newCookiePart[5] > 100 )
            {
                return false;        
            } 
        }
        else
        {
            if ( _newCookiePart[5] > 20 )
            {
                return false;        
            } 
        }
        return true;   
    }
    
    function funcAddAutoComplete(_newCookiePart, _index, _time)
    {
/* LOG */ //funcWriteLog("funcAddAutoComplete");
        var _autoCompleteCookie = funcReadCookieArray('AutoComplete');
        funcDeleteFromCookie("AutoComplete", _index);
        if (_autoCompleteCookie[_index][8] != 'T' )
        {
            if (! funcAutoCompleteCheckLevel(_newCookiePart) )
            {
                setTimeout(function() {window.location = location.href;} , 111);
                return;
            }
        }
        var _timeNOW = new Date();
        if (_time == 0) 
        {
            _time = funcTime2Seconds(funcFindElem("//p[@id='contract']", XPFirst).innerHTML.split('clock')[1].split('>')[1].split('<')[0]) * 1000;
        }
        else
        {
            _time = funcTime2Seconds(_time) * 1000;
        }
        if (_autoCompleteCookie[_index][8] == 'T' )
        {
            var _autoProdCookie = funcReadCookieArray("AutoProd");
            for (var _i = 0; _i < _autoProdCookie.length; _i++)
            {
                if ( _autoProdCookie[_i][1] == _newCookiePart[1] )
                {
                     _autoProdCookie[_i][2] =  _timeNOW.getTime() + _time + autosDelay;
                     funcDeleteFromCookie("AutoProd", _i);
                     funcAppendCookie("AutoProd", _autoProdCookie[_i]);
                     break;
                }
            }
            setTimeout(function() {window.location = 'dorf1.php';} , 50);
        }
        else
        {
            _newCookiePart[6] = _timeNOW.getTime() + _time + autosDelay;
            funcAppendCookie("AutoComplete", _newCookiePart);
            funcRemoveElem(funcGetElemByID('AutoComplete'));
            funcRemoveElem(funcFindElem("//p[@id='contract']//a[@class='build']", XPFirst));
            funcAutoComplete();
            setTimeout(function() {window.location = 'dorf1.php';} , 2000);
        }
    }
    
    function funcSetAutoTimers()
    {
/* LOG */ //funcWriteLog("funcSetAutoTimers");
        var _link = 'dorf1.php';
        var _runfunc = function() {document.location.href = _link};
        
        //var _timeFinal = 180666;
        var _timeFinal = Math.floor( Math.random()* (300666-120666) ) + 120666;
        var _WhatToDo = "Refreshing";
        var _avoidFlood = false;
        
        //AutoAttack
        var _autoAttackCookie = funcReadCookieArray("AutoAttack");
        if ( _autoAttackCookie != '')
        {
            var _timeNOW = new Date();
            var _timeCookie = new Date();
            _timeCookie.setTime(0);
            var _timeTT = 0;
            for (var _i = 0; _i < _autoAttackCookie.length; _i++)
            {
                _timeCookie.setTime(parseInt(_autoAttackCookie[_i][4]) + 0);
                _timeTT = parseInt(_timeCookie - _timeNOW);
                if (_timeTT < -10000 ) _avoidFlood = true;
                if (_timeTT < 1 ) _timeTT = 1;
                if ( _timeFinal > _timeTT )
                {
                    _timeFinal = _timeTT;
                    _runfunc = funcAutoAttackSend(_i);
                    _WhatToDo = "AutoAttack";
                    if (_timeFinal < 300 && !_avoidFlood )
                    {
                        setTimeout(_runfunc, _timeFinal);
                        return;
                    }
                }
            }
        }
        //AutoMarket
        var _autoAutoMarketCookie = funcReadCookieArray("AutoMarket");
        if ( _autoAutoMarketCookie != '')
        {
            var _timeNOW = new Date();
            var _timeCookie = new Date();
            _timeCookie.setTime(0);
            var _timeTT = 0;
            for (var _i = 0; _i < _autoAutoMarketCookie.length; _i++)
            {
                _timeCookie.setTime(parseInt(_autoAutoMarketCookie[_i][4]) + 0);
                _timeTT = parseInt(_timeCookie - _timeNOW);
                if (_timeTT < -10000 ) _avoidFlood = true;
                if (_timeTT < 1 ) _timeTT = 1;
                if ( _timeFinal > _timeTT )
                {
                    _timeFinal = _timeTT;
                    _runfunc = funcAutoMarketSend(_i);
                    _WhatToDo = "AutoMarket";
                }
            }            
        }
        if ( funcGetElemByID("content").className != 'build' )  // specific building page
        {
            //AutoComplete
            var _autoCompleteCookie = funcReadCookieArray('AutoComplete');
            if ( _autoCompleteCookie != '')
            {
                var refra = 'build.php?newdid=';
                var _timeNOW = new Date();
                var _timeCookie = new Date();
                _timeCookie.setTime(0);
                var _timeTT = 0;
                for (var _i = 0; _i < _autoCompleteCookie.length; _i++)
                {
                    _timeCookie.setTime(parseInt(_autoCompleteCookie[_i][6]) + 0);
                    _timeTT = parseInt(_timeCookie - _timeNOW);
                    if (_timeTT < -10000 ) _avoidFlood = true;
                    if (_timeTT < 1 ) _timeTT = 1;
                    if ( _timeFinal > _timeTT )
                    {
                        _timeFinal = _timeTT;
                        _WhatToDo = "AutoComplete";
                        _link = refra + _autoCompleteCookie[_i][1] + '&id=' + _autoCompleteCookie[_i][2];    
                        _runfunc = function() {document.location.href = _link};
                    }  
                    
                }
            }
            //AutoDestroy
            var _autoDestroyCookie = funcReadCookieArray('AutoDestroy');
            if ( _autoDestroyCookie != '')
            {
                var refra = 'build.php?newdid=';
                var _timeNOW = new Date();
                var _timeCookie = new Date();
                _timeCookie.setTime(0);
                var _timeTT = 0;
                for (var _i = 0; _i < _autoDestroyCookie.length; _i++)
                {
                    _timeCookie.setTime(parseInt(_autoDestroyCookie[_i][4]) + 0);
                    _timeTT = parseInt(_timeCookie - _timeNOW);
                    if (_timeTT < -10000 ) _avoidFlood = true;
                    if (_timeTT < 1 ) _timeTT = 1;
                    if ( _timeFinal > _timeTT )
                    {
                        _timeFinal = _timeTT;
                        _WhatToDo = "AutoDestroy";
                        _link = refra + _autoDestroyCookie[_i][1] + '&gid=15';
                        _runfunc = function() {document.location.href = _link};
                    }  
                }            
            }
            //AutoProd
            var _autoProdCookie = funcReadCookieArray("AutoProd");
            if ( _autoProdCookie != '')
            {
                var _timeNOW = new Date();
                var _timeCookie = new Date();
                _timeCookie.setTime(0);
                var _timeTT = 0;
                for (var _i = 0; _i < _autoProdCookie.length; _i++)
                {
                    _timeCookie.setTime(parseInt(_autoProdCookie[_i][2]) + 0);
                    _timeTT = parseInt(_timeCookie - _timeNOW);
                    if (_timeTT < -10000 ) _avoidFlood = true;
                    if (_timeTT < 1 ) _timeTT = 1;
                    if ( _timeFinal > _timeTT )
                    {
                        _timeFinal = _timeTT;
                        _WhatToDo = "AutoProd";
                        _runfunc = funcAutoProd(_i);
                    }  
                }            
            }
        }
        if ( _avoidFlood ) _timeFinal += Math.floor( Math.random()* (30000-10000) ) + 10000;
        setTimeout(_runfunc , _timeFinal);
        
        var _divTime = funcGetElemByID('TFBdivTime');
        if ( !_divTime ) _divTime = document.createElement("div");
        _divTime.setAttribute("id","TFBdivTime");
        _divTime.innerHTML = _WhatToDo + " in ";
        var _span = document.createElement("span");
        _span.setAttribute("id","TFBTimeOut");
        _span.innerHTML =  funcSeconds2Time(parseInt(_timeFinal / 1000));
        _divTime.appendChild(_span);
        funcFindElem("//div[@id='ltime']", XPFirst).appendChild(_divTime);
    }
    
    function funcShowAutoCompleteUpdateEvent(_autoCompleteCookie)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcShowAutoCompleteUpdateEvent");
            funcDeleteFromCookie("AutoComplete", _autoCompleteCookie[7]);
            _autoCompleteCookie[6] = 0;
            funcAppendCookie("AutoComplete", _autoCompleteCookie);
            var _link = 'build.php?newdid=' + _autoCompleteCookie[1] + '&id=' + _autoCompleteCookie[2];
            document.location.href = _link;
        }
    }
    
    function funcShowAutoComplete()
    {
/* LOG */ //funcWriteLog("funcShowAutoComplete");
        var _autoCompleteCookie = funcReadCookieArray('AutoComplete');
        
        var _ShowAutoCompleteDIV = document.createElement('DIV');
        _ShowAutoCompleteDIV.id ='ShowAutoComplete'; 

        for (var _i = 0; _i < _autoCompleteCookie.length; _i++) { _autoCompleteCookie[_i][7] = _i; }
        _autoCompleteCookie.sort();
        for (var _i = 0; _i < _autoCompleteCookie.length; _i++)
        {
            var _time = new Date();
            _time.setTime(parseInt(_autoCompleteCookie[_i][6]));
            var _div = document.createElement('DIV');
            
            _div.appendChild(funcElem("span", _autoCompleteCookie[_i][0] + '&nbsp;<a href="build.php?newdid=' + _autoCompleteCookie[_i][1] + '&id=' + _autoCompleteCookie[_i][2] + '">' + _autoCompleteCookie[_i][4] + '</a>&nbsp;' + funcTranslate('LEVEL') + '&nbsp;' + _autoCompleteCookie[_i][5] + '&nbsp;' + funcCalcularTextoTiempo(_time)  + '&nbsp;&nbsp;'));
            
            var _update = funcElem("A", "<img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
            _update.href = "javascript:void(0);";
            _update.addEventListener("click", funcShowAutoCompleteUpdateEvent( _autoCompleteCookie[_i]),0);
            _div.appendChild(_update);
            _div.appendChild(funcElem("span", "&nbsp"));
            _ShowAutoCompleteDIV.appendChild(_div);

            var _delete = funcElem("A", "<img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
            _delete.href = "javascript:void(0);";
            _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoComplete", _autoCompleteCookie[_i][7], function(){funcShowAutoS('AutoComplete');}), 0);
            _div.appendChild(_delete);
            _ShowAutoCompleteDIV.appendChild(_div);
        }
        funcGetElemByID("AutoCompleteMainDIV").appendChild(_ShowAutoCompleteDIV);
    }

    function funcAutoComplete()
    {
/* LOG */ //funcWriteLog("funcAutoComplete");
        var _autoCompleteCookie = funcReadCookieArray('AutoComplete');
        if ( funcFindElem("//p[@id='contract']", XPFirst) )
        {
            funcFindElem("//p[@id='contract']", XPFirst).textContent.split(':')[0].search(/(\d+)/);
            var _prox_nivel = parseInt(RegExp.$1);
        }
        else
        {   
            funcFindElem("//div[@id='build']//span[@class='level']", XPFirst).textContent.search(/(\d+)/);
            var _prox_nivel = parseInt(RegExp.$1) + 1;
        }        
        var _newCookiePart =
        [
            selected_village_data[1], //Nome Aldeia
            selected_village_data[0], //ID ALDEIA
            selected_village_data[5], //ID da Zona do Edificio
            funcGetElemByID("build").className, //GID
            funcFindElem("//div[@id='build']//img", XPFirst).title, //Nome Edificio
            _prox_nivel, // Nivel do Edificio
            0//Time to next event
        ];
        var _index = -1;
        if ( _autoCompleteCookie != '')
        {
            for (var _i = 0; _i < _autoCompleteCookie.length; _i++)
            {
                if ( _autoCompleteCookie[_i][1] == _newCookiePart[1] && _autoCompleteCookie[_i][2] == _newCookiePart[2] )
                {
                    if ( _autoCompleteCookie[_i][3] == _newCookiePart[3] )
                    {
                        _index = _i;
                        var _timeCookie = new Date();
                        var _timeNOW = new Date();
                        _timeCookie.setTime(parseInt(_autoCompleteCookie[_index][6]));

                        if ( _timeNOW > _timeCookie )
                        {
                            var _link = funcFindElem("//p[@id='contract']//a[@class='build']", XPFirst);
                            if ( _link )
                            {
                                _newCookiePart[5]++;
                                ajaxRequest(_link, "GET", null, funcAddAutoCompleteAjax, funcDummy, _newCookiePart, _index);
                            }
                            else
                            {
                                if (funcGetElemByID('TFBTimeOutAndRefresh'))
                                {
                                    if ( funcTime2Seconds(funcGetElemByID('TFBTimeOutAndRefresh').textContent) > 3600 )
                                    {
                                        funcAddAutoComplete(_newCookiePart, _index, '01:00:00');
                                    }
                                    else
                                    {
                                        funcAddAutoComplete(_newCookiePart, _index, funcGetElemByID('TFBTimeOutAndRefresh').textContent);
                                    }
                                }
                                else
                                {
                                    if ( funcGetElemByID('NUNCA') )
                                    {
                                        funcAddAutoComplete(_newCookiePart, _index, '01:00:00');
                                    }
                                    else
                                    {
                                        ajaxRequest("dorf1.php", "GET", _newCookiePart, funcAutoCompleteCheckWorkDone, funcDummy, _newCookiePart, _index);
                                    }
                                }
                            }
                            return;
                        }
                    }
                    else
                    {
                        funcDeleteFromCookie("AutoComplete", _i);
                    }
                }
            }
            
        }
        
        var _newDiv = document.createElement("DIV");
        _newDiv.id = 'AutoComplete';
        _newDiv.appendChild(funcElem("BR",""));
        var _autoComplete = document.createElement("A");
        if ( _index != -1 )
        {
            if ( funcGetElemByID('contract') )
            {
                if ( funcGetElemByID('contract').textContent.indexOf(funcTranslate('LASTLEVEL')) == -1 )
                {
                    _autoComplete.innerHTML = '<font color="RED">' + funcTranslate('ONOFF').split('$$')[1] + '&nbsp;' + funcTranslate('AUTOCOMPLETE') + '?';
                    _autoComplete.href = "javascript:void(0);";
                    _autoComplete.addEventListener("click", funcDeleteFromCookieEvent("AutoComplete", _index, funcAutoComplete), 0);
                    _newDiv.appendChild(_autoComplete);
        
                    var _time = new Date();
                    _time.setTime(parseInt(_autoCompleteCookie[_index][6]));
                    _newDiv.appendChild(funcElem("DIV", funcTranslate('NEXTEVENT') + '&nbsp;' + funcTranslate('LEVEL') + '&nbsp;' + _autoCompleteCookie[_index][5] + '&nbsp;' + funcCalcularTextoTiempo(_time)));
                }
                else
                {
                    funcDeleteFromCookie("AutoComplete", _index);
                }
            }
        }
        else
        {
            if ( funcAutoCompleteCheckLevel(_newCookiePart) )
            {
                if ( funcGetElemByID('contract').textContent.indexOf(funcTranslate('LASTLEVEL')) == -1 )
                {
                    _autoComplete.innerHTML = funcTranslate('ONOFF').split('$$')[0] + '&nbsp;' + funcTranslate('AUTOCOMPLETE') + '?';
                    _autoComplete.href = "javascript:void(0);";
                    _autoComplete.addEventListener("click", funcAppendCookieEvent("AutoComplete", _newCookiePart, funcAutoComplete), 0);
                    _newDiv.appendChild(_autoComplete);
                }
            }
        }
        if ( funcGetElemByID('contract') ) funcGetElemByID('contract').appendChild(_newDiv);
        funcShowAutoS('AutoComplete');
    }

    function funcAutoDestroyDesc(_desc)
    {
/* LOG */ //funcWriteLog("funcAutoDestroyDesc");
        var _pos = -1;
        while ( _desc.indexOf(' ', _pos + 1) > -1 ) _pos = _desc.indexOf(' ', _pos + 1);
        return _desc.substring(0, _pos) + ' ' + parseInt(_desc.substring(_pos + 1) - 1);
    }
    
    function funcAutoDestroy()
    {
/* LOG */ //funcWriteLog("funcAutoDestroy");
        var _autoDestroyCookie = funcReadCookieArray('AutoDestroy');

        var _autoDestroyDIV = document.createElement("DIV");
        _autoDestroyDIV.id = 'AutoDestroy';
        
        _autoDestroyDIV.appendChild(funcElem("BR",""));

        var _newCookiePart =
        [
            selected_village_data[1],   //Nome Aldeia
            selected_village_data[0],   //ID ALDEIA
            '',                         //ID do Edificio a destruir
            '',                         //Texto do Edificio a destruir
            0                           //Time to next event
        ];
        
        var _index = -1;
        if ( _autoDestroyCookie != '')
        {
            for (var _i = 0; _i < _autoDestroyCookie.length; _i++)
            {
                if ( _autoDestroyCookie[_i][1] == _newCookiePart[1] )
                {
                    _index = _i;
                    var _timeCookie = new Date();
                    var _timeNOW = new Date();
                    _timeCookie.setTime(parseInt(_autoDestroyCookie[_index][4]));
                    if ( _timeNOW > _timeCookie )
                    {
                        if ( funcGetElemByID('demolish') )
                        {
                            funcDeleteFromCookie("AutoDestroy", _index);
                            _autoDestroyCookie[_index][4] = funcGetElemByID("timer1").textContent;
                            if (parseInt(_autoDestroyCookie[_index][3].substring(_autoDestroyCookie[_index][3].length - 2)) != 0)
                            {
                                var _timeNOW = new Date();
                                var _time = funcTime2Seconds(funcGetElemByID("timer1").textContent) * 1000;
                                _autoDestroyCookie[_index][4] = _timeNOW.getTime() + _time + autosDelay;
                                
                                funcAppendCookie("AutoDestroy", _autoDestroyCookie[_index]);
                                setTimeout(function() {window.location = 'dorf1.php';} , 5000);
                            }
                            else
                            {
                                funcRemoveElem(funcGetElemByID('AutoDestroy'));
                                _index = -1;
                                setTimeout(function() {window.location = 'dorf1.php';} , 5000);
                            }
                        }
                        else
                        {
                            funcFindElem("//select[@name='abriss' and @class='dropdown']", XPFirst).selectedIndex = _autoDestroyCookie[_index][2];
                            var _temp = funcFindElem("//select[@name='abriss' and @class='dropdown']", XPFirst)[_autoDestroyCookie[_index][2]].textContent;
                            if ( _temp.indexOf(_autoDestroyCookie[_index][3].substring(0, _autoDestroyCookie[_index][3].length - 2)) == 4 )
                            {
                                funcDeleteFromCookie("AutoDestroy", _index);
                                _autoDestroyCookie[_index][3] = funcAutoDestroyDesc(funcFindElem("//select[@name='abriss' and @class='dropdown']", XPFirst)[_autoDestroyCookie[_index][2]].textContent.substring(4));
                                _autoDestroyCookie[_index][4] = new Date().getTime();
                                funcAppendCookie("AutoDestroy", _autoDestroyCookie[_index]);
                                funcGetElemByID('btn_demolish').click();
                                setTimeout(function() {window.location = 'dorf1.php';} , 5000);
                                return;
                            }
                            else
                            {
                                funcDeleteFromCookie("AutoDestroy", _index);
                                funcRemoveElem(funcGetElemByID('AutoDestroy'));
                                _index = -1;
                                setTimeout(function() {window.location = 'dorf1.php';} , 5000);
                            }
                        }
                    }
                }
            }
        }
        
        var _newDiv = document.createElement("DIV");
        var _autoDestroy = document.createElement("A");
        if ( _index != -1 )
        {
            _autoDestroy.innerHTML = '<font color="RED">' + funcTranslate('ONOFF').split('$$')[1] + '&nbsp;' + funcTranslate('AUTODESTROY') + '?';
            _autoDestroy.href = "javascript:void(0);";
            _autoDestroy.addEventListener("click", funcDeleteFromCookieEvent("AutoDestroy", _index, funcAutoDestroy), 0);
            _newDiv.appendChild(_autoDestroy);
    
           var _time = new Date();
           _time.setTime(parseInt(_autoDestroyCookie[_index][4]));
            _newDiv.appendChild(funcElem("DIV", funcTranslate('NEXTEVENT') + '&nbsp;' + funcCalcularTextoTiempo(_time)));
        }
        else
        {
            if ( ! funcGetElemByID("demolish") )
            {
                _autoDestroy.innerHTML = funcTranslate('ONOFF').split('$$')[0] + '&nbsp;' + funcTranslate('AUTODESTROY') + '?';
                _autoDestroy.href = "javascript:void(0);";
                _autoDestroy.addEventListener("click", function()
                                                        {
                                                            _newCookiePart[2] = funcFindElem("//select[@name='abriss' and @class='dropdown']", XPFirst).selectedIndex;
                                                            _newCookiePart[3] = funcFindElem("//select[@name='abriss' and @class='dropdown']", XPFirst)[_newCookiePart[2]].textContent.substring(4);
                                                            if ( _newCookiePart[3] != "" )
                                                            {
                                                                funcAppendCookie("AutoDestroy", _newCookiePart);
                                                                funcRemoveElem(funcGetElemByID('AutoDestroy'));
                                                                funcAutoDestroy();
                                                            }
                                                        }, 0);
                _newDiv.appendChild(_autoDestroy);
            }
        }
        _autoDestroyDIV.appendChild(_newDiv);
        funcFindElem("//div[@id='build']//p", XPList).snapshotItem(1).appendChild(_autoDestroyDIV);
        funcShowAutoS('AutoDestroy');
    }

    function funcShowAutoDestroyUpdateEvent(_autoDestroyCookie)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcShowAutoDestroyUpdateEvent");
            funcDeleteFromCookie("AutoDestroy", _autoDestroyCookie[5]);
            _autoDestroyCookie[4] = 0;
            funcAppendCookie("AutoDestroy", _autoDestroyCookie);
            var _link = 'build.php?newdid=' + _autoDestroyCookie[1] + '&gid=15';
            document.location.href = _link;
        }
    }

    function funcShowAutoDestroy()
    {
/* LOG */ //funcWriteLog("funcShowAutoDestroy");
        var _autoDestroyCookie = funcReadCookieArray('AutoDestroy');

        var _ShowAutoDestroyDIV = document.createElement('DIV');
        _ShowAutoDestroyDIV.id ='ShowAutoDestroy'; 
        
        for (var _i = 0; _i < _autoDestroyCookie.length; _i++) { _autoDestroyCookie[_i][5] = _i; }
        _autoDestroyCookie.sort();
        for (var _i = 0; _i < _autoDestroyCookie.length; _i++)
        {
            var _time = new Date();
            _time.setTime(parseInt(_autoDestroyCookie[_i][4]));
            var _div = document.createElement('DIV');
            _div.appendChild(funcElem("span", _autoDestroyCookie[_i][0] + '&nbsp;<a href="build.php?newdid=' + _autoDestroyCookie[_i][1] + '&gid=15"><font color=red>' + _autoDestroyCookie[_i][3] + '</font></a>&nbsp;' + funcCalcularTextoTiempo(_time)  + '&nbsp;&nbsp;'));
            
            var _update = funcElem("A", "<img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
            _update.href = "javascript:void(0);";
            _update.addEventListener("click", funcShowAutoDestroyUpdateEvent( _autoDestroyCookie[_i]),0);
            _div.appendChild(_update);
            _div.appendChild(funcElem("span", "&nbsp"));
            _ShowAutoDestroyDIV.appendChild(_div);
            

            var _delete = funcElem("A", "<img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
            _delete.href = "javascript:void(0);";
            _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoDestroy", _autoDestroyCookie[_i][5], function(){funcShowAutoS('AutoDestroy');}), 0);
            _div.appendChild(_delete);
            _ShowAutoDestroyDIV.appendChild(_div);
        }
        funcGetElemByID("AutoDestroyMainDIV").appendChild(_ShowAutoDestroyDIV);
    }
    
    function funcShowAutoS(_option)
    {
/* LOG */ //funcWriteLog("funcShowAutoS");
        switch (_option)
        {
            case 'Create': // Create Main DIVS and show all AutoS and Links
            {
                var _ShowAutoProdDIV = document.createElement('DIV');
                _ShowAutoProdDIV.id = 'AutoProdMainDIV';
                funcGetElemByID("side_info").appendChild(_ShowAutoProdDIV);
                funcShowAutoProd();

                var _ShowMenuLinksDIV = document.createElement('DIV');
                _ShowMenuLinksDIV.id = 'MenuLinksMainDIV';
                funcGetElemByID("side_info").appendChild(_ShowMenuLinksDIV);
                funcShowMenuLinks();

                funcGetElemByID("side_info").appendChild(funcElem("B", '<br>' + funcTranslate('NEXTEVENT')));
                
                var _ShowAutoAttackDIV = document.createElement('DIV');
                _ShowAutoAttackDIV.id = 'AutoAttackMainDIV';
                funcGetElemByID("side_info").appendChild(_ShowAutoAttackDIV);
                funcShowAutoAttackEventMenu();

                var _ShowAutoCompleteDIV = document.createElement('DIV');
                _ShowAutoCompleteDIV.id = 'AutoCompleteMainDIV';
                funcGetElemByID("side_info").appendChild(_ShowAutoCompleteDIV);
                funcShowAutoComplete();
                
                var _ShowAutoDestroyDIV = document.createElement('DIV');
                _ShowAutoDestroyDIV.id = 'AutoDestroyMainDIV';
                funcGetElemByID("side_info").appendChild(_ShowAutoDestroyDIV);
                funcShowAutoDestroy();
                break;
            }
            case 'MenuLinks': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID('MenuLinks') ) funcRemoveElem(funcGetElemByID('MenuLinks'));
                funcShowMenuLinks();
                break;
            }
            case 'AutoProd': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID('AutoProd') ) funcRemoveElem(funcGetElemByID('AutoProd'));
                funcShowAutoProd();
                break;
            }            
            case 'AutoComplete': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID("ShowAutoComplete") ) funcRemoveElem(funcGetElemByID("ShowAutoComplete"));
                funcShowAutoComplete();
                break;
            }
            case 'AutoDestroy': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID("ShowAutoDestroy") ) funcRemoveElem(funcGetElemByID("ShowAutoDestroy"));
                funcShowAutoDestroy();
                break;
            }
            case 'AutoAttack': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID("AutoAttackDIV") ) funcRemoveElem(funcGetElemByID("AutoAttackDIV"));
                funcShowAutoAttackEventMenu();
                break;
            }
            case 'All': // Create Main DIVS and show all AutoS and Links
            {
                if ( funcGetElemByID('AutoProdMainDIV') ) funcRemoveElem(funcGetElemByID('AutoProdMainDIV'));
                funcShowAutoProd();
                if ( funcGetElemByID('MenuLinks') ) funcRemoveElem(funcGetElemByID('MenuLinks'));
                funcShowMenuLinks();
                if ( funcGetElemByID("AutoAttackDIV") ) funcRemoveElem(funcGetElemByID("AutoAttackDIV"));
                funcShowAutoAttackEventMenu();                
                if ( funcGetElemByID("ShowAutoComplete") ) funcRemoveElem(funcGetElemByID("ShowAutoComplete"));
                funcShowAutoComplete();
                if ( funcGetElemByID("ShowAutoDestroy") ) funcRemoveElem(funcGetElemByID("ShowAutoDestroy"));
                funcShowAutoDestroy();
                break;
            }
        }
        var _size = 0;
        if ( funcGetElemByID("AutoProd").clientWidth > _size ) _size = funcGetElemByID("AutoProd").clientWidth;
        if ( funcGetElemByID("MenuLinks").clientWidth > _size ) _size = funcGetElemByID("MenuLinks").clientWidth;
        if ( funcGetElemByID("ShowAutoComplete").clientWidth > _size ) _size = funcGetElemByID("ShowAutoComplete").clientWidth;
        if ( funcGetElemByID("ShowAutoDestroy").clientWidth > _size ) _size = funcGetElemByID("ShowAutoDestroy").clientWidth;
        
        funcGetElemByID("mid").style.width = 10 + funcGetElemByID("side_navi").clientWidth + funcGetElemByID("content").clientWidth + _size + 'px';
    }
    
    function funcDispalyInfo(_text)
    {
/* LOG */ //funcWriteLog("funcDispalyInfo");
        if ( !funcGetElemByID("_infoform") ) 
        {
            var _infoform = document.createElement("form");
    		_infoform.id = "_infoform";
    		_infoform.style.backgroundColor = "#faefe4";
    		_infoform.setAttribute('style', 'background-color:#faefe4; margin: 0px 0px 0px 0px; position:absolute; top:140px; left:400px; border-style: ridge; border-width:2px;');
            var _infodiv = document.createElement("DIV");
            _infodiv.id = "_infodiv";
            _infodiv.setAttribute('style', 'margin: 0px 10px 10px 10px;');
    		_infoform.appendChild(_infodiv);
    		document.body.appendChild(_infoform);
	    }
		funcGetElemByID("_infodiv").innerHTML = funcGetElemByID("_infodiv").innerHTML + "<br>" + _text;
    }
    
    function funcDefaultAttack()
    {
/* LOG */ //funcWriteLog("funcDefaultAttack");
        try { funcFindElem("//input[@name='c' and @type='radio' and  @class='radio' and @value='4']", XPFirst).checked = true; }catch(e){}
        
        if ( location.href.search(/z=(\d+)/) == -1 ) return;
        var _dest_village = RegExp.$1;        
        var lista_aldeias = funcFindElem("//table[@id='vlist']//tbody//tr", XPList);
        for ( var _i = 0; _i < lista_aldeias.snapshotLength; _i++ )
        {
            if ( lista_aldeias.snapshotItem(_i).childNodes[5].childNodes[0].childNodes[0].href.search(/z=(\d+)/) >= 0 && _dest_village == RegExp.$1 )
            {
                funcFindElem("//input[@name='c' and @type='radio' and  @class='radio' and @value='2']", XPFirst).checked = true;
                break;
            }
        }
        if ( _dest_village == funcReadCookie("ID_WW") )
        {
            funcFindElem("//input[@name='c' and @type='radio' and  @class='radio' and @value='2']", XPFirst).checked = true;
            if ( user_Tribe == 20 )
            {
                var tipo_tropa = funcGetElemByName("t1")[0];
                tipo_tropa.value = funcGetElemByID("troops").rows[0].cells[0].textContent.split("(")[1].split(")")[0];
            }
            else
            {
                var tipo_tropa = funcGetElemByName("t2")[0];
                tipo_tropa.value = funcGetElemByID("troops").rows[1].cells[0].textContent.split("(")[1].split(")")[0];

/*
                if ( user_ID == 39420 )
                {
                    funcGetElemByName("t1")[0].value = funcGetElemByID("troops").rows[0].cells[0].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t2")[0].value = funcGetElemByID("troops").rows[1].cells[0].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t3")[0].value = funcGetElemByID("troops").rows[2].cells[0].textContent.split("(")[1].split(")")[0];
                    //funcGetElemByName("t4")[0].value = funcGetElemByID("troops").rows[0].cells[1].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t5")[0].value = funcGetElemByID("troops").rows[1].cells[1].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t6")[0].value = funcGetElemByID("troops").rows[2].cells[1].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t7")[0].value = funcGetElemByID("troops").rows[0].cells[2].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t8")[0].value = funcGetElemByID("troops").rows[1].cells[2].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t9")[0].value = funcGetElemByID("troops").rows[0].cells[3].textContent.split("(")[1].split(")")[0];
                    funcGetElemByName("t10")[0].value = funcGetElemByID("troops").rows[1].cells[3].textContent.split("(")[1].split(")")[0];
                    if ( funcGetElemByName("t11")[0] ) funcGetElemByName("t11")[0].value = funcGetElemByID("troops").rows[2].cells[3].textContent.split("(")[1].split(")")[0];
                    funcFindElem("//form[@name='snd']", XPFirst).submit();
                    return;
                }
*/                

            }
            if (!location.href.match("&F=tropatoda")) tipo_tropa.value -= 500;
            if (tipo_tropa.value < 1) tipo_tropa.value = ""; else funcFindElem("//form[@name='snd']", XPFirst).submit();
        }
    }
    
    function funcAutosCheckBoxClick(_checkBoxID, _funcToRun)
    {
        return function()
        {
            funcCreateCookie(_checkBoxID, funcGetElemByID(_checkBoxID).checked);
            _funcToRun();
        }
    }
    
    function funcAutoAttackCalc(_type) // 0 - Interval, 1 - Arraiving time
    {
        return function()
        {
            if( ! funcCheckXY() ) return;
            var _tableTroops = funcGetElemByID("troops");
            var _Calc = true;
            var _emptyTroops = true;
            if ( funcGetElemByName("t1")[0].value > 0 )  if ( _tableTroops.rows[0].cells[0].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t2")[0].value > 0 )  if ( _tableTroops.rows[1].cells[0].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t3")[0].value > 0 )  if ( _tableTroops.rows[2].cells[0].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t4")[0].value > 0 )  if ( _tableTroops.rows[0].cells[1].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t5")[0].value > 0 )  if ( _tableTroops.rows[1].cells[1].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t6")[0].value > 0 )  if ( _tableTroops.rows[2].cells[1].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t7")[0].value > 0 )  if ( _tableTroops.rows[0].cells[2].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t8")[0].value > 0 )  if ( _tableTroops.rows[1].cells[2].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t9")[0].value > 0 )  if ( _tableTroops.rows[0].cells[3].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t10")[0].value > 0 ) if ( _tableTroops.rows[1].cells[3].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if ( funcGetElemByName("t11")[0].value > 0 ) if ( _tableTroops.rows[2].cells[3].textContent.indexOf("(0)") != -1 ) _Calc = false; else _emptyTroops = false;
            if (!_Calc)
            {
                alert(funcTranslate('ERRORCALC'));
                return;
            }
            if (_emptyTroops)
            {            
                alert(funcTranslate('ERRORTR'));
                funcGetElemByName("t1")[0].focus();
                funcGetElemByName("t1")[0].select();
                return;
            }
            
            var _params = "timestamp=" + funcGetElemByName("timestamp")[0].value;
            _params += "&timestamp_checksum=" + funcGetElemByName("timestamp_checksum")[0].value;
            _params += "&b=1";
            for ( _i = 1; _i < 12; _i++ ) _params += "&t" + _i + "=" + (isNaN(parseInt(funcGetElemByName("t" + _i)[0].value)) ? 0 : funcGetElemByName("t" + _i)[0].value).toString();
            _params += "&c=4";
            _params += "&dname=";
            _params += "&x=" + funcGetElemByName("x")[0].value;
            _params += "&y=" + funcGetElemByName("y")[0].value;
            _params += "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
            ajaxRequest("a2b.php", "POST", _params, funcAutoAttackCalcReport, funcAutoAttackCalcReport, _type);
        }
    }
    function funcAutoAttackCalcReport(_xmlHttpRequest, _type) // 0 - Interval, 1 - Arraiving time
    {
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        var _error = _doc[0].evaluate("//ns:p[@class='error']", _doc[1], nsResolver, XPFirst, null).singleNodeValue;
        if ( _error )
        {
            alert(_error.textContent);
            return;
        }
        
        var _time = _doc[0].evaluate("//ns:div[@class='in']", _doc[1], nsResolver, XPFirst, null).singleNodeValue;
        _time.textContent.search(/(\d+):(\d+):(\d+)/);
        var _time = funcTime2Seconds(RegExp.$1 + ":" + RegExp.$2 + ":" + RegExp.$3);
        if ( _type == 0 )
        {
            var _time = funcSeconds2Time( _time * 2 + 5);
            if ( _time.split(":")[0] > 23 )
            {
                alert(funcTranslate('ERRORTIME') + "\n" + _time);
                return;
            }
            funcGetElemByID("_time_hh_attacks_between").selectedIndex = _time.split(":")[0];
            funcGetElemByID("_time_mm_attacks_between").selectedIndex = _time.split(":")[1];
            funcGetElemByID("_time_ss_attacks_between").selectedIndex = _time.split(":")[2];
        }
        else
        {
            if ( _time > 86399 )
            {
                alert(funcTranslate('ERRORTIME') + "\n" + funcSeconds2Time(_time));
                return;
            }
            var _timeNOW = new Date();
            _timeNOW.setYear(0);
            _timeNOW.setMonth(0, 1);

            var _timeARR = new Date();
            _timeARR.setYear(0);
            _timeARR.setMonth(0, 1);
            _timeARR.setHours(funcGetElemByID("_time_hh_attacks_at").selectedIndex);
            _timeARR.setMinutes(funcGetElemByID("_time_mm_attacks_at").selectedIndex);
            _timeARR.setSeconds(funcGetElemByID("_time_ss_attacks_at").selectedIndex);
            if (_timeNOW > _timeARR) _timeARR.setMonth(0, 2);
            var _time = (_timeARR - _timeNOW)/1000 - _time;
            if ( _time < 2 )
            {
                alert(funcTranslate('ERRORTARR') + "\n" + funcSeconds2Time(Math.abs(_time)));
                return;
            }
            _timeARR.setTime(_timeNOW.getTime() + (_time * 1000));
            funcGetElemByID("_time_type_attacks").selectedIndex = 1;
            funcGetElemByID("_time_hh_attacks").selectedIndex = _timeARR.getHours();
            funcGetElemByID("_time_mm_attacks").selectedIndex = _timeARR.getMinutes();
            funcGetElemByID("_time_ss_attacks").selectedIndex = _timeARR.getSeconds();
        }
    }    
    
    function funcAutoAttackAddEvent()
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoAttackAddEvent");
            var troops = "";
            for (_i = 1; _i < 12; _i++ )
            {
                funcGetElemByName("t" + _i)[0].value = funcGetElemByName("t" + _i)[0].value.replace(/ /g,"");
                if( funcGetElemByName("t" + _i)[0].value == '' ) funcGetElemByName("t" + _i)[0].value = 0;
                if( isNaN(funcGetElemByName("t" + _i)[0].value))
                {
                    alert(funcTranslate('ERRORTR'));
                    funcGetElemByName("t" + _i)[0].focus();
                    funcGetElemByName("t" + _i)[0].select();
                    return;
                }
                if( funcGetElemByName("t" + _i)[0].value < 0)
                {
                    alert(funcTranslate('ERRORTR'));
                    funcGetElemByName("t" + _i)[0].focus();
                    funcGetElemByName("t" + _i)[0].select();
                    return;
                }
                troops = troops + funcGetElemByName("t" + _i)[0].value + "#";
            }
            if ( troops == "0#0#0#0#0#0#0#0#0#0#0#")
            {
                alert(funcTranslate('ERRORTR'));
                funcGetElemByName("t1")[0].focus();
                funcGetElemByName("t1")[0].select();
                return;
            }
            troops = troops + funcGetElemByID("_kata1").value + "#";
            troops = troops + funcGetElemByID("_kata2").value;

            if( ! funcCheckXY() ) return;

            if( isNaN(funcGetElemByID("_num_attacks").value) )
            {
                funcGetElemByID("_num_attacks").value = 1;
            }
            if( funcGetElemByID("_num_attacks").value < 1 )
            {
                funcGetElemByID("_num_attacks").value = 1;
            }
            
            var _timeNOW = new Date();
            if (funcGetElemByID("_time_type_attacks").value == 0)
            {
                var _time = funcGetElemByID("_time_hh_attacks").value + ':' + funcGetElemByID("_time_mm_attacks").value + ':' + funcGetElemByID("_time_ss_attacks").value;
                _time = funcTime2Seconds(_time);
                _time = _timeNOW.getTime() + _time * 1000;
            }
            else
            {
                var _timetmp = new Date();
                _timetmp.setHours(funcGetElemByID("_time_hh_attacks").value);
                _timetmp.setMinutes(funcGetElemByID("_time_mm_attacks").value);
                _timetmp.setSeconds(funcGetElemByID("_time_ss_attacks").value);
                if ( _timeNOW > _timetmp )
                {
                    _timetmp.setDate(_timetmp.getDate() + 1);
                }
                _time = _timetmp.getTime();
            }
            // Save Cookie
            //AutoAttack Cookie
            var _newCookiePart =
            [
                selected_village_data[1], //Village Name
                selected_village_data[0], //Village ID
                funcxy2id(funcGetElemByName("x")[0].value, funcGetElemByName("y")[0].value), //Attacked Village ID
                funcGetElemByID("_num_attacks").value, //Number of Attacks
                _time, //Time to next Attack
                funcTime2Seconds(funcGetElemByID("_time_hh_attacks_between").value + ':' + funcGetElemByID("_time_mm_attacks_between").value + ':' + funcGetElemByID("_time_ss_attacks_between").value) * 1000, //Time to wait between Attacks
                troops, //Troop to send and kata 1/2 targets
                funcGetElemByName("c")[0].checked ? 0 : funcGetElemByName("c")[1].checked ? 1 : 2, //Type of Attack (0 - reenforcment, 1 - Normal, 2 - Assault)
                funcGetElemByID('0SecAttCheckBox').checked ? 1 : 0		//    8 - Server Type of Attack (0 - Normal, 1 - Multi-Wave)
            ];
            funcAppendCookie("AutoAttack", _newCookiePart);
            funcAutoAttackShow();
            funcShowAutoS('AutoAttack');
            funcSetAutoTimers();
        }
    }
    
    function funcAutoAttackAdd()
    {
/* LOG */ //funcWriteLog("funcAutoAttackAdd");
        var _troopTable = funcGetElemByID("troops");

        if (!_troopTable) return;

        if ( !funcGetElemByName("t11")[0] ) _troopTable.rows[2].cells[3].innerHTML = '<img class="unit uhero" src="img/x.gif" title="" alt="" />&nbsp;<input type="text" class="text disabled" name="t11" value="" maxlength="6" />&nbsp;<span class="none">(0)</span>';
        
        var _troopTableTR = document.createElement("TR");
        var _troopTableTDLeft = document.createElement("TD");
        _troopTableTDLeft.align = "right";
        _troopTableTDLeft.colSpan = 2;
        _troopTableTDLeft.appendChild(funcKataSelect("_kata1", false));
        _troopTableTR.appendChild(_troopTableTDLeft);
        var _troopTableTDRight = document.createElement("TD");
        _troopTableTDRight.align = "left";
        _troopTableTDRight.colSpan = 2;
        _troopTableTDRight.appendChild(funcKataSelect("_kata2", true));
        _troopTableTR.appendChild(_troopTableTDRight);
        _troopTable.appendChild(_troopTableTR);

        var _troopTableTR = document.createElement("TR");
        var _troopTableTDLeft = document.createElement("TD");
        _troopTableTDLeft.align = "right";
        _troopTableTDLeft.colSpan = 2;
        _troopTableTDLeft.appendChild(funcElem("span", '##&nbsp;<input type="text"  Style="text-align: center;" class="text" name="_num_attacks" id="_num_attacks" value="1" maxlength="6" />&nbsp;' + funcTranslate('ATAQUES') + '&nbsp;'));
        _troopTableTDLeft.appendChild(funcElem("span", '<select class="dropdown" name="_time_type_attacks" id="_time_type_attacks" /><option value="0" selected="selected">' + funcTranslate('IN') + '</option><option value="1">' + funcTranslate('AT') + '</option></select>'));
        _troopTableTR.appendChild(_troopTableTDLeft);
        var _troopTableTDRight = document.createElement("TD");
        _troopTableTDRight.align = "left";
        _troopTableTDRight.colSpan = 2;
        _troopTableTDRight.appendChild(funcSelectTime(24, '_time_hh_attacks'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[0] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_mm_attacks'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[1] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_ss_attacks'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[2]));
        _troopTableTR.appendChild(_troopTableTDRight);
        _troopTable.appendChild(_troopTableTR);

        var _troopTableTR = document.createElement("TR");
        var _troopTableTDLeft = document.createElement("TD");
        _troopTableTDLeft.align = "right";
        _troopTableTDLeft.colSpan = 2;
        _troopTableTDLeft.appendChild(funcElem("span", funcTranslate('INTERVAL') + "&nbsp;"));
        var _calc = document.createElement('A');
        _calc.href = "javascript:void(0)";
        _calc.innerHTML = "(" + funcTranslate('CALC') + ")";
        _calc.addEventListener('click', funcAutoAttackCalc(0), false);
        _troopTableTDLeft.appendChild(_calc);
        _troopTableTR.appendChild(_troopTableTDLeft);
        var _troopTableTDRight = document.createElement("TD");
        _troopTableTDRight.align = "left";
        _troopTableTDRight.colSpan = 2;
        _troopTableTDRight.appendChild(funcSelectTime(24, '_time_hh_attacks_between'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[0] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_mm_attacks_between'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[1] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_ss_attacks_between'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[2]));
        _troopTableTR.appendChild(_troopTableTDRight);
        _troopTable.appendChild(_troopTableTR);

        var _troopTableTR = document.createElement("TR");
        var _troopTableTDLeft = document.createElement("TD");
        _troopTableTDLeft.align = "right";
        _troopTableTDLeft.colSpan = 2;
        _troopTableTDLeft.appendChild(funcElem("span", funcTranslate('ARRIVE') + " " +  funcTranslate('AT') + "&nbsp;"));
        var _calc2 = document.createElement('A');
        _calc2.href = "javascript:void(0)";
        _calc2.innerHTML = "(" + funcTranslate('CALC') + ")";
        _calc2.addEventListener('click', funcAutoAttackCalc(1), false);
        _troopTableTDLeft.appendChild(_calc2);
        _troopTableTR.appendChild(_troopTableTDLeft);
        var _troopTableTDRight = document.createElement("TD");
        _troopTableTDRight.align = "left";
        _troopTableTDRight.colSpan = 2;
        _troopTableTDRight.appendChild(funcSelectTime(24, '_time_hh_attacks_at'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[0] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_mm_attacks_at'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[1] + "&nbsp;"));
        _troopTableTDRight.appendChild(funcSelectTime(60, '_time_ss_attacks_at'));
        _troopTableTDRight.appendChild(funcElem("span", funcTranslate('TIMEFORMAT').split(":")[2]));
        _troopTableTR.appendChild(_troopTableTDRight);
        _troopTable.appendChild(_troopTableTR);
        
        var _troopTableTR = document.createElement("TR");
        var _troopTableTDCenter = document.createElement("TD");
        _troopTableTDCenter.align = "center";
        _troopTableTDCenter.colSpan = 4;
		var _checkBox = funcCheckBox("0SecAttCheckBox", funcDummy);
		_troopTableTDCenter.appendChild(_checkBox);
        _troopTableTDCenter.appendChild(funcElem("span", " " + funcTranslate('0SECATT')));
        _troopTableTR.appendChild(_troopTableTDCenter);
        _troopTable.appendChild(_troopTableTR);

        var _troopTableTR = document.createElement("TR");
        var _troopTableTDCenter = document.createElement("TD");
        _troopTableTDCenter.align = "center";
        _troopTableTDCenter.colSpan = 4;
        //_troopTableTDCenter.appendChild(funcElem("span", "<br>"));
        var _btnSave = funcBtn(1, '_btn_attack_save', funcAutoAttackAddEvent());
        _troopTableTDCenter.appendChild(_btnSave);
        _troopTableTR.appendChild(_troopTableTDCenter);
        
        _troopTable.appendChild(_troopTableTR);
    }
    
    function funcAutoAttackShowEdit(_index)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoAttackShowEdit");
            var _autoAttackCookie = funcReadCookieArray("AutoAttack");
            var _troops = _autoAttackCookie[_index][6].split("#");
            for (_i = 1; _i < 12; _i++ )
            {
                funcGetElemByName("t" + _i)[0].value = _troops[_i - 1];
            }
            
            funcGetElemByName("x")[0].value = funcid2xy(_autoAttackCookie[_index][2])[0];
            funcGetElemByName("y")[0].value = funcid2xy(_autoAttackCookie[_index][2])[1];
            funcGetElemByID("_num_attacks").value = _autoAttackCookie[_index][3];
            funcGetElemByID("_kata1").value = _troops[11];
            funcGetElemByID("_kata2").value = _troops[12];
            funcGetElemByID("_time_type_attacks").selectedIndex = 1;
            var _time = new Date();
            _time.setTime(parseInt(_autoAttackCookie[_index][4]));
            funcGetElemByID("_time_hh_attacks").selectedIndex = _time.getHours();
            funcGetElemByID("_time_mm_attacks").selectedIndex = _time.getMinutes();
            funcGetElemByID("_time_ss_attacks").selectedIndex = _time.getSeconds();
            
            _time.setTime(parseInt(_autoAttackCookie[_index][5]));
            funcGetElemByID("_time_hh_attacks_between").selectedIndex = _time.getUTCHours();
            funcGetElemByID("_time_mm_attacks_between").selectedIndex = _time.getMinutes();
            funcGetElemByID("_time_ss_attacks_between").selectedIndex = _time.getSeconds();
            funcFindElem("//input[@name='c' and @type='radio' and  @class='radio' and @value='" + parseInt(parseInt(_autoAttackCookie[_index][7]) + 2) + "']", XPFirst).checked = true;
            
            funcGetElemByID('0SecAttCheckBox').checked = parseInt(_autoAttackCookie[_index][8]);
        }
    }

    function funcAutoAttackShow()
    {
/* LOG */ //funcWriteLog("funcAutoAttackShow");
        if ( funcGetElemByID('AttackTable') ) funcRemoveElem(funcGetElemByID('AttackTable'));
        var _autoAttackCookie = funcReadCookieArray("AutoAttack");
        var _mainDIV = document.createElement("DIV");
        _mainDIV.id = "AttackTable"
        var _AttackTable = document.createElement("TABLE");
        _AttackTable.setAttribute("id","AttackTableSort");
        _AttackTable.setAttribute("cellpadding","1");
        _AttackTable.setAttribute("cellspacing","1");
        _AttackTable.setAttribute("sortCol", -1);
        var _AttackTHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","23");
        _TH.innerHTML = funcTranslate('SAVEDATT') + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + funcTranslate('AUTOCHECK') + "&nbsp;";
        var _checkBoxCookie = funcReadCookie("AutoAttackShowCheckBox");
        var _checkBox = funcCheckBox("AutoAttackShowCheckBox", funcAutosCheckBoxClick("AutoAttackShowCheckBox", funcAutoAttackShow));
        _checkBox.checked = _checkBoxCookie;
        _checkBox.style.margin = "3px 0px 0px 0px";
        _TH.appendChild(_checkBox);
        _TR.appendChild(_TH);
        _AttackTHead.appendChild(_TR);
        var _TR = document.createElement("TR");
        _TR.appendChild(funcElem("TD", ""));
        _TR.appendChild(funcElem("TD", "##"));
        _TR.appendChild(funcElem("TD", funcTranslate('FROM')));
        _TR.appendChild(funcElem("TD", "X"));
        _TR.appendChild(funcElem("TD", "Y"));
        _TR.appendChild(funcElem("TD", funcTranslate('NEXTEVENT')));
        _TR.appendChild(funcElem("TD", funcTranslate('INTERVAL')));
        _TR.appendChild(funcElem("TD", '<img class="unit u' + parseInt(user_Tribe + 8) + '" src="img/x.gif"/> 1'));
        _TR.appendChild(funcElem("TD", '<img class="unit u' + parseInt(user_Tribe + 8) + '" src="img/x.gif"/> 2'));
        for (var _i = 1; _i < 11; _i++)
        {
            _TR.appendChild(funcElem("TD", '<img class="unit u' + parseInt(user_Tribe + _i) + '" src="img/x.gif"/>'));
        }
        _TR.appendChild(funcElem("TD", '<img class="unit uhero" src="img/x.gif"/>'));
        _TR.appendChild(funcElem("TD", "0s"));
        _TR.appendChild(funcElem("TD", "&nbsp;"));
        _TR.appendChild(funcElem("TD", "&nbsp;"));
        _AttackTHead.appendChild(_TR);

        for (var _i = 1; _i < 7; _i++)
        {
            if ( _i == 1 || _i == 3 || _i == 4 ) _TR.cells[_i].addEventListener("click", funcSortTable('AttackTableSort', _i, 'int'), 0);
            else _TR.cells[_i].addEventListener("click", funcSortTable('AttackTableSort', _i), 0); 
            _TR.cells[_i].style.cursor = "pointer";
        }

        _AttackTable.appendChild(_AttackTHead);
        var _AttackTBody = document.createElement("tbody");
        for (var _index = 0; _index < _autoAttackCookie.length; _index++)
        {
            if ( _autoAttackCookie[_index][1] == selected_village_data[0] || _checkBox.checked )
            {
                var _TR = document.createElement("TR");
                if ( _autoAttackCookie[_index][7] == 0 )
                {
                    _TR.appendChild(funcElem("TD", '<center>' + '<img class="iReport iReport4" src="img/x.gif">'));
                }
                else
                {
                    _TR.appendChild(funcElem("TD", '<center>' + '<img class="att' + _autoAttackCookie[_index][7] + '" src="img/x.gif">'));
                }
                _TR.appendChild(funcElem("TD", '<center>' + _autoAttackCookie[_index][3]));
                _TR.appendChild(funcElem("TD", '<center>' + _autoAttackCookie[_index][0]));
                _TR.appendChild(funcElem("TD", '<center>' + funcid2xy(_autoAttackCookie[_index][2])[0]));
                _TR.appendChild(funcElem("TD", '<center>' + funcid2xy(_autoAttackCookie[_index][2])[1]));
                var _time = new Date();
                _time.setTime(parseInt(_autoAttackCookie[_index][4]));
                _TR.appendChild(funcElem("TD", '<center>' + func2Zero(_time.getHours()) + 'h' + func2Zero(_time.getMinutes()) + 'm' + func2Zero(_time.getSeconds()) + 's'));
                _time.setTime(parseInt(_autoAttackCookie[_index][5]));            
                _TR.appendChild(funcElem("TD", '<center>' + func2Zero(_time.getUTCHours()) + 'h' + func2Zero(_time.getMinutes()) + 'm' + func2Zero(_time.getSeconds()) + 's'));
                var _troops = _autoAttackCookie[_index][6].split("#");
                var _edif = funcTranslate('EDIFICIOS');
                if ( _troops[11] == 99 )
                    _TR.appendChild(funcElem("TD", '<center>' + _edif.split(",")[0]));
                else
                    _TR.appendChild(funcElem("TD", '<center>' + _edif.split(",")[_troops[11]]));
    
                if ( _troops[12] == 69 )
                    _TR.appendChild(funcElem("TD", '<center>' + funcTranslate('NO') ));
                else if ( _troops[12] == 99 )
                    _TR.appendChild(funcElem("TD", '<center>' + _edif.split(",")[0]));
                else
                    _TR.appendChild(funcElem("TD", '<center>' + _edif.split(",")[_troops[12]]));
                    
                for (var _i = 0; _i < 11; _i++)
                {
                    _TR.appendChild(funcElem("TD", '<center>' + _troops[_i]));
                }
                
                _TR.appendChild(funcElem("TD", '<center>' + _autoAttackCookie[_index][8]));
                
                var _TD = document.createElement("TD");
                var _edit = funcElem("A", "<center><img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
                _edit.href = "javascript:void(0);";
                _edit.addEventListener("click", funcAutoAttackShowEdit(_index), 0);
                _TD.appendChild(_edit);
                _TR.appendChild(_TD);
                
                var _TD = document.createElement("TD");
                var _delete = funcElem("A", "<center><img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
                _delete.href = "javascript:void(0);";
                _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoAttack", _index, function(){funcAutoAttackShow();funcShowAutoS('AutoAttack');funcSetAutoTimers();}), 0);
                _TD.appendChild(_delete);
                _TR.appendChild(_TD);
                
                _AttackTBody.appendChild(_TR);
            }
        }
        _AttackTable.appendChild(_AttackTBody);

        _mainDIV.appendChild(_AttackTable);
        
        _mainDIV.style.position = 'absolute';
        _mainDIV.style.width = "680px";
        _mainDIV.style.top = "575px";
        _mainDIV.style.left = "2px";
        document.body.appendChild(_mainDIV);
        funcRemoveElem(funcGetElemByID("footer"));
    }
    
    function funcShowAutoAttackEventMenu()
    {
/* LOG */ //funcWriteLog("funcShowAutoAttackEventMenu");
        //AutoAttackMainDIV
        var _autoAttackCookie = funcReadCookieArray("AutoAttack");
        if ( _autoAttackCookie.length < 1 ) return;        

        var _ShowAutoAttackDIV = document.createElement('DIV');
        _ShowAutoAttackDIV.id ='AutoAttackDIV'; 
        var _autoAttackCookieSorted = new Array(_autoAttackCookie.length);
        for (var _i = 0; _i < _autoAttackCookie.length; _i++)
        {
            if ( _autoAttackCookie[_i][3] < 1 )
            {
                funcDeleteFromCookie("AutoAttack", _i);
            }
            else
            {
                _autoAttackCookieSorted[_i] =
                    [
                        _autoAttackCookie[_i][4],
                        _autoAttackCookie[_i][0],
                        _autoAttackCookie[_i][1],
                        _autoAttackCookie[_i][2],
                        _autoAttackCookie[_i][7]
                     ];
            }
        }
        _autoAttackCookieSorted.sort();
        for (var _i = 0; _i < (_autoAttackCookie.length > 3 ? 3 : _autoAttackCookie.length); _i++)
        {
            var _time = new Date();
            _time.setTime(parseInt(_autoAttackCookieSorted[_i][0]));
            var _div = document.createElement('DIV');
            var _showTime = func2Zero(_time.getHours()) + 'h' + func2Zero(_time.getMinutes()) + 'm' + func2Zero(_time.getSeconds()) + 's';
            
            if ( _autoAttackCookieSorted[_i][4] == 0 )
            {
                var _attack_type = '<img class="iReport iReport4" src="img/x.gif">';
            }
            else
            {
                var _attack_type = '<img class="att' + _autoAttackCookieSorted[_i][4] + '" src="img/x.gif">';
            }
            _div.appendChild(funcElem("span", '<a href="a2b.php?newdid=' + _autoAttackCookieSorted[_i][2] + '">' + _autoAttackCookieSorted[_i][1] + '&nbsp;' + _attack_type + '&nbsp;' + funcid2xy(_autoAttackCookieSorted[_i][3]).join("|") + '</a>&nbsp;' + _showTime)); //funcCalcularTextoTiempo(_time)));
            _ShowAutoAttackDIV.appendChild(_div);
        }
        funcGetElemByID("AutoAttackMainDIV").appendChild(_ShowAutoAttackDIV);        
    }

    function funcAutoAttackSendFailed(_xmlHttpRequest, _act_village, _index, _paramsTroop, _multiattack, _where, _why, _cookie ) // _cookie (0-Delete, 1-Delay to interval, 2 - Delay 10Sec)
    {
/* LOG */ //funcWriteLog("funcAutoAttackSendFailed");
        funcDispalyInfo('!.' + _where + '.! ' + _why);
        if ( _multiattack )
        {
            funcSwitchToVillage(_index);
        }
        else
        {
            var _autoAttackCookie = funcReadCookieArray("AutoAttack");
            _autoAttackCookie[_index][4] = parseInt(parseInt(_autoAttackCookie[_index][4]) + 10000);
            if ( _cookie == 1 ) _autoAttackCookie[_index][4] = parseInt(parseInt(_autoAttackCookie[_index][4]) + parseInt(_autoAttackCookie[_index][5]));
            _autoAttackCookie[_index][3] = parseInt(parseInt(_autoAttackCookie[_index][3]) - 1);
            funcDeleteFromCookie("AutoAttack", _index);
            if ( _cookie == 0 ) funcDispalyInfo(funcTranslate('COOKIEDEL')); else funcDispalyInfo(funcTranslate('COOKIELAT'));
            if ( _cookie != 0 ) funcAppendCookie("AutoAttack", _autoAttackCookie[_index]);
            funcSwitchToVillage(_autoAttackCookie[_index][1]);
        }
        funcShowAutoS('AutoAttack');
        funcSetAutoTimers();
    }

    function funcAutoAttackSend(_index)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoAttackSend");
            var _autoAttackCookie = funcReadCookieArray("AutoAttack");
            if ( _autoAttackCookie.length < 1 )
            {
                funcAutoAttackSendFailed(null, null, _index, null, 1, '<br>' + funcTranslate('SENDATT') + '<br>' + funcTranslate('ERRORCK'), 0);
                return;
            }
            var _paramsTroop = new Array(4); // 0 - Page 1 | 1 - Page 2 | 2 - Katas | 3 - &c

            _paramsTroop[0]  = "&b=1";
            _paramsTroop[0] += "&t1="  + _autoAttackCookie[_index][6].split("#")[0];
            _paramsTroop[0] += "&t4="  + _autoAttackCookie[_index][6].split("#")[3];
            _paramsTroop[0] += "&t7="  + _autoAttackCookie[_index][6].split("#")[6];
            _paramsTroop[0] += "&t9="  + _autoAttackCookie[_index][6].split("#")[8];
            _paramsTroop[0] += "&t2="  + _autoAttackCookie[_index][6].split("#")[1];
            _paramsTroop[0] += "&t5="  + _autoAttackCookie[_index][6].split("#")[4];
            _paramsTroop[0] += "&t8="  + _autoAttackCookie[_index][6].split("#")[7];
            _paramsTroop[0] += "&t10=" + _autoAttackCookie[_index][6].split("#")[9];
            _paramsTroop[0] += "&t3="  + _autoAttackCookie[_index][6].split("#")[2];
            _paramsTroop[0] += "&t6="  + _autoAttackCookie[_index][6].split("#")[5];
            _paramsTroop[0] += "&t11=" + _autoAttackCookie[_index][6].split("#")[10];
            _paramsTroop[0] += "&dname=";
            _paramsTroop[0] += "&c=" + parseInt(parseInt(_autoAttackCookie[_index][7]) + 2);
            _paramsTroop[0] += "&x=" + funcid2xy(_autoAttackCookie[_index][2])[0];
            _paramsTroop[0] += "&y=" + funcid2xy(_autoAttackCookie[_index][2])[1];

            _paramsTroop[1] = "";
            for ( var _i = 0; _i < 11; _i++ ) { _paramsTroop[1] += "&t" + parseInt(_i + 1) + "=" + _autoAttackCookie[_index][6].split("#")[_i]; }


            _paramsTroop[2] = "";
            if ( parseInt(_autoAttackCookie[_index][6].split("#")[7]) > 0  && parseInt(_autoAttackCookie[_index][7]) == 1 )
            {
                _paramsTroop[2] += "kata=" + _autoAttackCookie[_index][6].split("#")[11];
                if ( parseInt(_autoAttackCookie[_index][6].split("#")[7]) > 19 )
                    _paramsTroop[2] += "&kata2=" + ( _autoAttackCookie[_index][6].split("#")[12] == 69 ? 0 : _autoAttackCookie[_index][6].split("#")[12] );
                _paramsTroop[2] += "&";
            }
            _paramsTroop[3] = "&c=" + parseInt(parseInt(_autoAttackCookie[_index][7]) + 2);
            
            funcDispalyInfo( '<font color=blue><b>' + _autoAttackCookie[_index][0] + '</b></font> ' + funcTranslate('SENDATT') + '<font color=red><b>' + funcid2xy(_autoAttackCookie[_index][2]).join("|") + '</b></font>');
            ajaxRequest("a2b.php?newdid=" + _autoAttackCookie[_index][1], "GET", null, funcAutoAttackSend_2, funcAutoAttackSendFailed, _autoAttackCookie[_index][1], _index, _paramsTroop, false, 1, funcTranslate('PAGEERROR'), 2);
        }
    }
    function funcAutoAttackSend_2(_xmlHttpRequest, _act_village, _index, _paramsTroop)
    {
/* LOG */ //funcWriteLog("funcAutoAttackSend_2");
        var _ttt = _xmlHttpRequest.responseText.substring(_xmlHttpRequest.responseText.indexOf('<form'), _xmlHttpRequest.responseText.indexOf('</form>'));
        _ttt = _ttt.replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"");
        var _params = "timestamp=" + _ttt.substring(_ttt.indexOf('name="timestamp"value="') + 23, _ttt.indexOf('"/>', _ttt.indexOf('name="timestamp"value="')));
        _params += "&timestamp_checksum=" + _ttt.substring(_ttt.indexOf('name="timestamp_checksum"value="') + 32, _ttt.indexOf('"/>', _ttt.indexOf('name="timestamp_checksum"value="')));
        _params += _paramsTroop[0];
        var _multiattack = false;
        var _rndS = "";
        var _autoAttackCookie = funcReadCookieArray("AutoAttack");
        if ( _autoAttackCookie[_index][5] < 1000 && _autoAttackCookie[_index][3] > 1 )
        {
            funcDeleteFromCookie("AutoAttack", _index);
            _multiattack = true;
            for ( var _n = 1; _n < _autoAttackCookie[_index][3]; _n++ )
            {
                _rndS = "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
                ajaxRequest("a2b.php?newdid=" + _act_village, "POST", _params + _rndS, funcAutoAttackSend_3, funcAutoAttackSendFailed, _act_village, _autoAttackCookie[_index][1], _paramsTroop, _multiattack, 2, funcTranslate('PAGEERROR'), 2);
            }
            _index = _autoAttackCookie[_index][1];
        }
        _rndS = "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
        ajaxRequest("a2b.php?newdid=" + _act_village, "POST", _params + _rndS, funcAutoAttackSend_3, funcAutoAttackSendFailed, _act_village, _index, _paramsTroop, _multiattack, 2, funcTranslate('PAGEERROR'), 2);
    }
    
    function funcAutoAttackSend_3(_xmlHttpRequest, _act_village, _index, _paramsTroop, _multiattack)
    {
/* LOG */ //funcWriteLog("funcAutoAttackSend_3");
        var _ttt = _xmlHttpRequest.responseText.substring(_xmlHttpRequest.responseText.indexOf('<form'), _xmlHttpRequest.responseText.indexOf('</form>'));
        _ttt = _ttt.replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"");
        
        var _params = _paramsTroop[2];
        _params += "timestamp=" + _ttt.substring(_ttt.indexOf('name="timestamp"value="') + 23, _ttt.indexOf('"/>', _ttt.indexOf('name="timestamp"value="')));
        _params += "&timestamp_checksum=" + _ttt.substring(_ttt.indexOf('name="timestamp_checksum"value="') + 32, _ttt.indexOf('"/>', _ttt.indexOf('name="timestamp_checksum"value="')));
        _params += "&id=39";
        _params += "&a=" + _ttt.substring(_ttt.indexOf('name="a"value="') + 15, _ttt.indexOf('"/>', _ttt.indexOf('name="a"value="')));
        _params += _paramsTroop[3];
        _params += "&kid=" + _ttt.substring(_ttt.indexOf('name="kid"value="') + 17, _ttt.indexOf('"/>', _ttt.indexOf('name="kid"value="')));
        _params += _paramsTroop[1];
        _params += "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
        ajaxRequest("a2b.php?newdid=" + _act_village, "POST", _params, funcAutoAttackSend_Report, funcAutoAttackSendFailed, _act_village, _index, _xmlHttpRequest, _multiattack, 3, funcTranslate('PAGEERROR'), 2);
    }

    function funcAutoAttackSend_Report(_xmlHttpRequest, _act_village, _index, _xmlHttpRequest_3, _multiattack)
    {
/* LOG */ //funcWriteLog("funcAutoAttackSend_Report");
        var _autoAttackCookie = funcReadCookieArray("AutoAttack");
        if ( _xmlHttpRequest_3.responseText.indexOf('input type="hidden" name="t1"') == -1 )
        {
            var _error = _xmlHttpRequest_3.responseText.indexOf('<p class="error">') + 17;
            _error = _xmlHttpRequest_3.responseText.substring(_error, _error + _xmlHttpRequest_3.responseText.length);
            _error = _error.substring(0, _error.indexOf('</p>'));
            funcDispalyInfo('<font color=red>' + _error + '</font>');
            if ( !_multiattack ) funcWriteLog(_error + " " + funcid2xy(_autoAttackCookie[_index][2]));
        }
        else
        {
            funcDispalyInfo('!.' + funcTranslate('ATTSENTOK') + '.! ');
        }
        if ( _multiattack )
        {
            setTimeout(function() {funcShowAutoS('AutoAttack'); funcSetAutoTimers(); funcSwitchToVillage(_index);} , 1111);
        }
        else
        {
            if ( parseInt(_autoAttackCookie[_index][5]) > 59999 )
                _autoAttackCookie[_index][4] = new Date().getTime() + parseInt(_autoAttackCookie[_index][5]) + (((Math.floor( Math.random()* (1200-60) ) ) + 60) * 1000);
            else
                _autoAttackCookie[_index][4] = new Date().getTime() + parseInt(_autoAttackCookie[_index][5]);
            _autoAttackCookie[_index][3] = parseInt(parseInt(_autoAttackCookie[_index][3]) - 1);
            funcDeleteFromCookie("AutoAttack", _index);
            if ( _autoAttackCookie[_index][3] > 0 )
            {
                funcAppendCookie("AutoAttack", _autoAttackCookie[_index]);
            }
            funcSwitchToVillage(_autoAttackCookie[_index][1]);            
            funcShowAutoS('AutoAttack');
            funcSetAutoTimers();
        }
    }
    
    function funcAutoMarketAddEvent()
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoMarketAddEvent");

            if ( funcGetElemByID("r1").value + funcGetElemByID("r2").value + funcGetElemByID("r3").value + funcGetElemByID("r4").value < 1 )
            {
                funcGetElemByID("r1").focus();
                funcGetElemByID("r1").select();
                alert(funcTranslate('ERRORMERCN0RES'));
                return;
            }
            if( ! funcCheckXY() ) return;
            if( isNaN(funcGetElemByID("_num_sends").value) )
            {
                funcGetElemByID("_num_sends").value = 1;
            }
            if( funcGetElemByID("_num_sends").value < 1 )
            {
                funcGetElemByID("_num_sends").value = 1;
            }            

            var _timeNOW = new Date();
            if (funcGetElemByID("_time_type").value == 0)
            {
                var _time = funcGetElemByID("_time_hh_send").value + ':' + funcGetElemByID("_time_mm_send").value + ':' + funcGetElemByID("_time_ss_send").value;
                _time = funcTime2Seconds(_time);
                _time = _timeNOW.getTime() + _time * 1000;
            }
            else
            {
                var _timetmp = new Date();
                _timetmp.setHours(funcGetElemByID("_time_hh_send").value);
                _timetmp.setMinutes(funcGetElemByID("_time_mm_send").value);
                _timetmp.setSeconds(funcGetElemByID("_time_ss_send").value);
                if ( _timeNOW > _timetmp )
                {
                    _timetmp.setDate(_timetmp.getDate() + 1);
                }
                _time = _timetmp.getTime();
            }
                        
            // Save Cookie
            //AutoMarket Cookie
            var _newCookiePart =
            [
                selected_village_data[1], //Village Name
                selected_village_data[0], //Village ID
                funcxy2id(funcGetElemByName("x")[0].value, funcGetElemByName("y")[0].value), // Where to Village zID
                funcGetElemByID("_num_sends").value, //Number of sends
                _time, //Time to next send
                funcTime2Seconds(funcGetElemByID("_time_hh_send_between").value + ':' + funcGetElemByID("_time_mm_send_between").value + ':' + funcGetElemByID("_time_ss_send_between").value) * 1000, //Time to wait between sends
                funcGetElemByID("r1").value + "#" + funcGetElemByID("r2").value + "#" + funcGetElemByID("r3").value + "#" + funcGetElemByID("r4").value //Resourses to send split("#")
            ];
            funcAppendCookie("AutoMarket", _newCookiePart);
            funcAutoMarketShow();
            funcSetAutoTimers();
        }
    }
    
    function funcAutoMarketShowEdit(_index)
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoMarketShowEdit");
            var _autoMarketCookie = funcReadCookieArray("AutoMarket");
            var _resources = _autoMarketCookie[_index][6].split("#");
            for (_i = 1; _i < 5; _i++ )
            {
                funcGetElemByName("r" + _i)[0].value = _resources[_i - 1];
            }
            
            funcGetElemByName("x")[0].value = funcid2xy(_autoMarketCookie[_index][2])[0];
            funcGetElemByName("y")[0].value = funcid2xy(_autoMarketCookie[_index][2])[1];
            funcGetElemByID("_num_sends").value = _autoMarketCookie[_index][3];
            funcGetElemByID("_time_type").selectedIndex = 1;
            var _time = new Date();
            _time.setTime(parseInt(_autoMarketCookie[_index][4]));
            funcGetElemByID("_time_hh_send").selectedIndex = _time.getHours();
            funcGetElemByID("_time_mm_send").selectedIndex = _time.getMinutes();
            funcGetElemByID("_time_ss_send").selectedIndex = _time.getSeconds();
            
            _time.setTime(parseInt(_autoMarketCookie[_index][5]));
            funcGetElemByID("_time_hh_send_between").selectedIndex = _time.getUTCHours();
            funcGetElemByID("_time_mm_send_between").selectedIndex = _time.getMinutes();
            funcGetElemByID("_time_ss_send_between").selectedIndex = _time.getSeconds();
        }        
    }
    
    function funcAutoMarketShow()
    {
/* LOG */ //funcWriteLog("funcAutoMarketShow");
        //funcEraseCookie("AutoMarket");
        
        //Add resources boxs
       if ( ! funcGetElemByID("_time_hh_send") )
       {
            var _mainTR = document.createElement("TR");
            var _mainTD = document.createElement("TD");
            _mainTD.setAttribute("colspan", "8");
            _mainTD.align = "right";
            _mainTD.appendChild(funcElem("span", '<input type="text" class="text" name="_num_sends" id="_num_sends" value="1" maxlength="6" size=2/>'));
            _mainTD.appendChild(funcElem("span", '&nbsp;<select class="dropdown" name="_time_type" id="_time_type" /><option value="0" selected="selected">' + funcTranslate('IN') + '</option><option value="1">' + funcTranslate('AT') + '</option></select>'));
            _mainTD.appendChild(funcElem("span", ""));
            _mainTD.appendChild(funcSelectTime(24, '_time_hh_send'));
            _mainTD.appendChild(funcElem("span", ":"));
            _mainTD.appendChild(funcSelectTime(60, '_time_mm_send'));
            _mainTD.appendChild(funcElem("span", ":"));
            _mainTD.appendChild(funcSelectTime(60, '_time_ss_send'));
            _mainTD.appendChild(funcElem("span", "<br>"));
            _mainTD.appendChild(funcElem("span", funcTranslate('INTERVAL') + "&nbsp;"));
            _mainTD.appendChild(funcSelectTime(24, '_time_hh_send_between'));
            _mainTD.appendChild(funcElem("span", ":"));
            _mainTD.appendChild(funcSelectTime(60, '_time_mm_send_between'));
            _mainTD.appendChild(funcElem("span", ":"));
            _mainTD.appendChild(funcSelectTime(60, '_time_ss_send_between'));
            var _btnSave = funcBtn(1, '_btn_send_save', funcAutoMarketAddEvent());
            _mainTD.appendChild(_btnSave);
            _mainTR.appendChild(_mainTD);
            funcFindElem("//table[@id='send_select']", XPFirst).appendChild(_mainTR);
       }
        
        if ( funcGetElemByID('MarketSendTable') ) funcRemoveElem(funcGetElemByID('MarketSendTable'));
        var _autoMarketCookie = funcReadCookieArray("AutoMarket");
        var _mainDIV = document.createElement("DIV");
        _mainDIV.id = "MarketSendTable"
        var _autoMarketTable = document.createElement("TABLE");
        _autoMarketTable.setAttribute("id","MarketTableSort");
        _autoMarketTable.setAttribute("cellpadding","1");
        _autoMarketTable.setAttribute("cellspacing","1");
        var _autoMarketHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","22");

        _TH.innerHTML = funcTranslate('SAVEDSENDS') + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + funcTranslate('AUTOCHECK') + "&nbsp;";

        var _checkBoxCookie = funcReadCookie("AutoMarketShowCheckBox");
        var _checkBox = funcCheckBox("AutoMarketShowCheckBox", funcAutosCheckBoxClick("AutoMarketShowCheckBox", funcAutoMarketShow));
        _checkBox.checked = _checkBoxCookie;
        _checkBox.style.margin = "3px 0px 0px 0px";
        _TH.appendChild(_checkBox);

        _TR.appendChild(_TH);
        _autoMarketHead.appendChild(_TR);
        var _TR = document.createElement("TR");
        _TR.appendChild(funcElem("TD", "##"));
        _TR.appendChild(funcElem("TD", funcTranslate('FROM')));
        _TR.appendChild(funcElem("TD", "X"));
        _TR.appendChild(funcElem("TD", "Y"));
        _TR.appendChild(funcElem("TD", funcTranslate('NEXTEVENT')));
        _TR.appendChild(funcElem("TD", funcTranslate('INTERVAL')));
        for (var _i = 1; _i < 5; _i++)
        {
            _TR.appendChild(funcElem("TD", '<img class="r' + _i + '" src="img/x.gif"/>'));
        }
        _TR.appendChild(funcElem("TD", ""));
        _TR.appendChild(funcElem("TD", ""));
        _autoMarketHead.appendChild(_TR);
        
        for (var _i = 0; _i < 10; _i++)
        {
            if ( _i == 1 || _i == 4 || _i == 5 ) _TR.cells[_i].addEventListener("click", funcSortTable('MarketTableSort', _i), 0);
            else _TR.cells[_i].addEventListener("click", funcSortTable('MarketTableSort', _i, 'int'), 0); 
            _TR.cells[_i].style.cursor = "pointer";
        }        
        
        _autoMarketTable.appendChild(_autoMarketHead);

        var _autoMarketBody = document.createElement("tbody");
        for (var _index = 0; _index < _autoMarketCookie.length; _index++)
        {
            if ( _autoMarketCookie[_index][1] == selected_village_data[0] || _checkBox.checked )
            {
                var _TR = document.createElement("TR");
                _TR.appendChild(funcElem("TD", '<center>' + _autoMarketCookie[_index][3]));
                _TR.appendChild(funcElem("TD", '<center>' + _autoMarketCookie[_index][0]));
                _TR.appendChild(funcElem("TD", '<center>' + funcid2xy(_autoMarketCookie[_index][2])[0]));
                _TR.appendChild(funcElem("TD", '<center>' + funcid2xy(_autoMarketCookie[_index][2])[1]));
                var _time = new Date();
                _time.setTime(parseInt(_autoMarketCookie[_index][4]));
                _TR.appendChild(funcElem("TD", '<center>' + func2Zero(_time.getHours()) + 'h' + func2Zero(_time.getMinutes()) + 'm' + func2Zero(_time.getSeconds()) + 's'));
                _time.setTime(parseInt(_autoMarketCookie[_index][5]));            
                _TR.appendChild(funcElem("TD", '<center>' + func2Zero(_time.getUTCHours()) + 'h' + func2Zero(_time.getMinutes()) + 'm' + func2Zero(_time.getSeconds()) + 's'));
                var _resources = _autoMarketCookie[_index][6].split("#");
                            
                for (var _i = 0; _i < 4; _i++)
                {
                    _TR.appendChild(funcElem("TD", '<center>' + _resources[_i]));
                }
                
                var _TD = document.createElement("TD");
                var _edit = funcElem("A", "<center><img src='img/x.gif' class='iReport iReport10' border='0' alt='" + funcTranslate('ACTUALIZAR') + "' title='" + funcTranslate('ACTUALIZAR') + "'>");
                _edit.href = "javascript:void(0);";
                _edit.addEventListener("click", funcAutoMarketShowEdit(_index), 0);
                _TD.appendChild(_edit);
                _TR.appendChild(_TD);
                
                var _TD = document.createElement("TD");
                var _delete = funcElem("A", "<center><img src='img/x.gif' class='del' border='0' alt='" + funcTranslate('ELIMINAR') + "' title='" + funcTranslate('ELIMINAR') + "'>");
                _delete.href = "javascript:void(0);";
                _delete.addEventListener("click", funcDeleteFromCookieEvent("AutoMarket", _index, function(){funcAutoMarketShow();funcSetAutoTimers();}), 0);
                _TD.appendChild(_delete);
                _TR.appendChild(_TD);
                
                _autoMarketBody.appendChild(_TR);
            }
        }
        _autoMarketTable.appendChild(_autoMarketBody);
        _mainDIV.appendChild(funcElem("span", "<br>"));
        _mainDIV.appendChild(_autoMarketTable);
        
//        _mainDIV.style.position = 'absolute';
//        _mainDIV.style.width = "680px";
        _mainDIV.style.width = "502px";
//        _mainDIV.style.top = "530px";
        _mainDIV.style.left = "2px";
        
        //document.body.appendChild(_mainDIV);
        funcFindElem("//p", XPList).snapshotItem(funcFindElem("//p", XPList).snapshotLength - 3).appendChild(_mainDIV);
        funcRemoveElem(funcGetElemByID("footer"));
    }

    function funcAutoMarketSendFailed( _xmlHttpRequest, _index )
    {
/* LOG */ //funcWriteLog("funcAutoMarketSendFailed");
        funcDispalyInfo('!.' + funcTranslate('PAGEERROR') + '.!');
        
        var _autoMarketCookie = funcReadCookieArray("AutoMarket");
        _autoMarketCookie[_index][4] = parseInt(parseInt(_autoMarketCookie[_index][4]) + 10000);
        _autoMarketCookie[_index][3] = parseInt(parseInt(_autoMarketCookie[_index][3]) - 1);
        funcDeleteFromCookie("AutoMarket", _index);
        if ( _autoMarketCookie[_index][3] > 0 ) funcAppendCookie("AutoMarket", _autoMarketCookie[_index]);
        funcSwitchToVillage(_autoMarketCookie[_index][1]);
        funcSetAutoTimers();
    }

    function funcAutoMarketSend( _index )
    {
        return function()
        {
/* LOG */ //funcWriteLog("funcAutoMarketSend");
            var _autoMarketCookie = funcReadCookieArray("AutoMarket");
            funcDispalyInfo(funcTranslate('ENVIAR') + ' <font color=blue><b>' + _autoMarketCookie[_index][0] + '</b></font> -> <font color=blue><b>' + funcid2xy(_autoMarketCookie[_index][2]).join("|") + '</b></font>');
            ajaxRequest("build.php?newdid=" + _autoMarketCookie[_index][1] + "&gid=17&z=" + _autoMarketCookie[_index][2], "GET", null, funcAutoMarketSend_2, funcAutoMarketSendFailed, _index);
        }        
    }
    
    function funcAutoMarketSend_2 ( _xmlHttpRequest, _index )
    {
/* LOG */ //funcWriteLog("funcAutoMarketSend_2");        
        var _autoMarketCookie = funcReadCookieArray("AutoMarket");
        
        //Verificar a existencia de mercado :D
        
        var _haendler = _xmlHttpRequest.responseText.substring(_xmlHttpRequest.responseText.indexOf('var haendler') + 14, _xmlHttpRequest.responseText.indexOf(';', _xmlHttpRequest.responseText.indexOf('var haendler')));
        _haendler = _haendler.replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"");
        var _carry = _xmlHttpRequest.responseText.substring(_xmlHttpRequest.responseText.indexOf('var carry') + 12, _xmlHttpRequest.responseText.indexOf(';', _xmlHttpRequest.responseText.indexOf('var carry')));
        _carry = _carry.replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"");
        
        var _id = _xmlHttpRequest.responseText;
        _id = _id.replace(/ /g,"").replace(/\t/g,"").replace(/\r/g,"").replace(/\n/g,"");
        _id = _id.substring(_id.indexOf('<inputtype="hidden"name="id"value="') + 35, _id.indexOf('">', _id.indexOf('<inputtype="hidden"name="id"value="')));
        var _resources = _autoMarketCookie[_index][6].split("#");
        
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        
        for ( var _i = 0; _i < 4; _i++ )
        {
            var _resDesp = _doc[0].evaluate("//ns:td[@id='l" + (4 - _i) + "']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.innerHTML.split("/")[0];
            if ( parseInt(_resources[_i]) > parseInt(_resDesp) ) _resources[_i] = _resDesp;
        }
        if ( funcArraySum(_resources) > ( _haendler * _carry ) && _haendler > 0 )
        {
            var _res = funcArraySum(_resources) - ( _haendler * _carry );
            while ( _res > 0 && funcArraySum(_resources) > 0 )
            {
                var _resTTT = Math.floor( _res / 4 + 1);
                if ( _resources[0] < _resTTT )
                {
                    _res -= _resources[0];
                    _resources[0] = 0;
                }
                else
                {
                    _res -= _resTTT;
                    _resources[0] -= _resTTT;
                }
                if ( _resources[1] < _resTTT )
                {
                    _res -= _resources[1];
                    _resources[1] = 0;
                }
                else
                {
                    _res -= _resTTT;
                    _resources[1] -= _resTTT;
                }
                if ( _resources[2] < _resTTT )
                {
                    _res -= _resources[2];
                    _resources[2] = 0;
                }
                else
                {
                    _res -= _resTTT;
                    _resources[2] -= _resTTT;
                }
                if ( _resources[3] < _resTTT )
                {
                    _res -= _resources[3];
                    _resources[3] = 0;
                }
                else
                {
                    _res -= _resTTT;
                    _resources[3] -= _resTTT;
                }
            }
        }
        _resources[0] = Math.floor(_resources[0] / 10 ) * 10;
        _resources[1] = Math.floor(_resources[1] / 10 ) * 10;
        _resources[2] = Math.floor(_resources[2] / 10 ) * 10;
        _resources[3] = Math.floor(_resources[3] / 10 ) * 10;
        if ( funcArraySum(_resources) < 50 || _haendler == 0 )
        {
            funcDeleteFromCookie("AutoMarket", _index);
            _autoMarketCookie[_index][4] = new Date().getTime() + parseInt(_autoMarketCookie[_index][5]);
            _autoMarketCookie[_index][3] = parseInt(parseInt(_autoMarketCookie[_index][3]) - 1);
            if ( _autoMarketCookie[_index][3] > 1 ) funcAppendCookie("AutoMarket", _autoMarketCookie[_index]);
            funcSwitchToVillage(_autoMarketCookie[_index][1]);
            var _error = funcTranslate('FALTA') + " " + funcTranslate('MAT_PRIMAS');
            if ( _haendler == 0 ) _error = funcTranslate('ERRORMERC');
            funcDispalyInfo('<font color=red>' + _error + '</font>');
            funcWriteLog(_error + " " + funcid2xy(_autoMarketCookie[_index][2]));
            funcSetAutoTimers();
            return;
        }
        var _params = "&id=" + _id;
        _params += "&r1=" + _resources[0];
        _params += "&r2=" + _resources[1];
        _params += "&r3=" + _resources[2];
        _params += "&r4=" + _resources[3];
        _params += "&dname=";
        _params += "&x=" + funcid2xy(_autoMarketCookie[_index][2])[0];
        _params += "&y=" + funcid2xy(_autoMarketCookie[_index][2])[1];
        _params += "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
        
        ajaxRequest("build.php?newdid=" + _autoMarketCookie[_index][1] + "&gid=17&z=" + _autoMarketCookie[_index][2], "POST", _params, funcAutoMarketSend_3, funcAutoMarketSendFailed, _index, _id);
    }
    function funcAutoMarketSend_3 ( _xmlHttpRequest, _index, _id )
    {
/* LOG */ //funcWriteLog("funcAutoMarketSend_3");
        
        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        
        if ( _doc[0].evaluate("//ns:p[@class='error']", _doc[1], nsResolver, XPFirst, null).singleNodeValue )
        {
            funcAutoMarketSend_Report ( _xmlHttpRequest, _index );   
            return;
        }
        var _resources = 
        [
            _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='r1']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value,
            _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='r2']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value,
            _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='r3']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value,
            _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='r4']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value
        ];
        var _params = "&id=" + _id;
        var _timetoarrive = _doc[0].evaluate("//ns:table[@id='target_validate' and @class='res_target']//ns:td", _doc[1], nsResolver, XPList, null).snapshotItem(2).textContent;
        _params += "&a=" + _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='a']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value;
        _params += "&sz=" + _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='sz']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value;
        _params += "&kid=" + _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='kid']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value;
        _params += "&c=" + _doc[0].evaluate("//ns:form[@name='snd']//ns:input[@name='c']", _doc[1], nsResolver, XPFirst, null).singleNodeValue.value;
        _params += "&r1=" + _resources[0];
        _params += "&r2=" + _resources[1];
        _params += "&r3=" + _resources[2];
        _params += "&r4=" + _resources[3];
        _params += "&s1.x=" + parseInt((Math.floor( Math.random()* (40-5) ) ) + 5) + "&s1.y=" + parseInt((Math.floor( Math.random()* (18-3) ) ) + 3);
        var _autoMarketCookie = funcReadCookieArray("AutoMarket");
        ajaxRequest("build.php?newdid=" + _autoMarketCookie[_index][1] + "&gid=17&z=" + _autoMarketCookie[_index][2], "POST", _params, funcAutoMarketSend_Report, funcAutoMarketSend_Report, _index, _timetoarrive, _resources );
    }
    function funcAutoMarketSend_Report ( _xmlHttpRequest, _index, _timetoarrive, _resources )
    {
/* LOG */ //funcWriteLog("funcAutoMarketSend_3");
        var _autoMarketCookie = funcReadCookieArray("AutoMarket");

        var _doc = funcCreateNewDoc(_xmlHttpRequest);
        var _error = _doc[0].evaluate("//ns:p[@class='error']", _doc[1], nsResolver, XPFirst, null).singleNodeValue;
        if ( _error )
        {
            funcDispalyInfo('<font color=red>' + _error.textContent + '</font>');
            funcWriteLog(_error.textContent + " " + funcid2xy(_autoMarketCookie[_index][2]));
        }
        else
        {
            funcDispalyInfo('!.' + funcTranslate('RECSENTOK') + '.! ');
            
            var _autoProdCookie = funcReadCookieArray("AutoProd");
            for ( var _i = 0; _i < _autoProdCookie.length; _i++ )
            {
                if ( _autoProdCookie[_i][8] == _autoMarketCookie[_index][2] )
                {
                    var _timeNOW = new Date(); 
                    _autoProdCookie[_i][5] = _timeNOW.getTime();
//                    if ( funcTime2Seconds(_timetoarrive) < 180001 ) 
                    _autoProdCookie[_i][6] = _timeNOW.getTime() + funcTime2Seconds(_timetoarrive) * 1000 + 30000;
//                    if ( _autoProdCookie[_i][2] > _autoProdCookie[_i][6] ) _autoProdCookie[_i][2] = _autoProdCookie[_i][6];
                    _autoProdCookie[_i][7] = _resources.join('#');
                    funcDeleteFromCookie("AutoProd", _i);
                    funcAppendCookie("AutoProd", _autoProdCookie[_i]);
                    break;
                }
            }
        }
        _autoMarketCookie[_index][4] = new Date().getTime() + parseInt(_autoMarketCookie[_index][5]) + (((Math.floor( Math.random()* (240-10) ) ) + 10) * 1000);
        _autoMarketCookie[_index][3] = parseInt(parseInt(_autoMarketCookie[_index][3]) - 1);
        funcDeleteFromCookie("AutoMarket", _index);
        if ( _autoMarketCookie[_index][3] > 0 ) funcAppendCookie("AutoMarket", _autoMarketCookie[_index]);
        funcSwitchToVillage(_autoMarketCookie[_index][1]);
        funcSetAutoTimers();
    }
    
    function funcShowTroopsTotal( _type ) // 0 - normal, 1 - village resum
    {
        var _troops = [0,0,0,0,0,0,0,0,0,0,0,0];
        var troop_details = funcFindElem("//table[@class='troop_details']", XPList);
        var _vale = funcFindElem("//p[@class='info']", XPList);
        for ( var _i = 0; _i < troop_details.snapshotLength; _i++ )
        {
            if (troop_details.snapshotItem(_i).rows[0].cells[0].innerHTML.indexOf('<a href="karte.php?d=' + selected_village_data[4] + '&amp;') != -1)
            {
                var _invale = false;
                for ( var _z = 0; _z < _vale.snapshotLength; _z++ ) if ( _vale.snapshotItem(_z).childNodes[0].href == troop_details.snapshotItem(_i).rows[0].cells[1].childNodes[0].href ) _invale = true;
                if ( !_invale ) for ( var _n = 0; _n <  troop_details.snapshotItem(_i).rows[2].cells.length - 1; _n++ ) _troops[_n] += parseInt(troop_details.snapshotItem(_i).rows[2].cells[_n + 1].textContent);
            }
        }
        var troop_details_Res = funcFindElem("//table[@class='troop_details']//div[@class='res']", XPList);
        var troop_details_Carry = funcFindElem("//table[@class='troop_details']//div[@class='carry']", XPList);
        var _resources = [0,0,0,0,0,0];
        for ( var _i = 0; _i < troop_details_Res.snapshotLength; _i++ )
        {
            var _res = troop_details_Res.snapshotItem(_i).textContent.replace(/ /g,"").split("|");
            _resources[0] += parseInt(_res[0]);
            _resources[1] += parseInt(_res[1]);
            _resources[2] += parseInt(_res[2]);
            _resources[3] += parseInt(_res[3]);
            var _res = troop_details_Carry.snapshotItem(_i).textContent.replace(/ /g,"").split("/");            
            _resources[4] += parseInt(_res[0]);
            _resources[5] += parseInt(_res[1]);
        }
        if ( funcGetElemByID('troop_details_totals') ) funcRemoveElem(funcGetElemByID('troop_details_totals'));

        
        //TableTotal
        var _troop_details_totals = document.createElement("TABLE");
        _troop_details_totals.setAttribute("cellpadding","1");
        _troop_details_totals.setAttribute("cellspacing","1");
        _troop_details_totals.setAttribute("id","troop_details_totals");
        _troop_details_totals.className = "troop_details";
        var _troop_details_totalsHead = document.createElement("thead");
        var _TR = document.createElement("TR");
        var _TH = document.createElement("TH");
        _TH.setAttribute("colspan","13");
        _TH.innerHTML = funcTranslate('TOTAL');
        _TR.appendChild(_TH);
        _troop_details_totalsHead.appendChild(_TR);
        _troop_details_totals.appendChild(_troop_details_totalsHead);
        var _TBody = document.createElement("TBODY");
        _TBody.className = "units";
        var _TR = document.createElement("TR");
        _TR.appendChild(funcElem("TH", "&nbsp;"));
        for (var _i = 1; _i < 11; _i++)
        {
            _TR.appendChild(funcElem("TD", '<img class="unit u' + parseInt(user_Tribe + _i) + '" src="img/x.gif"/>'));
        }
        _TR.appendChild(funcElem("TD", '<img class="unit uhero" src="img/x.gif"/>'));
        _TBody.appendChild(_TR);
        var _TR = document.createElement("TR");
        _TR.appendChild(funcElem("TH", funcTranslate('TROOPS')));
        for (var _i = 0; _i < 11; _i++)
        {
            _TR.appendChild(funcElem("TD", _troops[_i]));
        }
        _TBody.appendChild(_TR);
        _troop_details_totals.appendChild(_TBody);
        var _TBody = document.createElement("TBODY");
        _TBody.className = "infos";
        var _TR = document.createElement("TR");
        _TR.appendChild(funcElem("TH", funcTranslate('MAT_PRIMAS')));
        var _TD = document.createElement("TD");
        _TD.setAttribute("colspan","12");
        var _text = "";
        for (var _i = 1; _i < 5; _i++)
        {
            _text += '<img class="r' + _i + '" src="img/x.gif"/>' + _resources[_i - 1];
            if ( _i != 4 ) _text += " | ";
        }
        _TD.innerHTML = '<div class="res" style="width: auto;">' + _text +'</div>';
        _TD.innerHTML += '<div class="carry" style="float: right; width: auto;"><img class="car" src="img/x.gif" alt="transportar" title="transportar">' + _resources[4] + '/' + _resources[5] + '</div>';
        _TR.appendChild(_TD);
        _TBody.appendChild(_TR);
        _troop_details_totals.appendChild(_TBody);
        funcGetElemByID("textmenu").appendChild(funcElem("span", "<br><br>"));
        funcGetElemByID("textmenu").appendChild(_troop_details_totals);
    }
}

// Main function
function funcMain()
{
/* LOG */ //funcWriteLog("funcMain");
    if (funcGetElemByName("CaptchaForm")[0]) return;        
    if (funcGetElemByID("content").className == "login")
    {
        funcAutoLogin();
        return;        
    }
    if (funcGetElemByID("sysmsg"))
    {
        location.href.search(/(.*)\//);
        var refra = RegExp.$1;
        refra = refra + '/dorf1.php?ok=1';
        funcWriteLog("System Message Skiped!\n" + funcGetElemByID("sysmsg").textContent);
        setTimeout(function() {window.location = refra;} , 6666);
        return;        
    }

    if ( funcGetElemByTag("head")[0].innerHTML.indexOf('<script src="AC_OETags.js?') > 0 )
    {
        //funcWriteLog("Login POST DATA Skiped!");
        setTimeout(function() {window.location = 'dorf1.php';} , 666);
        return;        
    }
    funcGetGeneralData();
    if ( location.href.indexOf('spieler.php?s=2') != -1 )
    {
        funcTFBSetup();
        return;
    }
    funcLeftMenuLinks();
    funcMainTopLinks();
    funcCalculateFillTime();
    funcVillageLinks();
    funcShowAutoS('Create');
    funcSetAutoTimers();
    switch (funcGetElemByID("content").className)
    {
        case 'village1': // Main page dorf1
            funcShowResourcesTable();
            break;
            
        case 'village2': // Village page dorf2
            funcShowBuildingsTable();
            break;

        case 'map': // Map page
            if (funcGetElemByID("map"))
            {
                var _directions = funcFindElem("//area[starts-with(@id, 'ma_n')]", XPList);
                for (var _i = 0; _i < _directions.snapshotLength; _i++)
                {
                    _directions.snapshotItem(_i).addEventListener('click', funcWait2ShowMapTable, false);
                }
                funcGetElemByID("btn_ok").addEventListener('click', funcWait2ShowMapTable, false);
                funcWait2ShowMapTable();
            }
            if (funcGetElemByID("troop_info")) funcShowMapTroopDef();
            break;
            
        case 'reports': // Reports page
            if (!funcGetElemByID("overview"))
            {
                funcBattleReport();
            }
        case 'messages': // Messages page
            if (funcGetElemByID("overview"))
            {
                funcSelectAllMsg();
            }
            break;
            
        case 'build': // specific building page
            if ( funcGetElemByID("build") )
            {
            	switch (funcGetElemByID("build").className)
            	{
                    case 'gid17': // Mercado
                        if ( funcFindElem("//input[@type='text']", XPList).snapshotLength == 7 )
                        {
                            funcRecursosMercado();
                            funcAutoMarketShow();
                        }
                        break;
                    case 'gid20': // Cavalariça
                        //tiempoExplorarUnidades();
                        break;
                    case 'gid25': // Residencia
                    case 'gid26': // Palacio
                        if (funcGetElemByID("build_value")) funcCulturePointsTable();
                        break;
                    case 'gid37': // Heroi
                        funcHeroStatus();
                        break;
                    case 'gid15': // Edificio Principal
                        funcAutoDestroy();
                        break;
                    case 'gid16': //Rally Point
                        funcShowTroopsTotal(0);
                        break;
            	}
            	if (funcGetElemByID('contract'))
            	{
            	    funcCaculateBuildTime();
            	    funcAutoComplete();
            	}
            }
            else
            {
                funcShowBuildingsTable();
            }
            break;

        case 'a2b': // Attack
            funcDefaultAttack();
            funcAutoAttackAdd();
            funcAutoAttackShow();
            break;

        //default: alert(funcGetElemByID("content").className);
    }
    funcPlayerLinks();
    funcReviewLinks();
    funcSetTimers();
}
// Begining of script

var scriptStartTime = new Date().getTime();

/* LOG */ //funcWriteLog("Script Startted!");

document.title = "-= " + document.title.split(" ")[document.title.split(" ").length - 1] + ' =- EthereaL ProphetS ScripT for ' + document.title;

if (document.evaluate("//ns:div[@id='header']", document, nsResolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength < 1)
{
    if ( !document.body ) return;
    document.body.appendChild(funcElem("span", "TravianFarBeyond... Refreshing in: "));
    var _span = document.createElement("span");
    _span.setAttribute("id","TFBTimeOut");
    _span.innerHTML = funcSeconds2Time(180);
    document.body.appendChild(_span);
    funcSetTimers();
    location.href.search(/(.*)\//);
    var refra = RegExp.$1;
    refra = refra + '/dorf1.php';
    setTimeout(function() {window.location = refra;} , 180666);
}
else
{
    //window.addEventListener( 'load', funcMain, false);
    funcMain();
    if (document.body.innerHTML.search('<div class="mov"><span class="a1">') != -1)
    {
        document.title = "ATTACK!!!" + document.title;
    }
    funcScriptLoadTime();
}

