/**
* Filename................: xmlrequest.js
* Project.................: web pages SDK
* Last Modified...........: $Date: 23/2/2007 13:40:49 $
* CVS Revision............: $Revision: 0.3.1 $
* Idea and Developed by...: Maxim Bulygin (sailormax@gmail.com)
*/

// check browsers
	var ua = {
		str:	navigator.userAgent,
		opera:	false,
		safari:	false,
		konq:	false,
		ie:		false,
		moz:	false,
		mozilla: false,
		other:	false
		};
	var tmp;

	if (tmp = ua.str.match(/opera.([0-9\.]+)/i))
		ua.opera	= tmp[1];
	else if (tmp = ua.str.match(/safari.([0-9\.]+)/i))
		ua.safari	= tmp[1];
	else if (tmp = ua.str.match(/konqueror.([0-9\.]+)/i))
		ua.konq	= tmp[1];
	else if (tmp = ua.str.match(/msie.([0-9\.]+)/i))
		ua.ie		= tmp[1];
	else if (tmp = ua.str.match(/mozilla.([0-9\.]+)/i))
		ua.mozilla = ua.moz = tmp[1];
/* end browser checks */



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(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)
//					self.request.responseText = self.request.statusText;
/*
				else if (self.request.status == 404)
					alert("Error: URL doesn't exist!");
				else
					alert("Error: " + self.request.statusText);
*/
				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 (typeof(self.request.abort) == "undefined") self.request.abort();
				self.request = null;
			}
		};
		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;
}
