var xmlHttp;

function GetXmlHttpObject(handler)
{ 
    var objXmlHttp = null;
    if (!window.XMLHttpRequest)
    {
        // Microsoft
        objXmlHttp = GetMSXmlHttp();
    }
    else
    {
        // IE7, Mozilla | Netscape | Safari
        objXmlHttp = new XMLHttpRequest();
    } 
    if (objXmlHttp != null && handler != null)
    {
        objXmlHttp.onreadystatechange = handler;
    }
    return objXmlHttp; 
} 

function GetMSXmlHttp() 
{
    var xmlHttp = null;
    var clsids = ["Msxml2.XMLHTTP.6.0",
                  "Msxml2.XMLHTTP.4.0",
                  "Msxml2.XMLHTTP.3.0"];
    for(var i=0; i<clsids.length && xmlHttp == null; i++) {
        xmlHttp = CreateXmlHttp(clsids[i]);
    }
    return xmlHttp;
}

function CreateXmlHttp(clsid) 
{
    var xmlHttp = null;
    try {
        xmlHttp = new ActiveXObject(clsid);
        lastclsid = clsid;
        return xmlHttp;
    }
    catch(e) {}
}

function SendXmlHttpRequest(xmlhttp, asyncCall, url, params) 
{ 
	parametersString = "";
    for (paramName in params) {
		if (parametersString != "")
			parametersString += "&";
		paramValue = params[paramName];
		parametersString += paramName + "=" + escape(paramValue);
	}

    xmlhttp.open('POST', url, asyncCall); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", parametersString.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(parametersString);
}

function ExecuteASyncServerCall(url, params, callBackfunc)
{ 
    try 
    { 
        xmlHttp = GetXmlHttpObject(callBackfunc);
        SendXmlHttpRequest(xmlHttp, true, url, params); 
    }
    catch(e){} 
}

function ExecuteSyncServerCall(url, params)
{ 
    try 
    { 
        xmlHttp = GetXmlHttpObject(null);
        SendXmlHttpRequest(xmlHttp, false, url, params); 
        return xmlHttp.responseText;
    }
    catch(e){} 
}