function myAJAX() {
	this.ajax         = true;
	this.forbidden    = "_forbidden";
	this.not_found    = "_not_found";
	this.server_error = "_server_error";

	if (window.XMLHttpRequest) { // gecko-browser & opera
    	this.http_request = new XMLHttpRequest();
		if (this.http_request) {
			try {
				this.http_request.overrideMimeType('text/xml');
			} catch(e) {}
		}
	} else if (window.ActiveXObject) { // IE
	    try {
		    this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e) {
    	    try {
    		    this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) { this.ajax = false;}
		}
	} else {
		this.ajax = false;
	}
}
/**
 * Default Callback-Funktionen
 */
myAJAX.prototype.onforbidden = function () {
	alert("ERROR 403: forbidden!");
}
myAJAX.prototype.onnot_found = function () {
	alert("ERROR 404: document not found!");
}
myAJAX.prototype.onserver_error = function () {
	alert("ERROR 500: internal server error!");
}
myAJAX.prototype.onready = function (text) {
	alert("Data successfull retrieved!");
}

/**
 * Sendet eine Anfrage an den Server und ruft bei erfolg eine callback-funktion auf
 *
 * callback:  Callback-Funktion "function callback(response_xml) {}"
 * url:       Url, die abgerufen werden soll
 * post:      Variablen, die an die aufzurufende Seiten übergeben werden
 *
 * gibt true bei erfolg zurück, sonst false;
 */
myAJAX.prototype.fetch_data = function (url,post,xml) {
	if (this.ajax) {
		var me = this;
		this.http_request.onreadystatechange = function () {
			switch (me.http_request.readyState) {
				case 4:
					switch (me.http_request.status) {
						case 201:
						case 202:
						case 203:
						case 200:
							if (xml)
								me.onready(me.http_request.responseXML);
							else
								me.onready(me.http_request.responseText);
							break;
						case 403:
							me.onforbidden();
							break;
						case 404:
							me.onnot_found();
							break;
						case 500:
							me.onserver_error();
							break;
					}
				default:
					break;
			}
		};
		this.http_request.open('POST', url, true);
		this.http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		this.http_request.send(post);
		return true;
	}
	return false;
}
