/*
	Erstellen eines neuen Request-Objektes
	reqType: GET oder POST
	url: URL des Serverprogrammes
	asynch: Anforderung wird asynchron gesendet oder nicht
*/
var request = null;
var url = "ajax_actions.php";

function httpRequest(reqType, url, asynch, respHandle){
	if(window.XMLHttpRequest){
		request = new XMLHttpRequest();
	}else if (window.ActiveXObject){
		request = new ActiveXObject("Msxml.XMLHTTP");
		if(!request){
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	if(request){
		if(reqType.toLowerCase() != "post"){
			//keine POST-Daten -> vier Parameter
			initReq(reqType, url, asynch, respHandle);
		}else{
			//POST-Daten als f�nften Parameter mitgeben
			var args = arguments[4];
			if(args != null && args.length >0){
				initReq(reqType, url, asynch, respHandle, args);
			}
		}
	}else{
		alert("Ihr Browser unterst&uuml;tzt nicht alle Funktionen dieser Seite!");
	}
}


/*
	Initialisieren eines Request-Objektes
*/
function initReq(reqType, url, asynch, respHandle){
	try{
		request.onreadystatechange = handleResponse;
		request.open(reqType, url, asynch);
		if(reqType.toLowerCase() == "post"){
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			request.send(arguments[4]);
		}else{
			request.send(null);
		}
	}catch(error){
		alert("keine Verbindung zum Server\nbitte versuchen Sie es noch einmal" +
			"Fehlerinformation " + error.message);
	}
}

function editEntry(obj,id){
	var value = obj.value;
	switch(obj.name){

		//Datumsformat von dd.mm.yyyy in yyyy-mm-dd konvertieren
		case 'datum':
			value = obj.value.substr(6,4) + '-' + obj.value.substr(3,2) + '-' + obj.value.substr(0,2);
			document.getElementById('datum' + id).style.backgroundColor = "white";
		break;

		//Dezimalkomma in Dezimalpunkt konvertieren und Eingabefelder formatieren
		case 'vorbereitung':
			document.getElementById('vorbereitung'+id).value = String(Number(value.replace(",",".")).toFixed(2)).replace(".",",");
			value = value.replace(",",".");
			calculateEntry(id);
		break;
		case 'anreise':
			document.getElementById('anreise'+id).value = String(Number(value.replace(",",".")).toFixed(2)).replace(".",",");
			value = value.replace(",",".");
			calculateEntry(id);
		break;
		case 'pause':
			document.getElementById('pause'+id).value = String(Number(value.replace(",",".")).toFixed(2)).replace(".",",");
			value = value.replace(",",".");
			calculateEntry(id);
		break;
		case 'rueckreise':
			document.getElementById('rueckreise'+id).value = String(Number(value.replace(",",".")).toFixed(2)).replace(".",",");
			value = value.replace(",",".");
			calculateEntry(id);
		break;

		case 'start':
		case 'ende':
			calculateEntry(id);
		break;
	}

	var data = "action=editEntry&id=" + id + "&fieldname=" + encodeURIComponent(obj.name) + "&value=" + encodeURIComponent(value);
	httpRequest("POST", url, true, handleResponse, data);
}

function delEntry(id){
	// Datensatz l�schen
	var data = "action=delEntry&id=" + id;
	httpRequest("POST", url, true, handleResponse, data);
	// Gesamtsumme reduzieren
	var gesamt_alt = Number(document.getElementById('zeit-gesamt'+id).innerHTML.replace(",","."));
	var summe_alt = Number(document.getElementById('summe').innerHTML.replace(",","."));
	var summe_neu = summe_alt - gesamt_alt;
	document.getElementById('summe').innerHTML = summe_neu.toFixed(2).replace(".",",");
	// Zeilen aus der HTML-Tabelle l�schen
	var table = document.getElementById('formular');
	var line1 = document.getElementById('zeile1_' + id);
	var line2 = document.getElementById('zeile2_' + id);
	var line3 = document.getElementById('zeile3_' + id);
	table.removeChild(line1);
	table.removeChild(line2);
	table.removeChild(line3);

}


function editSheet(obj,id){
	var value = obj.value;
	var data = "action=editSheet&id=" + id + "&fieldname=" + encodeURIComponent(obj.name) + "&value=" + encodeURIComponent(value);
	httpRequest("POST", url, true, handleResponse, data);
}


function handleResponse(){
	if(request.readyState == 4){
		if(request.status == 200){
			document.getElementById("responseText").innerHTML = request.responseText + '<br />' + document.getElementById("responseText").innerHTML;
			var response = eval("(" + request.responseText + ")");
			switch (response.fieldname){
				case "projekt":
				document.getElementById("auftrag").value = "";
				editSheet(document.getElementById("auftrag"),response.id);
				document.getElementById("netzplan").innerHTML = response.netzplan;
				document.getElementById("projektname").innerHTML = response.projektname;
				document.getElementById("auftragname").innerHTML = response.auftragname;
				document.getElementById("kundenname").innerHTML = response.kundenname;
				document.getElementById("kunde").value = response.kunde;
				editSheet(document.getElementById("kunde"),response.id);
				break;

				case "auftrag":
				document.getElementById("projekt").value = "";
				editSheet(document.getElementById("projekt"),response.id);
				document.getElementById("netzplan").innerHTML = response.netzplan;
				document.getElementById("auftragname").innerHTML = response.auftragname;
				document.getElementById("projektname").innerHTML = response.projektname;
				document.getElementById("kundenname").innerHTML = response.kundenname;
				document.getElementById("kunde").value = response.kunde;
				editSheet(document.getElementById("kunde"),response.id);
				break;
				
				case "kostenstelle":
				document.getElementById("kstname").innerHTML = response.kstname;
				break;
			}
			if(response.message){
				document.getElementById("message").innerHTML = response.message;
			}
		}
	}
}

