var my_ajax = function(){

	this.queue = new Array();
	this.queuePos = 0;
	this.ready = 1;

	this.onStartRequest = function(){};
	this.onEndQueue     = function(){};

	this.sendRequest = function(url,callback,postData,q)
	{
		if(this.ready || q)
		{
			if(q)
				this.queuePos++;
			else
				this.onStartRequest();

			var req = this.createXMLHTTPObject();
			if (!req) return;

			var method = (postData) ? "POST" : "GET";

			this.ready=0;

			//console.info(url);
			req.open(method,url,true);
			req.setRequestHeader('User-Agent','XMLHTTP/1.0');
			req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
			req.setRequestHeader('X-Requested-With','XMLHttpRequest');

			req.onreadystatechange = function ()
			{
				if(req.readyState != 4) {return;}
				if(req.status != 200 && req.status != 304)
				{
					window.alert('HTTP error ' + req.status);
					return;
				}
				if(typeof(callback)=="function")
					callback(req);
				else if(typeof(callback)=="object")
					callback.callback(req);


				if(my_ajax.queuePos<my_ajax.queue.length)
				{
					my_ajax.sendRequest(my_ajax.queue[my_ajax.queuePos]['url'],my_ajax.queue[my_ajax.queuePos]['callback'],my_ajax.queue[my_ajax.queuePos]['postData'],1);
				}
				else
				{
					my_ajax.queuePos=my_ajax.queue.length;
					my_ajax.onEndQueue();
					my_ajax.ready=1;
				}

			}
			if (req.readyState == 4) return;
			req.send(postData);
		}
		else
		{
			this.queue[this.queue.length]={'url':url,'callback':callback,'postData':postData};
		}
	}

	this.XMLHttpFactories = [
		function () {return new XMLHttpRequest()},
		function () {return new ActiveXObject("Msxml2.XMLHTTP")},
		function () {return new ActiveXObject("Msxml3.XMLHTTP")},
		function () {return new ActiveXObject("Microsoft.XMLHTTP")}
	];

	this.createXMLHTTPObject = function()
	{
		var xmlhttp = false;
		for (var i=0;i < this.XMLHttpFactories.length;i++) {
			try {
				xmlhttp = this.XMLHttpFactories[i]();
			}
			catch (e) {
				continue;
			}
			break;
		}
		return xmlhttp;
	}
};

my_ajax = new my_ajax();

function kiir(resp){
	eval(resp.responseText);
}
