// Ajax Engine
function Ajax() {
	this.url="";
	this.params="";
	this.method="GET";
	this.wrapper="";
	this.onSuccess=null;
	this.onError=function (msg) {
		alert(msg)
	}
}


Ajax.prototype.doRequest=function() {
	// Überprüfen der Angaben
	if (!this.url) {
		this.onError("Es wurde keine URL angegeben. Der Request wird abgebrochen.");
		return false;
	};
	
	if (!this.method) {
		this.method="GET";
	}else{
		this.method=this.method.toUpperCase();
	}

	//XMLHttpRequest-Objekt erstellen
	var xmlHttpRequest=getXMLHttpRequest();
	if (!xmlHttpRequest) {
		this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
		return false;
	}
	
	//Zugriff auf Klasse fuer readyStateHandler ermoeglichen
	var _this = this;
	
	//Fallunterscheidung nach Uebertragungsmethode
	switch (this.method) {
		case "GET": xmlHttpRequest.open(this.method, this.url+"?"+this.params, true);
					 xmlHttpRequest.onreadystatechange =readyStateHandler;
					 xmlHttpRequest.send(null);
					 break;
		case "POST": xmlHttpRequest.open(this.method, this.url, true);
					  xmlHttpRequest.onreadystatechange = readyStateHandler;
					  xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					  xmlHttpRequest.send(this.params);
					  break;
	}
	
	//Private Methode zur Verarbeitung der erhaltenen Daten
	function readyStateHandler() {
		if (xmlHttpRequest.readyState < 4) {
			return false;
		}
		if (xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304) {
			if (_this.onSuccess) {
				_this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML, _this.wrapper, _this.url);
			}
		}else{
			if (_this.onError) {
				_this.onError('Fehler beim Laden der Seite!', _this.wrapper);
			}
		}
	}
}

//Gibt browserunabhaengig ein XMLHttpRequest-Objekt zurueck
function getXMLHttpRequest()
{
	if (window.XMLHttpRequest) {
		//XMLHttpRequest fuer Firefox, Safari, Opera...
		return new XMLHttpRequest();
	}else
	if (window.ActiveXObject) {
		try {
			//XMLHTTP (neu) fuer Internet Explorer
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				//XMLHTTP (alt) fuer Internet Explorer
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				return null;
			}
		}
	}
	return null;
}
