var AjaxObjArray = new Array();


var AbsPfadPHP = "/";


function AjaxA(Id,AjaxParams,RequestObj,AjaxCallback,DebugFlag) {

	if (!AjaxObjArray[Id]) AjaxObjArray[Id] = new AjaxAsynchron();

	AjaxObjArray[Id].setId(Id);
	AjaxObjArray[Id].setParams(AjaxParams);
	AjaxObjArray[Id].setRequestObj(RequestObj);
	AjaxObjArray[Id].setCallback(AjaxCallback);
	AjaxObjArray[Id].setDebugFlag(DebugFlag);
	AjaxObjArray[Id].Send();

}

function AjaxAsynchron() {

	var AjaxObj = new XMLHttpRequest; 
	var Id = "";
	var Params = "";
	var RequestObj = "";
	var Callback = "";
	var DebugFlag = "";
	var AjaxDatei = "Ajax.php";


	this.setId = function(Wert) {
		Id = Wert;
	}

	this.setParams = function(Wert) {
		Params = Wert;
	}

	this.setRequestObj = function(Wert) {
		RequestObj = Wert;
	}

	this.setCallback = function(Wert) {
		Callback = Wert;
	}

	this.setDebugFlag = function(Wert) {
		DebugFlag = Wert;
	}
	
	this.Send = function() {
		var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+Params;

		if (DebugFlag) Debug('AjaxSynchron: "'+Id+'" | Aufruf: '+Aufruf);

		AjaxObj.open('POST',Aufruf,true);
		AjaxObj.setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
		AjaxObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		if (RequestObj) AjaxObj.onreadystatechange = ChkResponse;
		AjaxObj.setRequestHeader("Connection", "close");
		AjaxObj.send(Params);
	}
	
	function ChkResponse() {
		if (AjaxObj.readyState == 4) {
			if (Number(AjaxObj.status) == 200 || Number(AjaxObj.status) == 0) {
				if (RequestObj && Callback) {
					if (RequestObj[Callback]) {
						if (AjaxObj.responseXML) {
							XMLFehler = AjaxObj.responseXML.getElementsByTagName('ERROR');
							for (var iFehler=0;iFehler < XMLFehler.length;iFehler++) Debug(XMLFehler[i].firstChild.nodeValue);
							RequestObj[Callback](AjaxObj.responseXML,AjaxObj.responseText);
							if (DebugFlag) Debug('AjaxSynchron: "'+Id+'" | responseText: '+AjaxObj.responseText);
						} else {
							if (Id == "AjaxChk") {
								alert ("Ajax Fehler - KEINE DATEN! Netzwerkverbindung?\n\nProgramm wird beendet!\n\nMehr Informationen unter http://www.appcomplete.at");
								for (SysCodeFenster in ArrayFenster) {
									if (ArrayFenster[SysCodeFenster].SysCodeFensterInstanz && SysCodeFenster != "System" && SysCodeFenster != "Navigationsbaum") {
										ArrayFenster[SysCodeFenster].close();
									}
								}
								window.close();
							}
						}
					} else {
						alert ("FEHLER: '"+RequestObj+"' '"+Callback+"' ist nicht definiert!");
					}
				}
			} else {
				alert("Ajax | Fehler: "+AjaxObj.status+" Datei: "+AjaxDatei);
			}
		}
	}
}


function AjaxS (Id,AjaxParams,DebugFlag) {

	var AjaxDatei = "Ajax.php";

	var ObjAjaxInfo = "";
	var ObjAjaxInfoFertig = "";

	if (!DebugFlag) DebugFlag = false;

	var self = this;

	this.AjaxDatei;
	this.AjaxParams;
	this.RequestObj;
	this.AjaxCallback;

	var AjaxObj = new XMLHttpRequest;
	
	try {
		if (!AjaxObjArray.in_array(Id)) AjaxObjArray.push(Id);
	} catch(err) {
		Debug(err,"FEHLER");
	}

	var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+AjaxParams;

	if (DebugFlag) Debug('AjaxSynchron: "'+Id+'" | Aufruf: '+Aufruf);

	AjaxObj.open('POST',Aufruf,false);
	AjaxObj.setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
	AjaxObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	AjaxObj.setRequestHeader("Content-length", AjaxParams.length);
	AjaxObj.setRequestHeader("Connection", "close");
	
	try {
		AjaxObj.send(AjaxParams);
	} catch (err) {
		Debug("Id = "+Id+" "+err,"FEHLER");
	}

	if (DebugFlag) Debug('AjaxSynchron: "'+Id+'" | responseText: '+AjaxObj.responseText);
	

	//if (AjaxObj.responseXML.getElementsByTagName('ERROR').length) for (var i=0;i<AjaxObj.responseXML.getElementsByTagName('ERROR').length;i++) Debug('AjaxS: "'+Id+'" | '+AjaxObj.responseXML.getElementsByTagName('ERROR')[i].firstChild.nodeValue,'FEHLER');

	XMLFehler = AjaxObj.responseXML.getElementsByTagName('ERROR');
	for (var iFehler=0;iFehler < XMLFehler.length;iFehler++) Debug(XMLFehler[iFehler].firstChild.nodeValue);

	return AjaxObj.responseXML;

}

/*

function Ajax(Id) {

	var self = this;

	this.AjaxDatei;
	this.AjaxParams;
	this.RequestObj;
	this.AjaxCallback;

	//Debug ('Ajax: '+Id+' RequestObj: '+RequestObj+' AjaxCallback: '+AjaxCallback+' erstellt');

	var AjaxObj = new XMLHttpRequest;

	if (!AjaxObjArray.in_array(Id)) AjaxObjArray.push(Id);

	this.Get = function(AjaxDatei,AjaxParams,RequestObj,AjaxCallback) {

		this.AjaxDatei = AjaxDatei;
		this.AjaxParams = AjaxParams;
		this.RequestObj = RequestObj;
		this.AjaxCallback = AjaxCallback;

		var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+encodeURI(AjaxParams);

		//Debug('Ajax Aufruf Get: '+Aufruf);

		AjaxObj.open('GET',Aufruf,true);
		AjaxObj.setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
		AjaxObj.setRequestHeader('Connection','close');
		if (this.RequestObj) AjaxObj.onreadystatechange = ChkResponse;
		AjaxObj.send(null);

	}

	function ChkResponse() {

		if (AjaxObj.readyState == 4) {

			if (Number(AjaxObj.status) == 200) {

				//Debug (AjaxObj.responseText);
				//if (AjaxObj.getResponseHeader('Content-Type') == 'text/xml') {
				//	var Response = AjaxObj.responseXML;
				//} else {
				//	var Response = AjaxObj.responseText;
				//}

				if (self.RequestObj && self.AjaxCallback) {
					if (self.RequestObj[self.AjaxCallback]) {
						self.RequestObj[self.AjaxCallback](AjaxObj.responseXML,AjaxObj.responseText,AjaxObj);
					} else {
						Debug ("FEHLER: '"+self.RequestObj+"' '"+self.AjaxCallback+"' ist nicht definiert!","FEHLER");
					}
				}

				//if (this.StatusAktion) {

				//}

				//Debug('AjaxObjId: '+Id+' | AjaxResponseText: '+AjaxObj.responseText);
			} else {
				Debug("Ajax | Fehler: "+AjaxObj.status+" Datei: "+self.AjaxDatei,'FEHLER');
			}

		}
	}
}

function ChkAjax() {

	return false;
}





function AjaxSynchron(Id,AjaxDatei,AjaxParams,AjaxDebug) {


	var ObjAjaxInfo = "";
	var ObjAjaxInfoFertig = "";

	var self = this;

	var AjaxObj = new XMLHttpRequest;

	if (!AjaxObjArray.in_array(Id)) AjaxObjArray.push(Id);

	var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+encodeURI(AjaxParams);

	AjaxObj.open('GET',Aufruf,false);
	AjaxObj.setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
	AjaxObj.setRequestHeader('Connection','close');
	AjaxObj.send(null);


	return AjaxObj.responseXML;

}

*/

/*
function AjaxSynchron(Id,AjaxDatei,AjaxParams) {

	var self = this;

	this.AjaxDatei;
	this.AjaxParams;
	this.RequestObj;
	this.AjaxCallback;

	var AjaxObj = new XMLHttpRequest;

	if (!AjaxObjArray.in_array(Id)) AjaxObjArray.push(Id);

	var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+encodeURI(AjaxParams);

	Debug ('Aufruf AjaxSynchron: '+Aufruf);

	AjaxObj.open('GET',Aufruf,false);
	AjaxObj.setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
	AjaxObj.setRequestHeader('Connection','close');
	AjaxObj.send(null);

	return AjaxObj.responseXML;

}
*/



/*
function AjaxAsynchronA (Id,AjaxParams,RequestObj,AjaxCallback,DebugFlag) {

	var self = this;

	if (!AjaxObjArray[Id]) AjaxObjArray[Id] = new XMLHttpRequest;


	this.Id = Id;
	this.AjaxDatei = AjaxDatei;
	this.AjaxParams = AjaxParams;
	this.RequestObj = RequestObj;
	this.AjaxCallback = AjaxCallback;

	var Aufruf = AbsPfadPHP+AjaxDatei+'?Time='+new Date().getTime()+this.AjaxParams;

	if (DebugFlag) Debug('AjaxSynchron: "'+Id+'" | Aufruf: '+Aufruf);

	AjaxObjArray[Id].open('POST',Aufruf,true);
	AjaxObjArray[Id].setRequestHeader('If-Modified-Since','Sat, 20 May 2000 00:00:00 GMT');
	AjaxObjArray[Id].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	if (this.RequestObj) AjaxObjArray[Id].onreadystatechange = ChkResponse;
	AjaxObjArray[Id].setRequestHeader("Connection", "close");
	AjaxObjArray[Id].send(this.AjaxParams);

	function ChkResponse() {
		if (AjaxObjArray[self.Id].readyState == 4) {
			if (Number(AjaxObjArray[self.Id].status) == 200 || Number(AjaxObjArray[self.Id].status) == 0) {
				if (self.RequestObj && self.AjaxCallback) {
					if (self.RequestObj[self.AjaxCallback]) {
						self.RequestObj[self.AjaxCallback](AjaxObjArray[self.Id].responseXML,AjaxObjArray[self.Id].responseText,AjaxObjArray[self.Id]);
						if (DebugFlag) Debug('AjaxSynchron: "'+self.Id+'" | responseText: '+AjaxObjArray[self.Id].responseText);
					} else {
						Debug ("FEHLER: '"+self.RequestObj+"' '"+self.AjaxCallback+"' ist nicht definiert!",'FEHLER');
					}
				}
			} else {
				alert("Ajax | Fehler: "+AjaxObj.status+" Datei: "+self.AjaxDatei);
			}
		}
	}
}
*/

