	/*
	Content:
		createXMLHttp
		checkReadyState
		isFunction
		isObject
		stripTags
		FormatNumber
		setCookie
		getCookie
		showPopup
		ShowHideTags
		AllowOnlyNumbers
		isEmail
	*/
	
	function createXMLHttp() {
		if (typeof XMLHttpRequest != "undefined") {
			return new XMLHttpRequest();
		} else {
			if (window.ActiveXObject) {
			  var aVersions = [ "MSXML2.XMLHttp.5.0",
				"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
				"MSXML2.XMLHttp","Microsoft.XMLHttp"
			  ];

			  for (var i = 0; i < aVersions.length; i++) {
				try {
					var oXmlHttp = new ActiveXObject(aVersions[i]);
					return oXmlHttp;
				} catch (oError) {
					//Do nothing
				}
			  }
			}
		}
		throw new Error("XMLHttp object could be created.");
	}

	function checkReadyState(obj)
	{
		if(obj.readyState == 0) {}
		if(obj.readyState == 1) {}
		if(obj.readyState == 2) {}
		if(obj.readyState == 3) {}
		if(obj.readyState == 4)
		{
			if(obj.status == 200)
			{
				return true;
			}
		}
	}

	function isFunction(a) {
		return typeof a == 'function';
	}

	function isObject(a) {
		return (a && typeof a == 'object') || isFunction(a);
	}

	function stripTags(suspText)
	{
		return suspText.replace(/<\/?[^>]+>/gi, '');
	}

	function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas,decimalZero)
	/**********************************************************************
		IN:
			NUM - the number to format
			decimalNum - the number of decimal places to format the number to
			bolLeadingZero - true / false - display a leading zero for
											numbers between -1 and 1
			bolParens - true / false - use parenthesis around negative numbers
			bolCommas - put commas as number separators.
			decimalZero - true / false
	 
		RETVAL:
			The formatted number!
	 **********************************************************************/
	{ 
			if (isNaN(parseInt(num))) return "NaN";

		var tmpNum = num;
		var iSign = num < 0 ? -1 : 1;		// Get sign of number
		
		// Adjust number so only the specified number of numbers after
		// the decimal point are shown.
		tmpNum *= Math.pow(10,decimalNum);
		tmpNum = Math.round(Math.abs(tmpNum))
		tmpNum /= Math.pow(10,decimalNum);
		tmpNum *= iSign;					// Readjust for sign
		
		
		// Create a string object to do our formatting on
		var tmpNumStr = new String(tmpNum);

		// See if we need to strip out the leading zero or not.
		if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
			if (num > 0)
				tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
			else
				tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
			
		// See if we need to put in the commas
		if (bolCommas && (num >= 1000 || num <= -1000)) {
			var iStart = tmpNumStr.indexOf(".");
			if (iStart < 0)
				iStart = tmpNumStr.length;

			iStart -= 3;
			while (iStart >= 1) {
				tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
				iStart -= 3;
			}		
		}

		if(decimalZero) {
			var decimalStart = tmpNumStr.indexOf(".");
			if (decimalStart == -1)
			{
				tmpNumStr = tmpNumStr + ".00";
			} else
			{
				var decimalPart = new String(tmpNumStr.substring(decimalStart + 1));//, (tmpNumStr.length - (decimalStart + 1))));
				if(decimalPart.length < decimalNum){
					tmpNumStr = tmpNumStr + "0";
				}
			}
		}

		// See if we need to use parenthesis
		if (bolParens && num < 0)
			tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

		return tmpNumStr;		// Return our formatted string!
	}

	function setCookie(cName, cValue) {
		document.cookie = cName + "=" + escape(cValue) + ";path=/";
	}

	function getCookie(cName) {
		if (document.cookie.length>0) {
		  c_start = document.cookie.indexOf(cName + "=");
		  if (c_start != -1) {
		    c_start = c_start + cName.length + 1;
		    c_end = document.cookie.indexOf(";",c_start);
		    if (c_end == -1) c_end = document.cookie.length;
		    return unescape(document.cookie.substring(c_start,c_end));
			} 
		}
		return null;
	}

	function showPopup(pURL, pName, pLeft, pTop, pWidth, pHeight, pResizable, pStatus, pScrollbars) {
	/*
		pURL - URL
		pName - window name
		pLeft - left align
		pTop - top align
		pWidth - width
		pHeight - height
		pResizable - yes/no
		pStatus - yes/no
		pScrollbars - yes/no
	*/
		var myPopup = window.open(pURL, pName, 'left=' + pLeft + ',top=' + pTop + ',width=' + pWidth + ',height=' + pHeight + ',resizable=' + pResizable + ',status=' + pStatus + ',scrollbars=' + pScrollbars);
		myPopup.focus();
	}

	function ShowHideTags(tagName, attName, attValue, myAction) {
	/*
		myAction - none/block
	*/
		var myObj = document.getElementsByTagName(tagName);
		for(var i=0;i< myObj.length;i++) {
			if(myObj.item(i).getAttribute(attName)==attValue) {
				myObj.item(i).style.display = myAction;
			}
		}
	}

	function AllowOnlyNumbers(evt) {
	/*
		onKeyPress="return AllowOnlyNumbers(event)"
	*/
		evt = (evt) ? evt : window.event
		var charCode = (evt.which) ? evt.which : evt.keyCode
		if (charCode > 31 && (charCode < 48 || charCode > 57)) {
			//status = "This field accepts numbers only."
			return false
		}
		status = ""
		return true
	}

	function isEmail(strEmail){
		var return_val;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test(strEmail))
		{
			return_val = true;
		}
		else
		{
			//alert("Please input a valid email address!");
			return_val = false;
		}
		return (return_val);
	}

