function AJAX(url) {
	var queryString = '';
	var status = 0;
	var statusText = '';
	var responseText = '';
	var responseHeaders = '';
	
	var asyncHttpRequest;
	var requestHeader = new Object();
	var handleResponse = function() { return true; }
	
	function initialize() {
		asyncHttpRequest = null;
		if (typeof XMLHttpRequest != 'undefined') {
			asyncHttpRequest = new XMLHttpRequest();
		}
		if (!asyncHttpRequest) {
			// Internet Explorer 6 und älter
			try {
				asyncHttpRequest  = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					asyncHttpRequest  = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					asyncHttpRequest  = null;
					throw 'Could not initialize AJAX API!';
				}
			}
		}

		asyncHttpRequest.onreadystatechange = function() {
			if (asyncHttpRequest.readyState == 2) {
				status = asyncHttpRequest.status;
				statusText = asyncHttpRequest.statusText;
				responseHeaders = asyncHttpRequest.getAllResponseHeaders();
			}
			if (asyncHttpRequest.readyState == 3) {
				status = asyncHttpRequest.status;
				statusText = asyncHttpRequest.statusText;
				responseHeaders = asyncHttpRequest.getAllResponseHeaders();
				responseText = asyncHttpRequest.responseText;
			}
			if (asyncHttpRequest.readyState == 4) {
				status = asyncHttpRequest.status;
				statusText = asyncHttpRequest.statusText;
				responseHeaders = asyncHttpRequest.getAllResponseHeaders();
				responseText = asyncHttpRequest.responseText;
				initialize();
				handleResponse();
			}
		}
	}
	
	this.setUrl = function(__url) {
		url = __url;
	}
	
	this.getUrl = function() {
		return url;
	}
	
	this.getResponseText = function() {
		return responseText;
	}
	
	this.getResponseHeaders = function() {
		return responseHeaders;
	}
	
	this.getStatusText = function() {
		return statusText;
	}
	
	this.getStatus = function() {
		return status;
	}
	
	this.setQueryString = function(__queryString) {
		queryString = __queryString;
	}
	
	this.getQueryString = function() {
		return queryString;
	}
	
	this.setCallbackFunction = function(__func) {
		handleResponse = __func;
	}
	
	this.getCallbackFunction = function() {
		return handleResponse;
	}

	this.addRequestHeader = function(name, value) {
		requestHeader[name] = value;
	}
	
	this.removeRequestHeader = function(name) {
		requestHeader[name] = null;
	}
	
	this.abort = function() {
		return asyncHttpRequest.abort();
	}
	
	this.get = function() {
		asyncHttpRequest.open('GET', url, true);
		
		for (e in requestHeader) {
			var currentHeader = requestHeader[e];
			asyncHttpRequest.setRequestHeader(e, currentHeader);
		}
			
		asyncHttpRequest.send(queryString);
		
		return true;
	}
	
	this.post = function() {
		this.addRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		asyncHttpRequest.open('POST', url, true);
		
		for (e in requestHeader) {
			var currentHeader = requestHeader[e];
			asyncHttpRequest.setRequestHeader(e, currentHeader);
		}
			
		asyncHttpRequest.send(queryString);

		return true;
	}
	
	initialize();
}
