/* XML http request functions */

var XMLHttpRequestResponce = null;
var XMLHttpRequestObject = null;

function GetXMLHttpRequest() 
{
	var object = null;
	
	if (window.XMLHttpRequest) 
	{
	    object = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{
	    try
	    {
		object = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
	    }
	    
	    if (object == null)
	    {
		try
		{
		    object = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
		}
	    }
	}
	
	if (object == null)
	{
	    alert("Your browser does not support AJAX");
	}
	
	return object;
}

function CallServer(objectname,callback,extend,url,content)
{
	if (XMLHttpRequestObject == null)
	{
		XMLHttpRequestObject = new Array();
	}
	
	if (objectname)
	{
		if(XMLHttpRequestObject[objectname] != null)
		{
			return false;
		}
	}	
                
	var requestObject = GetXMLHttpRequest();
	if (requestObject)
	{
		if (objectname)
		{
			XMLHttpRequestObject[objectname] = new Object();
			XMLHttpRequestObject[objectname].requestObject = requestObject;
			if (callback)
			{
				XMLHttpRequestObject[objectname].callback = callback;
			}
			if (extend)
			{
				XMLHttpRequestObject[objectname].extend = extend;
			}
			requestObject.onreadystatechange = new Function ("OnCallServerProcess('" + objectname + "')");
		}	
		
		requestObject.open("POST", url, true);
		requestObject.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=UTF-8" );
		requestObject.send(content);
	}
	
	return true;
}

function OnCallServerProcess(objectname)
{
	if (XMLHttpRequestObject[objectname] != null && XMLHttpRequestObject[objectname].requestObject &&
		XMLHttpRequestObject[objectname].requestObject.readyState == 4)
	{
		if (XMLHttpRequestObject[objectname].requestObject.status == 200) 
		{
			// Get responce
			var responce = XMLHttpRequestObject[objectname].requestObject.responseText;
			// Call callback
			if (XMLHttpRequestResponce == null)
			{
				XMLHttpRequestResponce = new Array();
			}
			XMLHttpRequestResponce[objectname] = new Object();
			XMLHttpRequestResponce[objectname].responce = responce;

			if (XMLHttpRequestObject[objectname].extend)
			{
				XMLHttpRequestResponce[objectname].extend = XMLHttpRequestObject[objectname].extend;
			}
			if (XMLHttpRequestObject[objectname].callback != null)
			{
				XMLHttpRequestObject[objectname].callback();
			}
			XMLHttpRequestObject[objectname] = null;
		}
		else
		{
			alert("Request failed: " + XMLHttpRequestObject[objectname].requestObject.status + " - " + XMLHttpRequestObject[objectname].requestObject.statusText + " status returned");
			XMLHttpRequestObject[objectname] = null;
		}
	}
}

function GetServerResponce(objectname)
{
	if (XMLHttpRequestResponce != null)
	{
		return XMLHttpRequestResponce[objectname].responce;
	}
}

function GetServerResponceExtend(objectname)
{
	if (XMLHttpRequestResponce != null)
	{
		return XMLHttpRequestResponce[objectname].extend;
	}
}
