var req;
var reqTimeout;
var tag;

var str;
var form_id;

// Ассинхронное обращение get с запросом подтверждения
function ajax_confirm(url,tag_id, text_confirm) {
	if (confirm(text_confirm))
		ajax(url,tag_id);
	return false;
}

// Ассинхронное обращение get
function ajax(url,tag_id) {
		if (req!=undefined)
			return false;
		url = url + "&ajax=on";
		tag=tag_id;
    // для "родного" XMLHttpRequest
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = req_change;
        req.open("GET", url, true);
        req.send(null);
    // для версии с ActiveX
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = req_change;
            req.open("GET", url, true);
            req.send();
        }
    }
    if (req)
    	reqTimeout = setTimeout( function(){ req.abort(); handle_error("Timeout") }, 20000);
}

// Ассинхронное обращение post
function ajax_post() {
		url = arguments[0] + "&ajax=on"; 
		tag=arguments[1];
		form_id=document.getElementById(arguments[2]);
		
		for (i=0;i<form_id.elements.length;i++)  {
			if (i==0)
					str=form_id.elements[i].name + "=" + encodeURIComponent( form_id.elements[i].value );
			else
					str+="&" + form_id.elements[i].name + "=" + encodeURIComponent( form_id.elements[i].value );
		}

    // для "родного" XMLHttpRequest
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = req_change;
        req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        req.send(str);
    // для версии с ActiveX
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = req_change;
            req.open("POST", url, true);
            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
            req.send(str);
        }
    }
    if (req)
    	reqTimeout = setTimeout( function(){ req.abort(); handle_error("Timeout") }, 20000);
    return false;
}

function req_change() {
    // только при состоянии "complete"
    if (req.readyState == 4) {
    		clearTimeout(reqTimeout);
        // для статуса "OK"
        if (req.status!=undefined && req.status == 200) {
           make_result(req.responseText);     
           req=undefined;
		} 
		else if (req.status!=undefined && req.status == 302 ) {			
			req=undefined;
			ajax(document.location,tag);
		}
		else {
            //handle_error(req.statusText);
            req=undefined;
        }
    }
}

function handle_error(message) {
	req=undefined;
	//alert(message);	
}

function make_result(result) {
	var elem = document.getElementById(tag);
	if(elem!=undefined)
	elem.innerHTML=result;
}