﻿g_reqPool = new Array();
function onXmlHttpReadyStateChange()
{
	for (var i in g_reqPool)
	{
		var o = g_reqPool[i];
		if (o.XmlHttp.readyState != 4) continue;
		if (o.XmlHttp.status == 200 && o.XmlHttp.responseText != "")
		{
			if (o.Callback)
			{
				if (!o.HTML) o.Callback(o.XmlHttp.responseXML);
				else o.Callback(o.XmlHttp.responseText);
			}
		}
		else
		{
			if (o.ErrorHandler) o.ErrorHandler(o.XmlHttp.status);
		}
		delete g_reqPool[i];
		
	}
}
function convertObjectToPostData(obj)
{
	if (obj == null) return;
	var key = "";
	var s = "";
	for (k in obj)
	{
		s += encodeURIComponent(k);
		s += "=";
		s += encodeURIComponent(obj[k]);
		s += "&";
	}
	s += Math.random();
	return s;
}
function SendRequest(url, obj, callback, errorHandler, html)
{
    //url = g_UrlPrefix + url;
	var o = new RequestItem(url, convertObjectToPostData(obj), callback, errorHandler, html);
	if (o.XmlHttp)
	{
		//g_reqPool.push(o);
		g_reqPool[g_reqPool.length] = o;
		o.XmlHttp.onreadystatechange = onXmlHttpReadyStateChange;
		if (o.Data) o.XmlHttp.open("POST", o.Url, true);
		else o.XmlHttp.open("GET", o.Url, true);
		o.XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		if (o.Data) o.XmlHttp.send(o.Data);
		else o.XmlHttp.send();
	}
}
function RequestItem(url, data, callback, errorHandler, html)
{
	this.Url = url;
	this.Data = data;
	this.Callback = callback;
	this.ErrorHandler = errorHandler;
	this.HTML = html;
	try
	{
		try
		{
			this.XmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(e)
		{
			this.XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");	
		}
	}
	catch (e)
	{
		try
		{
			this.XmlHttp = new XMLHttpRequest();
		}
		catch (e)
		{
			return;
		}
	}
}