	<!--
	
		function CheckPaymentType() 
		{
			document.frmPayment.get_trnCardOwner.disabled = false;
			document.frmPayment.get_trnCardNumber.disabled = false;
			document.frmPayment.get_trnExpMonth.disabled = false;
			document.frmPayment.get_trnExpYear.disabled = false;			
		}
		
		function PositiveInteger(objName)
		{
			if (objName.value != "") {
				if (IsPosNumeric(objName.value) == false)
				{
 				  alert("This value must be numeric")
				  objName.focus()
				  objName.select()
				  return false
				}
				else
				{
					return true
				}
			}
		}
		
		function OnChangeShipSameAsOrd()
		{
			// Disables Shipping fields if the "Shipping info is same as billing" checkbox is checked
			if (document.frmPayment.shipSameAsOrd.checked == true)
			{
				dControl = true
			}
			else
			{
				dControl = false
			}
			DisableControl(document.frmPayment.shipName, dControl)
			DisableControl(document.frmPayment.shipEmailAddress, dControl)
			DisableControl(document.frmPayment.shipPhoneNumber, dControl)
			DisableControl(document.frmPayment.shipAddress1, dControl)
			DisableControl(document.frmPayment.shipAddress2, dControl)
			DisableControl(document.frmPayment.shipCity, dControl)
			DisableControl(document.frmPayment.shipProvince, dControl)
			DisableControl(document.frmPayment.shipPostalCode, dControl)
			DisableControl(document.frmPayment.shipCountry, dControl)
		}
	
		function ValidateEmailAddress (emailStr)
		{
			// Validates the email address
			var emailPat=/^(.+)@(.+)$/
			var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
			var validChars="\[^\\s" + specialChars + "\]"
			var quotedUser="(\"[^\"]*\")"
			var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
			var atom=validChars + '+'
			var word="(" + atom + "|" + quotedUser + ")"
			var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
			var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")	
			var matchArray=emailStr.match(emailPat)
			
			if (matchArray==null)
			{
				alert("Email address seems incorrect (check @ and .)");
				return false
			}
			
			var user=matchArray[1]
			var domain=matchArray[2]
			
			// See if "user" is valid 
			if (user.match(userPat)==null)
			{
				alert("The username does not seem to be valid.")
				return false
			}
			
			// if the e-mail address is at an IP address 
			var IPArray=domain.match(ipDomainPat)
			if (IPArray!=null)
			{
				for (var i=1;i<=4;i++)
				{
					if (IPArray[i]>255)
					{
						alert("Destination IP address is invalid!")
						return false
					}
				}
				return true
			}
			
			// Domain is symbolic name
			var domainArray=domain.match(domainPat)
			if (domainArray==null)
			{
				alert("The domain name does not seem to be valid.")
				return false
			}
			
			// Make sure that it ends in a three-letter word or a two-letter word, and that hostname preceding domain or country.
			var atomPat=new RegExp(atom,"g")
			var domArr=domain.match(atomPat)
			var len=domArr.length
			if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
			{
				alert("The address must end in a three-letter domain, or two letter country.")
				return false
			}
			

			if (len<2)
			{
				var errStr="This address is missing a hostname!"
				alert(errStr)
				return false
			}
			
			return true;
		}
	
		function CreditModCheck(objName)
		{
			var ccnLength;
			var cPrefix2;
			var nString = "";
			var total = 0;
	
			ccNumber  = objName.value;
			ccnLength = ccNumber.length;
			

			if (ccnLength >= 13)
			{
				cPrefix2 = parseInt(ccNumber.charAt(0) + ccNumber.charAt(1));
				cPrefix3 = parseInt(ccNumber.charAt(0) + ccNumber.charAt(1) + ccNumber.charAt(2));
				cPrefix4 = parseInt(ccNumber.charAt(0) + ccNumber.charAt(1) + ccNumber.charAt(2) + ccNumber.charAt(3));
				if (cPrefix2 > 49 && cPrefix2 < 56)
				{
					//Mastercard	***** CHANGE - using test version - Test mastercards can start with 50, valid cards cannot
					if (ccnLength != 16)
					{
						return false;
					}
				}
				else if (ccNumber.charAt(0) == "4")
				{
					//VISA
					if (ccnLength != 16 && ccnLength != 13)
					{
						return false;
					}
				}
				else if (cPrefix2 == 34 || cPrefix2 == 37)
				{
					//AMEX
					if (ccnLength != 15)
					{
						return false;
					}
				}
				else if ((cPrefix3 > 299 && cPrefix3 < 306) || cPrefix2 == 36 || cPrefix2 == 38)
				{
					//Diners Club/Carte Blanche
					if (ccnLength != 14)
					{
						return false;
					}
				}
				else if (cPrefix4 == 6011)
				{
					//Discover
					if (ccnLength != 16)
					{
						return false;
					}
				}
				else if (cPrefix4 > 3527 && cPrefix4 < 3590)
				{
					//JCB
					if (ccnLength != 16)
					{
						return false;
					}
				}
				else
				{
					return false;
				}
				
				// Perform MOD check
				for (i=1; i <= ccnLength; i++)
				{
					if ((i % 2) == 0)
					{
						nString = nString + (parseInt(ccNumber.charAt(ccnLength - i)) * 2);
					}
					else
					{
						nString = nString + ccNumber.charAt(ccnLength - i);
					}
				}
				
				for (i=0; i < nString.length; i++)
				{
					total = total + parseInt(nString.charAt(i));
				}
				
				if (total % 10 != 0)
				{
					return false;
				}
				else
				{
					return true;
				}
	
			}
			else
			{
				return false;
			}
	
		}
		
		function FormatAmount(obj)
		{
			// Purpose: to format a numberic value to currency formating, ie xxxxx.xx
			//			Values are rounded up. ie. 45.105 = 45.11
			// Pre:		obj is a textbox object
			// post:	sets obj.value = the formated currency
	
			var newValue = ""
	
			if (obj.value == "") {obj.value="0.00"; return}
	
			obj.value = MoneyChopValue(obj.value);
			if (obj.value < 0) {
				objValue = parseFloat(obj.value) - parseFloat('0.005');
			}
			else {
				objValue = parseFloat(obj.value) + parseFloat('0.005');
			}
			objValue = eval("'" + objValue + "'")
			if (objValue.length > 0) {
				if (objValue.charAt(0) == '.') {objValue = "0" + objValue}
			}
			for (x=0; x < objValue.length; x++) {
				if (objValue.charAt(x) == '.') {
					if (x == (objValue.length - 1)) {
						newValue = newValue + ".00"
					}
					else if (x == (objValue.length - 2)) {
						newValue = newValue + "." + objValue.charAt(x+1) + "0"
					}
					else {
						newValue = newValue + "." + objValue.charAt(x+1) + objValue.charAt(x+2)
					}
					obj.value = newValue
					return;
				}
				newValue = newValue + objValue.charAt(x)
			} 
			obj.value = newValue + ".00"
		}
		
		
		function FormatAmountValue(value)
		{
			// Purpose: To format a monetary value.  Like above, except not an obj
			this.value = value;
			FormatAmount(this);
			return this.value;
		}
		
		function MoneyChop(Obj)
		{
			// Purpose: See MoneyChopValue
			Obj.value = MoneyChopValue(Obj.value);
		}
		
		reMoney = /^-?[0-9]*\.?[0-9]{0,4}/;
		function MoneyChopValue(value)
		{
			// Purpose: Chops numbers off to four decimal places to work around the
			//		  JavaScript math errors.
			// Comments: Finds 0 or 1 '-' then any digits then 0 or 1 decimal points then 
			//			up to four more digits.
			value += "";
			return parseFloat(value.match(reMoney));
		}		
		
		function IsNumeric(sNumber)
		{
			// Checks that a number is numeric
			var decimal = 0;
			sNumber += "";
			if (sNumber.length == 0) return false;
			for (x = 0; x < sNumber.length; x++) {
				if (!(sNumber.charCodeAt(x) >= 48 && sNumber.charCodeAt(x) <= 57)) {
					switch (sNumber.charAt(x)) {
						case ".":
							if (decimal++ != 0) return false;
							break;
						case "-":
							if (x > 0) return false;
							if (sNumber.length == 1) return false;
							break;
						default:
							return false;
					}
				}
			}
			return true;
		}
		
		function IsPosNumeric(sNumber)
		{
			// Checks that a number is a positive numeric
			sNumber += "";
			return (sNumber.charAt(0) != "-" && IsNumeric(sNumber));
		}
		
		function RequireNumericOnly(editBox, defaultValue)
		{
			// Checks that a textbox contains only numeric values
			if( editBox.value != '' && !IsNumeric(editBox.value) )
			{
				editBox.value = defaultValue;
				alert('Please enter only numeric values');
				editBox.focus();
			}
		}
		
		function DisableControl(objName, dControl)
		{
			// Disables a form object
			if (dControl == true)
			{
				objName.disabled = true
				objName.style.background = "E5E5E5"
			}
			else
			{
				objName.disabled = false
				objName.style.background = "FFFFFF"
			}
		}
		
		// End of JavaScript error handling and data validation functions
	-->
