function CAjax()
{
	this.http = navigator.appName == 'Microsoft Internet Explorer' ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
	this.DstObjId = new Array();
	this.Req = new Array();
	this.Func = new Array();
	this.Request = new Array();
}

CAjax.prototype._EvalQueue = function()
{
	if(this.http.readyState == 0 || this.http.readyState == 4) if(this.Req.length > 0) this._Post(this.DstObjId.shift(), this.Req.shift(), this.Func.shift(), "d=" + this.Request.shift().Get());
}

CAjax.prototype._EnQueue = function(DstObjId, Req, Func, Request)
{
	this.DstObjId.push(DstObjId);
	this.Req.push(Req);
	this.Func.push(Func);
	this.Request.push(Request);
	this._EvalQueue();
}

CAjax.prototype._Post = function(DstObjId, Req, Func, Request)
{
	this.http.abort();
	try
	{
		this.http.open('POST', Req, true);
	}
	catch(e)
	{
		alert(e);	
	}
	this.http.onreadystatechange = function()
	{
		if(Ajax.http.readyState == 4)
		{
			var Response = new CData();
			Func(Response.Decode(Ajax.http.responseText, Session.GetK()), DstObjId);
			Ajax._EvalQueue();
		}
	}
	this.http.setRequestHeader('Pragma', 'no-cache');
	this.http.setRequestHeader('Cache-Control', 'must-revalidate');
	this.http.setRequestHeader('If-Modified-Since', document.lastModified);
	this.http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	this.http.send(Request);
}

CAjax.prototype.Post = function(DstObjId, Req, Func, Request)
{
	this._EnQueue(DstObjId, Req, Func, Request);
}
