//
// xmlHttp.js
//

// Author: Colin Jaggs
// Date: 3 February 2006
// Description: functions for AJAX methodology

var xmlHttp;
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;
var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

// XMLHttp send GET request
function xmlHttp_Get(xmlHttp, url) {
	xmlHttp.open('GET', url, true);
	xmlHttp.send(null);
}

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;
}
