/********************** LICENSE NOTES ****************************
Travian Map Analyser - the lightweight aplication for the game Travian (C)
Copyright (C) 2008 Booboo <scripts.booboo@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************/
// ==UserScript==
// @name           Travian Map Analyser
// @namespace      http://booboo.cwi.hu
// @description    Térkép elemző és sokbúzás völgy kereső.
// @version 1.06.3 for IE
// @author	Booboo
// @e-mail	scripts.booboo@gmail.com
// @injectframes 0
// @include http://*.travian.*/*.php*
// @exclude http://*.travian.*/hilfe.php*
// @exclude http://*.travian.*/log*.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.*/karte2.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*.*
// @news News in this release:
// @news - This is a compatibility update:
// @news - It supports the new data saving format of the new Firefox version of this script.
// ==/UserScript==

/* init */

var version = "1.06.3";
var szerver = window.location.host;
var verUrl = "http://iescripts.org/view-scripts-476p1.htm";
var hostUrl = 'http://booboo.firstweb.hu/d1d/travian/travianmapanalyser/';
var zonaUrl = 'http://' + szerver + '/karte.php?z=';	// URL a térkép zónákhoz. ehhez jön hozzá a zóna száma. :)
var areas = new Array(0); // ebben tároljuk az átkutatandó területek url-jeit.
var unitSpeed = 5; // Telepes | Settler

var idoKoz = timeCounter();	// New timer object. ;-)

checkUpdate(); // Meglessük egyáltalán mikor kell frissíteni. ;)

/* Nyelvi rész :)  Language Dependent words */
var LD = new Array;
LD['STARTCOOR'] = decodeURIComponent(getValue('STARTCOOR', 'Starting Co-ordinates'));
LD['RADIUS'] = decodeURIComponent(getValue('RADIUS', 'Searching radius:'));
LD['RAD_TITLE'] = decodeURIComponent(getValue('RAD_TITLE', '0 to 56. Zero searches in the actual 7x7.'));
LD['SEARCHFOR'] = decodeURIComponent(getValue('SEARCHFOR', 'Search for'));
LD['OASIS'] = decodeURIComponent(getValue('OASIS', 'Oasis'));
LD['SEARCH'] = decodeURIComponent(getValue('SEARCH', 'Searching'));
LD['SEARCH_BTN'] = decodeURIComponent(getValue('SEARCH_BTN', 'Search'));
LD['CLOSE'] = decodeURIComponent(getValue('CLOSE', 'Close'));
LD['LOAD_BTN'] = decodeURIComponent(getValue('LOAD_BTN', 'Load'));
LD['CH_LANG'] = decodeURIComponent(getValue('CH_LANG', 'Change Language'));
LD['PLAYER'] = decodeURIComponent(getValue('PLAYER', 'Player:'));
LD['ALLIANCE'] = decodeURIComponent(getValue('ALLIANCE', 'Alliance:'));
LD['AVAIL_LANGS'] = decodeURIComponent(getValue('AVAIL_LANGS', 'Available languages:'));
LD['SAVE'] = decodeURIComponent(getValue('SAVE', 'Save'));
LD['CANCEL'] = decodeURIComponent(getValue('CANCEL', 'Cancel'));
LD['SERVER'] = decodeURIComponent(getValue('SERVER', 'Server:'));
LD['DATE'] = decodeURIComponent(getValue('DATE', 'Date:'));
LD['CENTER'] = decodeURIComponent(getValue('CENTER', 'Center of the search:'));
LD['HITS'] = decodeURIComponent(getValue('HITS', 'Hits:'));
LD['NEWVER'] = decodeURIComponent(getValue('NEWVER', "There's a newer version available."));
LD['UPDATENOW'] = decodeURIComponent(getValue('UPDATENOW', 'Update now?'));
LD['TRAV_TIME'] = decodeURIComponent(getValue('TRAV_TIME', 'Travel time:'));
LD['NOHITS'] = decodeURIComponent(getValue('NOHITS', 'There was no result.'));
LD['LOAD_TITLE'] = decodeURIComponent(getValue('LOAD_TITLE', 'Copy/paste here your saved data'));
LD['SAVE_TITLE'] = decodeURIComponent(getValue('SAVE_TITLE', 'Now you can save this text and close the window'));
LD['ERROR_DATA'] = decodeURIComponent(getValue('ERROR_DATA', "There's an error in the given datas."));
LD['IGM'] = decodeURIComponent(getValue('IGM', 'Send as a message'));
LD['LOAD_CONFIRM'] = decodeURIComponent(getValue('LOAD_CONFIRM', 'This is a TMA message, do you want to use it now?'));
LD['TIME_REMAINS'] = decodeURIComponent(getValue('TIME_REMAINS', 'Time remains:'));
LD['DB_FORMAT'] = decodeURIComponent(getValue('DB_FORMAT', 'Database format'));
LD['ERR_IGM_LENGTH'] = decodeURIComponent(getValue('ERR_IGM_LENGTH', "It doesn't fit in a message!"));
LD['UNKNOWN_FORMAT'] = decodeURIComponent(getValue('UNKNOWN_FORMAT', "It's in an unknown format!"));

PRO_registerMenuCommand("TMA: " + LD['CH_LANG'], langUpdate);

/* üzenet küldésnél megírjuk az üzenetet és a témát, autómatikusan. */
if (window.location.href.indexOf("nachrichten.php?t=1") > -1){
	var text = getValue('IGM_' + szerver);
	text = (text == undefined || text == null) ? "" : text;
	if (text != ""){
		$('subject').value = "TMA_IGM";
		$('copy_subject').value = "TMA_IGM";
		$('igm').value = text;
		$('copy_igm').value = text;
		setValue('IGM_' + szerver, "");
	}
}

/* Bejövő üzenetek figyelése TMA üzenetek után lesve */
if (window.location.href.indexOf("nachrichten.php?id=") > -1){
	var tds = $tags("td");
	for (var i = 0; i < tds.length; i++){
		try
		{
			if (tds[i].getAttribute('colspan') == '3')
			{
				var td = tds[i];
				break;
			}
		}
		catch(e)
		{
			alert('Hiba: ' + e + '\n' + i);
			continue;
		}
	}
	var text = td.innerHTML.replace(/<br\s?\/?>/gi, "");
	if(/--\/\/TMA begin\/\/--(.*)--\/\/TMA end\/\/--/m.test(text)){
		if (confirm(LD['LOAD_CONFIRM'])){
			text = text.substring(text.lastIndexOf('--//TMA begin//--\n') + 18, text.indexOf('--//TMA end//--'));
			post(hostUrl + 'comp.php', 'decomp=' + text, function(text){
				if (text == "error") {
					alert(LD['ERROR_DATA']);
					return;
				}
				dataLoad(text);
			});	
		}
	}
}
var TMA_xy = new Array(0,0);
try
{	var a = $tags("a", $("lright1"));
	for (var i=0; i < a.length; i++)
	{	if(a[i].className == "active_vl")
		{	var activeCoords = a[i].parentNode.nextSibling.innerText;
			activeCoords.match(/[\n]*\(([-\d]+)\n?\|\n?([-\d]+)\)/);
			TMA_xy[0] = RegExp.$1;
			TMA_xy[1] = RegExp.$2;
			break;
		}
	}
}
catch(e){}

if (window.location.pathname.indexOf("karte.php") > -1)
{	if ($names("xp").length)
	{	TMA_xy[0] = $names("xp")[0].value;
		TMA_xy[1] = $names("yp")[0].value;
	}
	else
	{	TMA_xy = zonaxy(window.location.href.match(/d=(\d+)&c=/)[1]);
	}
}

var FJ = new Array;
FJ[0] = '>....';
FJ[1] = '.>...';
FJ[2] = '..>..';
FJ[3] = '...>.';
FJ[4] = '....>';
FJ[5] = '....<';
FJ[6] = '...<.';
FJ[7] = '..<..';
FJ[8] = '.<...';
FJ[9] = '<....';

/* Képek */

var ful = 'data:image/png;base64,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';
var papir = 'data:image/gif;base64,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';
var gabona = 'data:image/gif;base64,R0lGODlhEgAMAOYAAIhNJfn05+LHqcyogumqOqKFYuGRKvvlxLp3Jt+ybP///+DEicSISODQwPHp3+GqY+vGj821ncORQ/j39OGfT+CpUPHIdu7Xr/HavNx7GujHnPPo1cWgbtezjfG6W6JSFtvBpvfw6NiBKv778LiQZ+zdw/DXs96+oPKWI+urUOjUtuy8Qfvq0//13ujRhPjIbOW2ctS1g//mxfzx4d7Fn8mMWuzRn82NNvbbqfrt0vHNgObYvNq9jP/89uiULvTZvOfNlv/55vz59ezgtv/x5evbzPbq2Y1VJfjsxt7FlPfm3vLGefTAXd69pfCyVeTKivG3dvvo0f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFIALAAAAAASAAwAAAeCgFKCUkIhg4KFh4obMTlGIBsbJyo9ij0BQTQ8NkkcAxdAFwIHAYMBQ0gLC086LzAQHT8CKqWDPTsRGC4eK0wWF0QNIFGHMyVFRjhOBChLI4rQUgESCB8k0dATBUcANZXYgyMPIhk+LeCDQlApBhQs6IINCRU3DBrf4A4HJiYltYeBAAA7';
var fa = 'data:image/gif;base64,R0lGODlhEgAMAOYAAP/////+/v/++/38+/369/v6+fHt6e/p4+7n4u/f1OPc1tjUz9rTy9zRyNrQxfzIi/fEnvTEkdLGvfa/i+/BcO6+btK9pPSzgOe1g9e4lu+0b+u1dvGxiNe4ht60eOqwdeSxd/qradCxguinb+WnatOnh9+mdOGked6jfuCmU9CnZrSqnuWgcNyicdija+aeYrukkdqgVNGbctGadeOXZM+afNibVuOXXLeeitGaXNWaVLWcjtKUd9qXSKmckK+bibWYfr+UedCUSN6OWteSQbWVft2NRdqJRtyKOsSLV6qPbMWKRL6HZ8GKRZ6MgbuJU8qDTKiJb72CVNZ+NLaBadt7OcF8T8l5SMZ1W8Z4Qq96UsdyPqx1UrB3PbB1P7BxTLtpMaNnPKRkO3tiTptQKHpYM5BSLoxOOGNRSIBJNoFIOHNKKnk7Kmw7LGc7H10zGk4yJ0M0KEUzJ1YsIlArFEUuH0wlEjgiGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAAAALAAAAAASAAwAAAeRgACCg4SCChYIAYqFgytOPzUnTFRDVg6MAAtRJRA5ZW0xWGoEjEVaLDdgb2wbPHMGjDMtLhdpcF80WXE7jEo9HSAyZ1wjV2hAhQVjKFVINlBiEVtudweDA0EmE09hdHY6Lw9mcoUJRykfFV51FBgqQms+hQ1TRhxNTRJEIRokMJg4kpDxwABABildRAjAxLBhIAA7';
var agyag = 'data:image/gif;base64,R0lGODlhEgAMAOYAAJBcMPHWwMahh7R4VMdQHP727ci6sNt6VqtlPsltT+rl48JrQtivpbaIZ96FXI9YSOjGr+m1iNphNrxqPvPr3dGomc14VOVsSZxxSeCeduPHvPB8S9u+sqFWLubhwLteNP///8iwlNJpRcmKacldMNdrNeSJY9JuS6VkT+17U9CCWt62l92HTcl5Wvjz8PjdxeDEvLxwUfTQsKZhPNephfHg2JNhROrYz9jCs8OWduFpKtW3pZtzWu/mz8xvS/B+W8lyQOzMsfR+Q+qDVqxmTPDHp/fy6+ZrQMyZZrdtS+R1U86betSunNh9WeaWaNFgK9uzo7+Pcei0kp5bOtdxOeR6S869tNBZF//69o9jVu6BPqVbN8SRZvKQYOJ2SeHRx61jQeTPvfDh29a2qs1ySs2DYNh+Uu6GVMxyQpNaOPLWxdBrP7eLdOa1jORmN+ZzSr9jNNCslNyynMOAXfb19PTjyaRmQevYzqN1V+aLVb1rSv///wAAAAAAAAAAAAAAACH5BAUUAHsALAAAAAASAAwAAAeygHuCglhYg4eIg3Q5RWFhAS8FiYcKAxF4KAlmQZOCODtsNHMnKV1FnXsCMhQhZSYZEVxxapKDYndLIzwDJGQ2aWA+DhCHVnUQIxNUWiwICwcpVSuHBh49UWhvZ05JTUpKXipyhntWGA0qJVMAM3pAWw9EC2ZSRntfHXAlQjN2FiJVwGRp8WNDnhp7bnwgcEUHmglrJLghE+PJkQtDEGIZU4EJkzAcGDBgogEGFCgMOLgIBAA7';
var vas = 'data:image/gif;base64,R0lGODlhEgAMAOYAAA4SDOvhzaaOdXZrXM/EtFJKPv///7Ozqj05NIR5aPDu62VXT+jeyTAkFYZuXKWXkV9JM5yEb9nSynZuaCQiG8y/r+3n45N8bGlUQ6OSgVZTTd/f3Ec4MYtzZPr38q6bkSEbGMK1pW5XSD8xItvOxIuFepmGeOXXvH5zcHpnVGZWRkxBMrWjlK+bj2lkVOTe1/LlyF1JOYBxXMO2raCLcz0rGCkhGUM5Mt3TyaORe3VwZurl4HxtXPn49/bx7JRzY0dEPYt7amZfUpaCbsvGv7+3sDInHJqFcR4hH3JVQ1NRUK6gmpmJfHZjUPDmzVlLRYFzZEJCMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAAYALAAAAAASAAwAAAeFgAaCg4SFhocWPoeLGxo6BAEMAYceOEsPSkgALicwToUKFSEVHxw2FFEFMzgHhAoJPBAtLCkqIUcrQAVChEUYTTEdOQIXDwsNHAMjhDNJPEFQCUMiIDc1ND8OhDsdHSsoCAMZRkwXIYczDilPICsyQjMkiwoZESYTJUQ9PYuCPS8S+PULBAA7';

/* Fő ablak létrehozása. */
if (getValue('allapot_' + szerver) == 'true') var ablakHelyzete = "0px";
else var ablakHelyzete = "-302px";
var mainDiv = addElem("div", '<h2 align="center"><u>Travian Map Analyser</u></h2>'+
		'<br>&nbsp;<b><u>' + LD["STARTCOOR"] + '</u></b><br>'+
		'&nbsp;x:&nbsp;<input id="TMA_x" size="1" maxlength="4" value="' + TMA_xy[0] + '"/>&nbsp;y:&nbsp;<input id="TMA_y" size="1" maxlength="4" value="' + TMA_xy[1] + '"/>'+
		'&nbsp;<span title="' + LD["RAD_TITLE"] + '">' + LD["RADIUS"] + '</span> <input id="TMA_r" size="1" maxlength="2" value="0" style="width:20px"/><br>'+
		'&nbsp;<b><u>' + LD["SEARCHFOR"] + '</u></b><br>'+
		'<input id="TMA_gabona" type="checkbox" checked="checked"/>9-15<img src="' + gabona + '" />&nbsp;&nbsp;'+
		'<input id="TMA_normal" type="checkbox"/>6<img src="' + gabona + '" /><br>'+
		'<input id="TMA_fa" type="checkbox"/>5<img src="' + fa + '" /><br>'+
		'<input id="TMA_agyag" type="checkbox">5<img src="' + agyag + '" /><br>'+
		'<input id="TMA_vas" type="checkbox"/>5<img src="' + vas + '" /><br>'+
		'&nbsp;<u><b>' + LD["OASIS"] + '</b>&nbsp;</u><br>'+
		'<input id="TMA_oazis50" type="checkbox"/>50%<img src="' + gabona + '" />&nbsp;'+
		'<input id="TMA_oazis25" type="checkbox"/>25%<img src="' + gabona + '" /><br>'+
		'<input id="TMA_25fa" type="checkbox"/>25%<img src="' + fa + '" />&nbsp;'+
		'<input id="TMA_25agyag" type="checkbox"/>25%<img src="' + agyag + '" />&nbsp;'+
		'<input id="TMA_25vas" type="checkbox"/>25%<img src="' + vas + '" /><br>'+
		'<img title="Travian Map Analyser" id="TMA_ful" src="' + ful + '" style="position:relative; bottom: 231px; left:-58px; float:left;"/>'+
		'<button style="margin:14px 6px 4px 20px;" id="TMA_keres">' + LD["SEARCH_BTN"] + '</button><button style="margin:14px 3px 4px" id="TMA_betolt">' + LD["LOAD_BTN"] + '</button>'+
		'<a href="' + verUrl + '" style="color:#dd7711; float:right; font-size:10px; margin-right:3px;" target="_blank">v.: ' + version + '</a>',
	{'id':'TMA_mainDiv'}, {
		'background': 'url("' + papir + '")',
		'height': '287px',
		'width': '300px',
		'border': '1px solid black',
		'position': 'fixed',
		'top': '22px',
		'right': ablakHelyzete,
		'zIndex': 600
	});

/* Funkciógombokat beélesíteni */
$('TMA_keres').attachEvent('onclick', kereses);
$('TMA_betolt').attachEvent('onclick', betolt);
$('TMA_ful').attachEvent('onclick', menu);

/*
* Fő funkciók
*/

function kereses(){
	// Találatok adatai
	var tTipus = new Array(0);
	var tNev = new Array(0);
	var tPlayer = new Array(0);
	var tAlliance = new Array(0);

	/* A kép kitakarása egy átlátszó réteggel */
	lepelEsDiv();
	
	// A keresési feltételeket tárolja.
	var kapcs = {
		normal: $('TMA_normal').checked,
		gabona: $('TMA_gabona').checked,
		fa: $('TMA_fa').checked,
		agyag: $('TMA_agyag').checked,
		vas: $('TMA_vas').checked,
		o50b: $('TMA_oazis50').checked,
		o25b: $('TMA_oazis25').checked,
		o25f: $('TMA_25fa').checked,
		o25a: $('TMA_25agyag').checked,
		o25v: $('TMA_25vas').checked
	}; 

	/* A keresés középpontja, ehhez kell viszonyítani a távolságokat ;-) */
	var kozeppont = {x: koordFix($("TMA_x").value), y: koordFix($("TMA_y").value)};
	kozeppont.x = (isNaN(kozeppont.x)) ? 0 : kozeppont.x;
	kozeppont.y = (isNaN(kozeppont.y)) ? 0 : kozeppont.y;

	/* A keresés sugara 7*7-es térképszeletekben megadva */
	var radius = parseInt($("TMA_r").value, 10);
	radius = (isNaN(radius)) ? 0 : (radius < 0) ? 0 : (radius > 56) ? 56 : radius;

	/* Az átkutatandó terület kezdő koordinátája. /Északnyugati pont/ */
	var kk = {x: koordFix(kozeppont.x - 7 * radius), y: koordFix(kozeppont.y + 7 * radius)};

	/* Az átkutatandó 7*7-es részek zónapontjait számoljuk ki. */
	var zonak = new Array;	// Zóna pontokat tárolja.
	for (var iy = 0; iy <= 2 * radius; iy++){
		for(var ix = 0; ix <= 2 * radius; ix++){
			zonak.push(zonaUrl + xyzona(kk.x + 7 * ix, kk.y - 7 * iy));
		}
	}
	
	var max = zonak.length * 49;	// Összes átvizsgálandó térkép terület.
	var index = 0; // Minden átvizsgált terület után növeljük 1-el. ;)
		
	/* Elindítjuk a keresést */
	get(zonak.pop(), areasGet);
	idoKoz.init();
	
	// Az area linkeket gyűjti ki a HTML oldalból.
	function areasGet(html, fURL){
		var temp = html.match(/(<area.*\/>)/g).join().split('<area');
		for (i=1; i <= 49; i++) {
			var a = temp[i].match(/href="(.*)"/);
			if (a) areas.push('http://' + szerver + '/' + a[1]);
			else --max;
		}
		get(areas.pop(), kereso);
	}
	// Keresés a kapcsolók alapján 
	function kereso(html, fURL){
		stat(++index, max);
		// A terület nevének kiszedése
		if (nev = html.match(/class="ddb">([^<>]+)<\/div/)){
			var xy = zonaxy(fURL.match(/d=(\d+)&c=/)[1]);
			nev = nev[1] + " (" + xy[0] + "|" + xy[1] + ")";
		}else var nev = html.match(/<h1>([^<>]+)<\/h1/)[1];
		// Title elemet adja a tulaj nevéből és a klánjából.
		player = html.match(/<td><a href="(spieler.php.*)">\s*(?:<b>)?([^<>]+)(?:<\/b>)?<\/a>/);
		alliance = html.match(/a href="(allianz.php.*)">([^<>]+)<\/a>/);
		if (player) {
			playerLink = player[1];
			player = player[2];
		}else player = playerLink = "";
		if (alliance) {
			allianceLink = alliance[1];
			alliance = alliance[2];
		}else alliance = allianceLink = "";
		player = (player != "") ? '<a href="' + playerLink + '" target="_blank">' + player + '</a>' : "";
		alliance = (alliance != "") ? '<a href="' + allianceLink + '" target="_blank">' + alliance + '</a>' : "";
	
		if (a = html.match(/id="f(\d)"/)){ // völgyek keresése
			switch (a[1]){
				case '1': if (kapcs.gabona){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#FF9900" href="' + fURL + '" target="_blank">'+ nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '2': if (kapcs.vas){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#996600" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '3': if (kapcs.normal){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#888" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '4': if (kapcs.agyag){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#996600" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '5': if (kapcs.fa){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#996600" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '6': if (kapcs.gabona){
							tTipus.push('f' + a[1]);
							tNev.push('<a style="color:#FFCC00" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
			}
		} else {
			var a = html.match(/w(\d+).jpg" id="resfeld"/); // oázisok keresése
			switch (a[1]){
				case '1':
				case '2': if (kapcs.o25f){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#77AA00" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '4':
				case '5': if (kapcs.o25a){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#77AA00" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '7':
				case '8': if (kapcs.o25v){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#77AA00" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '3':
				case '6':
				case '9': if (kapcs.o25b){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#009900" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '10':
				case '11': if (kapcs.o25b){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#99CC00" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
				case '12': if (kapcs.o50b){
							tTipus.push('o' + a[1]);
							tNev.push('<a style="color:#FF6600" href="' + fURL + '" target="_blank">' + nev + '</a>');
							tPlayer.push(player);
							tAlliance.push(alliance);
						}
				break;
			}
		}
	
		if (url = areas.pop()) get(url, kereso);
		else{
			if (url = zonak.pop()){get(url, areasGet)}
			else {
			var datum = new Date().toLocaleString();
			tablazat(szerver, datum, kozeppont.x, kozeppont.y, radius, tTipus, tNev, tPlayer, tAlliance);
			}
		}
	}
}

function tablazat(szerver, datum, x, y, radius, tTipus, tNev, tPlayer, tAlliance){
	/* Kiszámoljuk a találatok távolságait a keresés középpontjához képest. dist tömbben vannak az eredmények */
	var dist = new Array(0);
	for (var i = 0; i < tNev.length; i++)
		dist.push(tavolsag(zonaxy(tNev[i].match(/d=(\d+)&c=/)[1]), [x, y]));
	/* idx tömbe gyűjtjük a rendezett távolságok mutatóit */
	var idx = rendez(dist);
	var lap = Lapozo(idx.length);
	$('TMA_lepel').filters.alpha.opacity = 90;
	var divStat = $('TMA_divStat');
	divStat.style.top = "0px";
	divStat.style.height = screen.availHeight + "px";
	divStat.innerHTML = '<br><div align="center"><table style="border:2px solid black">'+
	'<tr><td align="left" colspan="2"><b>' + LD['SERVER'] + '</b> ' + szerver + '</td><td align="right" colspan="2"><b>' + LD['DATE'] + '</b> ' + datum + '</td></tr>'+
	'<tr><td align="left" colspan="4"><b>' + LD['CENTER'] + '&nbsp;&nbsp;x:</b> ' + x +' <b>y:</b> ' + y + ' <b>' + LD['RADIUS'] + '</b> ' + radius + '</td></tr>'+
	'<tr><td align="left" style="border-bottom:1px solid black"><b>' + LD['HITS'] + '</b> ' + idx.length + '</td><td align="left" style="border-bottom:1px solid black"><b>' + LD['PLAYER'] + '</b></td><td align="left" style="border-bottom:1px solid black"><b>' + LD['ALLIANCE'] + '</b></td><td align="left" style="border-bottom:1px solid black"><b>' + LD['TRAV_TIME'] + '</b></td></tr>'+
	'<tr><td align="left" id="TMA_hits" style="border-right:1px dashed grey"></td><td id="TMA_players" style="border-right:1px dashed grey"></td><td id="TMA_alliances"  style="border-right:1px dashed grey"></td><td align="left" id="TMA_travTime"></td></tr>'+
	'<tr><td colspan="4" align="center"  style="border-top:1px solid black"><span id="TMA_TTT"></span></td></tr>'+
	'</table><br><button id="TMA_save">' + LD['SAVE'] + '</button><button id="TMA_close">' + LD['CLOSE'] + '</button>'+
	'<button id="TMA_igm">' + LD['IGM'] + '</button>&nbsp;&nbsp;<button id="TMA_database">' + LD['DB_FORMAT'] + '</button></div>';

	if (idx.length == 0) $('TMA_hits').innerHTML = '<font color="red">' + LD['NOHITS'] + '</font>';
	else {
		$('TMA_TTT').innerHTML = lap.ids();
		oldalakkiirasa(lap.page());
	}
	$('TMA_TTT').attachEvent('onclick', function(){
		id = window.event.srcElement.getAttribute('id');
		lap.clicks(id);
		$("TMA_TTT").innerHTML = lap.ids();
		oldalakkiirasa(lap.page());
	});
	$('TMA_close').attachEvent('onclick', function(){
		// Eltüntetjük a takarást ;)
		rmElem('TMA_lepel');
		rmElem('TMA_divStat');
		// Találati tömbök törlése
		tTipus = new Array(0);
		tNev = new Array(0);
		tPlayer = new Array(0);
		tAlliance = new Array(0);
	});
	/* Mentés gomb */
	$('TMA_save').attachEvent('onclick', function(){
		if ($('TMA_ioWin'))
			return;
		/* Az eredmények mentése */
		if (!tNev.length)
		{
			alert(LD['NOHITS']);
			return;
		}
		/* A linkekben az & karaktereket kicseréljük | -re */
		var saveNev = new Array(0);
		var savePlayer = new Array(0);
		var saveAlliance = new Array(0);
		for (var i = 0; i < tNev.length; i++)
		{	saveNev.push(tNev[i].replace(/&/g, '||'));
			savePlayer.push(tPlayer[i].replace(/&/g, '||'));
			saveAlliance.push(tAlliance[i].replace(/&/g, '||'));
		}
		/* Egyesítjük a tömböket */
		text = szerver + '\n' + datum + '\n' + x + '\n' + y + '\n' + radius + '\n' + tNev.length+'\n';
		text += tTipus.join('\n') + '\n' + saveNev.join('\n') + '\n' + savePlayer.join('\n') + '\n' + saveAlliance.join('\n');
		post(hostUrl + 'comp.php', 'comp=' + text, function(text)
			{
				var ioWin = makeIOWin('- ' + LD['SAVE_TITLE'] + ' -', text, '', 300);
			});
	});
	/* Üzenetben küldés gomb */
	$('TMA_igm').attachEvent('onclick', function(){
		if (!tNev.length)
		{
			alert(LD['NOHITS']);
			return;
		}
		/* A linkekben az & karaktereket kicseréljük | -re */
		var saveNev = new Array(0);
		var savePlayer = new Array(0);
		var saveAlliance = new Array(0);
		for (var i = 0; i < tNev.length; i++)
		{	saveNev.push(tNev[i].replace(/&/g, '||'));
			savePlayer.push(tPlayer[i].replace(/&/g, '||'));
			saveAlliance.push(tAlliance[i].replace(/&/g, '||'));
		}
		/* Egyesítjük a tömböket */
		var text = szerver + '\n' + datum + '\n' + x + '\n' + y + '\n' + radius + '\n' + tNev.length + '\n';
		text += tTipus.join('\n') + '\n' + saveNev.join('\n') + '\n' + savePlayer.join('\n') + '\n' + saveAlliance.join('\n');
		post(hostUrl + 'comp.php', 'comp=' + text, function(text)
			{
				if (text.length > 8540)
				{	alert(LD['ERR_IGM_LENGTH']);
					return;
				}
				setValue('IGM_' + szerver, text);
				window.location.href = "http://" + szerver + "/nachrichten.php?t=1";
			});
	});
	/* Alternatív kimeneti formátum */
	$('TMA_database').attachEvent('onclick', function(){
		if ($('TMA_ioWin')) return; // Ha már van egy ilyen ablak akkor nem csinálunk semmit
		if (!tNev.length) {alert(LD['NOHITS']); return;}
		var text = LD['SERVER'] + " " + szerver + "\n" + LD['DATE'] + " " + datum + "\n\n";
		var db_type, db_xy, db_type2, db_id, db_get;
		for (i = 0; i < tNev.length; i++){
			 db_type = (tTipus[idx[i]].substr(0,1) == "f") ? 1 : 2;
			 db_xy = zonaxy(tNev[idx[i]].match(/d=(\d+)&c=([a-z0-9]{2})/)[1]);
			 db_id = RegExp.$1;
			 db_get = RegExp.$2;
			 switch (tTipus[idx[i]]){
				case "f1": db_type2 = "3,3,3,9"; break;
				case "f2": db_type2 = "3,4,5,6"; break;
				case "f3": db_type2 = "4,4,4,6"; break;
				case "f4": db_type2 = "4,5,3,6"; break;
				case "f5": db_type2 = "5,3,4,6"; break;
				case "f6": db_type2 = "1,1,1,15"; break;
				case "o1":
				case "o2": db_type2 = "25,0,0,0"; break;
				case "o3": db_type2 = "25,0,0,25"; break;
				case "o4":
				case "o5": db_type2 = "0,25,0,0"; break;
				case "o6": db_type2 = "0,25,0,25"; break;
				case "o7":
				case "o8": db_type2 = "0,0,25,0"; break;
				case "o9": db_type2 = "0,0,25,25"; break;
				case "o10": 
				case "o11": db_type2 = "0,0,0,25"; break;
				case "o12": db_type2 = "0,0,0,50"; break;
			 }
			 text += db_type + "," + db_xy[0] + "," + db_xy[1] + "," + db_type2 + "," + db_id + "," + db_get + "\n";
		}
		makeIOWin('- ' + LD['DB_FORMAT'] + ' -', text, '', 500);
	});
	
	/* Megjeleníti az aktuális oldal tartalmát. */
	function oldalakkiirasa(oldal){
		var lapok = (idx.length % 30) ? parseInt(idx.length / 30) + 1 : idx.length / 30; // oldalak száma
		var kp = 30 * oldal;
		var vp = (oldal + 1 == lapok) ? idx.length : kp + 30;
		var myHtml = {hits: "", players: "", alliances: "", times: ""};
		for (i=kp; i<vp; i++){
			switch (tTipus[idx[i]]){
				case 'f1': myHtml['hits'] += '&nbsp;<span style="color:#DDAA11"><b>9</b></span>&nbsp;&nbsp;<img src="' + gabona + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'f2': myHtml['hits'] += '&nbsp;5&nbsp;&nbsp;<img src="' + vas + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'f3': myHtml['hits'] += '&nbsp;6&nbsp;&nbsp;<img src="' + gabona + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'f4': myHtml['hits'] += '&nbsp;5&nbsp;&nbsp;<img src="' + agyag + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'f5': myHtml['hits'] += '&nbsp;5&nbsp;&nbsp;<img src="' + fa + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'f6': myHtml['hits'] += '<span style="color:#DDAA11"><b>15</b></span>&nbsp;<img src="' + gabona + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o1':
				case 'o2': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + fa + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o3': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + gabona + '"/><img src="' + fa + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o4':
				case 'o5': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + agyag + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o6': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + gabona + '"/><img src="' + agyag + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o7':
				case 'o8': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + vas + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o9': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + gabona + '"/><img src="' + vas + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o10': 
				case 'o11': myHtml['hits'] += '<span style="color:#006666">25%</span><img src="' + gabona + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
				case 'o12': myHtml['hits'] += '<span style="color:#FF0000">50%</span><img src="' + gabona + '"/>' + tNev[idx[i]] + '&nbsp;<br>';
				break;
			}
			myHtml['players'] += "&nbsp;" + tPlayer[idx[i]] + "&nbsp;<br>";
			myHtml['alliances'] += "&nbsp;" + tAlliance[idx[i]] + "&nbsp;<br>";
			myHtml['times'] += "&nbsp;" + utido(dist[idx[i]]) + "<br>";
		}
		$('TMA_hits').innerHTML = myHtml['hits'];
		$('TMA_players').innerHTML = myHtml['players'];
		$('TMA_alliances').innerHTML = myHtml['alliances'];
		$('TMA_travTime').innerHTML = myHtml['times'];
	}
}

/* Betölti és megjeleníti egy mentett keresés eredményeit */
function betolt(){
	if ($('TMA_ioWin')) return;
	var ioWin = makeIOWin('- ' + LD['LOAD_TITLE'] + ' -', '', function(text)
	{	text = text.replace(/\r\n/g, "\n");
		if(/--\/\/TMA begin\/\/--\n((.*\n)+)--\/\/TMA end\/\/--/m.test(text))
		{
			rmElem(ioWin);
			text = text.substring(text.lastIndexOf('--//TMA begin//--') + 18, text.indexOf('--//TMA end//--'));
			post(hostUrl + 'comp.php', 'decomp=' + text, function(text){
				if (text == "error") {
					alert(LD['ERROR_DATA']);
					return;
				}
				dataLoad(text);
			});	
		}
	});
}

/* A változó adatok feltöltése a mentett adatokból */
function dataLoad(text){
	var arr = new Array();
	arr = text.split("\n");
	if (/ver[\d.]+/.test(arr[0]))
	{	// Newer format
		if (arr[0].match(/[\d.]+/) != "2.0")
		{	alert(LD["UNKNOWN_FORMAT"]);
			return;
		}
		var szerver = arr[1];
		var datum = arr[2];
		var coords = zonaxy(b64_dec(arr[3]));
		var x = coords[0];
		var y = coords[1];
		var radius = arr[4];
		var tTipus = new Array();
		var tNev = new Array();
		var tPlayer = new Array();
		var tAlliance = new Array();
		for (var i = 0; i < parseInt(arr[5]); i++)
		{	var field =
			{	type: null,
				url: null,
				key: null,
				x: null,
				y: null,
				name: null,
				player: null,
				uid: null,
				ally: null,
				aid: null
			}
			field.type = arr[6 + i * 7];
			coords = arr[6 + i * 7 + 1].split("|");
			field.url = b64_dec(coords[0]);
			field.key = coords[1];
			var xy = zonaxy(field.url);
			field.x = xy[0];
			field.y = xy[1];
			field.name = arr[6 + i * 7 + 2].replace(/\t/g, "&");
			if (arr[6 + i * 7 + 3]) // Players
			{	field.player = arr[6 + i * 7 + 3].replace(/\t/g, "&");
				field.uid = b64_dec(arr[6 + i * 7 + 4]);
				if (arr[6 + i * 7 + 5]) // Allies
				{	field.ally = arr[6 + i * 7 + 5].replace(/\t/g, "&");
					field.aid = b64_dec(arr[6 + i * 7 + 6]);
				}
			}
			tTipus.push(field.type);
			switch (field.type)
			{	case "f1":
					tNev.push('<a style="color:#f90" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "f3":
					tNev.push('<a style="color:#888" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "f2":
				case "f4":
				case "f5":
					tNev.push('<a style="color:#960" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "f6":
					tNev.push('<a style="color:#fc0" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "o1":
				case "o2":
				case "o4":
				case "o5":
				case "o7":
				case "o8":
					tNev.push('<a style="color:#7a0" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "o3":
				case "o6":
				case "o9":
					tNev.push('<a style="color:#090" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "o10":
				case "o11":
					tNev.push('<a style="color:#9c0" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
					break;
				case "o12":
					tNev.push('<a style="color:#f60" href="http://' + szerver + '/karte.php?d=' + field.url + '&c=' + field.key + '" target="_blank">' + field.name + ' (' + field.x + '|' + field.y + ')</a>');
			}
			tPlayer.push(field.player ? '<a href="http://' + szerver + '/spieler.php?uid=' + field.uid + '" target="_blank">' + field.player + '</a>' : "");
			tAlliance.push(field.ally ? '<a href="http://' + szerver + '/allianz.php?aid=' + field.aid + '" target="_blank">' + field.ally + '</a>' : "");
		}
	}
	else
	{	// Old one
		var szerver = arr[0];
		var datum = arr[1];
		var x = arr[2];
		var y = arr[3];
		var radius = arr[4];
		var db = parseInt(arr[5]);
		var tTipus = new Array();
		var tNev = new Array();
		var tPlayer = new Array();
		var tAlliance = new Array();
		for (var i = 0; i < db; i++)
		{	tTipus[i] = arr[6 + i];
			tNev[i] = arr[db + 6 + i].replace(/\|\||\|/g, "&").replace(/\\/g, "").replace(/(\([-\d]+)&([-\d]+\))/, "$1|$2");
			tPlayer[i] = arr[2 * db + 6 + i].replace(/\|\|/g, "&").replace(/\\/g, "");
			tAlliance[i] = arr[3 * db + 6 + i].replace(/\|\|/g, "&").replace(/\\/g, "");
		}
	}
	lepelEsDiv();
	tablazat(szerver, datum, x, y, radius, tTipus, tNev, tPlayer, tAlliance);
}
function menu(){
	if (getValue('allapot_' + szerver, 'false') == 'true')
	{
		// Bezár
		var ablakHelyzete = parseInt(mainDiv.style.right);
		if (ablakHelyzete - 10 <= -300)
		{
			mainDiv.style.right = "-302px";
			setValue('allapot_' + szerver, 'false');
		}
		else
		{
			mainDiv.style.right = (ablakHelyzete - 10) + "px";
			window.setTimeout(menu, 10, false);
		}
	}
	else
	{
		// Kinyit
		var ablakHelyzete = parseInt(mainDiv.style.right);
		if (ablakHelyzete + 10 >= 0)
		{
			mainDiv.style.right = "0px";
			setValue('allapot_' + szerver, 'true');
		}
		else
		{
			mainDiv.style.right = (ablakHelyzete + 10) + "px";
			window.setTimeout(menu, 10, false);
		}
	}
}

/* 
* Kiegészítő funkciók 
*/

/* Átlag időközöket számol */
function timeCounter()
{	var obj = new Object;
	obj.init = init;
	obj.count = count;
	
	var avgTime = new Array;
	var startTime, currentTime;
	
	return obj;
	
	function init()	// Az első mérés előtt kell hívni, alaphelyzetbe állítja a változókat
	{	avgTime = new Array(0);
		startTime = currentTime = new Date().getTime();
	}
	function count()	// két hívás közti időt méri és az átlagukat adja vissza milliszekundumban
	{	currentTime = new Date().getTime();
		if (avgTime.push(currentTime - startTime) > 60)
			avgTime.shift();
		startTime = currentTime;
		var avg = 0;
		for (var i = 0; i < avgTime.length; i++)
			avg += avgTime[i];
		return (isNaN(avg/avgTime.length)) ? 0 : avg/avgTime.length;
	}
}

//64-es számrendszerből 10-esbe vált
function b64_dec(b64)
{	var base64 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
	var dec = 0;
	for (var i = 0; i < b64.length; i++)
		dec += Math.pow(64, i)*base64.indexOf(b64.split("")[b64.length-i-1]);
	return dec;
}

/* A hibásan nagy koordinátákat pontosítja és alakítja át numerikus formátumra. */
function koordFix(koord){
	var k = parseInt(koord, 10);
	do{
	k = (k > 400) ? k - 801 : (k < -400) ? k + 801 : k;
	}
	while (k < -400 || k > 400);
	return k;
}

/* Koordinátákból zóna pontot számol. */
function xyzona(x, y){
	return -801 * koordFix(y) + 320801 + koordFix(x);
}

/* Zónapontból koordináta pontokat ad vissza egy kételemű tömbben. */
function zonaxy(z){
	var xy = new Array;
	xy[1] = Math.floor(401 - z / 801);	// Y koordináta
	xy[0] = z - 320801 + 801 * xy[1];	// X koordináta
	return xy;
}

/* Ajax-al betölti egy oldal tartalmát és egy 'callback' rutinnak adja tovább. ;)  !!!! Greasemonkey 0.8+ !!!! */
function get(url, cb) {
	var xmlhttp = PRO_xmlhttpRequest();
	xmlhttp.open("GET", url, true);
	xmlhttp.send(null);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			cb(xmlhttp.responseText, url);
		}
	} 
}
/* Mint fent csak ez POST eljárással teszi ezt. */
function post(url, data, cb) {
	var xmlhttp = PRO_xmlhttpRequest();
	xmlhttp.open("POST", url, true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.send(encodeURI(data));
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			cb(xmlhttp.responseText);
		}
	};
}

/* A 'távolság-tömb' elemeit sorbarendezi. Az eredmény egy olyan tömb, aminek az elemei az eredeti tömb indexeire mutatnak rendezve. */
function rendez(tt){
	function sortFn(a, b)
	{	a = parseFloat(a.split(":")[0]);
		b = parseFloat(b.split(":")[0]);
		if (a > b) return 1;
		if (a < b) return -1;
		return 0;
	}
	var a = new Array;
	for (var i = 0; i < tt.length; i++)
	{	a.push(tt[i] + ":" + i);
	}
	a.sort(sortFn);
	for (var i in a)
		a[i] = parseInt(a[i].split(":")[1]);
	return a;
}

/* A koordináták közti tényleges távolságot adja vissza.  */
function tavolsag(xy1, xy2){
	var x = Math.abs(xy1[0] - xy2[0]);
	var y = Math.abs(xy1[1] - xy2[1]);
	x += -801 * (x > 400);
	y += -801 * (y > 400);
	return Math.sqrt(x * x + y * y);
}

/* Folyamatjelző rutin. Kiszámolja 'max' hány százalékánál járunk. */
function stat(index, max)
{
	var counter = String(index);
	counter = parseInt(counter.substr(counter.length -1));
	$('TMA_divStat').innerHTML = '<p style="font-size:large; text-align:center;"><b>' + LD['SEARCH'] + FJ[counter] + parseInt(index / (max / 100)) + '%</b></p><p style="text-align:center"><b>' + LD['TIME_REMAINS'] + '</b> <font color="blue">' + timeToString((max-index)*idoKoz.count()) + '</font></p>';
}

/* Elem létrehozása */
function addElem(elem, html, attributes, style, parent){
	var aElem = document.createElement(elem);
	if (html) aElem.innerHTML = html;
	if (attributes)	for (a in attributes) aElem.setAttribute(a, attributes[a]);
	if (style) for (a in style) aElem.style[a] = style[a];
	if (!parent) parent = $tags('body')[0]; 
		else parent = (typeof(parent) == 'string') ? $(parent) : parent;
	if (!parent) return false;
	parent.appendChild(aElem);
	return aElem;
}

/* Elem törlése */
function rmElem(elem){
	if (typeof(elem) == 'string') elem = $(elem);
	elem.parentNode.removeChild(elem);
}
function getValue(name, def){
	var res = PRO_getValue(name);
	if (res != undefined)
		return res;
	if (def) return def;
	return null;
}
function setValue(name, value){
	PRO_setValue(name, value);
}
/* Egy elemet ad vissza a megadott ID-vel */
function $(id){
	return document.getElementById(id);
}
/* Elemeket ad vissza a megadott name attribútummal */
function $names(name){
	return document.getElementsByName(name);
}
/* A tag-ben megadott TAG-eket adja vissza */
function $tags(tagname, doc)
{	var doc = doc ? doc : document;
	return doc.getElementsByTagName(tagname);
}
/* Lapozó objektum. ;) */
function Lapozo(talalatszam){
	var obj = new Object();
	obj.ids = ids;
	obj.clicks = clicks;
	obj.page = page;

	var talalatok = talalatszam;
	var lapok = (talalatok % 30) ? parseInt(talalatok / 30) + 1 : talalatok / 30; // oldalak száma
	var allapot = new Array(6);
	var texts = new Array(6); // A kapcsolók kimenetét tartalmazza
	var index = new Array(0,1,2,3,4,5); // Az aktuális oldalakra mutató index
	var lastTextPage = 0; // A megjelenítendő oldal száma alapból az első (0)
	var txt;
	
	/* init */
	allapot[0] = "text";
	if (lapok <= 6) {
		for (i=1; i < lapok; i++) allapot[i] = "aktiv";
		for (m=i; m < 6; m++) allapot[m] = "inaktiv";
	}else{
		for (i=1; i<=4; i++) allapot[i] = "aktiv";
		allapot[i] = "lapozo";
	}

	return obj;
	
	function ids(){ // A kapcsolók kimenetét adja vissza
		for (id=0; id<=5; id++){
			switch (allapot[id]) {
				case "inaktiv": texts[id] = "";
				break;
				case "text": 
					texts[id] = (index[id] + 1 == lapok) ? 30 * index[id] + 1 + '-' + talalatok : 30 * index[id] + 1 + '-' + parseInt(30 * index[id] + 30);
				break;
				case "aktiv":
					txt = (index[id] + 1 == lapok) ? 30 * index[id] + 1 + '-' + talalatok : 30 * index[id] + 1 + '-' + parseInt(30 * index[id] + 30);
					texts[id] = '<a id="TMA_L' + id + '" href="javascript:void(0)">' + txt + '</a>';
				break;
				case "lapozo": texts[id] = '<a id="TMA_L' + id + '" href="javascript:void(0)"><...></a>';
				break;
			}
		}
		if (lapok < 6) {
			txt = "";
			for (i=0; i<lapok-1; i++) txt += texts[i] + ",&nbsp;";
			txt += texts[i];
		}else return texts.join(",&nbsp;");
		return txt;
	}
	function clicks(id){ // Elvégzi a kapcsolók beállítását attól függően melyik kapcsolón klikkeltek
		if (/^TMA_L(\d)$/.test(id) && (RegExp.$1 <= 5)) id = RegExp.$1;
		else return false;
		switch (allapot[id]){
			case "aktiv":
				lastTextPage = index[id];
			break;
			case "lapozo":
				if (id == 5) m = ((i = lapok-(index[5] + 4)) > 0) ? 3 : 3 + i;
				else m = ((i = index[1] - 4) > 0) ? -3 : -3 - i;
				for(i=1; i<=5; i++) index[i] += m;
			break;
		}
		if (allapot[5] != "inaktiv") allapot[5] = (index[5] == lapok-1) ? "aktiv" : "lapozo";
		for (i=0; i<=5; i++) allapot[i] = (index[i] == lastTextPage) ? "text" : (allapot[i] == "text") ? "aktiv" : allapot[i];
		if (allapot[1] != "inaktiv") allapot[1] = (index[1] != lastTextPage) ? ((index[1] == 1) ? "aktiv" : "lapozo") : "text";
		return true;
	}
	function page(){ // Az éppen megjelenítendő oldalt adja vissza
		return lastTextPage;
	}
}

/* A kép kitakarása egy átlátszó réteggel */
function lepelEsDiv(){
	var imgLepel = addElem('div', '', {
		'id': 'TMA_lepel'
	}, {
		'display': 'block',
		'backgroundColor': 'white',
		'width': '100%',
		'height': '100%',
		'position': 'fixed',
		'top': '0px',
		'left': '0px',
		'zIndex': 650,
		'filter': 'alpha(opacity=80)'
	});
	
	var divStat = addElem('div', '', {
		'id': 'TMA_divStat'
	}, {
		'zIndex': 651,
		'width': screen.availWidth + 'px',
		'position': 'fixed',
		'top': parseInt(screen.availHeight / 3) + 'px'
	});
}

/* Az út megtételéhez kellő idő */
function utido(tav){
	var ido = tav / unitSpeed;
	var h = Math.floor(ido);
	var m = Math.floor((ido - h) * 60);
	var s = Math.floor(ido * 3600 - (h * 3600 + m * 60));
	return h + "h " + m + "m " + s + "s";
}

/* Emészthető formát ad az egységnyi időnek : ) */
function timeToString(ms){
	var s = ms / 1000;
	var h = Math.floor(s / 3600);
	var m = Math.floor(s / 60) % 60;
	s = parseInt(s % 60);
	m = (m > 9) ? m : "0" + m;	
	s = (s > 9) ? s : "0" + s;
	return h + ":" + m + ":" + s;
}

/* TMA I/O ablak létrehozása */
function makeIOWin(title, text, cb, magassag){
	var aMag = (magassag) ? magassag : 300;
	var aSzel = 500;
	var posx = screen.availWidth / 2 - aSzel / 2;
	var posy = screen.availHeight / 3 - aMag / 2;
	var ioWin = addElem('div', '', {
		'id':'TMA_ioWin'
	}, {
		'backgroundColor': '#FFFFFF',
		'filter': 'alpha(opacity=90)',
		'width': aSzel+'px',
		'position': 'fixed',
		'color': 'black',
		'border': '2px ridge black',
		'zIndex': 700,
		'top': posy+'px',
		'left': posx+'px',
		'clear': 'both'
	});
	var cimDiv = addElem('div', title, {
		'id': 'TMA_cim'
	}, {
		'backgroundColor': '#DDDDDD',
		'width' : (aSzel - 15 - 8) + 'px',
		'textAlign': 'center',
		'color': 'black',
		'fontWeight': 'bold',
		'border': '2px outset black',
		'styleFloat': 'left',
		'cursor': 'default'
	}, ioWin);
	var closeDiv = addElem('div', 'x', {
		'id': 'TMA_ioClose'
	}, {
	'backgroundColor': '#DDDDDD',
	'width': '15px',
	'textAlign': 'center',
	'color': 'black',
	'fontWeight': 'bold',
	'border': '2px outset black',
	'styleFloat': 'left',
	'cursor': 'pointer'
	}, ioWin);
	
	addElem('textarea', '', {
		'id': 'TMA_textarea'
	}, {
		'textAlign': 'center',
		'width': (aSzel - 4) + 'px',
		'height': (aMag - 20) + 'px',
		'border': '2px inset black'
	}, ioWin);
	
	$('TMA_ioClose').attachEvent('onmouseover', function(){
		$('TMA_ioClose').style.backgroundColor = "#FF0000";
		});
	$('TMA_ioClose').attachEvent('onmouseout', function(){
		$('TMA_ioClose').style.backgroundColor = "#DDDDDD";
		});
	$('TMA_ioClose').attachEvent('onclick', function(){
		rmElem(ioWin);
		});
	if (text){
		$('TMA_textarea').value = text;
		$('TMA_textarea').select();
	}
	if (cb) {
		$('TMA_textarea').attachEvent('onkeydown', function(){
			cb($('TMA_textarea').value);
		});
		$('TMA_textarea').attachEvent('onmouseout', function(){
			cb($('TMA_textarea').value);
		});
	}
	return ioWin;
}

// Nyelvi frissítés
function langUpdate(){
	function valaszt(html,fURL){
		var avLangs = html.split(';');
		var txt = '<div align="center"><h2>' + LD['AVAIL_LANGS'] + '</h2><br>';
		for (var i=0; i<avLangs.length; i++){
			txt += '<input type="radio" name="TMA_langs" value=' + avLangs[i] + ' /><img src="' + hostUrl + 'img/' + avLangs[i] + '.gif" />&nbsp;&nbsp;' + avLangs[i] + '<br>';
		}
		txt += '<br><button id="TMA_langLoad">' + LD['LOAD_BTN'] + '</button>&nbsp;&nbsp;<button id="TMA_Cancel">' + LD['CANCEL'] + '</button></div>';
		var myDiv = addElem('div', txt, {
			'id': 'TMA_div'
		}, {
			'width': screen.availWidth + 'px',
			'position': 'fixed',
			'top': '30px',
			'left': '0px',
			'zIndex': 652
		});
		/* Letöltő gomb */
		$("TMA_langLoad").attachEvent('onclick', function(){
			var langs = $names("TMA_langs");
			for (var i=0; i<langs.length; i++){
				if(langs[i].checked) {
					get(hostUrl + 'lang.php?lang=' + langs[i].value, ment);
					break;
				}
			}
		});
		/* Visszavonás gomb */
		$("TMA_Cancel").attachEvent('onclick', function(){
			rmElem('TMA_div');
			rmElem('TMA_lepel');
		});
	}
	function ment(html, fURL){
		/* A letöltött nyelvet elmentjük */
		var temp = html.split('\n');
		for (var i=0; i<temp.length; i+=2){
			setValue(temp[i], encodeURIComponent(temp[i + 1]));
		}
		rmElem('TMA_div');
		rmElem('TMA_lepel');
		window.location.reload();
	}
	get(hostUrl + 'lang.php', valaszt);
	/* A kép kitakarása egy átlátszó réteggel */
	var imgLepel = addElem('div', '',
		{
			'id': 'TMA_lepel'
		},
		{
			'display': 'block',
			'backgroundColor': 'white',
			'width': '100%',
			'height': '100%',
			'position': 'fixed',
			'top': '0px',
			'left': '0px',
			'filter': 'alpha(opacity=90)',
			'zIndex': 650
		}
	);
}

// Autómatikus frissítés
function checkUpdate(){
	var d = new Date();
	var t = d.getTime();
	var lastUpdate = parseInt(getValue('lastUpdate','0'));
	if (t - lastUpdate >= 1000 * 60 * 60 * 8) {
		get(verUrl, Update);
		setValue('lastUpdate', t + '');
	}
	return;
	
	// update
	function Update(html, fURL)
	{	var text = document.createElement("div");
		text.innerHTML = html;
		var html = $tags("textarea", text)[0].value;
		var newVersion = html.match(/@version\s+([\d.]+)/)[1];
		var news = html.match(/@news\s+.*/g);
		if (news)
			news = news.join("\n").split(/@news\s+/).join("");
		else
			news = "";
		if (version < newVersion) {
			if (confirm("Travian Map Analyser\n" + LD['NEWVER'] + " (v.: " + newVersion + ")\n\n" + news + "\n\n" + LD['UPDATENOW'])) window.location.href = "ie7pro://www.iescripts.org/476/TravianMapAnalyser.ieuser.js";
		}
	}
}
