function XMLHttp()
{
}

XMLHttp.PostXML = function(url, data, OnReady)
{
	var req = XMLHttp.CreateXMLHttp();
	if (OnReady != null)
	{
		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
			{
				var dom = XMLHttp.CreateXMLDom();
				dom.async = false;
				dom.loadXML(req.responseText);
				if (dom.parseError.errorCode != 0)
					dom = null;
				OnReady(dom, req);
			}
		}
	}

	req.open("POST", url, OnReady != null);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(data);
	if (OnReady == null)
		return req;
}

XMLHttp.Post = function(url, data, OnReady)
{
	var req = XMLHttp.CreateXMLHttp();
	if (OnReady != null)
	{
		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
				OnReady(req);
		}
	}

	req.open("POST", url, OnReady != null);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(data);
	if (OnReady == null)
		return req;
}

XMLHttp.Get = function(url, OnReady)
{
	var req = XMLHttp.CreateXMLHttp();
	if (OnReady != null)
	{
		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
				OnReady(req);
		}
	}

	req.open("GET", url, OnReady != null);
	req.send(null);
	if (OnReady == null)
		return req;
}

XMLHttp.CreateXMLHttp = function()
{
	var xmlHttp = null;
	if (window.XMLHttpRequest != null)
		xmlHttp = new XMLHttpRequest();
	else
	{
		var clsids = [
			"Msxml2.XMLHTTP.6.0",
			"Msxml2.XMLHTTP.5.0",
			"Msxml2.XMLHTTP.4.0",
			"Msxml2.XMLHTTP.3.0",
			"Msxml2.XMLHTTP.2.6",
			"Microsoft.XMLHTTP.1.0",
			"Microsoft.XMLHTTP.1",
			"Microsoft.XMLHTTP"
			];
		for (var i = 0; i < clsids.length && xmlHttp == null; i++)
		{
			try { xmlHttp = new ActiveXObject(clsids[i]); }
			catch (e) { xmlHttp = null; }
		}
	}
	return xmlHttp;
}

XMLHttp.CreateXMLDom = function()
{
	var dom = null;
	var clsids = [
		"Msxml2.DOMDocument.6.0",
		"Msxml2.DOMDocument.5.0",
		"Msxml2.DOMDocument.4.0",
		"Msxml2.DOMDocument.3.0",
		"Msxml2.DOMDocument.2.6",
		"Microsoft.DOMDocument.1.0",
		"Microsoft.DOMDocument.1",
		"Microsoft.DOMDocument"
		];
	for (var i = 0; i < clsids.length && dom == null; i++)
	{
		try { dom = new ActiveXObject(clsids[i]); }
		catch (e) { dom = null; }
	}
	return dom;
}
