dom = (document.getElementById)? true:false;
ie = (navigator.userAgent.indexOf('MSIE')>0)? true:false;
ns4=(document.layers)? true:false;
ns6=((navigator.userAgent.indexOf('Mozilla')>=0) && (navigator.appVersion.substring(0,1) >= "5"))? true:false;
opera=(navigator.userAgent.indexOf('Opera')>=0)? true:false;
mac = navigator.platform == "Mac";

max_ress = 0;

var start = new Date();
var reloadSperre = 10000; // 10 Sekunden Reloadsperre

var mouseOverCache = new Array();

// correctly handle PNG transparency in Win IE 5.5 or higher.
function fixPNG(myImage) {
	if (window.ie55up)  {
		var imgID = (myImage.id) ? "id='" + myImage.id + "' " : "";
		var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : "";
		var imgTitle = (myImage.title) ? "title='" + myImage.title + "' " : "title='" + myImage.alt + "' ";
		var imgStyle = "display:inline-block;" + myImage.style.cssText;
		var strNewHTML = "<span " + imgID + imgClass + imgTitle;
		strNewHTML += " style=\"" + "width:" + myImage.width + "px; height:" + myImage.height + "px;" + imgStyle + ";";
		strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader";
		strNewHTML += "(src=\'" + myImage.src + "\', sizingMethod='scale');\"><\/span>";
		myImage.outerHTML = strNewHTML;
	}
}

function centerPositionY(layer, y, xsub) {
    width = 1024;
    if (opera||ns4||ns6) {
    	width = window.innerWidth;
    }
    else if (ie) {
    	width = document.body.offsetWidth;
    }

    if (dom) {
        // hack f�r ie, der keine objektreferenz sondern kopie �bergibt
        obj = document.getElementById(layer.id);

        // positionieren
        obj.style.left = Math.ceil(width / 2 - xsub) + "px";
        obj.style.top = y + "px";
    }
}

function server_clock() {
	if (document.getElementById('second').innerHTML < 59 ) {
		s = parseInt(document.getElementById('second').innerHTML, 10);
		s = s + 1;
		if (s < 10) {
			s= "0" + s;
		}
		document.getElementById('second').innerHTML = s;
	}
	else {
		document.getElementById('second').innerHTML = "00";
		if (document.getElementById('minute').innerHTML < 59 ) {
			m = parseInt(document.getElementById('minute').innerHTML, 10);
			m = m + 1;
			if (m < 10) {
				m= "0" + m;
			}
			document.getElementById('minute').innerHTML = m;
		}
		else {
			document.getElementById('minute').innerHTML = "00";
			if (document.getElementById('hour').innerHTML < 23) {
				h = parseInt(document.getElementById('hour').innerHTML, 10);
				h = h + 1;
				if (h < 10) {
					h= "0" + h;
				}
				document.getElementById('hour').innerHTML = h;
			}
			else {
				document.getElementById('hour').innerHTML = "00";
			}
		}
	}
	setTimeout("server_clock()", 1000);
}


function counter() {
	RefTime = ( parseInt(document.getElementById("Rhour").innerHTML) * 3600 ) + ( parseInt(document.getElementById("Rminute").innerHTML) * 60 ) + ( parseInt(document.getElementById("Rsecond").innerHTML) );
	r = ( parseInt(document.getElementById("hour").innerHTML) * 3600 ) + ( parseInt(document.getElementById("minute").innerHTML) * 60 ) + ( parseInt(document.getElementById("second").innerHTML) );
	field = document.getElementsByTagName("span");
	
	for (i = 0; i < field.length; i++) {
		if (field[i].className == "countdown" ) {

		
		
			var innerHTML = field[i].innerHTML;
			var innerHTML_array = innerHTML.split(" ");
			innerHTML = innerHTML_array.join("");
			field[i].innerHTML = innerHTML;
			
			timeString = "";
			time_l = field[i].innerHTML.length; // L�nge String
			
			
			
			// nur wenn nix �berf�llig oder so
			if (time_l == 8 || time_l == 9) {
				time = field[i].innerHTML; // gesamter String
				
				time_a = time.split(':');
				time_s = time_a[2];
				time_m = time_a[1];
				time_h = time_a[0];
				time = (time_h * 3600) + (time_m * 60) + (time_s - 1);
				if (time < 0) {
					field[i].innerHTML = '00:00:00';
					return;
				}

				if (time.length > 8) {
					return;
				}
				now = new Date();


				if (time == 0) {
					if (document.getElementById('housecounter')) {
	                	setTimeout("location.reload()", 2000); // 1 sec delay
                	}
                	else {
                		location.reload();
                	}
					return;
				}

				hours = Math.floor(time / 3600);
				minutes = Math.floor( (time - hours * 3600) / 60 );
				seconds = Math.floor( time - (hours * 3600) - (minutes * 60) );

				if (hours < 10) {
					timeString = "0";
				}
				timeString += hours + ":";
				if (minutes < 10) {
					timeString += "0";
				}
				timeString += minutes + ":";
				if (seconds < 10) {
					timeString += "0";
				}
				timeString += seconds;
				field[i].innerHTML = timeString;
				
			}
		}
		if (field[i].className == "countdownRight" || field[i].className == "countdownRight size12" ) {

		
		
			var innerHTML = field[i].innerHTML;
			var innerHTML_array = innerHTML.split(" ");
			innerHTML = innerHTML_array.join("");
			field[i].innerHTML = innerHTML;
			
			timeString = "";
			time_l = field[i].innerHTML.length; // L�nge String
			
			
			
			// nur wenn nix �berf�llig oder so
			if (time_l == 8 || time_l == 9) {
				time = field[i].innerHTML; // gesamter String
				
				time_a = time.split(':');
				time_s = time_a[0];
				time_m = time_a[1];
				time_h = time_a[2];
				time = (time_h * 3600) + (time_m * 60) + (time_s - 1);
				if (time < 0) {
					field[i].innerHTML = '00:00:00';
					return;
				}

				if (time.length > 8) {
					return;
				}
				now = new Date();


				if (time == 0) {
					if (document.getElementById('housecounter')) {
	                	setTimeout("location.reload()", 2000); // 1 sec delay
                	}
                	else {
                		location.reload();
                	}
					return;
				}

				hours = Math.floor(time / 3600);
				minutes = Math.floor( (time - hours * 3600) / 60 );
				seconds = Math.floor( time - (hours * 3600) - (minutes * 60) );

				if (seconds < 10) {
					timeString = "0";
				}
				timeString += seconds + ":";
				if (minutes < 10) {
					timeString += "0";
				}
				timeString += minutes + ":";
				if (hours < 10) {
					timeString += "0";
				}
				timeString += hours;
				field[i].innerHTML = timeString;
				
			}
		}
		if(field[i].className=="countdownRev"||field[i].className=="countdownRev size12"){
			var ih=field[i].innerHTML;
			var ia = ih.split(" ");
			ih=ia.join("");
			field[i].innerHTML=ih;
			tS="";
			t_l=field[i].innerHTML.length;
			if(t_l==8||t_l==9){
				t=field[i].innerHTML;
				a=t.split(':');
				t_h=parseInt(a[0]);t_m=parseInt(a[1]);t_s=parseInt(a[2]);
				t=(t_h*3600)+(t_m*60)+t_s+1;
				h=Math.floor(t/3600);m=Math.floor((t-h*3600)/60);s=Math.floor(t-(h*3600)-(m*60));
				if(h<10)tS="0";tS+=h+":";if(m<10)tS+="0";tS+=m+":";if(s<10)tS+="0";tS+=s;
				field[i].innerHTML=tS;
			}
		}
	}

	//RessCounter();
	setTimeout("counter()", 1000);
}

function RessCounter() {
	timeNow = new Date();

	field = document.getElementsByTagName("span");
	for (i = 0; i < field.length; i++) {
		if (field[i].className == "Ress") {
			idtype = field[i].lang.split(",");
			vid = idtype[0];
			type = idtype[1];

			speicher = village_conf[vid][6];
			res = 0;
			prod = 0;
			if (type == 'res1') {
				res = village_conf[vid][0];
				prod = village_conf[vid][3];
			}
			else if (type == 'res2') {
				res = village_conf[vid][1];
				prod = village_conf[vid][4];
			}
			else if (type == 'res3') {
				res = village_conf[vid][2];
				prod = village_conf[vid][5];
			}

			a1 = prod / 3600;
			act_res = res + (a1 * (r-RefTime));
			act_res = Math.round(act_res);
			if ((act_res > speicher) && (speicher!= -1)) {
				act_res = speicher;
				field[i].style["color"] = 'red';
			}
			if (act_res > 999999) {
				act_res = String(act_res);
				s1 = act_res.substr(0, act_res.length - 6);
				s2 = act_res.substr(act_res.length - 6, 3);
				s3 = act_res.substr(act_res.length - 3);
				act_res = s1 + "." + s2+ "." + s3;
				field[i].innerHTML = act_res;
			}
			else if (act_res > 999) {
				act_res = String(act_res);
				s1 = act_res.substr(0, act_res.length - 3);
				s2 = act_res.substr(act_res.length - 3);
				act_res = s1 + "." + s2;
				field[i].innerHTML = act_res;
			}
			else {
				field[i].innerHTML = parseInt(String(act_res));
			}
		}
	}
}


var savedStates=new Array();
var savedStateCount=0;

function saveBackgroundStyle(myElement) {
	saved = new Object();
	saved.element = myElement;
	saved.className = myElement.className;
	saved.backgroundColor = myElement.style["backgroundColor"];
	return saved;
}

function restoreBackgroundStyle(savedState) {
	savedState.element.style["backgroundColor"] = savedState.backgroundColor;
	if (savedState.className) {
		savedState.element.className = savedState.className;
	}
}

function findNode(startingNode, tagName) {
	myElement = startingNode;
	var i=0;
	while (myElement && (!myElement.tagName || (myElement.tagName && myElement.tagName != tagName))) {
		myElement = startingNode.childNodes[i];
		i++;
	}
	if (myElement && myElement.tagName && myElement.tagName == tagName) {
		return myElement;
	}
	else if (startingNode.firstChild) {
		return findNode(startingNode.firstChild, tagName);
	}
	return 0;
}

function highlightTableRow(myElement, highlightColor) {
	var i=0;
	for (i; i < savedStateCount; i++) {
		restoreBackgroundStyle(savedStates[i]);
	}
	savedStateCount = 0;

	while (myElement && ((myElement.tagName && myElement.tagName != "TR") || !myElement.tagName)) {
		myElement = myElement.parentNode;
	}

	if (!myElement || (myElement && myElement.id && myElement.id == "header") ) {
		return;
	}

	if (myElement) {
		var tableRow = myElement;
		if (tableRow) {
			savedStates[savedStateCount] = saveBackgroundStyle(tableRow);
			savedStateCount++;
		}
		var tableCell = findNode(myElement, "TD");
		var i=0;
		while (tableCell) {
			if (tableCell.tagName == "TD") {
				if (!tableCell.style) {
					tableCell.style = {};
				}
				else {
					savedStates[savedStateCount] = saveBackgroundStyle(tableCell);
					savedStateCount++;
				}
				tableCell.style["backgroundColor"] = highlightColor;
				tableCell.style.cursor = 'default';
				i++;
			}
			tableCell = tableCell.nextSibling;
		}
	}
}

function trackTableHighlight(mEvent, highlightColor) {
	if (!mEvent) {
		mEvent = window.event;
	}
	if (mEvent.srcElement) {
		highlightTableRow( mEvent.srcElement, highlightColor);
	}
	else if (mEvent.target) {
		highlightTableRow( mEvent.target, highlightColor);
	}
}

function highlightTableRowVersionA(myElement, highlightColor) {
	var i = 0;
	if (typeof(saveStateCount) != "undefined") {
		savedStateCount = 0;
	}
	for (i; i < savedStateCount; i++) {
		restoreBackgroundStyle(savedStates[i]);
	}

	savedStateCount = 0;

	if (!myElement || (myElement && myElement.id && myElement.id == "header") ) {
		return;
	}

	if (myElement) {
		var tableRow = myElement;
		if (tableRow) {
			savedStates[savedStateCount] = saveBackgroundStyle(tableRow);
			savedStateCount++;
		}
		var tableCell = findNode(myElement, "TD");

		var i = 0;
		while (tableCell) {
			if (tableCell.tagName == "TD") {
				if (!tableCell.style) {
					tableCell.style = {};
				}
				else {
					savedStates[savedStateCount] = saveBackgroundStyle(tableCell);
					savedStateCount++;
				}
				tableCell.style["backgroundColor"] = highlightColor;
				tableCell.style.cursor = 'default';
				i++;
			}
			tableCell=tableCell.nextSibling;
		}
	}
}

function insertNum(name, num, formname) {
	formname = (formname) ? formname : 0;
	elem = document.forms[formname].elements[name];
	if (elem.value == num) {
		elem.value = '0';
	} else {
		elem.value = num;
	}
}

function sel_troops(id, value, vz) {
	troops = parseInt(document.getElementById(id).innerHTML);
	troops = troops + value * vz;
	if (troops > 0) {
		document.getElementById(id).innerHTML = troops;
		document.getElementById(id).style.color = '';
		document.getElementById('h' + id).value = troops;
	}
	else {
		document.getElementById(id).innerHTML = 0;
		document.getElementById(id).style.color = '#FF0000;';
		document.getElementById('h' + id).value = 0;
	}
}

function sel_troops_tm(id, value, vz) {
	troops = parseInt(document.getElementById(id).value);
	troops = troops + value * vz;
	if (troops > 0) {
		document.getElementById(id).value = troops;
		document.getElementById(id).style.color = '';
		document.getElementById('h' + id).value = troops;
	}
	else {
		document.getElementById(id).value = 0;
		document.getElementById(id).style.color = '#FF0000;';
		document.getElementById('h' + id).value = 0;
	}
}

function sel_res(id, value, vz, defres, max) {
	ressources = parseInt( document.getElementById(id).value.replace('.', '') );
	ressources = ressources + value * vz;

	if (document.getElementById(id).value.length == 0) {
		document.getElementById(id).value = 0;
		
	} else if (document.getElementById(id).value.substr(0,1) == 0 && document.getElementById(id).value != '0') {
		document.getElementById(id).value = document.getElementById(id).value.substr(1);
		
	} else if (isNaN(document.getElementById(id).value) ) {
		document.getElementById(id).value = '0';
		
	} else {
		if (ressources < 0) {
			ressources = 0;
		}
		if (max!=false && ressources > max) {
			ressources = max;
		}
		
		document.getElementById(id).value = ressources;
	}

	settlers = parseInt(document.getElementById('ress1').value) + parseInt(document.getElementById('ress2').value) + parseInt(document.getElementById('ress3').value);
	settlers = Math.ceil(settlers / defres);
	
	document.getElementById('settlers').style.color = '#000000';
	document.getElementById('settlers').innerHTML = settlers;
	document.getElementById('settler_free').innerHTML = parseInt(document.getElementById('settler_max').value) - settlers;

	if (parseInt(document.getElementById('settlers').innerHTML) > parseInt(document.getElementById('settler_max').value)) {
		document.getElementById('settlers').style.color = '#FF0000';
		document.getElementById('settlers').innerHTML = parseInt(document.getElementById('settler_max').value);
		document.getElementById('settler_free').innerHTML = 0;
	}
}

function FavList() {
	index = document.getElementById('favlist').selectedIndex;
	koord = document.getElementById('favlist').options[index].value;
	koord = koord.split ("|");
	if (koord[1]) {
		document.getElementById('x').value = koord[0];
		document.getElementById('y').value = koord[1];
	}
	else {
		document.getElementById('x').value = "";
		document.getElementById('y').value = "";
	}
}

function CastleListOwn() {
	index = document.getElementById('castlelist').selectedIndex;
	koord = document.getElementById('castlelist').options[index].value;
	koord = koord.split ("|");
	if (koord[1]) {
		document.getElementById('cx').value = koord[0];
		document.getElementById('cy').value = koord[1];
	}
	else {
		document.getElementById('cx').value = "";
		document.getElementById('cy').value = "";
	}
}

function kaufm(x) {
	var k = (Math.round(x * 100) / 100).toString();
	k += (k.indexOf('.') == -1) ? '.00' : '00';
	var p = k.indexOf('.'), m = k.indexOf('-.');
	var f = (p == 0 || m == 0)? '0,' : ',';
	return k.substring(0, p) + f + k.substring(p+1, p+3);
}

function checkKey(e) {
	if (!e) {
		e = window.event;
	}
	var code = (NS) ? e.which : event.keyCode;
	var key = String.fromCharCode(code);

	if (e.altKey) {
		for (var i = 0; i < ar.length; i++) {
			if (key == ar[i].key) {
				location.href = ar[i].url;
			}
		}
	}
}

function hotKey(key, url) {
	this.key = key;
	this.url = url;
}

function makevisible(cur, strength) {
	if (cur.style.MozOpacity) {
		strength = strength * 0.01;
		cur.style.MozOpacity = strength;
	}
	else if (cur.filters) {
		cur.filters.alpha.opacity = strength;
	}
}

function setvisible(cur, strength) {
	if (cur.style.MozOpacity) {
		strength =  strength * 0.01;
		mouseOverCache[cur] = cur.style.MozOpacity;
		cur.style.MozOpacity = strength;
	}
	else if (cur.filters) {
		mouseOverCache[cur] = cur.filters.alpha.opacity;
		cur.filters.alpha.opacity = strength;
	}
}

function restorevisible(cur) {
	if (cur.style.MozOpacity) {
		cur.style.MozOpacity = mouseOverCache[cur];
	}
	else if (cur.filters) {
		cur.filters.alpha.opacity = mouseOverCache[cur];
	}
}

function setTroopData(data) {
	var playername = data[0];
	var pid = data[1];
	var name = data[2];
	if (!timeGone) {
		var timeGone = 0;
	}
	if (name == 'off') {
		offData = data;
	}
	else {
		deffData = data;
	}
	var c=3;
	var obj = document.getElementById('player_'+name);
	obj.innerHTML = '<span class="report_name">'+playername+'<\/span>';
	var units = new Array('spear','sword','axe','spy','light','heavy','ram','catapult','bow');
	for (var i = 0; i < units.length; i++) {
		obj = document.getElementById(name+'_'+units[i]);
		if (obj) {
			stern1 = data[c+3] >= 1 ? '' : '_grey';
			stern2 = data[c+3] >= 2 ? '' : '_grey';
			stern3 = data[c+3] >= 3 ? '' : '_grey';
			killed_life = Math.ceil(timeGone * data[c+4]);
			if (data[c+1] != '?' && killed_life > data[c+1]) {
				killed_life = data[c+1];
			}
			var stay=(data[c+1] != '?') ? komma(data[c+1]-killed_life) : '?';
			var killed=(data[c+2] != '?') ? komma(data[c+2]+killed_life) : '';
			obj.innerHTML='<table bgcolor="#FFFFFF"><tr><td rowspan="2" class="pure"><img src="' + imgUrl + '/px/unit_' + units[i] + '.png"\/><\/td><td class="pure">' + stay + '<\/td><td rowspan="2" class="pure"><img src="' + imgUrl + '/px/stern' + stern1 + '.gif"\/><br\/><img src="' + imgUrl + '/px/stern' + stern2 + '.gif"\/><br\/><img src="' + imgUrl + '/px/stern' + stern3 + '.gif"\/><br\/><\/td><\/tr><tr><td class="pure"><p align="right" style="color:red;"><b><strike>' + killed + '<\/strike><\/b><\/p><\/td><\/tr><\/table>';
			if (data[c+1]-killed_life == 0) {
				makevisible(obj, 30);
			}
		}
		c += 5;
	}
}

function komma(nummer) {
	var nummer = '' + nummer;
	var laenge = nummer.length;
	if (laenge > 3) {
		var mod = laenge % 3;
		var output = (mod > 0) ? (nummer.substring(0,mod)) : '';
		for (var i=0 ; i < Math.floor(laenge / 3); i++) {
			if ((mod == 0) && (i == 0)) {
				output += nummer.substring(mod+ 3 * i, mod + 3 * i + 3);
			}
			else {
				output+= '.' + nummer.substring(mod + 3 * i, mod + 3 * i + 3);
			}
		}
		return output;
	}
	return nummer;
}

function zero(num, zeroc) {
	var num = '' + num;
	var laenge = num.length;
	if (laenge < zeroc) {
		for (i = 0; i < (zeroc-laenge); i++) {
			num = 0 + num;
		}
	}
	return num;
}

function debug(text) {
	var obj = document.getElementById('battle_time');
	obj.innerHTML = text;
}

function setBattleTime() {
	var btime = new Date();
	btime.setTime((serverTime + Math.round(timeGone)) * 1000);
	var text = '<span class="report_time">' + zero(btime.getHours(), 2) + ':' + zero(btime.getMinutes(), 2) + ':' + zero(btime.getSeconds(), 2) + ' <img src="' + imgUrl + '/px/ico_sandclock.png"\/><\/span>';
	var obj = document.getElementById('battle_time');
	obj.innerHTML = text;
}

function setCookie(name, value) {
	Dauer = 7;
	jetzt = new Date();
	Auszeit = new Date(jetzt.getTime() + Dauer * 86400000);
	document.cookie = name + "=" + value + ";expires=" + Auszeit.toGMTString() + ";";
}

function getCookie(name) {
	var value=null;
	if (document.cookie != "") {
		var kk=document.cookie.indexOf(name+"=");
		if (kk >= 0) {
			kk=kk+name.length+1;
			var ll=document.cookie.indexOf(";", kk);
			if (ll < 0) {
				ll=document.cookie.length;
			}
			value=document.cookie.substring(kk, ll);
			value=unescape(value);
		}
	}
	return value;
}

function checkall(masterbox, name) {
	f = masterbox.form; // ein Pointer zum Formular
	for (i=0; i < f.elements.length;i++) {
		if (f.elements[i].name == 'p[]') {
			f.elements[i].checked = masterbox.checked;
		}
	}
}


function formatNumbers ( num ) {

	num = num + "";
	i = num.length - 1;
	var newNumber = "";
	var j=0;
	for (i; i>-1; i--) {
	
		newNumber = num.charAt(i) + newNumber;
		j++;
		if ( j%3 == 0 && i > 0 ) {
		
			newNumber= "." + newNumber;
			
		}
		
	}
	
	return newNumber;
	
}
