// Uhrzeit setzen
function setClock()
{
	try
	{
		ServerTime += 1000;
		Jetzt.setTime(ServerTime);
	}
	catch(error)
	{
		ServerTime = new Date().getTime();
	}
	if( ServerTime == NaN ) return;

	//aktuelle Uhrzeit
	Stunden = Jetzt.getHours();
	Minuten = Jetzt.getMinutes();
	Sekunden = Jetzt.getSeconds();
	ZeitString = Stunden;
	ZeitString += ((Minuten < 10) ? ":0" : ":") + Minuten;
	ZeitString += ((Sekunden < 10) ? ":0" : ":") + Sekunden;

	if( document.getElementById("server_time") ) document.getElementById("server_time").innerHTML = ZeitString;
}

// Zeitformatierung
function setTimeValue( ort, secs )
{
	var tage    = parseInt( secs / (60*60*24) );
	var tleft   = secs - (tage*60*60*24);
	var stunden = parseInt( tleft / (60*60) );
	tleft   = tleft - (stunden*60*60);
	var minuten = parseInt( tleft / 60 );
	tleft       = tleft - (minuten*60);
	if( minuten < 10 ) minuten = "0"+minuten;
	if( tleft < 10 ) tleft = "0"+tleft;

	if( tage > 0 ) ort.innerHTML = tage+"d "+stunden+":"+minuten+":"+tleft;
	else ort.innerHTML = stunden+":"+minuten+":"+tleft;

	return true;
}

// Counter
var started     = false;
var anzCounter  = 0;
var counterZeit = new Array( 100 );
var Jetzt       = new Date();
function setTimeoutCounter()
{
	if( !started )
	{
		started = true;
		window.setTimeout("updateCounter()",1000);
	}
}

function updateCounter()
{
	for( var x=1; x<anzCounter+1; x++ )
	{
		var ort = $("counter"+x);

		if( ort )
		{
			if( counterZeit[x] > 0 )
			{
				counterZeit[x]--;
				setTimeValue(ort, counterZeit[x]);
			} else ort.innerHTML = "beendet/ended";
		}
	}
	setClock();
	window.setTimeout("updateCounter()",1000);
}

function add_counter(dauer, counter)
{
	if( dauer < 0 )
	{
		return false;
	}

	//anzCounter++;
	if( anzCounter < counter ) anzCounter = counter;
	counterZeit[counter] = dauer;
	return true;
}

//function add_counter(dauer)
//{
//	if( dauer < 0 )
//	{
//		return "<span>Tick Error</span>";
//	}
//
//	anzCounter++;
//	tmp = "<span id=\"counter"+anzCounter+"\">Error</span>";
//	counterZeit[anzCounter] = dauer;
//	return tmp;
//}

// Ressourcen setzen
function set_ressources(data)
{
	$("ress1").innerHTML = format_number(data.ress1)+" ("+format_number(data.lager_ress1)+")";
	$("ress2").innerHTML = format_number(data.ress2)+" ("+format_number(data.lager_ress2)+")";
	$("ress3").innerHTML = format_number(data.ress3)+" ("+format_number(data.lager_ress3)+")";
	$("ress4").innerHTML = format_number(data.ress4)+" ("+format_number(data.lager_ress4)+")";
	$("ress5").innerHTML = format_number(data.ress5)+" ("+format_number(data.lager_ress5)+")";
	$("ress6").innerHTML = format_number(data.ress6)+" ("+format_number(data.lager_ress6)+")";

	// Einkommen
	$("ress1_income").innerHTML = "+"+format_number(data.einkommen_ress1);
	$("ress2_income").innerHTML = "+"+format_number(data.einkommen_ress2);
	$("ress3_income").innerHTML = "+"+format_number(data.einkommen_ress3);
	$("ress4_income").innerHTML = "+"+format_number(data.einkommen_ress4);
	$("ress5_income").innerHTML = "+"+format_number(data.einkommen_ress5);

	// Nahrungseinkommen
	var nahrung = data.einkommen_ress6 - data.bewohner;
	if( nahrung >= 0 ) $("ress6_income").innerHTML = "+"+format_number(nahrung);
	else $("ress6_income").innerHTML = "<font style=\"color:red;\">"+format_number(nahrung)+"</font>";
}

// Ignoriere Storage
function set_check_ignore_storage()
{
	
}

// Anfrage mit param2 ausführen
function send_request_param2(to_url, param1, id_field)
{
	return send_request(to_url, param1, $(id_field).value);
}

// Scripts extrahieren und ausführen
function evalScript(scripts)
{
	try
	{	if(scripts != '')
		{
			var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
	       	                         if (scripts !== null) script += arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{
		alert(e)
	}
}

// Anfrage ausführen
function send_request(to_url, param1, param2)
{
	if( param1 == undefined ) param1 = '';
	if( param2 == undefined ) param2 = '';

	new Ajax.Request(to_url,
		{
			method:'post',
			parameters: { 'param1' : param1, 'param2' : param2 },
			onCreate: function()
			{
				if( $('ajax_loader') ) Element.show('ajax_loader');
			},
			onSuccess: function(transport)
			{
				var result = transport.responseText.evalJSON();

				// Nachricht
				if( result.message && result.message != '' )
				{
					$('ajax_flash_txt').innerHTML = result.message;
					new Effect.Appear('ajax_flash_msg', { duration: 2.0 });
					new Effect.Fade('ajax_flash_msg', { duration: 3.0, from: 1, to: 0.99, queue: 'end' });
					new Effect.Fade('ajax_flash_msg', { duration: 3.0, from: 0.99, to: 0, queue: 'end' });
				}

				// Item entfernen (Das das nun erforscht, gebaut, etc. wird)
				if( result.remove_item && result.remove_item != '' ) Element.hide(result.remove_item);

				// Queue
				if( result.queue )
				{
					$('queue_div').innerHTML = result.queue;
					Element.show('queue_box');
					evalScript(result.queue);
				}
				else Element.hide("queue_box");

				// Ignore Storage
				if( result.check_ignore_storage )
				{
					$('message_space').innerHTML = result.check_ignore_storage;
					Element.show('message_space');
				}

				// Ressourcen setzen
				set_ressources(result.ressources);

				Element.hide('ajax_loader');
			}
	});
}

// Number format
function format_number(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1))
	{
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}

// Befehle setzen
var old_sel = '';
function sel_order(nr)
{
	// Das alte abwählen
	if( old_sel != '' ) $('order'+old_sel).removeClass('order_button_selected');

	// Setzen
	old_sel            = nr;
	$('auftrag').value = nr;
	$('order'+nr).addClass('order_button_selected');
}

// Ressourcen für Transport setzen
function setRess(nr)
{
	if( $("input_ress"+nr) ) $("input_ress"+nr).value = ress[nr];
}

function setAllRess(prozent)
{
	val = prozent / 100;

	for( var i=1 ; i<7 ; i++ )
	{
		if( $("input_ress"+i) ) $("input_ress"+i).value = Math.round(ress[i] * val);
	}
}

function setFieldRess()
{
	if( $("prozentField") ) setAllRess($("prozentField").value);
}

// Smiley einfügen
function insertSmilie( smilie )
{
	if( $("EingabeText") ) $("EingabeText").value += smilie;
}

// Markierungen
function markierecheck (set)
{
	for ( var i=0; i<anzahl*2; i++) if( document.formular.elements[i] ) document.formular.elements[i].checked = set;
}

function markiereSeite ()
{
	var set = false;

	if( document.formular.selall && (document.formular.selall.checked == true) )
	{
		set = true;
	}

	markierecheck(set);
}

function markieredeselect ()
{
	if (document.formular.alleAufSeite) document.formular.alleAufSeite.checked = false;
}

function invertSeite ()
{
	for ( var i=0; i<anzahl*2; i++)
	{
		if (document.formular.elements[i].checked == false) document.formular.elements[i].checked = true;
		else document.formular.elements[i].checked = false;
	}
	if (document.formular.alleAufSeite) document.formular.alleAufSeite.checked = false;
	if (document.formular.alleInvert) document.formular.alleInvert.checked = false;
}

// Layer für Ress, Konst, ... Info
function display_info(type, id)
{
	new Ajax.Updater('info_inner_layer', '/info/get_info',
		{
			method:'post',
			parameters: { 'type' : type, 'id' : id },
			onCreate: function()
			{
				if( $('ajax_loader') ) Element.show('ajax_loader');
			},
			onSuccess: function(transport)
			{
				//var result = transport.responseText.evalJSON();

				Element.show('info_layer');
				$('info_layer').scrollTo();
				Element.hide('ajax_loader');
			}
	});
}