function Ajax() {
	
	// Basis Eigenschaften festlegen	
	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;
	}
			
	if(!this.method) {
		this.method = "GET";
	}
	else {
		this.method = this.method.toUpperCase();
	}
	
	// XML HTTP Request-Objekt erzeugen
	var xmlHttpRequest = getXMLHttpRequest();
	if(!xmlHttpRequest) {
		this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
		return false;
	}
	
	// Zugriff auf Klasse ermöglichen da außerhalb
	var _this = this;
	
	// Art der Übetragung prüfen
	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;	
	}
	
	// Verarbeitung der 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+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenübertragung auf.");
			}	
		}
	}
}

// Unabhängiges XMLHttpRequest-Objekt erzeugen
function getXMLHttpRequest() 
{
	if(window.XMLHttpRequest) {
		// FF + Opera + Safari
		return new XMLHttpRequest();
	}
	else {
		if(window.ActiveXObject) {
			try {
				// IE7
				return new ActiveXObject("Msxml2.XMLHTTP");	
			}
			catch(e) {
				try {
					// IE6 
					return new ActiveXObject("Microsoft.XMLHTTP");	
				}
				catch(e) {
					return null;
				}
			}
		}	
	}
	return null;
}
