var req;
var reqTimeout;
var reg_element;

function loadXMLDocPOST(url, param, element_id, callbackOK, callbackFAILED) 
{
	document.getElementById(element_id).innerHTML = "<img src='images/loading.gif'>";
	
    req = null;
	xmlDom = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){ }
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){ }
        }
    }

    if (req) {
		reg_element = element_id;
        req.onreadystatechange = processReqChange;
		req.callbackOK = callbackOK;
		req.callbackFAILED = callbackFAILED;
        req.open("POST", url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", param.length);
		req.setRequestHeader("Connection", "close"); 
        req.send(param);
        reqTimeout = setTimeout("req.abort();",20000);
    } else {
        alert("Браузер не поддерживает AJAX");
    }
}

function loadXMLDoc(url, element_id, callbackOK, callbackFAILED) 
{	
	if(element_id)
		document.getElementById(element_id).innerHTML = "<img src='images/loading.gif'>";
	
    req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){ }
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){ }
        }
    }

    if (req) {
		reg_element = element_id;
        req.onreadystatechange = processReqChange;
		req.callbackOK = callbackOK;
		req.callbackFAILED = callbackFAILED;
        req.open("POST", url, true);
        req.send(null);
        reqTimeout = setTimeout("req.abort();",20000);
    } else {
        alert("Браузер не поддерживает AJAX");
    }
}
 
function processReqChange() 
{ 

    if (req.readyState == 4) 
	{
        clearTimeout(reqTimeout);
        // only if "OK"
        if (req.status == 200)
		{			
			if(req.callbackOK && req.responseText=="OK")
			{
				eval(req.callbackOK);
				document.getElementById(reg_element).innerHTML = "";
			}
			else if(req.callbackFAILED && req.responseText=="FAILED")
			{
				eval(req.callbackFAILED);
				if(reg_element)
				document.getElementById(reg_element).innerHTML = "";
			}
			else if(reg_element)
				document.getElementById(reg_element).innerHTML = req.responseText;
		}
        else if (reg_element)
			document.getElementById(reg_element).innerHTML = "Не удалось получить данные:\n" + req.statusText;
    }  
	//else document.getElementById(element_id).innerHTML = "Cannot load list :(";
}
