//validation.js
			
			var REGION_CANADA = 1;
			var REGION_INTERNATIONAL = 2;

			var gRegion = REGION_CANADA;
			var deactive_validator=false;


			//---------test functions ------------
		
			function TestTextField(aField, aMessage){
				if ( trim(aField.value)=="" ){
					alert(aMessage);
					aField.focus();
					return false;
				}
				return true;
			}
			
			function TestNumberField(aField, aMessage){
				if (! isNum( trim(aField.value) ) ){
					alert(aMessage);
					aField.focus();
					return false;
				}
				return true;
			}

			function TestNonmandatoryNumberField(aField, aMessage){
				var strValue = trim(aField.value);
				if (! (strValue=='' || isNum(strValue)) ){
					alert(aMessage);
					aField.focus();
					return false;
				}
				return true;
			}
			
			function TestComboField(aField, aMessage){
				if (aField.selectedIndex==0 || 
						aField.options[aField.selectedIndex].value=='' ||
						aField.options[aField.selectedIndex].value=='select' ){
					alert(aMessage);
					aField.focus();
					return false;
				}
				return true;
			}
			
			function TestComboOtherField(aField, aOtherField, aMessage){
				blnMainCombo_Other = aField.selectedIndex==0 ||
						 aField.options[aField.selectedIndex].value=='' ||
						 aField.options[aField.selectedIndex].value=='select' ||
						 aField.selectedIndex==aField.length-1 ||
						 aField.options[aField.selectedIndex].text.toLowerCase().indexOf('specify')>-1;
				
				blnOtherCombo_Empty = aOtherField.value=='';
				
				if (blnMainCombo_Other && blnOtherCombo_Empty) {
					alert(aMessage);
					
					if (aField.selectedIndex==aField.length-1)
						aOtherField.focus();
					else
						aField.focus();
					return false;
				}
				return true;
			}
			
			function TestRadioField(aField, aMessage){
				var aResult = false;
				
				if ( deactive_validator==true )
				{
					return true;
				}
				else
				{
					for (var i=0; i<aField.length; i++)
						aResult = aResult || aField[i].checked;
						
					if (!aResult ) {
						alert(aMessage);
						aField[0].focus();
					}
					return aResult;
				}
			}

			function TestCheckField(aField, aMessage){ 
				if ( deactive_validator==true )
				{
					return true;
				}
				else
				{			 
					var aResult = IsAnsweredCheckField(aField);
					if (! aResult) {
						alert( aMessage );
						aField[0].focus();
					}
					return aResult;
				}
			}

			function IsAnsweredCheckField(aField){  
				var aResult = false;
				for (var i=0; i<aField.length; i++)
					aResult = aResult || aField[i].checked;
				return aResult;
			}
			
			function TestCheckOtherField(){  //Number of aruments changes: aField, aFieldOther, aFieldName1, aFieldName2, ... aFieldNameN, aMessage
				var aField = TestCheckOtherField.arguments[0];
				var aFieldOther = TestCheckOtherField.arguments[1];
				var aMessage = TestCheckOtherField.arguments[TestCheckOtherField.arguments.length-1];
				var aIsOther;
				var aResult = false;
				
				for (var i=0; i<aField.length; i++){
					aIsOther = TestCheckOtherField.arguments[i+2].toLowerCase().indexOf('specify')>-1;
					aResult = aResult || (aField[i].checked && !aIsOther) || aFieldOther.value!='';
				}

				if (! aResult) {
					alert( aMessage );
					aField[0].focus();
				}
				return aResult;
			}

			function TestEmailField(aField, aMessage){
				var aValue = trim(aField.value);
				var aLen = aValue.length;
				var aAtPos = aValue.indexOf("@");
				var aDotPos = aValue.lastIndexOf(".");
				var aCharsAfterDot = aLen - aDotPos;
				
				var aProhibitedChars = " /:,;";
				var aProhibitedCharsFound = 0;
				for (i=0; i<aProhibitedChars.length; i++)
					if (aValue.indexOf( aProhibitedChars.charAt(i) )>-1)
						aProhibitedCharsFound++;
				
				if ( !(	aLen>0 && 
								aAtPos>0 && 
								aDotPos>aAtPos+1 &&	
								aCharsAfterDot>2 && 
								aProhibitedCharsFound==0) ){
					alert(aMessage);
					aField.focus();
					return false;
				}
				return true;
			}
			function TestNonmandatoryEmailField(aField, aMessage){
				var strValue = trim(aField.value);
				if (strValue=='')
					return true;
				else
					return TestEmailField(aField, aMessage);
			}
			
			
			function TestPostalField(aField, aMessage){
				var aResult;
				var aValue = trim(aField.value);
				var aLen   = aValue.length;
				if (gRegion==REGION_CANADA) {
					if (aLen>5) 
						if (aLen==7) aValue = aValue.substring(0,3)+aValue.substring(4,7);
						aLen = aValue.length;
						aResult =	aLen == 6 &&
											isLetter( aValue.charAt(0) ) && 
											isNum(		aValue.charAt(1) ) &&
											isLetter( aValue.charAt(2) ) && 
											isNum(		aValue.charAt(3) ) &&
											isLetter( aValue.charAt(4) ) && 
											isNum(		aValue.charAt(5) );
				}
				else
					aResult = aLen>=5;
				
				if (! aResult) {
					alert("Please enter correct postal code");
					aField.focus();
				}
				return aResult;
			}


			function ValidateAndNotify(aField, aMessage, aOK){
				if (!aOK) {
					alert(aMessage);
					aField.focus();
				}
				return aOK;
			}

			function ValidateAndNotifyArrayField(aField, aMessage, aOK){
				if (!aOK) {
					alert(aMessage);
					aField[0].focus();
				}
				return aOK;
			}
						


			//---------routines----------
			function isNum(aValue){
				if (aValue == "")
					return false;

				for (i=0; i<aValue.length; i++)
					if (aValue.charAt(i) < "0" || aValue.charAt(i) > "9")
						return false;

				return true;
			}
			
			function isLetter(aValue){
				if (aValue == "")
					return false;
				return (aValue.toUpperCase() >= "A") && (aValue.toUpperCase() <= "Z");
			}
			
 			function trim(aValue){
				if (aValue.length>0) {
					var aFirst=0;
					while (aFirst<aValue.length && aValue.charAt(aFirst)==" ") 
						aFirst++;

					var aLast=aValue.length-1;
					while (aLast>aFirst && aValue.charAt(aLast)==" ") 
						aLast--;
					
					return aValue.substring(aFirst, aLast+1);
				}
				else
					return aValue;
			} 
			
		