function AJAXObject() {
	var self = this;
	var http_request = false;
	var callbackFunction;

	this.createRequestObject = function() {
		try {
			this.http_request = new XMLHttpRequest();
		} catch (e) {
			var success = false;
			var iExplorer = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');

			for (var i = 0; i < iExplorer.length && !success; i++) {
				try {
					this.http_request = new ActiveXObject(iExplorer[i]);
					success = true;
				} catch (e) {
				}
			}

			if (!success) {
				alert("Es kann kein Request Objekt erzeugt werden.");
			}
		}
	}

	this.doRequest = function(url, callbackFunction) {
		this.callbackFunction = callbackFunction;

		this.abort();

		var pos = url.indexOf("?");

		if (pos == -1) {
			this.http_request.onreadystatechange = myHandler;
			this.http_request.open("GET", encodeURI(url), true);
			this.http_request.send(null);
		} else {
			var script = url.substring(0, pos);
			var parameters = url.substring(pos + 1, url.length);

			this.http_request.onreadystatechange = myHandler;
			this.http_request.open("POST", script, true);
			this.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.http_request.setRequestHeader("Content-length", parameters.length);
			this.http_request.setRequestHeader("Connection", "close");
			this.http_request.send(parameters);
		}
	}

	var myHandler = function() {
		if (self.http_request.readyState == 4) {
			if (self.http_request.status == 200) {
				if (typeof self.callbackFunction == 'function') {
					eval(self.callbackFunction(self.http_request.responseText));
				}
			} else {
				if (self.http_request.status != 0) {
					alert("Error [" + self.http_request.status + "]: " + self.http_request.statusText);
				}
			}
		}
	}

	this.abort = function() {
		this.http_request.abort();
	}
}

