var initializers = new Array();

function addInit(init)
{ initializers[initializers.length] = init; }

function initAction()
{
	for (var i = 0; i < initializers.length; i++)
	initializers[i]();
}

onload = initAction;


loadTime = new Date().getTime();

upids = new Array();
uptimes = new Array();
retourtimes = new Array();
endtimes = new Array();
times = new Array();
ress = new Array();
ress2 = new Array();
ress3 = new Array();

downids = new Array();
downtimes = new Array();
retourids = new Array();
endtimeids = new Array();
timeids = new Array();
ressids = new Array();
ressids2 = new Array();

var count = 0;

function formatTime(d, h, m, s)
{
	if (s < 10) s = '0'+s;
	if (m < 10) m = '0'+m;
	if (h < 10) h = '0'+h;
	if (d != 0) return d+'d '+h+':'+m+':'+s;
	return h+':'+m+':'+s;
}

function formatSec(s)
{
	var m = Math.floor(s/60); s -= m*60;
	var h = Math.floor(m/60); m -= h*60;
	var d = Math.floor(h/24); h -= d*24;
	return formatTime(d, h, m, s);
}

function formatSecTime(s)
{
	var m = Math.floor(s/60); s -= m*60;
	var h = Math.floor(m/60); m -= h*60;
	var d = Math.floor(h/24); h -= d*24;
	d = 0;
	return formatTime(d, h, m, s);
}

function parseInteger(s)
{
	var result = 0;
	for (var i = 0; i < s.length; i++)
	result = 10*result+parseInt(s.charAt(i));
	return result;
}

function parseTime(s)
{
	var res = s.match(/((\d+)d\s)?((\d+):)?(\d+):(\d+)/);
	var result = 0;

	result +=    parseInteger(res[6]);
	result += 60*parseInteger(res[5]);
	if (RegExp.$4) result += 60*60*parseInteger(res[4]);
	if (RegExp.$2) result += 24*60*60*parseInteger(res[2]);

	return result;
}

function replaceContentText(id, newtext)
{
	var element = document.getElementById(id);
	element.firstChild.nodeValue = newtext;
}

function timer()
{

	if (js_countdowns == 1 || (js_countdowns == 0 && count == 0)) {
		
		count = 1;

		var nowTime = new Date().getTime();
		var diff = Math.round((nowTime-loadTime)/1000.);


		for (var i = 0; i < upids.length; i++)
		{
			var s = uptimes[i]+diff;
			var erg = formatSec(s);
			replaceContentText(upids[i], erg);
		}

		for (var i = 0; i < timeids.length; i++)
		{
			var s = times[i]+diff;
			var erg = formatSecTime(s);
			replaceContentText(timeids[i], erg);
		}

		for (var i = 0; i < retourids.length; i++)
		{
			var s = retourtimes[i]+2*diff;
			var d = new Date(s*1000);

			var h = d.getHours();		if (h < 10) h = '0'+h;
			var m = d.getMinutes();		if (m < 10) m = '0'+m;
			var sek = d.getSeconds();	if (sek < 10) sek = '0'+sek;

			var day = d.getDate();		if (day < 10) day = '0'+day;
			var month = d.getMonth();	if (month < 10) month = '0'+month;
			month++;
			var year = d.getFullYear();

			var erg = h + ':' + m + ':' + sek + ' ' + day + '.' + month + '.' + year;
			replaceContentText(retourids[i], erg);
		}

		for (var i = 0; i < endtimes.length; i++)
		{
			var s = endtimes[i]+1*diff;
			var d = new Date(s*1000);

			var h = d.getHours();		if (h < 10) h = '0'+h;
			var m = d.getMinutes();		if (m < 10) m = '0'+m;
			var sek = d.getSeconds();	if (sek < 10) sek = '0'+sek;

			var day = d.getDate();		if (day < 10) day = '0'+day;
			var month = d.getMonth()+1;	if (month < 10) month = '0'+month;
			var year = d.getFullYear();

			var erg = h + ':' + m + ':' + sek + ' ' + day + '.' + month + '.' + year;
			replaceContentText(endtimeids[i], erg);
		}

		for (var i = 0; i < ressids.length; i++)
		{
			var s = ress[i] + Math.round(diff*ress2[i]/3600);
			if (s > ress3[i]) s = ress3[i];
			var erg = trennung(s);
			replaceContentText(ressids[i], erg);
		}

		for (var i = 0; i < ressids2.length; i++)
		{
			var s = ress[i] + Math.round(diff*ress2[i]/3600);
			if (s > ress3[i]) s = ress3[i];
			var width = Math.round(s/ress3[i]*100);
			document.getElementById(ressids2[i]).style.width = width+'%';
		}

		for (var i = 0; i < downids.length; i++)
		{
			var s = downtimes[i]-diff;
			var erg;

			if (s > 0){
				erg = formatSec(s);

			}else {
				erg = "";

				var test = document.getElementById('aktion' + downids[i].substring(9, 20));

				if (test && test.innerHTML.substring(0,3) == "Bau") {
					replaceContentText(test.id,"Zur Zeit wird nicht gebaut");
					test.className = "disabled";
				}

				if (test && test.innerHTML.substring(0,3) == "Erf") {
					replaceContentText(test.id,"Zur Zeit wird nicht geforscht");
					test.className = "disabled";
				}

				if (test && test.innerHTML.substring(0,3) == "abb") {
					replaceContentText(test.id,"weiter");
					test.className = "enabled";
				}
			}
			replaceContentText(downids[i], erg);
		}
		window.setTimeout('timer();', 1000);
	}
}

function initTimer()
{
	var elems = document.getElementsByTagName("span");
	for (var i = 0; i < elems.length; i++)
	{
		if (elems[i].id.substring(0, 7) == "countup" && elems[i].innerHTML != "")
		{
			upids[upids.length] = elems[i].id;
			uptimes[uptimes.length] = parseInt(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 9) == "countdown" && elems[i].innerHTML != "")
		{
			downids[downids.length] = elems[i].id;
			downtimes[downtimes.length] = parseInt(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 7) == "uhrzeit" && elems[i].innerHTML != "")
		{
			timeids[timeids.length] = elems[i].id;
			times[times.length] = parseInt(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 6) == "retour" && elems[i].innerHTML != "")
		{
			retourids[retourids.length] = elems[i].id;
			retourtimes[retourtimes.length] = parseInt(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 7) == "endtime" && elems[i].innerHTML != "")
		{
			endtimeids[endtimeids.length] = elems[i].id;
			endtimes[endtimes.length] = parseInt(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 6) == "ressup" && elems[i].innerHTML != "")
		{
			ressids[ressids.length] = elems[i].id;
			var temp = elems[i].innerHTML.split("|");
			ress[ress.length] = parseInt(temp[0]);
			ress2[ress2.length] = temp[1];

			if (temp.length > 2) {
				ressids2[ressids2.length] = 'width'+elems[i].id.substring(6, 10);
				ress3[ress3.length] = parseInt(temp[2]);
			}
		}

		if (elems[i].id.substring(0, 4) == "time" && elems[i].innerHTML != "")
		{
			elems[i].innerHTML = formatSec(elems[i].innerHTML);
		}

		if (elems[i].id.substring(0, 4) == "zahl" && elems[i].innerHTML != "" && js_trennzeichen != '')
		{
			elems[i].innerHTML = trennung(elems[i].innerHTML);
		}
	}
}

function trennung(zahl) {
	var zahl = '' + zahl;
	var rest = zahl.split(".");
	var vorzeichen = '';

	zahl = rest[0];

	if (zahl.substring(0,1) == '-') {
		vorzeichen = '-';
		zahl = zahl.substring(1,zahl.length);
	}

	if (rest.length == 1){
		rest = '';
	}else {
		rest = ',' + rest[1];
	}

	var laenge = zahl.length;
	if (laenge>3) {
		var mod = laenge%3;
		var output = (mod>0 ? (zahl.substring(0,mod)) : '');

		for (i=0; i<Math.floor(laenge/3); i++) {
			if ((mod == 0) && (i == 0)){
				output += zahl.substring(mod+3*i, mod+3*i+3);
			}else {
				output += js_trennzeichen + zahl.substring(mod+3*i, mod+3*i+3);
			}
		}
		output += rest;
		return (vorzeichen + output);
	}else {
		return vorzeichen + zahl + rest;
	}
}


function startTimer()
{
	timer();
}

addInit(initTimer);
addInit(startTimer);
