var RequestStack = new Array();

function LoadData(URL,FuncName,RequestName,Method,Data)
{
	//alert(URL);
	if (!Method) Method = 'GET';
	if (!Data) Data = null;
	var RequestIndex=FindRequest(RequestName);
	if(RequestIndex===false)
	{
		RequestIndex=RequestStack.length;
		RequestStack[RequestIndex]=new Object();
		RequestStack[RequestIndex].name=RequestName;
	}
	if(RequestStack[RequestIndex].Request)
		return false;
	if (window.XMLHttpRequest)
	{
		RequestStack[RequestIndex].Request = new XMLHttpRequest();
		if(FuncName)
			eval("RequestStack[RequestIndex].Request.onreadystatechange="+FuncName);
		else
			RequestStack[RequestIndex].Request.onreadystatechange = ProcessRequestChange;
		RequestStack[RequestIndex].Request.open(Method, URL, true);
		if (Method == 'POST') {
		  // many server-side scripts require the Content-Type to be set:
  		RequestStack[RequestIndex].Request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			//RequestStack[RequestIndex].Request.setRequestHeader('Connection', 'close');
		}
		RequestStack[RequestIndex].Request.send(Data);
	} else if (window.ActiveXObject)
	// branch for IE/Windows ActiveX version
	{
		RequestStack[RequestIndex].Request = new ActiveXObject("Microsoft.XMLHTTP");
		if (RequestStack[RequestIndex].Request)
		{
			if(FuncName)
				eval("RequestStack[RequestIndex].Request.onreadystatechange="+FuncName);
			else
				RequestStack[RequestIndex].Request.onreadystatechange = ProcessRequestChange;
			RequestStack[RequestIndex].Request.open(Method, URL, true);
			if (Method == 'POST') {
			  // many server-side scripts require the Content-Type to be set:
	  		RequestStack[RequestIndex].Request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			}
			RequestStack[RequestIndex].Request.send(Data);
		}
	}
  return true;
}

function UnsetRequest(RequestName)
{
	var RequestIndex=FindRequest(RequestName);
	if(RequestIndex!==false)
	{
		delete RequestStack[RequestIndex].Request;
		RequestStack[RequestIndex].Request=false;
	}
}
function FindRequest(RequestName)
{
	var RequestIndex=false;
	for(var i=0;i<RequestStack.length;i++)
	{
		if(RequestStack[i].name===RequestName)
		{
			RequestIndex=i;
			break;
		}
	}
	return RequestIndex;
}
function GetXMLResponse(RequestName)
{
	var RequestIndex=FindRequest(RequestName);
  if (RequestIndex!==false)
  {
    if (RequestStack[RequestIndex].Request.readyState == 4)
    {
  		if (RequestStack[RequestIndex].Request.status == 200)
  		{
            if (RequestStack[RequestIndex].Request.responseXML == null) return false;
  				return RequestStack[RequestIndex].Request.responseXML;
  		}
    }
  }
  return false;
}
function GetTextResponse(RequestName)
{
	var RequestIndex=FindRequest(RequestName);
  if (RequestIndex!==false)
  {
    if (RequestStack[RequestIndex].Request.readyState == 4)
    {
  		if (RequestStack[RequestIndex].Request.status == 200)
  		{
            if (RequestStack[RequestIndex].Request.responseText == null) return false;
  				return RequestStack[RequestIndex].Request.responseText;
  		}
    }
  }
  return false;
}
