var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;
var objAjaxRequest;
var strAjaxCallBackFunction;
var strAjaxData;
var objAjaxData;

function send_ajax_request(strCallBackFunction, strUrl, strHttpMethod, strParams)
{
	strAjaxCallBackFunction = strCallBackFunction;
	
	if(!strHttpMethod)
		strHttpMethod = "POST";
		
	objAjaxRequest = get_ajax_request_object();
	
	if(objAjaxRequest)
	{
		objAjaxRequest.onreadystatechange = process_ajax_state_change;
		objAjaxRequest.open(strHttpMethod, strUrl, true);
		objAjaxRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		objAjaxRequest.send(strParams);
	}
}

function get_ajax_request_object()
{
	var objRequest = null;
	if(window.XMLHttpRequest)
	{
		objRequest = new XMLHttpRequest(); // Mozilla / Safari
	}
	else if (typeof ActiveXObject != "undefined")
	{
		objRequest = new ActiveXObject("Microsoft.XMLHTTP"); // MSIE
	}
	
	return objRequest;
}

function process_ajax_state_change()
{
	var intState = objAjaxRequest.readyState;
	
	if(intState == READY_STATE_COMPLETE)
	{
		strAjaxData = objAjaxRequest.responseText;
		objAjaxData = parse_xml_to_object(strAjaxData);
		eval (strAjaxCallBackFunction+"(objAjaxRequest);");
		strAjaxData = null;
	}
}


function parse_xml_to_object(strAjaxData)
{
	try //Internet Explorer
	{
		objXMLDoc=new ActiveXObject("Microsoft.XMLDOM");
		objXMLDoc.async="false";
		objXMLDoc.loadXML(strAjaxData);
		return objXMLDoc;
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			objParser =new DOMParser();			
			objParser.parseFromString(strAjaxData,"text/xml");
			return objParser;
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
}


