
	function doesPasswordMatch(intForm)	{
		var result = false;
		var p1 = new String();
		var p2 = new String();
		
		p1 = document.forms[intForm].txtPassword.value;
		p2 = document.forms[intForm].txtPassword_B.value;
		
		if (p1 > "" & p2 == "")	{
			alert ("Please type the new password in the Verify Password field.");
			setFocus("forms[" + intForm + "].txtPassword_B");
		}
		else	{
			if (p1 != p2)	{
				alert("The Password and Verify Password field do not match. Please enter your password again in both fields.");
				setFocus("forms[" + intForm + "].txtPassword");
			}
			else	{
				result = true;
			}
		}
		return result;
	}
	
	function ValidateForm(isPassword, intForm)	{
		
		var result = true;
		//alert("validate enter 3 " + Date());
		TrimFields(intForm);
		if (!ValidateFields(intForm))	{ return false;	}
		if (isPassword)	{	result = doesPasswordMatch(intForm);	}
		
		if (result)	{
			
			var strFields = new String();
			strFields = document.forms[intForm].requiredFields.value;
			
			var strPrompts = new String();
			strPrompts = document.forms[intForm].requiredFieldsPrompts.value;
			
			var arFields = new Array();
			arFields = strFields.split(",");
			
			var arPrompts = new Array();
			arPrompts = strPrompts.split(",");
			
			result = true;

			var val = new String();
			var l = arFields.length;
			for (var i = 0; i < l; i++)	{
				var field = new String();
				field = arFields[i];
				if (field > "")	{
					szField = "document.forms[" + intForm + "]." + field;
					var obj = eval(szField);
					val = obj.value;
					if (val == "")	{
						alert (arPrompts[i]);
						setFocus("forms[" + intForm + "]."+field);
						result = false;
						break;
					}
				}
			}
		}
		return result;
		
		//alert("validate leave " + Date());
		//return false;
	}
	
	function TrimFields(intForm)	{
	
		var form = document.forms[intForm];
		var reTrim = /^\s+|\s+$/g;
		var reMatch = /^txt|^dt|^tm/;	// this regexp determines which prefixes are
									// trimmed of whitespaces
		var val = new String();
		
		for( var i=0; i < form.length; i++)	{
			var obj = form.elements[i];
			val = obj.value;
			
			if (reMatch.test(obj.name))	{
				val = val.replace(reTrim,"");
				obj.value = val;
			}
		}
	
	}
	
	function ValidateFields(intForm)	{
		
		var form = document.forms[intForm];
		
		for(var i=0;i<form.length;i++)	{
			var field = form.elements[i];
			if (!ValidateField(field))	{
				field.focus();
				return false;
			}
		}
		return true;
	}
		
	function ValidateField(field)	{
	
		fieldName = field.name;
		fieldValue = field.value;
		
		var szValue = new String();
		szValue = fieldValue;
		
		var reTime = /^tm|_tm/;
		var reDate = /^dt|_dt/;
		var reEmail = /^email|_email/;

        // KL 2007-02-20 - Added check for numeric input 
		var reNumeric = /^int_|flt_|dbl_/;
		if (reNumeric.test(fieldName)){
            if (fieldValue != ""){
                var reNum = /[^0-9.]/;		
		        if (reNum.test(fieldValue)){
		            alert("Invalid value in " + fieldName + ".  (Numeric value only)") ; 
		            return false ; 
		        }
		    }
		}
		
		if (reEmail.test(fieldName)){
			
			if (fieldValue != ""){
				var posAt = szValue.indexOf("@");
				var posDot = szValue.indexOf(".");
				if ((posAt < 0) || (posDot<0 ))	{
					alert("Invalid Email Address."); 
					return false;
				}
				return true ;
			}

		}
		
		if (reTime.test(fieldName))	{
		
			var reTest = /[^0-9.:aApPm+]/;
			if (reTest.test(fieldValue))	{
				alert ("Invalid characters in " + fieldName);
				return false;
			}
			
			reTest = /a$|p$|A$|P$/i;
			if (reTest.test(szValue))	{	szValue = szValue + "m";	}
			
			reTest = /\+$/i;
			if (reTest.test(szValue))	{	szValue = szValue.substr(0,szValue.length-1) + "pm";	}
			
			reTest = /[0-9]$/;
			if (reTest.test(szValue))	{	
				if (fieldValue > 13)	{	
					szValue = fieldValue - 12;
					szValue = Math.round(szValue*100)/100
					//alert(szValue) ; 
					szValue = szValue + "pm";	
				}else{	
					szValue = szValue + "am";	
				}
			}
				
			szValue = szValue.replace(".",":");
			
			var szDayPart = new String();
			var szTimePart = new String();
			szDayPart = szValue.substr(szValue.length - 2, 2);
			szTimePart = szValue.substr(0, szValue.length - 2);
			
			reTest = /[:]/;
			if (!reTest.test(szTimePart))	{	szTimePart = szTimePart + ":00";	}
			szValue = szTimePart + szDayPart;
			
			if (fieldValue != ""){
				// 2006-10-31 MG Had to add space for Firefox to properly handle date test
				var szValueTest = new String();
				szValueTest = szTimePart + ' ' + szDayPart;
				var tm_test = new Date("1/1/1970 " + szValueTest);
				if (isNaN(tm_test))	{
					alert ("Invalid time in " + fieldName);
					return false;
				}else {
					field.value = szValue;
				}	
						
			}
			
			return true;
		}
		
		if (reDate.test(fieldName))	{
			
			var reDelim = /[-/.]/;
			var arValues = new Array();
			arValues = szValue.split(reDelim);
				
			for (var i=0; i < arValues.length; i++)	{					
				switch (arValues.length)	{
					case 2:
						var today = new Date();
						fieldValue = arValues.join("/") + "/" + today.getYear();
						break;
					case 3:
						fieldValue = arValues.join("/");
						break;
					default:
						//alert (szValue);
						if (szValue > "")	{
							alert("Invalid Date");
							return false;
						}
				}
			}

			if (fieldValue > ""){
				var dt_test = new Date(fieldValue);
				if (isNaN(dt_test))	{
					alert ("Please enter a valid date");
					return false;
				}
			}
			
			field.value = fieldValue;
			return true;
			
		}
		return true;
	}

	function setFocus(element)	{
		var obj = eval("document." + element);
		obj.focus();
	}

