var isIE = 0; // и лучше бы так было всегда
if (navigator.appName == "Microsoft Internet Explorer") var isIE = 1;


var reqStack = new Array();
var reqBusy = 0;

function SPXMCL()
{
   	var t=document.getElementsByTagName("body")[0];
	var div=document.createElement('div');
	
	/*messageCont = t.insertBefore(div,t.firstChild); 

    messageCont.innerHTML = 'a shob ti sdoh,padla';
    
    messageCont.style.backgroundColor = '#FF0000';
    messageCont.style.width = '250px';
    messageCont.style.height = '30px';
    messageCont.style.color = '#f0ff00';
    messageCont.style.paddingTop = '7px';
    messageCont.style.paddingLeft = '15px';
    
    messageCont.style.position = 'absolute';
    messageCont.style.zIndex = '500';
    messageCont.style.top = '3';
    messageCont.style.right = '0';
    
    messageCont.style.display = 'none';    
    
    this.messageCont = messageCont;*/
    
    this.url = '';
    this.method = 'GET';
    this.params = new Array();
    this.result_to = 'return';
    this.timeout = 5000;
    
    this.doR = doR;
    this.setMes = setMes;
    this.hideMes = hideMes;
    this.doAfter = doAfter;
    this.param2str = param2str;
    this.addParam = addParam;
    this.clearParams = clearParams;
    
    
    function setMes(mes)
	{
		/*this.messageCont.innerHTML = mes;
		this.messageCont.style.display = 'block';*/
	}
	
	function hideMes()
	{
		//this.messageCont.style.display = 'none';
	}
	
	function doR(onreadyfunc,url)
	{	
		if (reqBusy)
		{
			var tmp = new Array();
			tmp['am'] = this;
			tmp['onreadyfunc'] = onreadyfunc;
			tmp['url'] = url;
			
			reqStack[reqStack.length] = tmp;
			
		}else
		{
				req = null;
	
			    if (window.XMLHttpRequest) {
			        try {
			            req = new XMLHttpRequest();
			        } catch (e){alert(e.type)}
			    } else if (window.ActiveXObject) {
			        try {
			            req = new ActiveXObject('Msxml2.XMLHTTP');
			        } catch (e){
			            try {
			                req = new ActiveXObject('Microsoft.XMLHTTP');
			            } catch (e){alert(e.type)}
			        }
			    }
			    
			    if (!req) alert('Nevozmozhno sozdat\' AJAX modul\'');
			    
			    this.req = req;
			
			
			
			reqBusy = 1;			
			this.onreadyfunc = onreadyfunc;		
			this.req.onreadystatechange = this.doAfter;		
			result_to = this.result_to;	 
			onreadyfunc1 = onreadyfunc;
		    if (this.timeout)reqTimeout = setTimeout("this.req.abort();", this.timeout); 
		    this.req.open(this.method, url+this.param2str(), true);
		    this.req.send(null);
		    
		}
	        
	    
	}
	
	function addParam(name,val)
	{
		this.params[name] = val;
	}
	
	function clearParams()
	{
		this.params = new Array();
	}
	
	function param2str()
	{
		var str = '?1=1';
		for(i in this.params)
			str+='&'+i+'='+this.params[i];
			
		return str;
	}
	
	function doAfter()
	{		
		if (req.readyState == 4) 
		{
			reqBusy = 0;
			if (reqTimeout)clearTimeout(reqTimeout);
			if (result_to != 'return'){document.getElementById(result_to).innerHTML = req.responseText;}
			if (onreadyfunc1)onreadyfunc1(req.responseText);
			hideMes();

			
			if (reqStack.length)
			{
				var tmp = reqStack.pop();
				tmp['am'].doR(tmp['onreadyfunc'],tmp['url']);
			}
			
		} else setMes(stat(req.readyState))		
	}
	
	function stat(n)
	{
	  switch (n) {
	    case 0:
	      return "not init";
	    break;
	 
	    case 1: 
	      return "loading...";
	    break;
	 
	    case 2: 
	      return "loaded";
	    break;
	 
	    case 3: 
	      return "in progress...";
	    break;
	 
	    case 4: 
	      return "ready";
	    break;
	 
	    default:
	      return "unknown state";  
	  }  
	}
    
}