function Ajax(){
	this.url="";
	this.params="";
	this.method="GET";
	this.onSuccess=null;
	this.successparams = false;
	this.onError=function(msg){
		alert(msg)
	}
}
Ajax.prototype.doRequest=function(){
	if(!this.url){
		this.onError("Es wurde keine URL angegeben.\nDer Request wird abgebrochen.");
		return false;
	};
	if(!this.method){
		this.method="GET";
	}else{
		this.method=this.method.toUpperCase();
	}
	var xmlHttpRequest=getXMLHttpRequest();
	if(!xmlHttpRequest){
		this.onError("Es konnte kein XMLHttpRequest-Object 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);
					var result = xmlHttpRequest.onreadystatechange = readyStateHandler;
					xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
					xmlHttpRequest.send(this.params);
					break;
					return result;
	}
	function readyStateHandler(){
		if(xmlHttpRequest.readyState < 4){
			return false;
		}
		if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304){
			if(_this.onSuccess){
				if(_this.successparams){	
					return _this.onSuccess(_this.successparams, xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
				}else{
					return _this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
				}
			}
		}else{
			if(_this.onError){
				return _this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenuebertragung 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;
}