var yav={undef:undefined,isFocusSet:undefined,internalRules:undefined,f:undefined,formEvt:undefined,fieldsEvt:new Array,rulesEvt:new Array,helpEvt:new Array,mask:new Array,onOKEvt:new Array,onErrorEvt:new Array,preValidationEvt:new Array,filterByName:null,performCheck:function(formName,strRules,alertType,filterErrorsByName){yav.filterByName=filterErrorsByName?filterErrorsByName:null;for(var j=0;j<yav.preValidationEvt.length;j++){if(yav.filterByName==yav.preValidationEvt[j].name){var preValidationResult=eval(yav.preValidationEvt[j].fn);yav.preValidationEvt[j].executedWithSuccess=preValidationResult;if(!preValidationResult){return preValidationResult}break}}yav.isFocusSet=false;var rules=yav.makeRules(strRules);yav.internalRules=yav.makeRules(strRules);yav.f=document.forms[formName];if(!yav.f){yav.debug("DEBUG: could not find form object "+formName);return null}var errors=new Array;var ix=0;if(rules.length){for(var i=0;i<rules.length;i++){var aRule=rules[i];if(aRule!=null){yav.highlight(yav.getField(yav.f,aRule.el),yav_config.inputclassnormal)}}}else{if(rules!=null){yav.highlight(yav.getField(yav.f,rules.el),yav_config.inputclassnormal)}}if(rules.length){for(var i=0;i<rules.length;i++){var aRule=rules[i];var anErr=null;if(aRule==null){}else if(aRule.ruleType=="pre-condition"||aRule.ruleType=="post-condition"||aRule.ruleType=="andor-operator"){}else if(aRule.ruleName=="implies"){pre=aRule.el;post=aRule.comparisonValue;var oldClassName=yav.getField(yav.f,rules[pre].el).className;if(yav.filterByName!=null){if(rules[pre].el==yav.filterByName||rules[post].el==yav.filterByName){yav.clearInlineSpans(rules[pre].el,rules[post].el)}}if(yav.checkRule(yav.f,rules[pre])==null&&yav.checkRule(yav.f,rules[post])!=null){anErr=yav.deleteInline(aRule.alertMsg)+"__inline__"+rules[post].el}else if(yav.checkRule(yav.f,rules[pre])!=null){yav.getField(yav.f,rules[pre].el).className=oldClassName}}else if(aRule.ruleName=="date_lt"||aRule.ruleName=="date_le"){if(yav.filterByName!=null){if(aRule.comparisonValue&&aRule.comparisonValue.indexOf("$"+yav.filterByName)==0){yav.clearInlineSpans(aRule.el,yav.filterByName)}}anErr=yav.checkRule(yav.f,aRule)}else{anErr=yav.checkRule(yav.f,aRule)}if(anErr!=null){if(yav.filterByName&&yav.filterByName!=null){if(aRule.ruleName=="implies"){if(rules[pre].el==yav.filterByName||rules[post].el==yav.filterByName){yav.clearInlineSpans(rules[pre].el,rules[post].el)}aRule=rules[aRule.comparisonValue]}if(aRule.ruleName=="or"){var tmp=aRule.comparisonValue.split("-");for(var t=0;t<tmp.length;t++){yav.clearInlineSpans(rules[tmp[t]].el)}if(rules[aRule.el].el==yav.filterByName){yav.clearInlineSpans(rules[aRule.el].el)}aRule=rules[aRule.el]}if(aRule.el==yav.filterByName||aRule.comparisonValue&&aRule.comparisonValue.indexOf("$"+yav.filterByName)==0){for(var z=0;z<rules.length;z++){if(rules[z].ruleName=="implies"&&rules[rules[z].el].el==aRule.el){yav.clearInlineSpans(rules[rules[z].comparisonValue].el)}}errors[ix]=anErr;ix++;break}}else{errors[ix]=anErr;ix++}}}}else{var myRule=rules;err=yav.checkRule(yav.f,myRule);if(err!=null){if(yav.filterByName&&yav.filterByName!=null){if(myRule.el==yav.filterByName){errors[0]=err}}else{errors[0]=err}}}var retval=yav.displayAlert(errors,alertType);yav.filterByName=null;return retval},checkKeyPress:function(a,b,c){var d=null;d=typeof a.which!="undefined"?a.which:window.event.keyCode;var e=yav.makeRules(c);var f=true;if(e.length){for(var g=0;g<e.length;g++){var h=e[g];if(h.ruleName=="keypress"&&h.el==b.name){f=yav.isKeyAllowed(d,h.comparisonValue);break}}}else{var h=e;if(h.ruleName=="keypress"&&h.el==b.name){f=yav.isKeyAllowed(d,h.comparisonValue)}}if(!f){if(typeof a.which=="undefined"){window.event.keyCode=0}else{a.preventDefault();a.stopPropagation();a.returnValue=false}}return f},init:function(a,b){yav.addMask("alphabetic",null,null,yav_config.alphabetic_regex);yav.addMask("alphanumeric",null,null,yav_config.alphanumeric_regex);yav.addMask("alnumhyphen",null,null,yav_config.alnumhyphen_regex);yav.addMask("alnumhyphenat",null,null,yav_config.alnumhyphenat_regex);yav.addMask("alphaspace",null,null,yav_config.alphaspace_regex);yav.formEvt=a;yav.rulesEvt=b;if(b.length){for(var c=0;c<b.length;c++){var d=yav.splitRule(b[c]);var e=yav.getField(document.forms[a],d.el);if(e&&d.ruleName=="mask"){yav.addEvent(e,"keypress",yav.maskEvt.bindAsEventListener(e))}else if(e&&!yav.inArray(yav.fieldsEvt,d.el)){var f=false;for(var g=0;g<yav.onOKEvt.length;g++){if(e.name==yav.onOKEvt[g].name){yav.addEvent(e,yav.onOKEvt[g].evType,function(){if(yav.performEvt(this.name)){yav.performOnOKEvt(this.name)}else{for(var a=0;a<yav.preValidationEvt.length;a++){if(this.name==yav.preValidationEvt[a].name){if(yav.preValidationEvt[a].executedWithSuccess==false){yav.preValidationEvt[a].executedWithSuccess=null;return}yav.preValidationEvt[a].executedWithSuccess=null;break}}yav.performOnErrorEvt(this.name)}});f=true;break}}if(!f){for(var g=0;g<yav.onErrorEvt.length;g++){if(e.name==yav.onErrorEvt[g].name){yav.addEvent(e,yav.onErrorEvt[g].evType,function(){if(!yav.performEvt(this.name)){for(var a=0;a<yav.preValidationEvt.length;a++){if(this.name==yav.preValidationEvt[a].name){if(yav.preValidationEvt[a].executedWithSuccess==false){yav.preValidationEvt[a].executedWithSuccess=null;return}yav.preValidationEvt[a].executedWithSuccess=null;break}}yav.performOnErrorEvt(this.name)}});f=true;break}}}yav.fieldsEvt.push(d.el);if(!f){yav.addEvent(e,"blur",function(){yav.performEvt(this.name)})}}}}else{var h=yav.splitRule(b);var e=yav.getField(document.forms[a],h.el);if(e&&h.ruleName=="mask"){yav.addEvent(e,"keypress",yav.maskEvt.bindAsEventListener(e))}else if(e){var f=false;for(var g=0;c<yav.onOKEvt.length;g++){if(e.name==yav.onOKEvt[c].name){yav.addEvent(e,yav.onOKEvt[g].evType,function(){if(yav.performEvt(this.name)){yav.performOnOKEvt(this.name)}});f=true;break}}for(var g=0;g<yav.onErrorEvt.length;g++){if(e.name==yav.onErrorEvt[g].name){yav.addEvent(e,yav.onErrorEvt[g].evType,function(){if(!yav.performEvt(this.name)){for(var a=0;a<yav.preValidationEvt.length;a++){if(this.name==yav.preValidationEvt[a].name){if(yav.preValidationEvt[a].executedWithSuccess==false){yav.preValidationEvt[a].executedWithSuccess=null;return}yav.preValidationEvt[a].executedWithSuccess=null;break}}yav.performOnErrorEvt(this.name)}});f=true;break}}if(!f){yav.addEvent(e,"blur",function(){yav.performEvt(this.name)})}}}if(yav.helpEvt.length>0){for(var c=0;c<yav.helpEvt.length;c++){var e=yav.getField(document.forms[a],yav.helpEvt[c].name);if(e){if(e.focus){yav.addEvent(e,"focus",function(){yav.showHelpEvt(this.name)})}else{yav.addEvent(e,"click",function(){yav.showHelpEvt(this.name)})}if(!yav.inArray(yav.fieldsEvt,yav.helpEvt[c].name)){yav.addEvent(e,"blur",function(){yav.cleanInline(this.name)})}}}}},displayMsg:function(a,b,c){var d=yav.get(yav_config.errorsdiv+"_"+a);if(d){d.innerHTML=b;d.className=c;d.style.display=""}else{d=yav.get(yav_config.errorsdiv);if(d){d.innerHTML=b;d.className=c;d.style.display=""}else{alert(b)}}},cleanInline:function(a){yav.get(yav_config.errorsdiv+"_"+a).innerHTML="";yav.get(yav_config.errorsdiv+"_"+a).className="";yav.get(yav_config.errorsdiv+"_"+a).style.display="none"},addHelp:function(a,b){var c=new Object;c.name=a;c.help=b;yav.helpEvt.push(c)},addMask:function(a,b,c,d){var e=new Object;e.name=a;e.format=b;e.charsAllowed=c;e.regex=d?d:null;yav.mask.push(e)},postValidation_OnOK:function(a,b,c){var d=new Object;d.name=a;d.evType=b;d.fn=c;yav.onOKEvt.push(d)},postValidation_OnError:function(a,b,c){var d=new Object;d.name=a;d.evType=b;d.fn=c;yav.onErrorEvt.push(d)},preValidation:function(a,b){var c=new Object;c.name=b&&b!=null?b:null;c.fn=a;c.executedWithSuccess=null;yav.preValidationEvt.push(c)},inArray:function(a,b){var c=false;for(var d=0;d<a.length;d++){if(a[d]==b){c=true;break}}return c},performEvt:function(a){var b=yav.get(yav_config.errorsdiv);if(b){b.innerHTML="";b.className="";b.style.display="none"}return yav.performCheck(yav.formEvt,yav.rulesEvt,"inline",a)},performOnOKEvt:function(name){for(var j=0;j<yav.onOKEvt.length;j++){if(name==yav.onOKEvt[j].name){eval(yav.onOKEvt[j].fn);break}}},performOnErrorEvt:function(name){for(var j=0;j<yav.onErrorEvt.length;j++){if(name==yav.onErrorEvt[j].name){eval(yav.onErrorEvt[j].fn);break}}},showHelpEvt:function(a){for(var b=0;b<yav.helpEvt.length;b++){if(yav.helpEvt[b].name==a){yav.get(yav_config.errorsdiv+"_"+a).innerHTML=yav.helpEvt[b].help;yav.get(yav_config.errorsdiv+"_"+a).className=yav_config.innerhelp;yav.get(yav_config.errorsdiv+"_"+a).style.display="";break}}},maskEvt:function(a){var b=null;var c=null;for(var d=0;d<yav.rulesEvt.length;d++){var e=yav.splitRule(yav.rulesEvt[d]);var f=yav.getField(document.forms[yav.formEvt],e.el);if(f&&e.ruleName=="mask"&&f.name==this.name){for(var g=0;g<yav.mask.length;g++){if(yav.mask[g].name==e.comparisonValue){b=yav.mask[g];break}}c=e;break}}var h=typeof a.which!="undefined"?a.which:window.event.keyCode;var i=String.fromCharCode(h);var j=this.value+i;var k=j.length;if(h==8||h==0){return true}var l=false;if(b==null){if(yav.isKeyAllowed(h,c.comparisonValue)){l=true}else{if(typeof a.which=="undefined"){window.event.keyCode=0}else{a.preventDefault();a.stopPropagation();a.returnValue=false}}return l}else if(b.format==null){reg=new RegExp(b.regex);if(reg.test(i)){l=true}else{if(typeof a.which=="undefined"){window.event.keyCode=0}else{a.preventDefault();a.stopPropagation();a.returnValue=false}}return l}else if(yav.isKeyAllowed(h,b.charsAllowed)&&k<=b.format.length){if(b.format.charAt(k-1)!=" "){j=this.value+b.format.charAt(k-1)+i}this.value=j;l=true}if(typeof a.which=="undefined"){window.event.keyCode=0}else{a.preventDefault();a.stopPropagation();a.returnValue=false}return l},displayAlert:function(a,b){var c=null;yav.clearAllInlineSpans();if(b=="classic"){c=yav.displayClassic(a)}else if(b=="innerHtml"){c=yav.displayInnerHtml(a)}else if(b=="inline"){c=yav.displayInline(a)}else if(b=="jsVar"){c=yav.displayJsVar(a)}else{yav.debug("DEBUG: alert type "+b+" not supported")}return c},displayClassic:function(a){var b="";if(a!=null&&a.length>0){if(yav.strTrim(yav_config.HEADER_MSG).length>0){b+=yav_config.HEADER_MSG+"\n\n"}for(var c=0;c<a.length;c++){b+=" "+yav.deleteInline(a[c])+"\n"}if(yav.strTrim(yav_config.FOOTER_MSG).length>0){b+="\n"+yav_config.FOOTER_MSG}alert(b);return false}else{return true}},displayInnerHtml:function(a){if(a!=null&&a.length>0){var b="";if(yav.strTrim(yav_config.HEADER_MSG).length>0){b+=yav_config.HEADER_MSG}b+="<ul>";for(var c=0;c<a.length;c++){b+="<li>"+yav.deleteInline(a[c])+"</li>"}b+="</ul>";if(yav.strTrim(yav_config.FOOTER_MSG).length>0){b+=yav_config.FOOTER_MSG}yav.get(yav_config.errorsdiv).innerHTML=b;yav.get(yav_config.errorsdiv).className=yav_config.innererror;yav.get(yav_config.errorsdiv).style.display="block";return false}else{yav.get(yav_config.errorsdiv).innerHTML="";yav.get(yav_config.errorsdiv).className="";yav.get(yav_config.errorsdiv).style.display="none";return true}},displayInline:function(a){if(a!=null&&a.length>0){var b=new Array;var c=0;for(var d=0;d<a.length;d++){var e=a[d].substring(a[d].indexOf("__inline__")+10);if(yav.get(yav_config.errorsdiv+"_"+e)){yav.get(yav_config.errorsdiv+"_"+e).innerHTML=yav.deleteInline(a[d]);yav.get(yav_config.errorsdiv+"_"+e).className=yav_config.innererror;yav.get(yav_config.errorsdiv+"_"+e).style.display=""}else{b[c]=a[d];c++}}if(c>0){yav.displayInnerHtml(b)}return false}else{return true}},clearAllInlineSpans:function(){var a=document.getElementsByTagName("span");for(var b=0;b<a.length;b++){var c=a[b].id;if(c.indexOf(yav_config.errorsdiv+"_")==0){if(yav.filterByName!=null){if(c==yav_config.errorsdiv+"_"+yav.filterByName){yav.get(c).innerHTML="";yav.get(c).className="";yav.get(c).style.display="none"}}else{yav.get(c).innerHTML="";yav.get(c).className="";yav.get(c).style.display="none"}}}},clearInlineSpans:function(){var a=document.getElementsByTagName("span");for(var b=0;b<a.length;b++){var c=a[b].id;if(c.indexOf(yav_config.errorsdiv+"_")==0){for(var d=0;d<arguments.length;d++){if(c==yav_config.errorsdiv+"_"+arguments[d]){yav.get(c).innerHTML="";yav.get(c).className="";yav.get(c).style.display="none"}}}}},displayJsVar:function(a){yav.get(yav_config.errorsdiv).className="";yav.get(yav_config.errorsdiv).style.display="none";if(a!=null&&a.length>0){for(var b=0;b<a.length;b++){a[b]=yav.deleteInline(a[b])}var c="";c+="<script>var jsErrors;</script>";yav.get(yav_config.errorsdiv).innerHTML=c;jsErrors=a;return false}else{yav.get(yav_config.errorsdiv).innerHTML="<script>var jsErrors;</script>";return true}},rule:function(a,b,c,d,e){var f=arguments.length>=4&&arguments[0]!=null&&arguments[1]!=null;if(!f){return false}tmp=a.split(":");nameDisplayed="";if(tmp.length==2){nameDisplayed=tmp[1];a=tmp[0]}this.el=a;this.nameDisplayed=nameDisplayed;this.ruleName=b;this.comparisonValue=c;this.ruleType=e;if(d==yav.undef||d==null){this.alertMsg=yav.getDefaultMessage(a,nameDisplayed,b,c)+"__inline__"+this.el}else{this.alertMsg=d+"__inline__"+this.el}},checkRule:function(f,myRule){retVal=null;if(myRule!=null){if(myRule.ruleName=="custom"){var customFunction=null;if(myRule.comparisonValue!=null){customFunction=" retVal = "+myRule.comparisonValue}else{customFunction=" retVal = "+myRule.el}retVal=eval(customFunction);if(myRule.comparisonValue!=null&&retVal!=this.undef&&retVal!=null){retVal+="__inline__"+myRule.el}if(retVal!=null&&myRule.comparisonValue!=null){yav.highlight(yav.getField(yav.f,myRule.el),yav_config.inputclasserror)}}else if(myRule.ruleName=="and"){var op_1=myRule.el;var op_next=myRule.comparisonValue;if(yav.checkRule(f,yav.internalRules[op_1])!=null){retVal=myRule.alertMsg;if(myRule.ruleType=="pre-condition"||myRule.ruleType=="andor-operator"){};}else{var op_k=op_next.split("-");for(var k=0;k<op_k.length;k++){if(yav.checkRule(f,yav.internalRules[op_k[k]])!=null){retVal=myRule.alertMsg;if(myRule.ruleType=="pre-condition"||myRule.ruleType=="andor-operator"){}break}}}}else if(myRule.ruleName=="or"){var op_1=myRule.el;var op_next=myRule.comparisonValue;var success=false;if(yav.checkRule(f,yav.internalRules[op_1])==null){success=true}else{if(myRule.ruleType=="pre-condition"||myRule.ruleType=="andor-operator"){}var op_k=op_next.split("-");for(var k=0;k<op_k.length;k++){if(yav.checkRule(f,yav.internalRules[op_k[k]])==null){success=true;break}else{if(myRule.ruleType=="pre-condition"||myRule.ruleType=="andor-operator"){};}}}if(success){yav.highlight(yav.getField(f,yav.internalRules[op_1].el),yav_config.inputclassnormal);var op_k=op_next.split("-");for(var k=0;k<op_k.length;k++){yav.highlight(yav.getField(f,yav.internalRules[op_k[k]].el),yav_config.inputclassnormal)}}else{retVal=myRule.alertMsg}}else{el=yav.getField(f,myRule.el);if(el==null){yav.debug("DEBUG: could not find element "+myRule.el);return null}var err=null;if(el.type){if(el.type=="hidden"||el.type=="text"||el.type=="password"||el.type=="textarea"){err=yav.checkText(el,myRule)}else if(el.type=="checkbox"){err=yav.checkCheckbox(el,myRule)}else if(el.type=="select-one"){err=yav.checkSelOne(el,myRule)}else if(el.type=="select-multiple"){err=yav.checkSelMul(el,myRule)}else if(el.type=="radio"){err=yav.checkRadio(el,myRule)}else{yav.debug("DEBUG: type "+el.type+" not supported")}}else{err=yav.checkRadio(el,myRule)}retVal=err}}return retVal},checkRadio:function(a,b){var c=null;if(b.ruleName=="required"){var d=a;var e=false;if(isNaN(d.length)&&d.checked){e=true}else{for(var f=0;f<d.length;f++){if(d[f].checked){e=true;break}}}if(!e){yav.highlight(a,yav_config.inputclasserror);c=b.alertMsg}}else if(b.ruleName=="equal"){var d=a;var e=false;if(isNaN(d.length)&&d.checked){if(d.value==b.comparisonValue){e=true}}else{for(var f=0;f<d.length;f++){if(d[f].checked){if(d[f].value==b.comparisonValue){e=true;break}}}}if(!e){c=b.alertMsg}}else if(b.ruleName=="notequal"){var d=a;var e=false;if(isNaN(d.length)&&d.checked){if(d.value!=b.comparisonValue){e=true}}else{for(var f=0;f<d.length;f++){if(d[f].checked){if(d[f].value!=b.comparisonValue){e=true;break}}}}if(!e){c=b.alertMsg}}else{yav.debug("DEBUG: rule "+b.ruleName+" not supported for radio")}return c},checkText:function(el,myRule){err=null;if(yav_config.trimenabled){el.value=yav.strTrim(el.value)}if(myRule.ruleName=="required"){if(el.value==null||el.value==""){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="equal"){err=yav.checkEqual(el,myRule)}else if(myRule.ruleName=="notequal"){err=yav.checkNotEqual(el,myRule)}else if(myRule.ruleName=="numeric"){reg=new RegExp("^[0-9]*$");if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="alphabetic"){reg=new RegExp(yav_config.alphabetic_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="alphanumeric"){reg=new RegExp(yav_config.alphanumeric_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="alnumhyphen"){reg=new RegExp(yav_config.alnumhyphen_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="alnumhyphenat"){reg=new RegExp(yav_config.alnumhyphenat_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="alphaspace"){reg=new RegExp(yav_config.alphaspace_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="email"){reg=new RegExp(yav_config.email_regex);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="maxlength"){if(isNaN(myRule.comparisonValue)){yav.debug("DEBUG: comparisonValue for rule "+myRule.ruleName+" not a number")}else if(el.value.length>myRule.comparisonValue){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="minlength"){if(isNaN(myRule.comparisonValue)){yav.debug("DEBUG: comparisonValue for rule "+myRule.ruleName+" not a number")}else if(el.value.length<myRule.comparisonValue){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="numrange"){reg=new RegExp("^[-+]{0,1}[0-9]*[.]{0,1}[0-9]*$");if(!reg.test(yav.unformatNumber(el.value))){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}else{regRange=new RegExp("^[0-9]+-[0-9]+$");if(!regRange.test(myRule.comparisonValue)){yav.debug("DEBUG: comparisonValue for rule "+myRule.ruleName+" not in format number1-number2")}else{rangeVal=myRule.comparisonValue.split("-");if(eval(yav.unformatNumber(el.value))<eval(rangeVal[0])||eval(yav.unformatNumber(el.value))>eval(rangeVal[1])){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}}}else if(myRule.ruleName=="regexp"){reg=new RegExp(myRule.comparisonValue);if(!reg.test(el.value)){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else if(myRule.ruleName=="integer"){err=yav.checkInteger(el,myRule)}else if(myRule.ruleName=="double"){err=yav.checkDouble(el,myRule)}else if(myRule.ruleName=="date"){err=yav.checkDate(el,myRule)}else if(myRule.ruleName=="date_lt"){err=yav.checkDateLessThan(el,myRule,false)}else if(myRule.ruleName=="date_le"){err=yav.checkDateLessThan(el,myRule,true)}else if(myRule.ruleName=="keypress"){}else if(myRule.ruleName=="empty"){if(el.value!=null&&el.value!=""){yav.highlight(el,yav_config.inputclasserror);err=myRule.alertMsg}}else{yav.debug("DEBUG: rule "+myRule.ruleName+" not supported for "+el.type)}return err},checkInteger:function(a,b){reg=new RegExp("^[-+]{0,1}[0-9]*$");if(!reg.test(a.value)){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}},checkDouble:function(a,b){var c=yav_config.DECIMAL_SEP;reg=new RegExp("^[-+]{0,1}[0-9]*["+c+"]{0,1}[0-9]*$");if(!reg.test(a.value)){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}},checkDate:function(a,b){error=null;if(a.value!=""){var c=yav_config.DATE_FORMAT;ddReg=new RegExp("dd");MMReg=new RegExp("MM");yyyyReg=new RegExp("yyyy");if(!ddReg.test(c)||!MMReg.test(c)||!yyyyReg.test(c)){yav.debug("DEBUG: locale format "+c+" not supported")}else{ddStart=c.indexOf("dd");MMStart=c.indexOf("MM");yyyyStart=c.indexOf("yyyy")}strReg=c.replace("dd","[0-9]{2}").replace("MM","[0-9]{2}").replace("yyyy","[0-9]{4}");reg=new RegExp("^"+strReg+"$");if(!reg.test(a.value)){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}else{dd=a.value.substring(ddStart,ddStart+2);mm=a.value.substring(MMStart,MMStart+2);yyyy=a.value.substring(yyyyStart,yyyyStart+4);if(!yav.checkddMMyyyy(dd,mm,yyyy)){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}}}return error},checkDateLessThan:function(a,b,c){error=null;var d=yav.checkDate(a,b)==null?true:false;if(d&&a.value!=""){var e=yav_config.DATE_FORMAT;ddStart=e.indexOf("dd");MMStart=e.indexOf("MM");yyyyStart=e.indexOf("yyyy");dd=a.value.substring(ddStart,ddStart+2);MM=a.value.substring(MMStart,MMStart+2);yyyy=a.value.substring(yyyyStart,yyyyStart+4);myDate=""+yyyy+MM+dd;strReg=e.replace("dd","[0-9]{2}").replace("MM","[0-9]{2}").replace("yyyy","[0-9]{4}");reg=new RegExp("^"+strReg+"$");var f=b.comparisonValue.indexOf("$")==0?true:false;var g="";if(f){toSplit=b.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){g=yav.getField(yav.f,tmp[0]).value}else{g=yav.getField(yav.f,b.comparisonValue.substr(1)).value}}else{g=b.comparisonValue}if(!reg.test(g)){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}else{cdd=g.substring(ddStart,ddStart+2);cMM=g.substring(MMStart,MMStart+2);cyyyy=g.substring(yyyyStart,yyyyStart+4);cDate=""+cyyyy+cMM+cdd;if(c){if(!yav.checkddMMyyyy(cdd,cMM,cyyyy)||myDate>cDate){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}}else{if(!yav.checkddMMyyyy(cdd,cMM,cyyyy)||myDate>=cDate){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}}}}else{if(a.value!=""){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}}return error},checkEqual:function(a,b){error=null;var c=b.comparisonValue.indexOf("$")==0?true:false;var d="";if(c){toSplit=b.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){d=yav.getField(yav.f,tmp[0]).value}else{d=yav.getField(yav.f,b.comparisonValue.substr(1)).value}}else{d=b.comparisonValue}if(a.value!=d){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}return error},checkNotEqual:function(a,b){error=null;var c=b.comparisonValue.indexOf("$")==0?true:false;var d="";if(c){toSplit=b.comparisonValue.substr(1);tmp=toSplit.split(":");if(tmp.length==2){d=yav.getField(yav.f,tmp[0]).value}else{d=yav.getField(yav.f,b.comparisonValue.substr(1)).value}}else{d=b.comparisonValue}if(a.value==d){yav.highlight(a,yav_config.inputclasserror);error=b.alertMsg}return error},checkddMMyyyy:function(a,b,c){retVal=true;if(a<1||a>31||b<1||b>12||a==31&&(b==2||b==4||b==6||b==9||b==11)||a>29&&b==2||a==29&&b==2&&(c%4>0||c%4==0&&c%100==0&&c%400>0)){retVal=false}return retVal},checkCheckbox:function(a,b){if(b.ruleName=="required"){if(!a.checked){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="equal"){if(!a.checked||a.value!=b.comparisonValue){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="notequal"){if(a.checked&&a.value==b.comparisonValue){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else{yav.debug("DEBUG: rule "+b.ruleName+" not supported for "+a.type)}},checkSelOne:function(a,b){if(b.ruleName=="required"){var c=false;var d=a.selectedIndex;if(d>=0&&a.options[d].value){c=true}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="equal"){var c=false;var d=a.selectedIndex;if(d>=0&&a.options[d].value==b.comparisonValue){c=true}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="notequal"){var c=false;var d=a.selectedIndex;if(d>=0&&a.options[d].value!=b.comparisonValue){c=true}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else{yav.debug("DEBUG: rule "+b.ruleName+" not supported for "+a.type)}},checkSelMul:function(a,b){if(b.ruleName=="required"){var c=false;opts=a.options;for(var d=0;d<opts.length;d++){if(opts[d].selected&&opts[d].value){c=true;break}}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="equal"){var c=false;opts=a.options;for(var d=0;d<opts.length;d++){if(opts[d].selected&&opts[d].value==b.comparisonValue){c=true;break}}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else if(b.ruleName=="notequal"){var c=false;opts=a.options;for(var d=0;d<opts.length;d++){if(opts[d].selected&&opts[d].value!=b.comparisonValue){c=true;break}}if(!c){yav.highlight(a,yav_config.inputclasserror);return b.alertMsg}}else{yav.debug("DEBUG: rule "+b.ruleName+" not supported for "+a.type)}},debug:function(a){if(yav_config.debugmode){alert(a)}},strTrim:function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")},makeRules:function(a){var b=new Array;if(a.length){for(var c=0;c<a.length;c++){b[c]=yav.splitRule(a[c])}}else{b[0]=yav.splitRule(a)}return b},splitRule:function(a){var b=null;if(a!=yav.undef){params=a.split(yav_config.RULE_SEP);switch(params.length){case 2:b=new yav.rule(params[0],params[1],null,null,null);break;case 3:if(yav.threeParamRule(params[1])){b=new yav.rule(params[0],params[1],params[2],null,null)}else if(params[2]=="pre-condition"||params[2]=="post-condition"||params[2]=="andor-operator"){b=new yav.rule(params[0],params[1],null,"foo",params[2])}else{b=new yav.rule(params[0],params[1],null,params[2],null)}break;case 4:if(yav.threeParamRule(params[1])&&(params[3]=="pre-condition"||params[3]=="post-condition"||params[3]=="andor-operator")){b=new yav.rule(params[0],params[1],params[2],"foo",params[3])}else{b=new yav.rule(params[0],params[1],params[2],params[3],null)}break;default:yav.debug("DEBUG: wrong definition of rule")}}return b},threeParamRule:function(a){return a=="equal"||a=="notequal"||a=="minlength"||a=="maxlength"||a=="date_lt"||a=="date_le"||a=="implies"||a=="regexp"||a=="numrange"||a=="keypress"||a=="and"||a=="or"||a=="custom"||a=="mask"?true:false},highlight:function(a,b){if(yav.rulesEvt.length>0&&b==yav_config.inputclasserror){return}if(!yav.isFocusSet&&b==yav_config.inputclasserror){if(!a.type&&a.length>0&&a.item(0).type=="radio"){a.item(0).focus()}else{a.focus()}yav.isFocusSet=true}if(a!=yav.undef&&yav_config.inputhighlight){if(yav_config.multipleclassname){yav.highlightMultipleClassName(a,b)}else{a.className=b}}},highlightMultipleClassName:function(a,b){re=new RegExp("(^|\\s)("+yav_config.inputclassnormal+"|"+yav_config.inputclasserror+")($|\\s)");a.className=yav.strTrim((typeof a.className!="undefined"?a.className.replace(re,""):"")+" "+b)},getDefaultMessage:function(a,b,c,d){if(b.length==0){b=a}var e=yav_config.DEFAULT_MSG;if(c=="required"){e=yav_config.REQUIRED_MSG.replace("{1}",b)}else if(c=="minlength"){e=yav_config.MINLENGTH_MSG.replace("{1}",b).replace("{2}",d)}else if(c=="maxlength"){e=yav_config.MAXLENGTH_MSG.replace("{1}",b).replace("{2}",d)}else if(c=="numrange"){e=yav_config.NUMRANGE_MSG.replace("{1}",b).replace("{2}",d)}else if(c=="date"){e=yav_config.DATE_MSG.replace("{1}",b)}else if(c=="numeric"){e=yav_config.NUMERIC_MSG.replace("{1}",b)}else if(c=="integer"){e=yav_config.INTEGER_MSG.replace("{1}",b)}else if(c=="double"){e=yav_config.DOUBLE_MSG.replace("{1}",b)}else if(c=="equal"){e=yav_config.EQUAL_MSG.replace("{1}",b).replace("{2}",yav.getComparisonDisplayed(d))}else if(c=="notequal"){e=yav_config.NOTEQUAL_MSG.replace("{1}",b).replace("{2}",yav.getComparisonDisplayed(d))}else if(c=="alphabetic"){e=yav_config.ALPHABETIC_MSG.replace("{1}",b)}else if(c=="alphanumeric"){e=yav_config.ALPHANUMERIC_MSG.replace("{1}",b)}else if(c=="alnumhyphen"){e=yav_config.ALNUMHYPHEN_MSG.replace("{1}",b)}else if(c=="alnumhyphenat"){e=yav_config.ALNUMHYPHENAT_MSG.replace("{1}",b)}else if(c=="alphaspace"){e=yav_config.ALPHASPACE_MSG.replace("{1}",b)}else if(c=="email"){e=yav_config.EMAIL_MSG.replace("{1}",b)}else if(c=="regexp"){e=yav_config.REGEXP_MSG.replace("{1}",b).replace("{2}",d)}else if(c=="date_lt"){e=yav_config.DATE_LT_MSG.replace("{1}",b).replace("{2}",yav.getComparisonDisplayed(d))}else if(c=="date_le"){e=yav_config.DATE_LE_MSG.replace("{1}",b).replace("{2}",yav.getComparisonDisplayed(d))}else if(c=="empty"){e=yav_config.EMPTY_MSG.replace("{1}",b)}return e},getComparisonDisplayed:function(a){comparisonDisplayed=a;if(a.substring(0,1)=="$"){a=a.substring(1,a.length);tmp=a.split(":");if(tmp.length==2){comparisonDisplayed=tmp[1]}else{comparisonDisplayed=a}}return comparisonDisplayed},isKeyAllowed:function(a,b){retval=false;var c;if(a==8||a==0){retval=true}else{for(var d=0;d<b.length;d++){c=b.charCodeAt(d);if(c==a){retval=true;break}}}return retval},getField:function(a,b){var c=null;if(a.elements[b]){c=a.elements[b]}else if(yav.get(b)){c=yav.get(b)}return c},get:function(a){return document.getElementById(a)},unformatNumber:function(a){var b=a.replace(yav_config.THOUSAND_SEP,"");b=b.replace(yav_config.DECIMAL_SEP,".");return b},deleteInline:function(a){if(a.indexOf("__inline__")==-1){return a}else{return a.substring(0,a.indexOf("__inline__"))}},addEvent:function(a,b,c){if(a.addEventListener){a.addEventListener(b,c,false);return true}else if(a.attachEvent){a["on"+b]=c}else{a["on"+b]=c}},call:function(a,b,c){var d=document.forms[yav.formEvt].elements[a];addEvent(d,b,c)}};Function.prototype.bindAsEventListener=function(a){var b=this;return function(c){return b.call(a,c||window.event)}}
