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

Ajax.prototype.doRequest=function(){
	
	
	// Überprüfen der Angaben
	if (!this.url) {
		this.onError("Es wurde kein 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 für readyStateHandler ermöglichen
		var _this = this;
		
		// Fallunterscheidung nach Übertragungsmethode
		switch(this.method) {
		
			case "GET":	xmlHttpRequest.open(this.method, this.url, 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.setRequestHeader("Cache-Control","no-cache, must-revalidate");
										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);
					}
				}else {
				
					if(_this.onError) {
						_this.onError("["+ xmlHttpRequest.status+ " " + _this.url + " "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenuebertragung auf.");
					}
				}
			}
		
		// Gibt browserunabhängig ein XMLHttpRequest-Objekt zurück
		function getXMLHttpRequest(){
		
			if (window.XMLHttpRequest) {
				
				// für Firefox, Safari, Opera
				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;
		}
	
}
