function Validator(a){this.formobj=document.forms[a];if(!this.formobj){alert("Error: couldnot get Form object "+a);return}if(this.formobj.onsubmit){this.formobj.old_onsubmit=this.formobj.onsubmit;this.formobj.onsubmit=null}else{this.formobj.old_onsubmit=null}this.formobj._sfm_form_name=a;this.formobj.onsubmit=form_submit_handler;this.addValidation=add_validation;this.setAddnlValidationFunction=set_addnl_vfunction;this.clearAllValidations=clear_all_validations;this.disable_validations=false;document.error_disp_handler=new sfm_ErrorDisplayHandler();this.EnableOnPageErrorDisplay=validator_enable_OPED;this.EnableOnPageErrorDisplaySingleBox=validator_enable_OPED_SB;this.show_errors_together=true;this.EnableMsgsTogether=sfm_enable_show_msgs_together}function set_addnl_vfunction(a){this.formobj.addnlvalidation=a}function sfm_enable_show_msgs_together(){this.show_errors_together=true;this.formobj.show_errors_together=true}function clear_all_validations(){for(var a=0;a<this.formobj.elements.length;a++){this.formobj.elements[a].validationset=null}}function form_submit_handler(){var bRet=true;document.error_disp_handler.clear_msgs();for(var itr=0;itr<this.elements.length;itr++){if(this.elements[itr].validationset&&!this.elements[itr].validationset.validate()){bRet=false}if(!bRet&&!this.show_errors_together){break}}if(!bRet){document.error_disp_handler.FinalShowMsg();return false}if(this.addnlvalidation){str=" var ret = "+this.addnlvalidation+"()";eval(str);if(!ret){return ret}}return true}function add_validation(e,d,c){var b=null;if(arguments.length>3){b=arguments[3]}if(!this.formobj){alert("Error: The form object is not set properly");return}var a=this.formobj[e];if(a&&a.length&&isNaN(a.selectedIndex)){a=a[0]}if(!a){return}if(!a.validationset){a.validationset=new ValidationSet(a,this.show_errors_together)}a.validationset.add(d,c,b);a.validatorobj=this}function validator_enable_OPED(){document.error_disp_handler.EnableOnPageDisplay(false)}function validator_enable_OPED_SB(){document.error_disp_handler.EnableOnPageDisplay(true)}function sfm_ErrorDisplayHandler(){this.msgdisplay=new AlertMsgDisplayer();this.EnableOnPageDisplay=edh_EnableOnPageDisplay;this.ShowMsg=edh_ShowMsg;this.FinalShowMsg=edh_FinalShowMsg;this.all_msgs=new Array();this.clear_msgs=edh_clear_msgs}function edh_clear_msgs(){this.msgdisplay.clearmsg(this.all_msgs);this.all_msgs=new Array()}function edh_FinalShowMsg(){this.msgdisplay.showmsg(this.all_msgs)}function edh_EnableOnPageDisplay(a){if(true==a){this.msgdisplay=new SingleBoxErrorDisplay()}else{this.msgdisplay=new DivMsgDisplayer()}}function edh_ShowMsg(c,b){var a=new Array();a.input_element=b;a.msg=c;this.all_msgs.push(a)}function AlertMsgDisplayer(){this.showmsg=alert_showmsg;this.clearmsg=alert_clearmsg}function alert_clearmsg(a){}function alert_showmsg(c){var d="";var b=null;for(var a=0;a<c.length;a++){if(null==b){b=c[a]["input_element"]}d+=c[a]["msg"]+"\n"}alert(d);if(null!=b){b.focus()}}function sfm_show_error_msg(b,a){document.error_disp_handler.ShowMsg(b,a)}function SingleBoxErrorDisplay(){this.showmsg=sb_div_showmsg;this.clearmsg=sb_div_clearmsg}function sb_div_clearmsg(a){var b=form_error_div_name(a);show_div_msg(b,"")}function sb_div_showmsg(b){var c="<ul>\n";for(var a=0;a<b.length;a++){c+="<li>"+b[a]["msg"]+"</li>\n"}c+="</ul>";var d=form_error_div_name(b);show_div_msg(d,c)}function form_error_div_name(b){var c=null;for(var a in b){c=b[a]["input_element"];if(c){break}}var d="";if(c){d=c.form._sfm_form_name+"_errorloc"}return d}function DivMsgDisplayer(){this.showmsg=div_showmsg;this.clearmsg=div_clearmsg}function div_clearmsg(b){for(var a in b){var c=element_div_name(b[a]["input_element"]);show_div_msg(c,"")}}function element_div_name(a){var b=a.form._sfm_form_name+"_"+a.name+"_errorloc";b=b.replace(/[\[\]]/gi,"");return b}function div_showmsg(c){var d;var b=null;for(var a in c){if(null==b){b=c[a]["input_element"]}var e=element_div_name(c[a]["input_element"]);show_div_msg(e,c[a]["msg"])}if(null!=b){b.focus()}}function show_div_msg(b,a){if(b.length<=0){return false}if(document.layers){divlayer=document.layers[b];if(!divlayer){return}divlayer.document.open();divlayer.document.write(a);divlayer.document.close()}else{if(document.all){divlayer=document.all[b];if(!divlayer){return}divlayer.innerHTML=a}else{if(document.getElementById){divlayer=document.getElementById(b);if(!divlayer){return}divlayer.innerHTML=a}}}divlayer.style.visibility="visible";return false}function ValidationDesc(d,c,a,b){this.desc=c;this.error=a;this.itemobj=d;this.condition=b;this.validate=vdesc_validate}function vdesc_validate(){if(this.condition!=null){if(!eval(this.condition)){return true}}if(!validateInput(this.desc,this.itemobj,this.error)){this.itemobj.validatorobj.disable_validations=true;this.itemobj.focus();return false}return true}function ValidationSet(b,a){this.vSet=new Array();this.add=add_validationdesc;this.validate=vset_validate;this.itemobj=b;this.msgs_together=a}function add_validationdesc(c,a,b){this.vSet[this.vSet.length]=new ValidationDesc(this.itemobj,c,a,b)}function vset_validate(){var a=true;for(var b=0;b<this.vSet.length;b++){a=a&&this.vSet[b].validate();if(!a&&!this.msgs_together){break}}return a}function validateEmail(a){var e=a.match("^(.+)@(.+)$");if(e==null){return false}if(e[1]!=null){var d=/^\"?[\w-_\.]*\"?$/;if(e[1].match(d)==null){return false}}if(e[2]!=null){var c=/^[\w-\.]*\.[A-Za-z]{2,4}$/;if(e[2].match(c)==null){var b=/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;if(e[2].match(b)==null){return false}}return true}return false}function IsCheckSelected(d,g){var e=false;var b=d.form.elements[d.name];if(b.length){var a=-1;for(var f=0;f<b.length;f++){if(b[f].value==g){a=f;break}}if(a>=0){if(b[a].checked=="1"){e=true}}}else{if(d.checked=="1"){e=true}}return e}function TestDontSelectChk(a,d,b){var c=true;c=IsCheckSelected(a,d)?false:true;if(c==false){if(!b||b.length==0){b="Can't Proceed as you selected "+a.name}sfm_show_error_msg(b,a)}return c}function TestShouldSelectChk(a,d,b){var c=true;c=IsCheckSelected(a,d)?true:false;if(c==false){if(!b||b.length==0){b="You should select "+a.name}sfm_show_error_msg(b,a)}return c}function TestRequiredInput(objValue,strError){var ret=true;var val=objValue.value;val=val.replace(/^\s+|\s+$/g,"");if(eval(val.length)==0){if(!strError||strError.length==0){strError=objValue.name+" : Required Field"}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestMaxLen(objValue,strMaxLen,strError){var ret=true;if(eval(objValue.value.length)>eval(strMaxLen)){if(!strError||strError.length==0){strError=objValue.name+" : "+strMaxLen+" characters maximum "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestMinLen(objValue,strMinLen,strError){var ret=true;if(eval(objValue.value.length)<eval(strMinLen)){if(!strError||strError.length==0){strError=objValue.name+" : "+strMinLen+" characters minimum  "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestInputType(a,c,d,e){var b=true;var f=a.value.search(c);if(a.value.length>0&&f>=0){if(!d||d.length==0){d=e}sfm_show_error_msg(d,a);b=false}return b}function TestEmail(a,c){var b=true;if(a.value.length>0&&!validateEmail(a.value)){if(!c||c.length==0){c=a.name+": Enter a valid Email address "}sfm_show_error_msg(c,a);b=false}return b}function TestLessThan(objValue,strLessThan,strError){var ret=true;if(isNaN(objValue.value)){sfm_show_error_msg(objValue.name+": Should be a number ",objValue);ret=false}else{if(eval(objValue.value)>=eval(strLessThan)){if(!strError||strError.length==0){strError=objValue.name+" : value should be less than "+strLessThan}sfm_show_error_msg(strError,objValue);ret=false}}return ret}function TestGreaterThan(objValue,strGreaterThan,strError){var ret=true;if(isNaN(objValue.value)){sfm_show_error_msg(objValue.name+": Should be a number ",objValue);ret=false}else{if(eval(objValue.value)<=eval(strGreaterThan)){if(!strError||strError.length==0){strError=objValue.name+" : value should be greater than "+strGreaterThan}sfm_show_error_msg(strError,objValue);ret=false}}return ret}function TestRegExp(a,c,d){var b=true;if(a.value.length>0&&!a.value.match(c)){if(!d||d.length==0){d=a.name+": Invalid characters found "}sfm_show_error_msg(d,a);b=false}return b}function TestDontSelect(objValue,dont_sel_index,strError){var ret=true;if(objValue.selectedIndex==null){sfm_show_error_msg("ERROR: dontselect command for non-select Item");ret=false}if(objValue.selectedIndex==eval(dont_sel_index)){if(!strError||strError.length==0){strError=objValue.name+": Please Select one option "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestSelectOneRadio(a,c){var b=a.form.elements[a.name];var e=false;for(var d=0;d<b.length;d++){if(b[d].checked){e=true;break}}if(false==e){if(!c||c.length==0){c="Please select one option from "+a.name}sfm_show_error_msg(c,a)}return e}function validateInput(g,a,e){var c=true;var d=g.search("=");var f="";var b="";if(d>=0){f=g.substring(0,d);b=g.substr(d+1)}else{f=g}switch(f){case"req":case"required":c=TestRequiredInput(a,e);break;case"maxlength":case"maxlen":c=TestMaxLen(a,b,e);break;case"minlength":case"minlen":c=TestMinLen(a,b,e);break;case"alnum":case"alphanumeric":c=TestInputType(a,"[^A-Za-z0-9]",e,a.name+": Only alpha-numeric characters allowed ");break;case"alnum_s":case"alphanumeric_space":c=TestInputType(a,"[^A-Za-z0-9\\s]",e,a.name+": Only alpha-numeric characters and space allowed ");break;case"num":case"numeric":c=TestInputType(a,"[^0-9]",e,a.name+": Only digits allowed ");break;case"dec":case"decimal":c=TestInputType(a,"[^0-9.]",e,a.name+": Only numbers allowed ");break;case"alphabetic":case"alpha":c=TestInputType(a,"[^A-Za-z]",e,a.name+": Only alphabetic characters allowed ");break;case"alphabetic_space":case"alpha_s":c=TestInputType(a,"[^A-Za-z\\s]",e,a.name+": Only alphabetic characters and space allowed ");break;case"email":c=TestEmail(a,e);break;case"lt":case"lessthan":c=TestLessThan(a,b,e);break;case"gt":case"greaterthan":c=TestGreaterThan(a,b,e);break;case"regexp":c=TestRegExp(a,b,e);break;case"dontselect":c=TestDontSelect(a,b,e);break;case"dontselectchk":c=TestDontSelectChk(a,b,e);break;case"shouldselchk":c=TestShouldSelectChk(a,b,e);break;case"selone_radio":c=TestSelectOneRadio(a,e);break}return c}function VWZ_IsListItemSelected(b,c){for(var a=0;a<b.options.length;a++){if(b.options[a].selected==true&&b.options[a].value==c){return true}}return false}function VWZ_IsChecked(a,b){if(a.length){for(var d=0;d<a.length;d++){if(a[d].checked=="1"&&a[d].value==b){return true}}}else{if(a.checked=="1"){return true}}return false};