function Validator(frmname){this.formobj=document.forms[frmname];if(!this.formobj){alert("Error: no puedo obtener objecto del formulario "+frmname);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=frmname;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(functionname){this.formobj.addnlvalidation=functionname}function sfm_enable_show_msgs_together(){this.show_errors_together=true;this.formobj.show_errors_together=true}function clear_all_validations(){for(var itr=0;itr<this.formobj.elements.length;itr++){this.formobj.elements[itr].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(itemname,descriptor,errstr){var condition=null;if(arguments.length>3){condition=arguments[3]}if(!this.formobj){alert("Error: El objecto del formulario no esta configurado propiamente");return}var itemobj=this.formobj[itemname];if(itemobj.length&&isNaN(itemobj.selectedIndex)){itemobj=itemobj[0]}if(!itemobj){alert("Error: No puedo obtener el objecto de entrada llamado: "+itemname);return}if(!itemobj.validationset){itemobj.validationset=new ValidationSet(itemobj,this.show_errors_together)}itemobj.validationset.add(descriptor,errstr,condition);itemobj.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(single_box){if(true==single_box){this.msgdisplay=new SingleBoxErrorDisplay()}else{this.msgdisplay=new DivMsgDisplayer()}}function edh_ShowMsg(msg,input_element){var objmsg=new Array();objmsg["input_element"]=input_element;objmsg["msg"]=msg;this.all_msgs.push(objmsg)}function AlertMsgDisplayer(){this.showmsg=alert_showmsg;this.clearmsg=alert_clearmsg}function alert_clearmsg(msgs){}function alert_showmsg(msgs){var whole_msg="";var first_elmnt=null;for(var m=0;m<msgs.length;m++){if(null==first_elmnt){first_elmnt=msgs[m]["input_element"]}whole_msg+=msgs[m]["msg"]+"\n"}alert(whole_msg);if(null!=first_elmnt){first_elmnt.focus()}}function sfm_show_error_msg(msg,input_elmt){document.error_disp_handler.ShowMsg(msg,input_elmt)}function SingleBoxErrorDisplay(){this.showmsg=sb_div_showmsg;this.clearmsg=sb_div_clearmsg}function sb_div_clearmsg(msgs){var divname=form_error_div_name(msgs);show_div_msg(divname,"")}function sb_div_showmsg(msgs){var whole_msg="<ul>\n";for(var m=0;m<msgs.length;m++){whole_msg+="<li>"+msgs[m]["msg"]+"</li>\n"}whole_msg+="</ul>";var divname=form_error_div_name(msgs);show_div_msg(divname,whole_msg)}function form_error_div_name(msgs){var input_element=null;for(var m in msgs){input_element=msgs[m]["input_element"];if(input_element){break}}var divname="";if(input_element){divname=input_element.form._sfm_form_name+"_errorloc"}return divname}function DivMsgDisplayer(){this.showmsg=div_showmsg;this.clearmsg=div_clearmsg}function div_clearmsg(msgs){for(var m in msgs){var divname=element_div_name(msgs[m]["input_element"]);show_div_msg(divname,"")}}function element_div_name(input_element){var divname=input_element.form._sfm_form_name+"_"+input_element.name+"_errorloc";divname=divname.replace(/[\[\]]/gi,"");return divname}function div_showmsg(msgs){var whole_msg;var first_elmnt=null;for(var m in msgs){if(null==first_elmnt){first_elmnt=msgs[m]["input_element"]}var divname=element_div_name(msgs[m]["input_element"]);show_div_msg(divname,msgs[m]["msg"])}if(null!=first_elmnt){first_elmnt.focus()}}function show_div_msg(divname,msgstring){if(divname.length<=0)return false;if(document.layers){divlayer=document.layers[divname];if(!divlayer){return}divlayer.document.open();divlayer.document.write(msgstring);divlayer.document.close()}else if(document.all){divlayer=document.all[divname];if(!divlayer){return}divlayer.innerHTML=msgstring}else if(document.getElementById){divlayer=document.getElementById(divname);if(!divlayer){return}divlayer.innerHTML=msgstring}divlayer.style.visibility="visible";return false}function ValidationDesc(inputitem,desc,error,condition){this.desc=desc;this.error=error;this.itemobj=inputitem;this.condition=condition;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(inputitem,msgs_together){this.vSet=new Array();this.add=add_validationdesc;this.validate=vset_validate;this.itemobj=inputitem;this.msgs_together=msgs_together}function add_validationdesc(desc,error,condition){this.vSet[this.vSet.length]=new ValidationDesc(this.itemobj,desc,error,condition)}function vset_validate(){var bRet=true;for(var itr=0;itr<this.vSet.length;itr++){bRet=bRet&&this.vSet[itr].validate();if(!bRet&&!this.msgs_together){break}}return bRet}function validateEmail(email){var splitted=email.match("^(.+)@(.+)$");if(splitted==null)return false;if(splitted[1]!=null){var regexp_user=/^\"?[\w-_\.]*\"?$/;if(splitted[1].match(regexp_user)==null)return false}if(splitted[2]!=null){var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;if(splitted[2].match(regexp_domain)==null){var regexp_ip=/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;if(splitted[2].match(regexp_ip)==null)return false}return true}return false}function IsCheckSelected(objValue,chkValue){var selected=false;var objcheck=objValue.form.elements[objValue.name];if(objcheck.length){var idxchk=-1;for(var c=0;c<objcheck.length;c++){if(objcheck[c].value==chkValue){idxchk=c;break}}if(idxchk>=0){if(objcheck[idxchk].checked=="1"){selected=true}}}else{if(objValue.checked=="1"){selected=true}}return selected}function TestDontSelectChk(objValue,chkValue,strError){var pass=true;pass=IsCheckSelected(objValue,chkValue)?false:true;if(pass==false){if(!strError||strError.length==0){strError="No puedo seguir como seleccionaste "+objValue.name}sfm_show_error_msg(strError,objValue)}return pass}function TestShouldSelectChk(objValue,chkValue,strError){var pass=true;pass=IsCheckSelected(objValue,chkValue)?true:false;if(pass==false){if(!strError||strError.length==0){strError="No puedes seleccionar  "+objValue.name}sfm_show_error_msg(strError,objValue)}return pass}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+" : Campo Obligatorio"}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+" caracteres maximo "}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+" caracteres minimo  "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestInputType(objValue,strRegExp,strError,strDefaultError){var ret=true;var charpos=objValue.value.search(strRegExp);if(objValue.value.length>0&&charpos>=0){if(!strError||strError.length==0){strError=strDefaultError}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestEmail(objValue,strError){var ret=true;if(objValue.value.length>0&&!validateEmail(objValue.value)){if(!strError||strError.length==0){strError=objValue.name+": Enter a valid Email address "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestLessThan(objValue,strLessThan,strError){var ret=true;if(isNaN(objValue.value)){sfm_show_error_msg(objValue.name+": Debe ser un numero ",objValue);ret=false}else if(eval(objValue.value)>=eval(strLessThan)){if(!strError||strError.length==0){strError=objValue.name+" : su valor deberia ser menor que "+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+": Debe ser un numero ",objValue);ret=false}else if(eval(objValue.value)<=eval(strGreaterThan)){if(!strError||strError.length==0){strError=objValue.name+" : su valor deberia ser mayor que "+strGreaterThan}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestRegExp(objValue,strRegExp,strError){var ret=true;if(objValue.value.length>0&&!objValue.value.match(strRegExp)){if(!strError||strError.length==0){strError=objValue.name+": Caracteres invalidos encontrados "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestDontSelect(objValue,dont_sel_index,strError){var ret=true;if(objValue.selectedIndex==null){sfm_show_error_msg("ERROR: Comando NoSelect para un campo sin selecciones");ret=false}if(objValue.selectedIndex==eval(dont_sel_index)){if(!strError||strError.length==0){strError=objValue.name+": Por favor seleccione una opcion "}sfm_show_error_msg(strError,objValue);ret=false}return ret}function TestSelectOneRadio(objValue,strError){var objradio=objValue.form.elements[objValue.name];var one_selected=false;for(var r=0;r<objradio.length;r++){if(objradio[r].checked){one_selected=true;break}}if(false==one_selected){if(!strError||strError.length==0){strError="Por favor seleccione una opcion de "+objValue.name}sfm_show_error_msg(strError,objValue)}return one_selected}function validateInput(strValidateStr,objValue,strError){var ret=true;var epos=strValidateStr.search("=");var command="";var cmdvalue="";if(epos>=0){command=strValidateStr.substring(0,epos);cmdvalue=strValidateStr.substr(epos+1)}else{command=strValidateStr}switch(command){case"req":case"required":{ret=TestRequiredInput(objValue,strError)break}case"maxlength":case"maxlen":{ret=TestMaxLen(objValue,cmdvalue,strError)break}case"minlength":case"minlen":{ret=TestMinLen(objValue,cmdvalue,strError)break}case"alphabetic":case"alpha":{ret=TestInputType(objValue,"[^A-Za-z]",strError,objValue.name+": solo admite letras sin acentos ");break}case"alphabetic_space":case"alpha_s":{ret=TestInputType(objValue,"[^A-Za-z\\s]",strError,objValue.name+": solo admite espacios y letras sin acentos ");break}case"alphabetic_acentos":case"alpha_a":{ret=TestInputType(objValue,"[^A-Za-zñÑáéíóúÁÉÍÓÚÜü]",strError,objValue.name+": solo admite letras ");break}case"alphabetic_acentos_space":case"alpha_as":{ret=TestInputType(objValue,"[^A-Za-zñÑáéíóúÁÉÍÓÚÜü\\s]",strError,objValue.name+": solo admite letras y espacios ");break}case"alnum":case"alphanumeric":{ret=TestInputType(objValue,"[^A-Za-z0-9]",strError,objValue.name+": solo admite letras sin acentos y numeros ");break}case"alnum_s":case"alphanumeric_space":{ret=TestInputType(objValue,"[^A-Za-z0-9\\s]",strError,objValue.name+": solo admite espacios, letras sin acentos y numeros ");break}case"alnum_a":case"alphanumeric_acentos":{ret=TestInputType(objValue,"[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚÜü]",strError,objValue.name+": solo admite letras y numeros ");break}case"alnum_as":case"alphanumeric_acentos_space":{ret=TestInputType(objValue,"[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚÜü\\s]",strError,objValue.name+": solo admite letras, numeros y espacios ");break}case"validchars":{ret=TestInputType(objValue,"[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚÜü\\s\.\,\*\%\+\-\/\_\¿\?\¡\!\:\(\)\$\#°]",strError,objValue.name+": solo admite letras, numeros, espacios .,-+*%/_¿?¡!:()$#°");break}case"num":case"numeric":{ret=TestInputType(objValue,"[^0-9]",strError,objValue.name+": solo admite numeros ");break}case"num_s":case"numeric_space":{ret=TestInputType(objValue,"[^0-9\\s]",strError,objValue.name+": solo admite numeros y espacios ");break}case"rfc":{ret=TestInputType(objValue,"[^A-Za-z0-9\\s\-]",strError,objValue.name+": solo admite espacios, letras, numeros y guiones ");break}case"domain":{ret=TestInputType(objValue,"[^A-Za-z0-9\-\_]",strError,objValue.name+": solo admite letras, numeros y guiones ");break}case"phone":{ret=TestInputType(objValue,"[^0-9\(\)\-\.\\s]",strError,objValue.name+": solo admite letras, numeros, guiones, ( ) - . y espacios ");break}case"dec":case"decimal":{ret=TestInputType(objValue,"[^0-9\.]",strError,objValue.name+": solo admite numeros y . ");break}case"money":{ret=TestInputType(objValue,"[^0-9\$\,\.]",strError,objValue.name+": solo admite numeros y . ");break}case"email":{ret=TestEmail(objValue,strError);break}case"lt":case"lessthan":{ret=TestLessThan(objValue,cmdvalue,strError);break}case"gt":case"greaterthan":{ret=TestGreaterThan(objValue,cmdvalue,strError);break}case"regexp":{ret=TestRegExp(objValue,cmdvalue,strError);break}case"dontselect":{ret=TestDontSelect(objValue,cmdvalue,strError)break}case"dontselectchk":{ret=TestDontSelectChk(objValue,cmdvalue,strError)break}case"shouldselchk":{ret=TestShouldSelectChk(objValue,cmdvalue,strError)break}case"selone_radio":{ret=TestSelectOneRadio(objValue,strError);break}}return ret}function VWZ_IsListItemSelected(listname,value){for(var i=0;i<listname.options.length;i++){if(listname.options[i].selected==true&&listname.options[i].value==value){return true}}return false}function VWZ_IsChecked(objcheck,value){if(objcheck.length){for(var c=0;c<objcheck.length;c++){if(objcheck[c].checked=="1"&&objcheck[c].value==value){return true}}}else{if(objcheck.checked=="1"){return true}}return false}