
// if bXml is true, make sure that the server-side script starts with sending a "Content-type: text/xml" header!
//
// (The supported MIME types for MSXML 6.0 are: "text/xml", "application/xml" or anything that ends with "+xml", for example "application/rss+xml".
//	The supported MIME types for versions prior to MSXML 6.0 are: "text/xml", "application/xml".
//	Zie: <http://msdn2.microsoft.com/en-us/library/ms757066.aspx>)

function CreateHttpRequestObj(sCallbackFunction, bXml) 
{ 
	var objRequest = null; 
	if (window.XMLHttpRequest) // Mozilla, Safari, MSIE7,...
	{ 
		objRequest = new XMLHttpRequest(); 
		if (objRequest.overrideMimeType)
			objRequest.overrideMimeType('text/xml');
	}
	else if (window.ActiveXObject) // IE 
	{
		try
		{ 
			objRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
		}
		catch (e)
		{ 
			try
			{ 
				objRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
			}
			catch (e) {} 
		} 
	}

	if (objRequest && sCallbackFunction)
	{
		objRequest.onreadystatechange = function()
		{ 
			if (objRequest.readyState == 4)
			{ 
				if (objRequest.status == 200)
				{ 
					if (bXml)
						eval(sCallbackFunction + '(objRequest.responseXML)'); 
					else 
						eval(sCallbackFunction + '(objRequest.responseText)'); 
				}
				else
					alert('There was a problem with the request.(Code: ' + objRequest.status + ' => ' + objRequest.statusText + ')'); 
			} 
		} 
	}

	return objRequest; 
}

function MakeGetRequest(sUrl, sQuery, sCallbackFunction, bXml) 
{
	var objRequest = CreateHttpRequestObj(sCallbackFunction, bXml); 
	if (!objRequest)
		return false; 

	objRequest.open('GET', sUrl + "?" + sQuery, true); 
	objRequest.send(null);
	return true;
}

function MakePostRequest(sUrl, sQuery, sCallbackFunction, bXml) 
{
	var objRequest = CreateHttpRequestObj(sCallbackFunction, bXml); 
	if (!objRequest)
		return false; 

	objRequest.open('POST', sUrl, true); 
	objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objRequest.setRequestHeader("Content-Length", sQuery.length);
	objRequest.setRequestHeader("Connection", "close");
	objRequest.send(sQuery);
	return true;
}

