var AJAX = {
    // переменные объекта
    POST : new Array(),
    GET : new Array(),
    text : null,
    xml : null,
    errtext : null,
    
    // Инициализация AJAX
    init : function() {
	if(window.XMLHttpRequest) 
	    AJAX.HTTP = new XMLHttpRequest();
	else if(window.ActiveXObject) 
	    AJAX.HTTP = new ActiveXObject("Microsoft.XMLHTTP");
    },
    
    onload : function() {
	if (AJAX.getfunc) {
	    func = String(AJAX.getfunc);
	    eval(func);
	}
    },
    
    request : function(file,getfunc) {
	AJAX.init();
	AJAX.setREQUEST(file,getfunc);
    },
    
    setGET : function(vname,value) {
	AJAX.GET[vname] = value;
    },
    
    setPOST : function(vname,value) {
	AJAX.POST[vname] = value;
    },
    
    setREQUEST : function(file,getfunc) {
	var v;
	var post;
	AJAX.getfunc = getfunc;
        AJAX.HTTP.abort(); //Закрываем предыдущие соеденение
	var url = file;
        if(AJAX.GET.length !== 0) {
    	    url += "?";
	    for(v in AJAX.GET) {
		url += v + "=" + encodeURIComponent(AJAX.GET[v]) + "&";
	    }
	}
	AJAX.HTTP.onreadystatechange = AJAX.readystate;
    
	if(AJAX.POST.length === 0) {
    	    AJAX.HTTP.open("GET", url, true);
	    post = null;
	} else {
	    AJAX.HTTP.open("POST", url, true);
	
	    post = "";
	    for(v in AJAX.POST) {
		post += v + "=" + encodeURIComponent(AJAX.POST[v]) + "&";
	    }   
	    AJAX.HTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	    AJAX.HTTP.setRequestHeader("Content-Length", post.length);
	}
	AJAX.HTTP.send(post);
	AJAX.GET  = new Array();
	AJAX.POST = new Array();
        AJAX.TIMEOUT = setTimeout("AJAX.etimeout();", 300000);
    },

    readystate : function() {
	if(AJAX.HTTP.readyState == 4) {
    	    clearTimeout(AJAX.TIMEOUT);  
	    AJAX.TIMEOUT = null;	  
	    if(AJAX.HTTP.status == 200) {
		AJAX.text = AJAX.HTTP.responseText;
		AJAX.xml = AJAX.HTTP.responseXML;
	        //Если событие onload отслеживается, то сгенерируем его
		if(AJAX.onload !== null) 
		    AJAX.onload();
	    } else {
	        //Ошибка!!! Если событие onerror отслеживается, то сгенерируем его
	        AJAX.errtext = AJAX.HTTP.statusText;
	        if(AJAX.onerror !== null) 
	    	    AJAX.onerror();
	    }
	}
    },
    
    etimeout : function() {
	//AJAX.HTTP.abort();
	AJAX.errtext = "Timeout";
	if(AJAX.onerror !== null)
	    AJAX.onerror();
    },
    
    onerror : function(){return;}
};

