
window.FormValidation=function(pFormElem){var DEFAULT_BG_COLOR="#ffffff";var DEFAULT_TEXT_COLOR="#000000";var ERROR_BG_COLOR="#990000";var ERROR_TEXT_COLOR="#ffffff";var RULES_BUTTON=[];var RULES_CHECKBOX=["exclusive","inclusive","maxSelected","minSelected","required"];var RULES_FILE=["required"];var RULES_HIDDEN=[];var RULES_RADIO=["required"];var RULES_RESET=[];var RULES_SELECT_MULTIPLE=["maxSelected","minSelected","required","musthave"];var RULES_SELECT_ONE=["required"];var RULES_SUBMIT=[];var RULES_TEXT=["alphabetical","alpha-space","alpha-num","alphanum-space","dependent-match","badChars","maxLength","minLength","mustChars","numeric","numVal-GT","numVal-LT","required","require-or","format","numVal-GE","numericCeiling","numericFloor","integer","decimal","exactLength","dependent-notmatch","specialChars","specialCharsCand"];var RULES_TEXTAREA=RULES_TEXT;var RULES_PASSWORD=RULES_TEXT;var element=pFormElem;this.dataValid=true;this.errorBgColor=(element.getAttribute("errorBgColor"))?element.getAttribute("errorBgColor"):ERROR_BG_COLOR;this.errorText="";this.errorTextColor=(element.getAttribute("errorTextColor"))?element.getAttribute("errorTextColor"):ERROR_TEXT_COLOR;this.appendErrorMsg=function(szMsg)
{this.errorText+="\n\n";this.errorText+=szMsg;};this.arrayFromCommaList=function(szCommaList)
{var splitArray=szCommaList.split(" ");var szJoinStr=splitArray.join("");var join=szJoinStr.split(",");for(var a=0;a<join.length;a++)
{if(join[a].charAt(0)=="*")
{var pRuleGroup=$(join[a].slice(1));if(pRuleGroup!=null)
{if(pRuleGroup.value)
{var subArray=this.arrayFromCommaList(pRuleGroup.value);for(var b=0;b<subArray.length;b++)
{if(subArray[b]!="")
{if(b==0)
{join.splice(a,1,subArray[b]);}
else join.splice(a,0,subArray[b]);}}}}}}
return join;};this.messageFormat=function(str)
{var i=1;while(i<arguments.length)
{str=str.replace("{"+(i-1)+"}",arguments[i++]);}
return str;};this.checkElement=function(formElement)
{var isValid=true;var isTextValid=true;var szRules=formElement.getAttribute("rules");var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";if(formElement.errorCount)formElement.errorCount=0;if(formElement.disabled)return isValid;if(szRules!=null)
{switch(formElement.type)
{case"button":break;case"checkbox":if(szRules.indexOf(RULES_CHECKBOX[0])!=-1)
{}
if(szRules.indexOf(RULES_CHECKBOX[1])!=-1)
{}
if(szRules.indexOf(RULES_CHECKBOX[2])!=-1)
{var szMaxSelected=formElement.getAttribute("maxSelected");var szMaxSelectedGroup=formElement.getAttribute("maxSelectedGroup");if(szMaxSelected!=null&&szMaxSelectedGroup!=null)
{var hasMaxError=false;var szThisId=(formElement.id!=""&&formElement.id!="undefined")?formElement.id:formElement.name;var szErrorMessage="";var szGroupArray=this.arrayFromCommaList(szMaxSelectedGroup);var hasNoSelfId=(szGroupArray.join("").indexOf(szThisId)==-1);var szLabelArray=(hasNoSelfId)?[szLabel]:[];var nTotalSelected=(formElement.checked&&hasNoSelfId)?1:0;formElement.removeAttribute("hasMaxSelectError");for(var j=0;j<szGroupArray.length;j++)
{hasMaxError=(formElement.form[szGroupArray[j]].getAttribute("hasMaxSelectError")!=null);if(hasMaxError)break;}
for(var i=0;i<szGroupArray.length;i++)
{if(formElement.form[szGroupArray[i]].checked)nTotalSelected++;var szLabel2=formElement.form[szGroupArray[i]].getAttribute("labelText");if(szLabel2==null)szLabel2="";else szLabel2="\""+szLabel2+"\" ";szLabelArray.push(szLabel2);}
szErrorMessage=i18n.CHECKBOX_ERROR1+" "+szMaxSelected+" "+i18n.CHECKBOX_ERROR2+" "+szLabelArray.sort().join(" , ");if(nTotalSelected>parseInt(szMaxSelected)&&!hasMaxError)
{isValid=false;this.markAsInvalid(formElement,szErrorMessage);formElement.setAttribute("hasMaxSelectError","hasMaxSelectError");}
else if(nTotalSelected>parseInt(szMaxSelected)&&hasMaxError)
{this.errorCountIncrement(formElement);if(formElement.errorCount>0)
{this.showErrorStyles(formElement);this.errorTitleTag(formElement,szErrorMessage);}}
else
{this.markAsValid(formElement);}}}
if(szRules.indexOf(RULES_CHECKBOX[3])!=-1)
{var szMinSelected=formElement.getAttribute("minSelected");var szMinSelectedGroup=formElement.getAttribute("minSelectedGroup");if(szMinSelected!=null&&szMinSelectedGroup!=null)
{var hasMinError=false;var szThisId=(formElement.id!=""&&formElement.id!="undefined")?formElement.id:formElement.name;var szErrorMessage="";var szGroupArray=this.arrayFromCommaList(szMinSelectedGroup);var hasNoSelfId=(szGroupArray.join("").indexOf(szThisId)==-1);var szLabelArray=(hasNoSelfId)?[szLabel]:[];var nTotalSelected=(formElement.checked&&hasNoSelfId)?1:0;formElement.removeAttribute("hasMinSelectError");for(var j=0;j<szGroupArray.length;j++)
{hasMinError=(formElement.form[szGroupArray[j]].getAttribute("hasMinSelectError")!=null);if(hasMinError)break;}
for(var i=0;i<szGroupArray.length;i++)
{if(formElement.form[szGroupArray[i]].checked)nTotalSelected++;var szLabel2=formElement.form[szGroupArray[i]].getAttribute("labelText");if(szLabel2==null)szLabel2="";else szLabel2="\""+szLabel2+"\" ";szLabelArray.push(szLabel2);}
szErrorMessage=i18n.CHECKBOX_ERROR_MIN1+" "+szMinSelected+" "+i18n.CHECKBOX_ERROR_MIN2+" "+szLabelArray.sort().join(" , ");if(nTotalSelected<parseInt(szMinSelected)&&!hasMinError)
{isValid=false;this.markAsInvalid(formElement,szErrorMessage);formElement.setAttribute("hasMinSelectError","hasMinSelectError");}
else if(nTotalSelected<parseInt(szMinSelected)&&hasMinError)
{this.errorCountIncrement(formElement);if(formElement.errorCount>0)
{this.showErrorStyles(formElement);this.errorTitleTag(formElement,szErrorMessage);}}
else
{this.markAsValid(formElement);}}}
if(szRules.indexOf(RULES_CHECKBOX[4])!=-1)
{if(!formElement.checked)
{isValid=false;this.markAsInvalid(formElement,i18n.SELECT_ELEMENT+" "+szLabel+" "+i18n.SELECT_ELEMENT2);}
else
{this.markAsValid(formElement);}}
break;case"file":if(szRules.indexOf(RULES_FILE[0])!=-1)
{if(formElement.value=="")
{isValid=false;this.markAsInvalid(formElement,i18n.FILE_PATH_MSG+" "+szLabel+" "+i18n.FILE_PATH_MSG2);}
else
{this.markAsValid(formElement);}}
break;case"radio":if(szRules.indexOf(RULES_RADIO[0])!=-1)
{var hasSelection=false;var hasErrorMessage=false;var szErrorMessage=i18n.RADIO_BUTTON_GROUP+" "+szLabel+" "+i18n.REQUIRES_SELECTION;formElement.removeAttribute("hasErrorMessage");for(var d=0;d<formElement.form[formElement.name].length;d++)
{hasSelection=(formElement.form[formElement.name][d].checked);if(hasSelection)break;}
if(formElement.form[formElement.name]!=null&&undefined==formElement.form[formElement.name].length)
{hasSelection=(formElement.form[formElement.name].checked);}
for(var e=0;e<formElement.form[formElement.name].length;e++)
{hasErrorMessage=(formElement.form[formElement.name][e].getAttribute("hasErrorMessage"));if(hasErrorMessage)break;}
if(!hasSelection&&!hasErrorMessage)
{isValid=false;this.markAsInvalid(formElement,szErrorMessage);formElement.setAttribute("hasErrorMessage","hasErrorMessage");}
else if(!hasSelection&&hasErrorMessage)
{this.errorCountIncrement(formElement);if(formElement.errorCount>0)
{this.showErrorStyles(formElement);this.errorTitleTag(formElement,szErrorMessage);}}
else
{this.markAsValid(formElement);}}
break;case"reset":break;case"select-multiple":if(szRules.indexOf(RULES_SELECT_MULTIPLE[0])!=-1)
{var szMaxSelected=formElement.getAttribute("maxSelected");if(szMaxSelected!=null)
{var nMaxSelected=parseInt(szMaxSelected);var nTotal=0;for(var j=0;j<formElement.options.length;j++)
{if(formElement.options[j].selected)nTotal++;}
if(nTotal>nMaxSelected)
{isValid=false;this.markAsInvalid(formElement,i18n.NOT_SELECT_MAX+" "+nMaxSelected+" "+
i18n.NOT_SELECT_MAX2+" "+szLabel);}
else
{this.markAsValid(formElement);}}}
if(szRules.indexOf(RULES_SELECT_MULTIPLE[1])!=-1)
{var szMinSelected=formElement.getAttribute("minSelected");if(szMinSelected!=null)
{var nMinSelected=parseInt(szMinSelected);var nTotal=0;for(var k=0;k<formElement.options.length;k++)
{if(formElement.options[k].selected)nTotal++;}
if(nTotal<nMinSelected)
{isValid=false;this.markAsInvalid(formElement,i18n.MUST_SELECT_OPTIONS+" "+nMinSelected+" "+i18n.MUST_SELECT_OPTIONS2+" "+szLabel);}
else
{this.markAsValid(formElement);}}}
if(szRules.indexOf(RULES_SELECT_MULTIPLE[2])!=-1)
{var nTotal=0;for(var m=0;m<formElement.options.length;m++)
{if(formElement.options[m].selected&&!(formElement.options[m].value==""))nTotal++;}
if(nTotal==0)
{isValid=false;this.markAsInvalid(formElement,i18n.SELECT_OPTION_LISTBOX+" "+szLabel);}
else
{this.markAsValid(formElement);}}
if(szRules.indexOf(RULES_SELECT_MULTIPLE[3])!=-1)
{if(formElement.options.length==0)
{isValid=false;this.markAsInvalid(formElement,i18n.SELECT_OPTION_LISTBOX2+" "+szLabel);}
else
{this.markAsValid(formElement);}}
break;case"select-one":if(szRules.indexOf(RULES_SELECT_ONE[0])!=-1)
{if((formElement.options[formElement.selectedIndex].value=="")||(formElement.options[formElement.selectedIndex].value==i18n.PLEASE_CHOOSE_ONE))
{isValid=false;if(typeof LocalizedFormValidationText!="undefined")
{this.markAsInvalid(formElement,this.messageFormat(LocalizedFormValidationText.OPTION_REQUIRED,szLabel));}
else
{this.markAsInvalid(formElement,i18n.OPTION_DROP_DOWN+" "+szLabel+" "+i18n.OPTION_DROP_DOWN2);}}
else
{this.markAsValid(formElement);}}
break;case"submit":break;case"hidden":case"text":case"textarea":case"password":if(szRules.indexOf(RULES_TEXT[0])!=-1)
{isTextValid=this.checkTextAlphabetical(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[1])!=-1)
{isTextValid=this.checkTextAlphabeticalSpace(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[2])!=-1)
{isTextValid=this.checkTextAlphanumeric(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[3])!=-1)
{isTextValid=this.checkTextAlphanumericSpace(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[4])!=-1)
{isTextValid=this.checkTextDepMatch(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[5])!=-1)
{isTextValid=this.checkTextBadChars(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[6])!=-1)
{isTextValid=this.checkTextMaxLength(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[7])!=-1)
{isTextValid=this.checkTextMinLength(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[8])!=-1)
{isTextValid=this.checkTextMustChars(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[9])!=-1)
{isTextValid=this.checkTextNumeric(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[10])!=-1)
{isTextValid=this.checkTextNumValGT(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[11])!=-1)
{isTextValid=this.checkTextNumValLT(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[12])!=-1)
{isTextValid=this.checkTextRequired(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[13])!=-1)
{isTextValid=this.checkTextRequireOr(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[14])!=-1)
{isTextValid=this.checkTextFormat(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[15])!=-1)
{isTextValid=this.checkTextNumValGE(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[16])!=-1)
{isTextValid=this.checkTextNumericCeiling(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[17])!=-1)
{isTextValid=this.checkTextNumericFloor(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[18])!=-1)
{isTextValid=this.checkTextInteger(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[19])!=-1)
{isTextValid=this.checkTextDecimal(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[20])!=-1)
{isTextValid=this.checkTextExactLength(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[21])!=-1)
{isTextValid=this.checkTextDepNotMatch(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[22])!=-1)
{isTextValid=this.checkTextSpecialChars(formElement);isValid=(isValid)?isTextValid:false;}
if(szRules.indexOf(RULES_TEXT[23])!=-1)
{isTextValid=this.checkTextSpecialCharsCand(formElement);isValid=(isValid)?isTextValid:false;}
break;}}
return isValid;};this.checkTextAlphabetical=function(formElement)
{var returnValid=true;if(!this.isValueAlphabetical(formElement.value))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";this.markAsInvalid(formElement,i18n.AZ_VALID+" "+szLabel+" "+i18n.AZ_VALID2);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextAlphabeticalSpace=function(formElement)
{var returnValid=true;if(!this.isValueAlphabeticalSpace(formElement.value))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.AZ_SPACE_VALID+" "+szLabel+" "+i18n.AZ_SPACE_VALID);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextAlphanumeric=function(formElement)
{var returnValid=true;if(!this.isValueAlphanumeric(formElement.value))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.AZaz_VALID+" "+szLabel+" "+i18n.AZaz_VALID2);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextAlphanumericSpace=function(formElement)
{var returnValid=true;if(!this.isValueAlphanumericSpace(formElement.value))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.AZaz_NUM_VALID+" "+szLabel+" "+i18n.AZaz_NUM_VALID2);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextBadChars=function(formElement)
{var returnValid=true;var szBadChars=formElement.getAttribute("badChars");if(szBadChars!=null)
{if(this.valueHasBadChars(formElement.value,szBadChars))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.NOT_CONTAIN+" "+szLabel+" "+i18n.NOT_CONTAIN2+" "+szBadChars);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextDecimal=function(formElement)
{var returnValid=true;var szValue=formElement.value;if(szValue!=null&&szValue!="")
{var fValue=parseFloat(szValue);var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\"";if(isNaN(fValue))
{returnValid=false;this.markAsInvalid(formElement,i18n.FLOAT_MSG+" "+szLabel+" "+i18n.FLOAT_MSG2);}
else
{if(szValue.indexOf(".")==-1)
{formElement.value=szValue+".";}
var szPrecision=formElement.getAttribute("precision");if(szPrecision!=null)
{var nPrecision=parseInt(szPrecision);if(isNaN(nPrecision))
{this.markAsInvalid(formElement,"Error: checkTextDecimal -- Element \""+szLabel+"\"  contains invalid string in attribute, \"precision\": "+szPrecision);return returnValid;}
else
{formElement.value=new Number(fValue).toFixed(nPrecision);}}
this.markAsValid(formElement);}}
return returnValid;};this.checkTextDepMatch=function(formElement)
{var returnValid=true;var szDependent=formElement.getAttribute("dependencies");if(szDependent!=null)
{if(!this.isValueDependentMatch(formElement.value,szDependent))
{returnValid=false;var pDependentElem=this.getDependentElement(szDependent);var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.MUST_MATCH+" "+szLabel+i18n.MUST_MATCH2+" \""+
(pDependentElem!=null?pDependentElem.getAttribute("labelText"):szDependent)+"\" "+i18n.MUST_MATCH3);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextDepNotMatch=function(formElement)
{var returnValid=true;var szDependent=formElement.getAttribute("dependencies");if(szDependent!=null)
{if(this.isValueDependentMatch(formElement.value,szDependent))
{returnValid=false;var pDependentElem=this.getDependentElement(szDependent);var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.DIFFER1+" \""+
(pDependentElem!=null?pDependentElem.getAttribute("labelText"):szDependent)+"\" "+i18n.DIFFER2);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextFormat=function(formElement)
{var returnValid=true;if(formElement.value!="")
{var szFormat=formElement.getAttribute("format");var szLabelFormat=(formElement.getAttribute("labelFormat")!=null)?formElement.getAttribute("labelFormat"):"No labelFormat Param";if(szFormat!=null)
{var szFormatRegExp=eval(szFormat);if(szFormatRegExp.exec(formElement.value)==null)
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_MATCH_FORMAT+" "+szLabelFormat);}
else{this.markAsValid(formElement);}}
else alert("Error:\nForm element: "+formElement.name+" returning no 'format' parameter.");}
return returnValid;};this.checkTextInteger=function(formElement)
{var returnValid=true;var szValue=formElement.value;if(szValue!=null&&szValue!="")
{var nValue=parseInt(szValue);if(isNaN(nValue)||szValue.indexOf(".")!=-1)
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\"";this.markAsInvalid(formElement,i18n.THE_VALUE_OF+" "+szLabel+" "+i18n.FV_MUST_BE_WHOLE);}
else{this.markAsValid(formElement);}}
return returnValid;};this.checkTextMaxLength=function(formElement)
{var returnValid=true;var szMaxLength=formElement.getAttribute("maxLength");if(szMaxLength!=null)
{var nMaxLength=parseInt(szMaxLength);if(this.valueExceedsLength(formElement.value,nMaxLength))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_NOT_LONGER+" "+nMaxLength+" "+i18n.FV_NOT_LONGER2);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextMinLength=function(formElement)
{var returnValid=true;var szMinLength=formElement.getAttribute("minLength");if(szMinLength!=null&&formElement.value!="")
{var nMinLength=parseInt(szMinLength);if(this.valueSubceedsLength(formElement.value,nMinLength))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_MUST_BE_ATLEAST+" "+nMinLength+" "+i18n.FV_MUST_BE_ATLEAST2);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextExactLength=function(formElement)
{var returnValid=true;var szExactLength=formElement.getAttribute("exactLength");if(szExactLength!=null&&formElement.value!="")
{var nExactLength=parseInt(szExactLength);if(this.valueNotExactLength(formElement.value,nExactLength))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.FV_MUST_ENTER+nExactLength+" "+i18n.FV_MUST_ENTER2+" "+szLabel+" "+i18n.FV_FIELD);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextMustChars=function(formElement)
{var returnValid=true;var szMustChars=formElement.getAttribute("mustChars");if(szMustChars!=null)
{if(this.valueMissingChar(formElement.value,szMustChars)&&formElement.value!="")
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_MUST_CONTAIN+szMustChars);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextNumeric=function(formElement)
{var returnValid=true;if(formElement.value!=""&&isNaN(formElement.value))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.VALID_NUM1+szLabel+i18n.VALID_NUM2);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextNumericCeiling=function(formElement)
{var returnValid=true;var szCeiling=formElement.getAttribute("numericCeiling");if(szCeiling==null)
{var sCeilingIds=formElement.getAttribute("numCeilingIds");if(sCeilingIds!=null)
{var idArray=this.arrayFromCommaList(sCeilingIds);var nLowestVal=null;for(var a=0;a<idArray.length;a++)
{var pCurr=window.$(idArray[a]);if(pCurr!=null)
{var val=pCurr.value;if(!isNaN(parseFloat(val)))
{if(nLowestVal==null||nLowestVal>val)nLowestVal=val;}
else if(val=="")
{nLowestVal="0";}}}
if(nLowestVal!=null)szCeiling=nLowestVal;}}
if(szCeiling==null)
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_BE_NUMBER);}
else
{var szValue=formElement.value;var fCeiling=(szCeiling.indexOf(".")!=-1)?parseFloat(szCeiling):parseInt(szCeiling);var fValue=(szCeiling.indexOf(".")!=-1)?parseFloat(szValue):parseInt(szValue);if(szValue!=""&&(isNaN(fCeiling)||isNaN(fValue)||(fValue>fCeiling)))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_NUMBER_GREATER+" "+szCeiling);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextNumericFloor=function(formElement)
{var returnValid=true;var szFloor=formElement.getAttribute("numericFloor");if(szFloor==null)
{var sFloorIds=formElement.getAttribute("numFloorIds");if(sFloorIds!=null)
{var idArray=this.arrayFromCommaList(sFloorIds);var nHighestVal=null;for(var a=0;a<idArray.length;a++)
{var pCurr=window.$(idArray[a]);if(pCurr!=null)
{var val=pCurr.value;if(!isNaN(parseFloat(val)))
{if(nHighestVal==null||nHighestVal<val)nHighestVal=val;}
else if(val=="")
{nHighestVal="0";}}}
if(nHighestVal!=null)szFloor=nHighestVal;}}
if(szFloor==null)
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_BE_NUMBER);}
else
{var szValue=formElement.value;var fFloor=(szFloor.indexOf(".")!=-1)?parseFloat(szFloor):parseInt(szFloor);var fValue=(szFloor.indexOf(".")!=-1)?parseFloat(szValue):parseInt(szValue);if(szValue!=""&&(isNaN(fFloor)||isNaN(fValue)||(fValue<fFloor)))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_NUMBER_GREATER+" "+szFloor);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextNumValGT=function(formElement)
{var returnValid=true;var szCheckValue=formElement.getAttribute("greaterThan");if(szCheckValue==null)
{var sGTIds=formElement.getAttribute("numValGTIds");if(sGTIds!=null)
{var idArray=this.arrayFromCommaList(sGTIds);var nHighestVal=null;for(var a=0;a<idArray.length;a++)
{var pCurr=window.$(idArray[a]);if(pCurr!=null)
{var val=pCurr.value;if(!isNaN(parseFloat(val)))
{nHighestVal=(nHighestVal==null||nHighestVal<val)?val:nHighestVal;}}}
if(nHighestVal!=null)szCheckValue=nHighestVal;}}
if(this.isValueGreaterThan(formElement.value,szCheckValue)&&formElement.value!="")
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_GREATER_THAN+" "+szCheckValue);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextNumValGE=function(formElement)
{var returnValid=true;var szCheckValue=formElement.getAttribute("greaterThan");if(this.isValueGreaterEqual(formElement.value,szCheckValue)&&formElement.value!="")
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_LESS_THAN_EQUAL+" "+szCheckValue);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextNumValLT=function(formElement)
{var returnValid=true;var szCheckValue=formElement.getAttribute("lessThan");if(szCheckValue==null)
{var sLTIds=formElement.getAttribute("numValLTIds");if(sLTIds!=null)
{var idArray=this.arrayFromCommaList(sLTIds);var nLowestVal=null;for(var a=0;a<idArray.length;a++)
{var pCurr=window.$(idArray[a]);if(pCurr!=null)
{var val=pCurr.value;if(!isNaN(parseFloat(val)))
{nLowestVal=(nLowestVal==null||nLowestVal>val)?val:nLowestVal;}}}
if(nLowestVal!=null)szCheckValue=nLowestVal;}}
if(this.isValueLessThan(formElement.value,szCheckValue)&&formElement.value!="")
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.THE_VALUE+" "+szLabel+i18n.FV_LESS_THAN+" "+
szCheckValue);}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextRequired=function(formElement)
{var returnValid=true;var eleValue=formElement.value;if(eleValue==""||(eleValue!=null&&eleValue.replace(/\s+$/g,"")==""))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";var szFieldType=formElement.getAttribute("fieldTypetext");if(szFieldType==null)
{szFieldType="text";}
if(typeof LocalizedFormValidationText!="undefined")
{this.markAsInvalid(formElement,this.messageFormat(LocalizedFormValidationText.TEXT_REQUIRED,szLabel));}
else
{this.markAsInvalid(formElement,i18n.formv_THE+" "+szFieldType+" "+i18n.FV_FIELD+" "+szLabel+i18n.formv_MUST_CONTAIN_VAL);}}
else
{this.markAsValid(formElement);}
return returnValid;};this.checkTextRequireOr=function(formElement)
{var returnValid=true;var szOrGroup=formElement.getAttribute("reqOrGroup");if(szOrGroup!=null)
{formElement.removeAttribute("hasRequireOrError");var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\", or ";var szErrorString=i18n.FV_CONTAIN_VALUE+" "+szLabel;var szElementIds=this.arrayFromCommaList(szOrGroup);var pElem=null;for(var a=0;a<szElementIds.length;a++)
{pElem=document.getElementById(szElementIds[a]);if(pElem!=null)
{if(pElem.value!="")
{this.markAsValid(formElement);return returnValid;}}
szLabel=pElem.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\", or ";szErrorString+=szLabel;}
formElement.setAttribute("hasRequireOrError","true");returnValid=false;this.markAsInvalid(formElement,szErrorString+" "+i18n.FV_MUST_CONTAIN_VAL);}
else this.markAsValid(formElement);return returnValid;};this.checkTextSpecialChars=function(formElement)
{var returnValid=true;var szSpecialChars=formElement.getAttribute("specialChars");if(szSpecialChars!=null)
{if(this.valueHasBadChars(formElement.value,szSpecialChars))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.NOT_CONTAIN+" "+szLabel+" "+i18n.SPECIAL_CHARACTERS);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.checkTextSpecialCharsCand=function(formElement)
{var returnValid=true;var szSpecialChars=formElement.getAttribute("specialCharsCand");if(szSpecialChars!=null)
{if(this.valueHasBadChars(formElement.value,szSpecialChars))
{returnValid=false;var szLabel=formElement.getAttribute("labelText");if(szLabel==null)szLabel="";else szLabel="\""+szLabel+"\" ";this.markAsInvalid(formElement,i18n.NOT_CONTAIN+" "+szLabel+" "+i18n.SPECIAL_CHARACTERS_CANDIDATE);}
else
{this.markAsValid(formElement);}}
return returnValid;};this.clearErrorMsg=function()
{this.errorText="";};this.clearTitleTag=function(pElement)
{pElement.removeAttribute("title");};this.displayErrorMsg=function()
{var errMsg=i18n.FV_ERRMSG;if(typeof LocalizedFormValidationText!="undefined")
{errMsg=LocalizedFormValidationText.ERROR_PROLOGUE;}
errMsg+=this.errorText;alert(errMsg);this.clearErrorMsg();};this.errorCountDecrement=function(pElement)
{if(isNaN(pElement.errorCount))
{pElement.errorCount=0;}
else
{pElement.errorCount=(pElement.errorCount<1)?0:pElement.errorCount-1;}};this.errorCountIncrement=function(pElement)
{if(isNaN(pElement.errorCount))
{pElement.errorCount=1;}
else
{pElement.errorCount++;}};this.errorTitleTag=function(pElement,szErrorMsg)
{pElement.setAttribute("title",szErrorMsg);};this.isValueAlphabetical=function(szValue)
{var nRegSearchResult=null;nRegSearchResult=szValue.search(/[^a-zA-Z]/);return(nRegSearchResult==-1);};this.isValueAlphabeticalSpace=function(szValue)
{var nRegSearchResult=szValue.search(/[^a-zA-Z\s]/);return(nRegSearchResult==-1);};this.isValueAlphanumeric=function(szValue)
{var nRegSearchResult=szValue.search(/[^a-zA-Z0-9]/);return(nRegSearchResult==-1);};this.isValueAlphanumericSpace=function(szValue)
{var nRegSearchResult=szValue.search(/[^a-zA-Z0-9\s]/);return(nRegSearchResult==-1);};this.isValueDependentMatch=function(szMatchValue,szDependent)
{var pEl=this.getDependentElement(szDependent);if(pEl!=null)
{return(pEl.value==szMatchValue);}
else return true;};this.getDependentElement=function(szDependent)
{var szIdArray=this.arrayFromCommaList(szDependent);for(var b=0;b<szIdArray.length;b++)
{var pDependentElem=window.document.getElementById(szIdArray[b]);if(pDependentElem!=null)
{return pDependentElem;}}
return null;};this.initElements=function()
{for(var g=0;g<element.elements.length;g++)
{var pCurrentElement=element.elements[g];switch(pCurrentElement.type)
{case"checkbox":if(pCurrentElement.getAttribute("rules")!=null)
{pCurrentElement.exclusionCallback=function(event)
{var pElement=event.srcElement;var szRules=pElement.getAttribute("rules");var isExclusive=(szRules!=null&&szRules.indexOf("exclusive")!=-1);var szExclusions=pElement.getAttribute("exclusive");if(szExclusions!=null&&isExclusive)
{var szExArray=this.arrayFromCommaList(szExclusions);for(var h=0;h<szExArray.length;h++)
{if(pElement.checked&&pElement.form[szExArray[h]].checked)
{pElement.form[szExArray[h]].checked=false;}}}};pCurrentElement.inclusionCallback=function(event)
{var pElement=event.srcElement;var szRules=pElement.getAttribute("rules");var isInclusive=(szRules!=null&&szRules.indexOf("inclusive")!=-1);var szInclusions=pElement.getAttribute("inclusive");if(szInclusions!=null&&isInclusive)
{var szIncArray=this.arrayFromCommaList(szInclusions);for(var h=0;h<szIncArray.length;h++)
{if(pElement.checked&&!pElement.form[szIncArray[h]].checked)
{pElement.form[szIncArray[h]].checked=true;}
else if(!pElement.checked&&pElement.form[szIncArray[h]].checked)
{pElement.form[szIncArray[h]].checked=false;}}}};appendEvent(pCurrentElement,"click",pCurrentElement.exclusionCallback);appendEvent(pCurrentElement,"click",pCurrentElement.inclusionCallback);}
break;}}};this.isValueGreaterThan=function(szValue,szCheckValue)
{if(isNaN(szValue))
{return false;}
else
{if(szCheckValue!=null)
{var nValue=parseFloat(szValue);var nCheckValue=parseFloat(szCheckValue);return nValue<=nCheckValue;}
else
{return true;}}};this.isValueGreaterEqual=function(szValue,szCheckValue)
{if(isNaN(szValue))
{return false;}
else
{if(szCheckValue!=null)
{var nValue=parseFloat(szValue);var nCheckValue=parseFloat(szCheckValue);return nValue<nCheckValue;}
else
{return true;}}};this.isValueLesserEqual=function(szValue,szCheckValue)
{return(isNaN(szValue))?false:!this.isValueGreaterThan(szValue,szCheckValue);};this.isValueLessThan=function(szValue,szCheckValue)
{return(isNaN(szValue))?false:!this.isValueGreaterEqual(szValue,szCheckValue);};this.markAsInvalid=function(pElement,szErrorMsg)
{this.errorCountIncrement(pElement);if(pElement.errorCount>0)
{this.showErrorStyles(pElement);this.errorTitleTag(pElement,szErrorMsg);this.appendErrorMsg(szErrorMsg);}};this.markAsValid=function(pElement)
{if(pElement.errorCount==0)
{this.clearTitleTag(pElement);this.showRuntimeStyles(pElement);}};this.showDefaultStyles=function(pElement)
{pElement.style.backgroundColor=DEFAULT_BG_COLOR;pElement.style.color=DEFAULT_TEXT_COLOR;};this.showErrorStyles=function(pElement)
{pElement.style.backgroundColor=ERROR_BG_COLOR;pElement.style.color=ERROR_TEXT_COLOR;};this.showRuntimeStyles=function(pElement)
{if(isIE)
{pElement.style.backgroundColor=pElement.runtimeStyle.backgroundColor;pElement.style.color=pElement.runtimeStyle.color;}
else
{var szBgColor=pElement.getAttribute("runtimeBackgroundColor");var szColor="#000";pElement.style.backgroundColor=(szBgColor!=null)?szBgColor:"";pElement.style.color=(szColor!=null)?szColor:"inherit";if((pElement.getAttribute("type")=="checkbox"||pElement.getAttribute("type")=="radio"))
{var szBorder=pElement.getAttribute("runtimeBorder");pElement.parentNode.style.border=(szBorder!=null&&szBorder!="")?szBorder:"none";}}};this.validate=function(nSubSet)
{this.dataValid=this.validateElements(nSubSet);element.dataValid=this.dataValid;if(!this.dataValid)
{this.displayErrorMsg();if(isIE)event.returnValue=false;return false;}
return true;};this.validateElements=function(nSubSet)
{var allElements=element.elements;var isElementValid=true;var isFormValid=true;for(var a=0;a<allElements.length;a++)
{var subSetIndex=allElements[a].getAttribute("subset");if(nSubSet==null||(nSubSet!=null&&subSetIndex==nSubSet))
{isElementValid=element.validation.checkElement(allElements[a]);if(!isElementValid)isFormValid=false;}}
return isFormValid;};this.valueExceedsLength=function(szValue,nMaxLength){return(szValue.length>nMaxLength);};this.valueHasBadChars=function(szValue,szBadChars)
{var hasBadCharacter=false;for(var c=0;c<szBadChars.length;c++)
{if(szValue.indexOf(szBadChars.charAt(c))!=-1)
{hasBadCharacter=true;}}
return(hasBadCharacter);};this.valueMissingChar=function(szValue,szMustChars){var missingCharacter=false;for(var c=0;c<szMustChars.length;c++)
{if(szValue.indexOf(szMustChars.charAt(c))==-1)
{missingCharacter=true;}}
return missingCharacter;};this.valueSubceedsLength=function(szValue,nMinLength)
{return(szValue.length<nMinLength);};this.valueNotExactLength=function(szValue,nExactLength){if(nExactLength>0){return(szValue.length!=nExactLength);}};this.initElements();element.validate=function(){element.validation.validate();};};appendEvent(window,"load",function(){var aFormElems=window.document.getElementsByTagName("form");for(var a=0;a<aFormElems.length;a++)
{var pForm=aFormElems[a];pForm.validation=new FormValidation(aFormElems[a]);}})
