﻿//#######################################################################	
var request = false;
var ip_address = '';
//#######################################################################	
// Request senden
function setRequest(sURL,sParams,sID,sFunction,bFade,sCheck) {
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		// Request öffnen
		request.open('POST', sURL, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		// Request senden
		if(sParams != null)request.send(sParams + '&dummy='+ String(Math.random() * 25));
		else request.send(null);
		
		// Request auswerten
		request.onreadystatechange = 	function () {
	  	switch (request.readyState) {
		  	// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
			  case 4:
				  if (request.status != 200) {
					  //alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
					  break;
				  } else {
					  var content = request.responseText;
            // den erwarteten Wert pruefen
					  var bOK = false;
						if(content.substring(0,2) == sCheck){
							bOK = true;
							content = content.substring(2,content.length); 
							}
					  //alert(content);
					  // den Inhalt des Requests in das div schreiben
					  if(bOK && sID != null){		  	
					  	if(bFade)$("#"+sID).fadeOut("fast");
					  	$("#"+sID).html(content);
					  	if(bFade)$("#"+sID).fadeIn("slow");
					    }
					  if(bOK && sFunction != null)eval(sFunction);
					  // rekursiv nochmal gesamte Funktion aufrufen, wenn erwartete Pruefwert nicht empfangen wurde
					  if(!bOK){setRequest(sURL,sParams,sID,sFunction,bFade,sCheck);}	
				  }
				  break;
			  default:
  				break;
	    }
	  }//readystatechange
  }
}
//#######################################################################	
function setRequestXML(sURL,sParams,sID_Array,sFunction,bFade,sCheck) {
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		// Request öffnen
		request.open('POST', sURL, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		// Request senden
		if(sParams != null)request.send(sParams + '&dummy='+ String(Math.random() * 25));
		else request.send(null);
		// Request auswerten
		request.onreadystatechange = 	function () {
	  	switch (request.readyState) {
		  	// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
			  case 4:
				  if (request.status != 200) {
					  //alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
					  break;
				  } else {
				  	var daten = request.responseText;
            // den erwarteten Wert pruefen
            //alert(daten);
				  	var bOK = false;
						if(daten.substring(0,2) == sCheck){
							bOK = true;
							daten = daten.substring(2,daten.length); 
							}
						//$("#ptest").html(daten);
				  	if(bOK)daten = eval(daten);
				  	// get all named variables
				  	for(var i = 0; i < sID_Array.length && bOK; i++){
					    var sValue = daten[0][sID_Array[i]];
					    //alert('-'+sValue+'-');
					    // den Inhalt des Requests in das div schreiben
					    if(sID_Array[i] != null)
					    	{
					    	if(bFade)$("#"+sID_Array[i]).fadeOut("fast");
					  		document.getElementById(sID_Array[i]).innerHTML = sValue;
					  		//$("#"+sID_Array[i]).html(sValue);
					  		if(bFade)$("#"+sID_Array[i]).fadeIn("slow");	
					  		}
					    }
						// folge Funktion ausfuehren  
					  if(bOK && sFunction != null)eval(sFunction);
					  // rekursiv nochmal gesamte Funktion aufrufen, wenn erwartete Pruefwert nicht empfangen wurde
					  if(!bOK){setRequestXML(sURL,sParams,sID_Array,sFunction,bFade,sCheck);}				  	
				  }
				  break;
			  default:
  				break;
	    }
	  }//readystatechange
  }
}
//=====================================================================================================
function getContent(sURL,sParams,sID,sFunction,errorFunction)
{
//	Show_WaitBox();
	var sCheck = String(Math.random() * 25);
	if(sParams == null)sParams = 'dummy='+ sCheck;
	else sParams = sParams + '&dummy='+ sCheck;
	//alert(sURL);
	$.ajax({
		type: "POST",   
		url: sURL,
		data: sParams, 
		async: false,
		success: function(content){
			var bOK = true;
			//alert(content);
			if(content.substring(0,sCheck.length) == sCheck){
				bOK = true;
				content = content.substring(sCheck.length,content.length); 
				}
			if(ip_address == '80.150.30.114' && debug)alert(content + " nach " + sID);
			// wenn gueltige Pruefung im Request einen Fehler ergibt -> Fehler anzeigen
			if(content.substring(0,6) == "#ERROR"){
				bOK = false;
				//Hide_WaitBox();
				Show_Error(content,errorFunction);
				}		
			if(bOK && sID != null){
					if($("#"+sID).is("input"))$("#"+sID).val(content);
					if($("#"+sID).is("span"))$("#"+sID).html(content);
					if($("#"+sID).is("div"))$("#"+sID).html(content);						
				}
			if(bOK){
				if(sFunction != null)eval(sFunction);
				}
			}
	});
//	if(bHide)Hide_WaitBox();
	
}
//=====================================================================================================
function getContentArray(sURL,sParams,sID,sFunction,errorFunction)
{
	//Show_WaitBox();
	var ip_address = $("#ip_address").html();
	var sCheck = String(Math.random() * 25);
	if(sParams == null)sParams = 'dummy='+ sCheck;
	else sParams = sParams + '&dummy='+ sCheck;
	//alert(sURL);
	$.ajax({
		type: "POST",   
		url: sURL,
		data: sParams, 
		async: false,
		success: function(content){
			var bOK = true;
			if(ip_address == '80.150.30.114' && debug)alert(content);
			if(content.substring(0,sCheck.length) == sCheck){
				bOK = true;
				content = content.substring(sCheck.length,content.length); 
				}
			//alert(content + " nach " + sID);
			// wenn gueltige Pruefung im Request einen Fehler ergibt -> Fehler anzeigen
			if(content.substring(0,6) == "#ERROR"){
				bOK = false;
			//	Hide_WaitBox();
				Show_Error(content,errorFunction);
				}		
				
			if(bOK)content = eval(content);
			// get all named variables
			for(var i = 0; i < sID.length && bOK; i++){
				var thisvalue = content[0][sID[i]];
				if(sID[i] != null){
					if($("#"+sID[i]).is("input"))$("#"+sID[i]).val(thisvalue);
					if($("#"+sID[i]).is("span"))$("#"+sID[i]).html(thisvalue);
					if($("#"+sID[i]).is("div"))$("#"+sID[i]).html(thisvalue);						
					}
				}
				//
			if(bOK){
				if(sFunction != null)eval(sFunction);
				}	
		}
	});	
	//if(bHide)Hide_WaitBox();
}
//=====================================================================================================
function Show_Error(errorNumber,errorFunction){
	var message = "";
	var errorNumberPart1 = "";
	if(errorNumber == "#ERROR_Login")
		{
		if(language == "d")message = "Zugriff verweigert! Die Zugangsdaten sind nicht korrekt!";
		if(language == "e")message = "Access denied! The entered data were not correct!";
		}
	else if(errorNumber.indexOf('|') > 0)
		{ // 
		params = errorNumber.split('|');	
		message = params[1];
		errorNumberPart1 = params[0];
		}
	else
		{
		if(language == "d")message = "Fehler in der Datenabfrage";
		if(language == "e")message = "Error on request!";
		}
// Meldung anzeigen	
	$("#modalMessage").dialog('option', 'buttons', { "Ok": function() { $(this).dialog("close"); } });
	if(language == "d")$("#modalMessage").dialog('option', 'title', 'Fehler');
	if(language == "e")$("#modalMessage").dialog('option', 'title', 'Error');
	$("#modalMessage").html(message);
	$("#modalMessage").dialog('open');
	if(errorFunction != null)eval(errorFunction); 
	// Module aktualisieren, welche Sitzungabhaengig sind
	if(errorNumberPart1 == "#ERROR_Session")Refresh_Modules();
	Hide_Wait();
}
//=====================================================================================================