var xmlHttp = createXHR();
var xmlData = null;
var open_status = false;
var open_func = null;

function createXHR()
{
	if (typeof XMLHttpRequest != "undefined") 
	{
		return new XMLHttpRequest();
	}
	else if (typeof ActiveXObject != "undefined")
	{
		if (typeof arguments.callee.activeXString != "string")
		{
			var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"];
			for (var i=0,len=versions.length; i < len; i++)
			{
				try {
					var xhr = new ActiveXObject(versions[i]);
					arguments.callee.activeXString = versions[i];
					return xhr;
				} catch (ex) {
					//skip
				}
			}
		}

	return new ActiveXObject(arguments.callee.activeXString);
	} else {
		return false;
	}
}

function getXmlHttp(url,params)
{
	xmlData = '';
	var Url = url;
	if (params != '') Url += '?' + params + '&random=' + Math.random();
	
    if (xmlHttp == false) { return false; }

	xmlHttp.onreadystatechange = ProcessRequest;
	xmlHttp.open( "GET", Url, open_status );
	xmlHttp.send( null );
}

function getXmlHttpText(url,params)
{
	xmlData = '';
	var Url = url;
	if (params != '') Url += '?' + params + '&random=' + Math.random();
	
    if (xmlHttp == false) { return false; }

	xmlHttp.onreadystatechange = ProcessRequestText;
	xmlHttp.open( "GET", Url, open_status );
	xmlHttp.send( null );
}

function ProcessRequestText()
{
	if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
	{
		xmlData = xmlHttp.responseText;
		if (open_func != null) open_func();
	}
}

function ProcessRequest()
{
	if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
		xmlData = eval( "(" + xmlHttp.responseText + ")" );
}

function ObjectPosition(obj) {
    var curleft = 0;
      var curtop = 0;
      if (obj.offsetParent) {
            do {
                  curleft += obj.offsetLeft;
                  curtop += obj.offsetTop;
            } while (obj = obj.offsetParent);
      }
      return [curleft,curtop];
}