/**
* Filename................: xmlrequest.js
* Project.................: web pages SDK
* Last Modified...........: $Date: 4/10/2005 01:01:36 $
* CVS Revision............: $Revision: 0.3.1 $
* Idea and Developed by...: Maxim Bulygin (sailormax@gmail.com)
*/

function getXMLObj()
{
	var res = null;
	try
		{ res = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e)
	{
		try
			{ res = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch(sc)
			{ res = null; }
	}
	
	if (!res && (typeof(XMLHttpRequest) != "undefined"))
		res = new XMLHttpRequest()

	return res;
}

/*
function sendXMLRequest(url, handler)
{
	var req = getXMLObj();
	if (req)
	{
		req.onreadystatechange = eval(handler);
		req.open("GET", url, true);
		req.send(null);
	}
	return req;
}
*/

function sendXMLRequest(reqNode)
{
	if (this.request)
	{
		var self = this;
		this.request.onreadystatechange = function()
		{
			/*
				this.req.readyState:
				0 = uninitialized
				1 = loading
				2 = loaded
				3 = interactive
				4 = complete
			*/
			if ((typeof(self.request) != "undefined") && (self.request.readyState == 4))
			{
				if (self.request.status == 200)
				{
					if (typeof(self.resp_func) == "function")
					{
						if (self.resp_param == null)
							self.resp_func(self.request.responseText);
						else
							self.resp_func(self.request.responseText, self.resp_param);
					}

					if (!mozilla)	// ff 1.0.x recursion bug
						self.request.abort();
					self.request = null;
				}
				else if (self.request.status == 404)
					alert("Error: URL doesn't exist!");
				else
					alert("Error: " + self.request.statusText);
			}
		};
		this.request.open(this.method, this.url, this.async);
		if (this.method.toLowerCase() == "post")
			this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

		if (typeof(this.data) == "string")
			this.request.setRequestHeader("Content-length", this.data.length);
		else
			this.request.setRequestHeader("Content-length", 0);

		this.request.setRequestHeader("Connection", "close");
		this.request.send(this.data);
		return 0;
	}
	return this.request;
}

function XMLRequest(resp_func, url)
{
	this.resp_func	= resp_func;
	this.url		= url;

	this.async		= true;
	this.method		= "GET";
	this.data		= null;
	this.resp_param = null;

	this.request	= getXMLObj();

	this.send		= sendXMLRequest;

	return this;
}

