
function getXMLHttpRequest()
{
	if(window.XMLHttpRequest)
	{
		// XMLHttpRequest für Firefox, Opera, Safari...
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		try
		{
			// XMLHTTP (neu) für IE
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				// XMLHTTP (alt) für IE
				return new ActivXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				return null;
			}
		}
	}
	return null;
}

function Ajax()
{
	this.url = "";
	this.params = "";
	this.method = "GET";
	this.onError = alertError;
	this.onSuccess = null;
	
	function alertError(msg)
	{
		alert(msg)
	}
}

Ajax.prototype.doRequest = function() 
{
	//Inhalt von doRequest
	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();
	}


	var xmlHttpRequest = getXMLHttpRequest();
	
	if(!xmlHttpRequest)
	{
		this.onError("Es konnte kein XMLHttpRequest-Objekt erzeugt werden.");
		return false;
	}
	
	var _this = this;
	
	switch (this.method)
	{
		case "GET":	xmlHttpRequest.open(this.method, this.url+"?"+this.params, true);
					xmlHttpRequest.onreadystatechange = readyStateHandler;
					xmlHttpRequest.setRequestHeader("Pragma", "no-cache");
					xmlHttpRequest.setRequestHeader("Cache-Control", "must-revalidate");
					xmlHttpRequest.setRequestHeader("If-Modified-Since", document.lastModified);
					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.setRequestHeader("Pragma", "no-cache");
					xmlHttpRequest.setRequestHeader("Cache-Control", "must-revalidate");
					xmlHttpRequest.setRequestHeader("If-Modified-Since", document.lastModified);
					xmlHttpRequest.send(this.params);
					break;
	}
	
	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.");		
			}
		}
	}
}