function zXmlHttp()
{
}

zXmlHttp.createRequest = function()
{
    if(typeof XMLHttpRequest != "undefined")
    {
        return new XMLHttpRequest();
    }
    else
    {
        var zXmlVersion = null;
        var zXmlVersions = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"];
        for(var i=0; i<zXmlVersions.length; i++)
        {
            try
            {
                new ActiveXObject(zXmlVersions[i]);
                zXmlVersion = zXmlVersions[i];
                break;
            }
            catch(oError)
            {
            }
        }
		
        if(zXmlVersion)
        {
            return new ActiveXObject(zXmlVersion);
        }
        else
        {
            throw new Error("Ваш браузер не поддерживает XML HTTP Request!");
        }
    }
};

function LoadingAlert(action)
{
    if(action == "show")
    {
        document.body.style.cursor = "wait";
    }
    if(action == "hide")
    {
        document.body.style.cursor = "default";
    }
}

function LoadingErrorAlert(error)
{
    window.defaultStatus = "Ошибка загрузки: "+error;
}

function XmlHttp(idArray, uri, queryArray)
{
    var queryString = "";
    var syncStatus = true;
	
    if(idArray.length == 0)
    {
        syncStatus = false;
    }
	
    for(i in queryArray)
    {
        queryString += i+"="+escape(encodeURI(queryArray[i]))+"&";
    }
    queryString = queryString.substr(0, queryString.length-1);

    var oXmlHttp = zXmlHttp.createRequest();
	
    if(typeof XMLHttpRequest == "undefined")
    {
        LoadingAlert("show");
    }
	
    oXmlHttp.open("POST", uri, syncStatus);
    oXmlHttp.onreadystatechange = function()
    {
        if(oXmlHttp.readyState == 1 && typeof XMLHttpRequest != "undefined")
        {
            LoadingAlert("show");
        }
        if(oXmlHttp.readyState == 4)
        {
            if(oXmlHttp.status == 200)
            {
                LoadingAlert("hide");
                for(i in idArray)
                {
                    window.location.hash="main_body";
                    document.getElementById(String(idArray[i])).innerHTML = oXmlHttp.responseText;
                }

            }
            else
            {
                LoadingAlert("hide");
                LoadingErrorAlert(oXmlHttp.statusText);
            }
        }
    }
	
    oXmlHttp.setRequestHeader("Method", "POST '"+uri+"' HTTP/1.1");
    oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    oXmlHttp.send(queryString);
	
    if(!syncStatus)
    {
        return oXmlHttp.responseText;
    }
}
