var ajax = null;

// Create HTTP Request Object
function createHttpRequest()
{
	var req = null;
	if(typeof XMLHttpRequest != "undefined")
	{
		req = new XMLHttpRequest();
	}
	else // IE or an other error occured
	{
		try
		{
			req = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(err_MSXML2)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(err_Microsoft)
			{
				alert('Sorry, no AJAX Requests supported by your browser');
			}
		}
	}
	return req;
}

// makes AJAX Request
function makeAsyncRequest(target, parameters, processresponsefunction, functionparameters, method, conntype)
{
	if(method==null) method = "POST";
	if(conntype==null) conntype = "Close"; // "Keep-Alive" or "Close"
	
	// local variable to avoid errors/problems while using same HTTPRequestObject multiple times
	var oHttpRequest = createHttpRequest();
	
	oHttpRequest.onreadystatechange = function() { handleAsyncRequestResponse(oHttpRequest, processresponsefunction, functionparameters); };
	
	oHttpRequest.open(method, target, true);
	oHttpRequest.setRequestHeader("Cache-Control", "no-cache");
	oHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	if(parameters != null)
	{
		oHttpRequest.setRequestHeader("Content-length", parameters.length);
	}
	
	oHttpRequest.setRequestHeader("Connection", conntype);
	// http_request.overrideMimeType('text/xml'); //??
	oHttpRequest.send(parameters);
}

// Handle Function, calls specific handler if ready
function handleAsyncRequestResponse(oHttpRequest,processresponsefunction, functionparameters)
{
	if(oHttpRequest.readyState == 4)
	{
		processresponsefunction(oHttpRequest, functionparameters);
		// eventually oHttpRequest should be cleared after handled:
		oHttpRequest = null;
	}
}

/* start new ajax request */
function loadajax(url, method, params, function_name)
{
	ajax = createHttpRequest();
	
	// init succeded
	if (ajax != null)
	{
		if(method == "GET")
		{
			ajax.onreadystatechange = function_name;
			ajax.open('GET',url,true)
			ajax.send(null)
		}
		else
			if(method == "POST")
			{
				ajax.onreadystatechange = function_name;
				ajax.open('POST',url,true)
				ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				ajax.setRequestHeader("Content-length", params.length);
				ajax.setRequestHeader("Connection", "close");
				ajax.send(params)
			}
	}
}