function getXMLHttpRequest()
{
	var request = null;

	if(window.XMLHttpRequest) request = new XMLHttpRequest(); //FF, IE7...
	else if(window.ActiveXObject) //IE6 und älter 
	{
		try	{ request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e)
		{
			try { request  = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(e) { request = null; }
		}
	}
	
	return request;
}

function formatRequestURL(method, url)
{
	if(method == "GET")
	{
		var concat = (url.indexOf("?") < 0) ? "?" : "&"; 
		var url = url + concat + "cached=" + new Date().getTime();
	} 

	return url;
}

function callAjax(url, response, xml, method, async)
{
	httpRequest = getXMLHttpRequest();
	if(httpRequest == null) return false;
	
	responseHandler = response;
	
	if(xml == null) var xml = false;
	httpRequest.xml = xml;
	
	if(method == null) var method = "GET"; 
	httpRequest.method = method;
	
	if(async == null) var async = true;
		
	var url = formatRequestURL(httpRequest.method, url);
	
	httpRequest.open(httpRequest.method, url, async);
	httpRequest.onreadystatechange = responseCallback;
		
	ajaxRequest = new Object();
	
	ajaxRequest.setRequestHeader = httpRequest.setRequestHeader;
	ajaxRequest.sendRequest = sendXMLHttpRequest;	
	
	return ajaxRequest;
}

function sendXMLHttpRequest(container, content)
{
	httpRequest.contentContainer = container;
	
	if(httpRequest.method == "GET") 
	{
		httpRequest.send(null);
	}
	else if(httpRequest.method == "POST")
	{
		httpRequest.send(content);
	}
}

function responseCallback()
{
	var loading = relProjectImages + '/global/loading.gif'; 
	
	if(httpRequest.readyState == 4) //completed
	{	
		if(httpRequest.contentContainer != null)
		{
			document.getElementById(httpRequest.contentContainer).innerHTML = '';
		} 
	
		if(httpRequest.status == 200)
		{			
			if(responseHandler != null)
			{
				responseResult = httpRequest.xml ? httpRequest.responseXML : httpRequest.responseText;
				responseHandler(responseResult, httpRequest.contentContainer);
			}					
		}
		else { alert(httpRequest.status + " - " + httpRequest.statusText); }
	}
	else //uninitialized > loading > loaded > interactive
	{
		if(httpRequest.contentContainer != null)
		{
			document.getElementById(httpRequest.contentContainer).innerHTML = '<img src="' + loading + '" class="loading">';
		}
	}
}
