  	function Ajax() {
    	// Eigenschaften deklarieren und initialisieren
    	this.url="";
    	this.params="";
    	this.method=null;
    	this.onSuccess=null;
    	this.onError=function(msg) {
      		alert(msg);
    	}
  	}
  
  	Ajax.prototype.doRequest=function() {
    	// Inhalt der Methode doRequest()
    	// Ü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();
			if (this.method != "GET" && this.method != "POST") {
				this.onError("Es wurde keine gueltige Methode angegeben.");
				return false;
			}
    	}
    
    	// Zugriff auf Klasse für readyStateHandler ermöglichen
    	var _this = this;
    
    	// XMLHttpRequest-Objekt erstellen
    	var xmlHttpRequest=getXMLHttpRequest();
    
		if (!xmlHttpRequest) {
		  this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
		  return false;
		}
		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
		// Der Zugriff auf die Mezhoden des Ajax-Objektes erfolgt über _this
    	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 Datenuebertragung auf.");
        		}
      		}
    	}
  	}
  
  	// Gibt browserunabhängig ein XMLHttpRequest-Objekt zurück
	function getXMLHttpRequest() {
		if (window.XMLHttpRequest) {
			// XMLHttpRequest für Firefox, Opera, Safari, ...
			return new XMLHttpRequest();
		} else if (window.ActiveXObject) {
		  	try {
		    	// XMLHTTP (neu) für Internet Explorer
		    	return new ActiveXObject("Msxml2.XMLHTTP");      
			} catch(e) {
        		try {
          			// XMLHTTP (alt) für Internet Explorer
          			return new ActiveXObject("Microsoft.XMLHTTP");
        		} catch (e) {
					// kein XMLHttpRequest möglich
          			return null;
        		}
      		}
	  	}
	  	return null;
	}

