function Ajax() {
	this.url="";
	this.params="";
	this.method="GET";
	this.onSuccess="null";
	this.onError=function(msg) {
		alert(msg)
	}
}

Ajax.prototype.doRequest=function() {
	if (!this.url) {
		this.onError("Es wurde keine URL angegeben. Der Request wird abgebrochen.");
		return false;
	}

	var xmlHttpRequest=getXMLHttpRequest();
	if (!xmlHttpRequest) {
		this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
		return false;
	}

	var _this = this;
	
	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;
	}
	
	function readyStateHandler() {
		if (xmlHttpRequest.readyState < 4) {
			return false;
		}
		if (xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304) {
			if (_this.onSuccess) {
				_this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
			}
		} else {
			if (_this.onError) {
				_this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenübertragung auf.");
			}
		}
	}
}

function getXMLHttpRequest() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				return null;
			}
		}
	}
	return null;
}
