//	CLASS NAME	:	AJAXRequest


//	Parameter		:			Type
//  ---------					----
//	ajaxReqHandler	:			Function
//	urlToSend		:			String


function AJAXRequest(ajaxReqHandler, urlToSend)
{

// ************************************************************************   
// PRIVATE VARIABLES AND FUNCTIONS   
// ONLY PRIVELEGED METHODS MAY VIEW/EDIT/INVOKE   
// ***********************************************************************   
	var xmlhttp;
	var handler = ajaxReqHandler;
	var url = urlToSend;

	function GetXmlHttpObject()
	{ 
		var objXmlHttp=null;
		var browserName = navigator.userAgent;
		if(browserName.indexOf("Opera")>=0)
		{
			//alert("This example doesn't work in Opera");
			return;
		}
		else if(browserName.indexOf("MSIE")>=0)
		{ 
			var strHttpResponseType="Msxml2.XMLHTTP";
			if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
			{
				strHttpResponseType="Microsoft.XMLHTTP";
			} 
			try
			{ 
				objXmlHttp=new ActiveXObject(strHttpResponseType);
				// Setting XMLHttpRequest object  
				// for 'onreadystatechange' event of objXmlHttp
				objXmlHttp.onreadystatechange=handler; 
				return objXmlHttp;
			} 
			catch(e)
			{ 
				alert("Error. Scripting for ActiveX might be disabled"); 
				return;
			} 
		} 
		else if(browserName.indexOf("Mozilla")>=0)
		{
			objXmlHttp=new XMLHttpRequest();
			objXmlHttp.onload=handler;
			//objXmlHttp.onerror=handler; 
			return objXmlHttp;
		}
		
		function showAmpersand(inputStr)
		{
			var result = '';
			if(inputStr.indexOf('&amp;') > 0)
			{
				var arr = inputStr.split('&amp;');
				var arrLength = arr.length;
				for(i=0; i<arrLength; i++)
				{
					if(i==0)
						result =  Trim(arr[i]);
					else
						result =  Trim(result) + ' & ' + Trim(arr[i]);
				}
			}
			else
			{
				result = inputStr;
			}
			return result;
		}
	}
		
// ************************************************************************
// PRIVILEGED METHODS   
// MAY BE INVOKED PUBLICLY AND MAY ACCESS PRIVATE ITEMS   
// MAY NOT BE CHANGED; MAY BE REPLACED WITH PUBLIC FLAVORS
// ************************************************************************
	this.getAjaxResponseState = function()
		{
			return xmlhttp.readyState;
		}
		
	this.getAjaxResponseString = function()
		{
			var responseStr = xmlhttp.responseText;	// Response, taken as String
			if(responseStr == null)
			{
				return null;
			}
			return showAmpersand(Trim(responseStr));
		}
		
	this.getAjaxResponseXML = function()
		{
			var responseStr = xmlhttp.responseXML;	// Response, taken as XML
			if(responseStr == null)
			{
				return null;
			}
			return responseStr;
		}
	
	this.sendAjaxRequest = function()
		{
			xmlhttp=GetXmlHttpObject();
			xmlhttp.open("POST",url); // Only 'GET' request is sent
			xmlhttp.setRequestHeader('content-type', 'text/xml'); // Setting request header type to 'TEXT'
			xmlhttp.send(null);
		}
		
}//END OF CLASS
