﻿var xmlHttp; 
		var requestURL = '/AjaxHandler.axd'; 
		var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0; 
		var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0; 
		var is_opera = ((navigator.userAgent.indexOf("Opera 6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0; 
		//netscape, safari, mozilla behave the same??? 
		var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0; 

		function makeCall(query)
		{
			var url = requestURL + query;
			xmlHttp = GetXmlHttpObject(stateChangeHandler);
			xmlHttp_Get(xmlHttp,url);
		}
		
		function makeCallWithResponse(query)
		{
			var url = requestURL + query;
			xmlHttp = GetXmlHttpObject(stateChangeHandler); 
			return(xmlHttp_Get_WithResponse(xmlHttp,url));			
		}
		
		function makePostCallWithResponse(query, value)
		{
			var url = requestURL + query;
			xmlHttp = GetXmlHttpObject(stateChangeHandler); 
			return(xmlHttp_Post_WithResponse(xmlHttp,url,value));			
		}
		
		//stateChangeHandler will fire when the state has changed, i.e. data is received back 
		// This is non-blocking (asynchronous) 
		function stateChangeHandler() 
		{ 
			//readyState of 4 or 'complete' represents that data has been returned 
			if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){ 
				//Gather the results from the callback 
				var str = xmlHttp.responseText; 
				return str;//Populate the innerHTML of the div with the results 
			} 
		} 

		// XMLHttp send GET request 
		function xmlHttp_Get(xmlhttp, url) { 
			xmlhttp.open('GET', url, false); 
			xmlhttp.send(null); 
		} 
		
		// XMLHttp send GET request with response 
		function xmlHttp_Get_WithResponse(xmlhttp, url) { 
			xmlhttp.open('GET', url, false);
			xmlhttp.send(null); 
			return(xmlhttp.responseText);
		} 
		
		// XMLHttp send GET request with response 
		function xmlHttp_Post_WithResponse(xmlhttp, url, value) { 
			xmlhttp.open('POST', url, false);
			xmlhttp.send(value); 
			return(xmlhttp.responseText);
		} 

		function GetXmlHttpObject(handler) { 
			var objXmlHttp = null;    //Holds the local xmlHTTP object instance 

			//Depending on the browser, try to create the xmlHttp object 
			if (is_ie){ 
				//The object to create depends on version of IE 
				//If it isn't ie5, then default to the Msxml2.XMLHTTP object 
				var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; 
	             
				//Attempt to create the object 
				try{ 
					objXmlHttp = new ActiveXObject(strObjName); 
					objXmlHttp.onreadystatechange = handler; 
				} 
				catch(e){ 
				//Object creation errored 
					alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); 
					return; 
				} 
			} 
			else if (is_opera){ 
				//Opera has some issues with xmlHttp object functionality 
				alert('Opera detected. The page may not behave as expected.'); 
				return; 
			} 
			else{ 
				// Mozilla | Netscape | Safari 
				objXmlHttp = new XMLHttpRequest(); 
				objXmlHttp.onload = handler; 
				objXmlHttp.onerror = handler; 
			} 
	         
			//Return the instantiated object 
			return objXmlHttp; 
		} 
		
