//<!-- Hide the script from Non Javascript enabled browsers
var blnError = false;
var strFields = new String("");		
var strErrDesc = new String("");
		
function ResetForm(objFrm) {
	ClearErrSection();
	objFrm.reset();
}
		
function ValidateForm(objFrm) {
	var frmItems = new Array();									
	var e;
	var blnSkip = false;
	
	strErrDesc = "";
	blnError = false;
	strFields = "";

			
	//Get Input Sections
	frmItems = objFrm.getElementsByTagName("INPUT");
	ValidateItems(frmItems,objFrm);
			
	//Get TextArea Sections
	frmItems = objFrm.getElementsByTagName("TEXTAREA");
	ValidateItems(frmItems,objFrm);

	try {
		//Code that can be located anywhere on the client 
		//page that will be ran prior to form submission
		SpecialCode();
	} catch (e) {
		//Function Doesn't Exist or Internal Function Err
	}

	if ((strErrDesc.length > 0) && (!blnSkip)) {
		ProcessErrors();
	} else {
		ClearErrSection();
		objFrm.submit();
	}
}
		
function ValidateItems(objItems,objFrm) {
	var strElemName = new String("");
	var	strFieldName = new String("");
	var objElem = new Object();
	var strValue = new String("");
	var strMessage = new String("");
	var blnRequired = new String("");
	var strValType = new String("");
	var lngMinChar = new String("");
	var strSpecChar = new String("");
	var strExcpChar = new String("");
	var intI = 0;
	var lngErr = 0;
		
	// Used for Radio Options
	var objRef;
	var intM = 0;
	var lngSet = 0;
	var strSetValue = "";
	
	for (intI = 0; intI < objItems.length; intI++) {
		strElemName = objItems[intI].name;
		if (strElemName.slice(0,3)=="txt" || strElemName.slice(0,3)=="htx") {
			lngSet = 0
			strSetValue = "";
			objElem = Object(document.getElementById(strElemName));
					
			blnRequired = objElem.getAttribute("required");
			lngMinChar = objElem.getAttribute("minchar");
			strFieldName = objElem.getAttribute("dispname");
			strValType = objElem.getAttribute("valtype");
			strSpecChar = objElem.getAttribute("reqchar");
			strExcpChar = objElem.getAttribute("excchar");
			strValue = objElem.value;
				
			if (strSpecChar == null) {
				strSpecChar = "";
			}
											
			//Required Field Validation
			if (blnRequired==1) {
				switch (strValType) {
					case "YN": {
						//Radio (Check Box)
						strTName = 'opt' + strElemName.slice(3,strElemName.length);
						objRef = objFrm[strTName];
						for (intM=0; intM < objRef.length; intM++) {
							if (objRef[intM].checked) {
								lngSet = 1
								strSetValue = objRef[intM].value;
								objElem.value = strSetValue;
							}
						}
						
						if (lngSet == 0) {
							strMessage = strFieldName + ' must contain a value (Yes / No).';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "CK": {
						//Radio (Check Box)
						strTName = 'opt' + strElemName.slice(3,strElemName.length);
						objRef = objFrm[strTName];
						for (intM=0; intM < objRef.length; intM++) {
							if (objRef[intM].checked) {
								lngSet = 1
								if (strSetValue == "") {
									strSetValue = objRef[intM].value;
								} else {
									strSetValue += ", " + objRef[intM].value;
								}
								objElem.value = strSetValue;
							}
						}
						
						if (lngSet == 0) {
							strMessage = strFieldName + ' must be selected.';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "NU": {
						//Numeric
						if ((strValue.length < lngMinChar) || (!IsNumericChk(strValue))) {
							strMessage = strFieldName + ' Must be a numeric value with a minimum of ' + lngMinChar + ' characters.';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "ZC": {
						//Numeric (Zip Code Check)
						if ((strValue.length < lngMinChar) || (!IsNumericChk(strValue)) || ((strValue.length > 5) && (strValue.length < 9))) {
							strMessage = strFieldName + ' Must be at least 5 or 9 characters.';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "AL": {
						//Alpha - Non Numeric
						if ((strValue.length < lngMinChar) || (!IsAlphaChk(strValue))) {
							strMessage = strFieldName + ' Must contain a non-numeric value with at least ' + lngMinChar + ' characters.';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					case "DT": {
						//Date Values
						if ((strValue.length < lngMinChar)) {
							strMessage = strFieldName + ' Must contain a date';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					case "CU": {
						//Currency Values
						if ((!izCurrency(strValue)) || ((strValue.length < lngMinChar) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar))))) {
							strMessage = strFieldName + ' Must contain a dollar amount (Exclude: `$` and `,` [EG: 1000.00])';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					case "CUMV": {
						//Currency Values
						if ((!izCurrency(strValue)) || (strValue < 1) || ((strValue.length < lngMinChar) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar))))) {
							strMessage = strFieldName + ' Must contain a dollar amount (Exclude: `$` and `,` [EG: 1000.00]) $1 Min.';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					default: {
						//Alpha Numeric
						if ((strValue.length < lngMinChar) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar)))) {
							strMessage = strFieldName + ' Must be at least ' + lngMinChar + ' characters.';
							if (strSpecChar.length > 0) {
								strMessage += " (Must contain a `" + strSpecChar + "`)"
							}
							blnError = true;
							lngErr = 1;
						} 					
						break;
					}
				}
			} // END REQUIRED
					
			//Non Required Field Validation, Only if a value exists
			if (blnRequired == 0) {
				switch (strValType) {
					case "YN": {
						//Radio (Check Box)
						strTName = 'opt' + strElemName.slice(3,strElemName.length);
						objRef = objFrm[strTName];
						for (intM=0; intM < objRef.length; intM++) {
							if (objRef[intM].checked) {
								lngSet = 1
								strSetValue = objRef[intM].value;
								objElem.value = strSetValue;
							}
						}
						break;
					}
					case "CK": {
						//Radio (Check Box)
						strTName = 'opt' + strElemName.slice(3,strElemName.length);
						objRef = objFrm[strTName];
						for (intM=0; intM < objRef.length; intM++) {
							if (objRef[intM].checked) {
								lngSet = 1
								if (strSetValue == "") {
									strSetValue = objRef[intM].value;
								} else {
									strSetValue += ", " + objRef[intM].value;
								}
								objElem.value = strSetValue;
							}
						}
						break;
					}
					case "NU": {
						//Numeric
						if ((strValue.length > 0) && ((strValue.length < lngMinChar) || (!IsNumericChk(strValue)))) {
							strMessage = strFieldName + ' Must be a numeric value with a minimum of ' + lngMinChar + ' characters.';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "ZC": {
						//Numeric (Zip Code Check)
						if ((strValue.length > 0) && ((strValue.length < lngMinChar) || (!IsNumericChk(strValue)) || ((strValue.length > 5) && (strValue.length < 9)))) {
							strMessage = strFieldName + ' Must be at least 5 or 9 characters.';
							blnError = true;
							lngErr = 1;
						}
						break;
					}
					case "AL": {
						//Alpha - Non Numeric
						if ((strValue.length > 0) && ((strValue.length < lngMinChar) || (!IsAlphaChk(strValue)))) {
							strMessage = strFieldName + ' Must contain a non-numeric value with at least ' + lngMinChar + ' characters.';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					case "CU": {
						//Currency Values
						if ((strValue.length > 0) && ((!izCurrency(strValue)) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar))))) {
							strMessage = strFieldName + ' Must contain a dollar amount (Exclude: `$` and `,` [EG: 1000.00])';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					case "CUMV": {
						//Currency Values
						if ((strValue.length > 0) && ((!izCurrency(strValue)) || (strValue < 1) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar))))) {
							strMessage = strFieldName + ' Must contain a dollar amount (Exclude: `$` and `,` [EG: 1000.00]) $1 Min.';
							blnError = true;
							lngErr = 1;
						}							
						break;
					}
					default: {
						//Alpha Numeric
						if ((strValue.length > 0) && ((strValue.length < lngMinChar) || ((strSpecChar.length > 0) && (!FoundSpecChar(strValue,strSpecChar))))) {
							strMessage = strFieldName + ' Must be at least ' + lngMinChar + ' characters.';
							if (strSpecChar.length > 0) {
								strMessage += " (Must contain a `" + strSpecChar + "`)"
							}
							blnError = true;
							lngErr = 1;
						} 						
						break;
					}
				}
			} // END NON-REQUIRED 
			if (blnError && (lngErr == 1)) {
				strFields += (strFieldName + 'ö');
				strErrDesc += (strMessage + 'ö');
			}
		}	// END TXT CONDITIONS
		lngErr = 0;
	}	// END LOOP
}


function FoundSpecChar(pValue,pSpec) {
	var blnSGood = false;
	var intA = 0;
			
	for (intA=0; intA < pValue.length; intA++) {
		if (pValue.substr(intA,1) == pSpec) {
			blnSGood = true;
		}
	}
			
	return blnSGood;
}

function IsAlphaChk(pVal) {
	var sValue = new String();
	var i=0;
	var bResult = true;
				
	sValue = pVal;
	//				97-122 (lowercase alphas) 65-90  (uppercase alphas)
	//Numeric Check
	for (i=0; i< sValue.length; i++) {
		if ((sValue.charCodeAt(i)  > 47) && (sValue.charCodeAt(i) < 58)) {
			bResult = false;
		}
	}
	//window.alert("AC-Item: " + pObj.id + " Result: " + bResult);
	return bResult;
}

function IsNumericChk(pVal) {
	var sValue = new String();
	var i=0;
	var bResult = true;
				
	sValue = pVal;
				
	//Numeric Check
	for (i=0; i< sValue.length; i++) {
		if ((sValue.charCodeAt(i)  < 48) || (sValue.charCodeAt(i) > 57)) {
			bResult = false;
		}
	}
	//window.alert("NC-Item: " + pObj.id + " Result: " + bResult);
	return bResult;
}
		
function izNumeric(pValue) {
	var blnNGood = true;
	var intA = 0;
			
	for (intA=0; intA < pValue.length; intA++) {
		if ((pValue.substr(intA,1) >= 0) && (pValue.substr(intA,1) <= 9) && (pValue.substr(intA,1) != ' ')) {
			//Value is Fine
		} else {
			blnNGood = false;
		}
	}
	return blnNGood;
}

function izCurrency(pValue) {
	var blnCGood = true;
	var intA = 0;
	var intDotCount = 0;
	var intCAD = 0;
	
	for (intA=0; intA < pValue.length; intA++) {
		if (((pValue.substr(intA,1) != ' ') && (pValue.substr(intA,1) >= 0) && (pValue.substr(intA,1) <= 9)) || (pValue.substr(intA,1) == ".")){
			if (intDotCount > 0) { intCAD++ ; }										//Count the number of digits after the decimal
			if (pValue.substr(intA,1) == ".") { intDotCount++; }	//Count the number of decimals in the dollar amount.
			if ((intDotCount > 1) || (intCAD > 2)) {blnCGood=false;}	//If there are more than 1 dicimal point or more than 2 characters after the point then fail the entry.
			//Otherwise Value is Fine
		} else {
			//window.alert("Failed");
			blnCGood = false;
		}
	}
	return blnCGood;
}
		
function izAlpha(pValue) {
	var blnAGood = true;
	var intA = 0;
			
	for (intA=0; intA < pValue.length; intA++) {
		if ( (izNumeric(pValue.substr(intA,1))) ||  ((pValue.substr(intA,1) == ' ') && ((intA+1) >= pValue.length))  ){
			blnAGood = false;
		} else {
			//Value is Fine
		}
	}
	return blnAGood;
}
		
function ProcessErrors() {
	var objRef = document.getElementById("divErrors");
	var intE = 0;
	var arrErrors = new Array();
	var strCode = new String("");
			
	arrErrors = strErrDesc.split("ö");
			
	strCode = "<TABLE width=100% cellspacing=0 cellpadding=1 border=1 borderColor=#550000>";
	strCode += "<tr><Th class='ErrHeader' align=center valign=top>Required Information is Missing</th></tr>";
	strCode += "<TR><TD align=left class='ErrFields'>";
	for (intE = 0; intE < arrErrors.length; intE++) {
		if (arrErrors[intE].length > 0) {
			strCode += "<table cellspacing=0 cellpadding=0 border=0><TR><TD class='ErrFields' valign=top align=left><img src='/images/error.gif'>&nbsp;</td><td class='ErrFields'>";
			strCode += (arrErrors[intE] + "<BR>");
			strCode += "</td></tr></table>";
		}
	}
	strCode += "</td></tr></table>";

	objRef.innerHTML = strCode;
			
}
		
function ClearErrSection() {
	var objRef = document.getElementById("divErrors");
	objRef.innerHTML = "";
}
// Download a new browser, if you can't see this-->