﻿//#######################################################################	
var request = false;

//#######################################################################	
// 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);
				  } 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){alert("i'll try again");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);
				  } else {
				  	var daten = request.responseText;
				  	// den erwarteten Wert pruefen
				  	var bOK = false;
						if(daten.substring(0,2) == sCheck){
							bOK = true;
							daten = daten.substring(2,daten.length); 
							}
						//alert(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){alert("i'll try again");setRequestXML(sURL,sParams,sID_Array,sFunction,bFade,sCheck);}
				  }
				  break;
			  default:
  				break;
	    }
	  }//readystatechange
  }
}
//#######################################################################	