var undef;var internalRules;function performCheck(_1,_2,_3){var _4=makeRules(_2);internalRules=makeRules(_2);this.f=document.forms[_1];if(!this.f){debug("DEBUG: could not find form object "+_1);return null;}var _5=new Array();var ix=0;if(_4.length){for(var i=0;i<_4.length;i++){var _8=_4[i];if(_8!=null){highlight(getField(f,_8.el),inputclassnormal);}}}else{if(_4!=null){highlight(getField(f,_4.el),inputclassnormal);}}if(_4.length){for(var i=0;i<_4.length;i++){var _a=_4[i];var _b=null;if(_a==null){}else{if(_a.ruleType=="pre-condition"||_a.ruleType=="post-condition"){}else{if(_a.ruleName=="implies"){pre=_a.el;post=_a.comparisonValue;var _c=getField(f,_4[pre].el).className;if(checkRule(f,_4[pre])==null&&checkRule(f,_4[post])!=null){_b=_a.alertMsg;}else{if(checkRule(f,_4[pre])!=null){getField(f,_4[pre].el).className=_c;}}}else{_b=checkRule(f,_a);}}}if(_b!=null){_5[ix]=_b;ix++;}}}else{var _d=_4;err=checkRule(f,_d);if(err!=null){_5[0]=err;}}return displayAlert(_5,_3);}function checkKeyPress(ev,_f,_10){var _11=null;if(getBrowser()=="msie"){_11=window.event.keyCode;}else{if(getBrowser()=="netscape"||getBrowser()=="firefox"){_11=ev.which;}}var _12=makeRules(_10);var _13=true;if(_12.length){for(var i=0;i<_12.length;i++){var _15=_12[i];if(_15.ruleName=="keypress"&&_15.el==_f.name){_13=isKeyAllowed(_11,_15.comparisonValue);break;}}}else{var _16=_12;if(_16.ruleName=="keypress"&&_16.el==_f.name){_13=isKeyAllowed(_11,_16.comparisonValue);}}if(!_13){if(getBrowser()=="msie"){window.event.keyCode=0;}else{if(getBrowser()=="netscape"||getBrowser()=="firefox"){ev.initKeyEvent("keypress",true,true,window,false,false,true,false,0,0,_f);}}}return false;}function displayAlert(_17,_18){var _19=null;if(_18=="classic"){_19=displayClassic(_17);}else{if(_18=="innerHtml"){_19=displayInnerHtml(_17);}else{if(_18=="jsVar"){_19=displayJsVar(_17);}else{debug("DEBUG: alert type "+_18+" not supported");}}}return _19;}function displayClassic(_1a){var str="";if(_1a!=null&&_1a.length>0){if(strTrim(HEADER_MSG).length>0){str+=HEADER_MSG+"\n\n";}for(var i=0;i<_1a.length;i++){str+=" "+_1a[i]+"\n";}if(strTrim(FOOTER_MSG).length>0){str+="\n"+FOOTER_MSG;}alert(str);return false;}else{return true;}}function displayInnerHtml(_1d){if(_1d!=null&&_1d.length>0){var str="";if(strTrim(HEADER_MSG).length>0){str+=HEADER_MSG;}str+="<ul>";for(var i=0;i<_1d.length;i++){str+="<li>"+_1d[i]+"</li>";}str+="</ul>";if(strTrim(FOOTER_MSG).length>0){str+=FOOTER_MSG;}document.getElementById(errorsdiv).innerHTML=str;document.getElementById(errorsdiv).className=innererror;document.getElementById(errorsdiv).style.display="block";return false;}else{document.getElementById(errorsdiv).innerHTML="";document.getElementById(errorsdiv).className="";document.getElementById(errorsdiv).style.display="none";return true;}}function displayJsVar(_20){document.getElementById(errorsdiv).className="";document.getElementById(errorsdiv).style.display="none";if(_20!=null&&_20.length>0){var str="";str+="<script>var jsErrors;</script>";document.getElementById(errorsdiv).innerHTML=str;jsErrors=_20;return false;}else{document.getElementById(errorsdiv).innerHTML="<script>var jsErrors;</script>";return true;}}function rule(el,_23,_24,_25,_26){if(!checkArguments(arguments)){return false;}tmp=el.split(":");nameDisplayed="";if(tmp.length==2){nameDisplayed=tmp[1];el=tmp[0];}this.el=el;this.nameDisplayed=nameDisplayed;this.ruleName=_23;this.comparisonValue=_24;this.ruleType=_26;if(_25==undef||_25==null){this.alertMsg=getDefaultMessage(el,nameDisplayed,_23,_24);}else{this.alertMsg=_25;}}function checkRule(f,_28){retVal=null;if(_28!=null){if(_28.ruleName=="custom"){var _29=" retVal = "+_28.el;eval(_29);}else{if(_28.ruleName=="and"){var _2a=_28.el;var _2b=_28.comparisonValue;if(checkRule(f,internalRules[_2a])!=null){retVal=_28.alertMsg;if(_28.ruleType=="pre-condition"){highlight(getField(f,internalRules[_2a].el),inputclassnormal);}}else{op_k=_2b.split("-");for(var k=0;k<op_k.length;k++){if(checkRule(f,internalRules[op_k[k]])!=null){retVal=_28.alertMsg;if(_28.ruleType=="pre-condition"){highlight(getField(f,internalRules[op_k[k]].el),inputclassnormal);}break;}}}}else{if(_28.ruleName=="or"){var _2d=_28.el;var _2e=_28.comparisonValue;var _2f=false;if(checkRule(f,internalRules[_2d])==null){_2f=true;}else{if(_28.ruleType=="pre-condition"){highlight(getField(f,internalRules[_2d].el),inputclassnormal);}op_k=_2e.split("-");for(var k=0;k<op_k.length;k++){if(checkRule(f,internalRules[op_k[k]])==null){_2f=true;break;}else{if(_28.ruleType=="pre-condition"){highlight(getField(f,internalRules[op_k[k]].el),inputclassnormal);}}}}if(!_2f){retVal=_28.alertMsg;}}else{el=getField(f,_28.el);if(el==null){debug("DEBUG: could not find element "+_28.el);return null;}var err=null;if(el.type){if(el.type=="hidden"||el.type=="text"||el.type=="password"||el.type=="textarea"){err=checkText(el,_28);}else{if(el.type=="checkbox"){err=checkCheckbox(el,_28);}else{if(el.type=="select-one"){err=checkSelOne(el,_28);}else{if(el.type=="select-multiple"){err=checkSelMul(el,_28);}else{if(el.type=="radio"){err=checkRadio(el,_28);}else{debug("DEBUG: type "+el.type+" not supported");}}}}}}else{err=checkRadio(el,_28);}retVal=err;}}}}return retVal;}function checkArguments(_32){if(_32.length<4){debug("DEBUG: rule requires four arguments at least");return false;}else{if(_32[0]==null||_32[1]==null){debug("DEBUG: el and ruleName are required");return false;}}return true;}function checkRadio(el,_34){var err=null;if(_34.ruleName=="required"){var _36=el;var _37=false;if(isNaN(_36.length)&&_36.checked){_37=true;}else{for(var j=0;j<_36.length;j++){if(_36[j].checked){_37=true;break;}}}if(!_37){highlight(el,inputclasserror);err=_34.alertMsg;}}else{if(_34.ruleName=="equal"){var _39=el;var _3a=false;if(isNaN(_39.length)&&_39.checked){if(_39.value==_34.comparisonValue){_3a=true;}}else{for(var j=0;j<_39.length;j++){if(_39[j].checked){if(_39[j].value==_34.comparisonValue){_3a=true;break;}}}}if(!_3a){err=_34.alertMsg;}}else{if(_34.ruleName=="notequal"){var _3c=el;var _3d=false;if(isNaN(_3c.length)&&_3c.checked){if(_3c.value!=_34.comparisonValue){_3d=true;}}else{for(var j=0;j<_3c.length;j++){if(_3c[j].checked){if(_3c[j].value!=_34.comparisonValue){_3d=true;break;}}}}if(!_3d){err=_34.alertMsg;}}else{debug("DEBUG: rule "+_34.ruleName+" not supported for radio");}}}return err;}function checkText(el,_40){err=null;if(trimenabled){el.value=strTrim(el.value);}if(_40.ruleName=="required"){if(el.value==null||el.value==""){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="equal"){err=checkEqual(el,_40);}else{if(_40.ruleName=="notequal"){err=checkNotEqual(el,_40);}else{if(_40.ruleName=="numeric"){reg=new RegExp("^[0-9]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="alphabetic"){reg=new RegExp("^[A-Za-z]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="alphanumeric"){reg=new RegExp("^[A-Za-z0-9]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="alnumhyphen"){reg=new RegExp("^[A-Za-z0-9-_]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="alnumhyphenat"){reg=new RegExp("^[A-Za-z0-9-_@]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="alphaspace"){reg=new RegExp("^[A-Za-z0-9-_ \n\r\t]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="email"){reg=new RegExp("^(([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}){0,1}$");if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="maxlength"){if(isNaN(_40.comparisonValue)){debug("DEBUG: comparisonValue for rule "+_40.ruleName+" not a number");}else{if(el.value.length>_40.comparisonValue){highlight(el,inputclasserror);err=_40.alertMsg;}}}else{if(_40.ruleName=="minlength"){if(isNaN(_40.comparisonValue)){debug("DEBUG: comparisonValue for rule "+_40.ruleName+" not a number");}else{if(el.value.length<_40.comparisonValue){highlight(el,inputclasserror);err=_40.alertMsg;}}}else{if(_40.ruleName=="numrange"){reg=new RegExp("^[-+]{0,1}[0-9]*[.]{0,1}[0-9]*$");if(!reg.test(unformatNumber(el.value))){highlight(el,inputclasserror);err=_40.alertMsg;}else{regRange=new RegExp("^[0-9]+-[0-9]+$");if(!regRange.test(_40.comparisonValue)){debug("DEBUG: comparisonValue for rule "+_40.ruleName+" not in format number1-number2");}else{rangeVal=_40.comparisonValue.split("-");if(eval(unformatNumber(el.value))<eval(rangeVal[0])||eval(unformatNumber(el.value))>eval(rangeVal[1])){highlight(el,inputclasserror);err=_40.alertMsg;}}}}else{if(_40.ruleName=="regexp"){reg=new RegExp(_40.comparisonValue);if(!reg.test(el.value)){highlight(el,inputclasserror);err=_40.alertMsg;}}else{if(_40.ruleName=="integer"){err=checkInteger(el,_40);}else{if(_40.ruleName=="double"){err=checkDouble(el,_40);}else{if(_40.ruleName=="date"){err=checkDate(el,_40);}else{if(_40.ruleName=="date_lt"){err=checkDateLessThan(el,_40,false);}else{if(_40.ruleName=="date_le"){err=checkDateLessThan(el,_40,true);}else{if(_40.ruleName=="keypress"){}else{if(_40.ruleName=="empty"){if(el.value!=null&&el.value!=""){highlight(el,inputclasserror);err=_40.alertMsg;}}else{debug("DEBUG: rule "+_40.ruleName+" not supported for "+el.type);}}}}}}}}}}}}}}}}}}}}}return err;}function checkInteger(el,_42){reg=new RegExp("^[-+]{0,1}[0-9]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);return _42.alertMsg;}}function checkDouble(el,_44){var sep=DECIMAL_SEP;reg=new RegExp("^[-+]{0,1}[0-9]*["+sep+"]{0,1}[0-9]*$");if(!reg.test(el.value)){highlight(el,inputclasserror);return _44.alertMsg;}}function checkDate(el,_47){error=null;if(el.value!=""){var _48=DATE_FORMAT;ddReg=new RegExp("dd");MMReg=new RegExp("MM");yyyyReg=new RegExp("yyyy");if(!ddReg.test(_48)||!MMReg.test(_48)||!yyyyReg.test(_48)){debug("DEBUG: locale format "+_48+" not supported");}else{ddStart=_48.indexOf("dd");MMStart=_48.indexOf("MM");yyyyStart=_48.indexOf("yyyy");}strReg=_48.replace("dd","[0-9]{2}").replace("MM","[0-9]{2}").replace("yyyy","[0-9]{4}");reg=new RegExp("^"+strReg+"$");if(!reg.test(el.value)){highlight(el,inputclasserror);error=_47.alertMsg;}else{dd=el.value.substring(ddStart,ddStart+2);MM=el.value.substring(MMStart,MMStart+2);yyyy=el.value.substring(yyyyStart,yyyyStart+4);if(!checkddMMyyyy(dd,MM,yyyy)){highlight(el,inputclasserror);error=_47.alertMsg;}}}return error;}function checkDateLessThan(el,_4a,_4b){error=null;var _4c=checkDate(el,_4a)==null?true:false;if(_4c&&el.value!=""){var _4d=DATE_FORMAT;ddStart=_4d.indexOf("dd");MMStart=_4d.indexOf("MM");yyyyStart=_4d.indexOf("yyyy");dd=el.value.substring(ddStart,ddStart+2);MM=el.value.substring(MMStart,MMStart+2);yyyy=el.value.substring(yyyyStart,yyyyStart+4);myDate=""+yyyy+MM+dd;strReg=_4d.replace("dd","[0-9]{2}").replace("MM","[0-9]{2}").replace("yyyy","[0-9]{4}");reg=new RegExp("^"+strReg+"$");var _4e=_4a.comparisonValue.indexOf("$")==0?true:false;var _4f="";if(_4e){toSplit=_4a.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){_4f=this.getField(f,tmp[0]).value;}else{_4f=this.getField(f,_4a.comparisonValue.substr(1)).value;}}else{_4f=_4a.comparisonValue;}if(!reg.test(_4f)){highlight(el,inputclasserror);error=_4a.alertMsg;}else{cdd=_4f.substring(ddStart,ddStart+2);cMM=_4f.substring(MMStart,MMStart+2);cyyyy=_4f.substring(yyyyStart,yyyyStart+4);cDate=""+cyyyy+cMM+cdd;if(_4b){if(!checkddMMyyyy(cdd,cMM,cyyyy)||myDate>cDate){highlight(el,inputclasserror);error=_4a.alertMsg;}}else{if(!checkddMMyyyy(cdd,cMM,cyyyy)||myDate>=cDate){highlight(el,inputclasserror);error=_4a.alertMsg;}}}}else{if(el.value!=""){highlight(el,inputclasserror);error=_4a.alertMsg;}}return error;}function checkEqual(el,_51){error=null;var _52=_51.comparisonValue.indexOf("$")==0?true:false;var _53="";if(_52){toSplit=_51.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){_53=this.getField(f,tmp[0]).value;}else{_53=this.getField(f,_51.comparisonValue.substr(1)).value;}}else{_53=_51.comparisonValue;}if(el.value!=_53){highlight(el,inputclasserror);error=_51.alertMsg;}return error;}function checkNotEqual(el,_55){error=null;var _56=_55.comparisonValue.indexOf("$")==0?true:false;var _57="";if(_56){toSplit=_55.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){_57=this.getField(f,tmp[0]).value;}else{_57=this.getField(f,_55.comparisonValue.substr(1)).value;}}else{_57=_55.comparisonValue;}if(el.value==_57){highlight(el,inputclasserror);error=_55.alertMsg;}return error;}function checkddMMyyyy(dd,MM,_5a){retVal=true;if((dd>31)||(MM>12)||(dd==31&&(MM==2||MM==4||MM==6||MM==9||MM==11))||(dd>29&&MM==2)||(dd==29&&(MM==2)&&((_5a%4>0)||(_5a%4==0&&_5a%100==0&&_5a%400>0)))){retVal=false;}return retVal;}function checkCheckbox(el,_5c){if(_5c.ruleName=="required"){if(!el.checked){highlight(el,inputclasserror);return _5c.alertMsg;}}else{if(_5c.ruleName=="equal"){if(!el.checked||el.value!=_5c.comparisonValue){highlight(el,inputclasserror);return _5c.alertMsg;}}else{if(_5c.ruleName=="notequal"){if(!el.checked||el.value==_5c.comparisonValue){highlight(el,inputclasserror);return _5c.alertMsg;}}else{debug("DEBUG: rule "+_5c.ruleName+" not supported for "+el.type);}}}}function checkSelOne(el,_5e){if(_5e.ruleName=="required"){var _5f=false;var inx=el.selectedIndex;if(inx>=0&&el.options[inx].value){_5f=true;}if(!_5f){highlight(el,inputclasserror);return _5e.alertMsg;}}else{if(_5e.ruleName=="equal"){var _61=false;var inx=el.selectedIndex;if(inx>=0&&el.options[inx].value==_5e.comparisonValue){_61=true;}if(!_61){highlight(el,inputclasserror);return _5e.alertMsg;}}else{if(_5e.ruleName=="notequal"){var _63=false;var inx=el.selectedIndex;if(inx>=0&&el.options[inx].value!=_5e.comparisonValue){_63=true;}if(!_63){highlight(el,inputclasserror);return _5e.alertMsg;}}else{debug("DEBUG: rule "+_5e.ruleName+" not supported for "+el.type);}}}}function checkSelMul(el,_66){if(_66.ruleName=="required"){var _67=false;opts=el.options;for(var i=0;i<opts.length;i++){if(opts[i].selected&&opts[i].value){_67=true;break;}}if(!_67){highlight(el,inputclasserror);return _66.alertMsg;}}else{if(_66.ruleName=="equal"){var _69=false;opts=el.options;for(var i=0;i<opts.length;i++){if(opts[i].selected&&opts[i].value==_66.comparisonValue){_69=true;break;}}if(!_69){highlight(el,inputclasserror);return _66.alertMsg;}}else{if(_66.ruleName=="notequal"){var _6b=false;opts=el.options;for(var i=0;i<opts.length;i++){if(opts[i].selected&&opts[i].value!=_66.comparisonValue){_6b=true;break;}}if(!_6b){highlight(el,inputclasserror);return _66.alertMsg;}}else{debug("DEBUG: rule "+_66.ruleName+" not supported for "+el.type);}}}}function debug(msg){if(debugmode){alert(msg);}}function strTrim(str){return str.replace(/^\s+/,"").replace(/\s+$/,"");}function makeRules(_6f){var _70=new Array();if(_6f.length){for(var i=0;i<_6f.length;i++){_70[i]=splitRule(_6f[i]);}}else{_70[0]=splitRule(_6f);}return _70;}function splitRule(_72){var _73=null;if(_72!=undef){params=_72.split("|");switch(params.length){case 2:_73=new rule(params[0],params[1],null,null,null);break;case 3:if(threeParamRule(params[1])){_73=new rule(params[0],params[1],params[2],null,null);}else{if(params[2]=="pre-condition"||params[2]=="post-condition"){_73=new rule(params[0],params[1],null,"foo",params[2]);}else{_73=new rule(params[0],params[1],null,params[2],null);}}break;case 4:if(threeParamRule(params[1])&&(params[3]=="pre-condition"||params[3]=="post-condition")){_73=new rule(params[0],params[1],params[2],"foo",params[3]);}else{_73=new rule(params[0],params[1],params[2],params[3],null);}break;default:debug("DEBUG: wrong definition of rule");}}return _73;}function threeParamRule(_74){return (_74=="equal"||_74=="notequal"||_74=="minlength"||_74=="maxlength"||_74=="date_lt"||_74=="date_le"||_74=="implies"||_74=="regexp"||_74=="numrange"||_74=="keypress"||_74=="and"||_74=="or")?true:false;}function highlight(el,_76){if(el!=undef&&inputhighlight){el.className=_76;}}function getDefaultMessage(el,_78,_79,_7a){if(_78.length==0){_78=el;}var msg=DEFAULT_MSG;if(_79=="required"){msg=REQUIRED_MSG.replace("{1}",_78);}else{if(_79=="minlength"){msg=MINLENGTH_MSG.replace("{1}",_78).replace("{2}",_7a);}else{if(_79=="maxlength"){msg=MAXLENGTH_MSG.replace("{1}",_78).replace("{2}",_7a);}else{if(_79=="numrange"){msg=NUMRANGE_MSG.replace("{1}",_78).replace("{2}",_7a);}else{if(_79=="date"){msg=DATE_MSG.replace("{1}",_78);}else{if(_79=="numeric"){msg=NUMERIC_MSG.replace("{1}",_78);}else{if(_79=="integer"){msg=INTEGER_MSG.replace("{1}",_78);}else{if(_79=="double"){msg=DOUBLE_MSG.replace("{1}",_78);}else{if(_79=="equal"){msg=EQUAL_MSG.replace("{1}",_78).replace("{2}",getComparisonDisplayed(_7a));}else{if(_79=="notequal"){msg=NOTEQUAL_MSG.replace("{1}",_78).replace("{2}",getComparisonDisplayed(_7a));}else{if(_79=="alphabetic"){msg=ALPHABETIC_MSG.replace("{1}",_78);}else{if(_79=="alphanumeric"){msg=ALPHANUMERIC_MSG.replace("{1}",_78);}else{if(_79=="alnumhyphen"){msg=ALNUMHYPHEN_MSG.replace("{1}",_78);}else{if(_79=="alnumhyphenat"){msg=ALNUMHYPHENAT_MSG.replace("{1}",_78);}else{if(_79=="alphaspace"){msg=ALPHASPACE_MSG.replace("{1}",_78);}else{if(_79=="email"){msg=EMAIL_MSG.replace("{1}",_78);}else{if(_79=="regexp"){msg=REGEXP_MSG.replace("{1}",_78).replace("{2}",_7a);}else{if(_79=="date_lt"){msg=DATE_LT_MSG.replace("{1}",_78).replace("{2}",getComparisonDisplayed(_7a));}else{if(_79=="date_le"){msg=DATE_LE_MSG.replace("{1}",_78).replace("{2}",getComparisonDisplayed(_7a));}else{if(_79=="empty"){msg=EMPTY_MSG.replace("{1}",_78);}}}}}}}}}}}}}}}}}}}}return msg;}function getComparisonDisplayed(_7c){comparisonDisplayed=_7c;if(_7c.substring(0,1)=="$"){_7c=_7c.substring(1,_7c.length);tmp=_7c.split(":");if(tmp.length==2){comparisonDisplayed=tmp[1];}else{comparisonDisplayed=_7c;}}return comparisonDisplayed;}function getBrowser(){brs=navigator.userAgent.toLowerCase();var _7d;if(brs.search(/msie\s(\d+(\.?\d)*)/)!=-1){_7d="msie";}else{if(brs.search(/netscape[\/\s](\d+([\.-]\d)*)/)!=-1){_7d="netscape";}else{if(brs.search(/firefox[\/\s](\d+([\.-]\d)*)/)!=-1){_7d="firefox";}else{_7d="unknown";}}}return _7d;}function isKeyAllowed(_7e,_7f){retval=false;var _80;if(_7e==8){retval=true;}else{for(var i=0;i<_7f.length;i++){_80=_7f.charCodeAt(i);if(_80==_7e){retval=true;break;}}}return retval;}function getField(_82,_83){var _84=null;if(_82.elements[_83]){_84=_82.elements[_83];}else{if(document.getElementById(_83)){_84=document.getElementById(_83);}}return _84;}function unformatNumber(_85){var _86=_85.replace(THOUSAND_SEP,"");_86=_86.replace(DECIMAL_SEP,".");return _86;}