var fValidator=new Class({options:{msgContainerTag:"div",msgClass:"fValidator-msg",styleNeutral:{},styleInvalid:{"background-color":"#fcc","border-color":"#c00"},styleValid:{"background-color":"#cfc","border-color":"#0c0"},required:{type:"required",re:/[^.*]/,msg:"Este campo es obligatorio"},alpha:{type:"alpha",re:/^[a-z ._-]+$/i,msg:"Este campo solo acepta letras"},alphanum:{type:"alphanum",re:/^[a-z0-9 ._-]+$/i,msg:"Este campo acepta letras y numeros"},integer:{type:"integer",re:/^[-+]?\d+$/,msg:"Ingrese solo numeros [0-9]"},
real:{type:"real",re:/^[-+]?\d*\.?\d+$/,msg:"Por favor ingrese un numero valido"},date:{type:"date",re:/^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$/,msg:"Por favor ingrese una fecha valida (mm/dd/yyyy)"},email:{type:"email",re:/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i,msg:"Por favor ingrese una direccion de mail valida"},phone:{type:"phone",re:/^[\d\s ().-]+$/,msg:"Por favor ingrese un telefono valido."},
confirm:{type:"confirm",msg:"Las contrasenas ingresadas no concuerdan."},onValid:Class.empty,onInvalid:Class.empty},initialize:function(a,b){if($(a)!=null){this.form=$(a);this.setOptions(b);this.fields=this.form.getElements("*[class^=fValidate]");this.validations=[];this.fields.each(function(c){this._isChildType(c)||c.setStyles(this.options.styleNeutral);c.cbErr=0;var f=c.getProperty("class").split(" ");f.each(function(d){if(d.match(/^fValidate(\[.+\])$/)){d=eval(d.match(/^fValidate(\[.+\])$/)[1]);
for(var e=0;e<d.length;e++){this.options[d[e]]&&this.register(c,this.options[d[e]]);d[e].charAt(0)=="="&&this.register(c,$extend(this.options.confirm,{idField:d[e].substr(1)}))}}}.bind(this))}.bind(this))}},register:function(a,b){a=$(a);this.validations.push([a,b]);a.addEvent("blur",function(){this._validate(a,b)}.bind(this))},_isChildType:function(a){a=a.type.toLowerCase();if(a=="radio"||a=="checkbox")return true;return false},_validate:function(a,b){switch(b.type){case "confirm":$(b.idField).value==
a.value?this._msgRemove(a,b):this._msgInject(a,b);break;default:b.re.test(a.value)?this._msgRemove(a,b):this._msgInject(a,b)}},_validateChild:function(a,b){for(var c=this.form[a.getProperty("name")],f=0,d=true,e=0;e<c.length;e++)if(c[e].checked){f++;if(!b.re.test(c[e].value)){d=false;break}}if(f==0&&b.type=="required")d=false;d?this._msgRemove(a,b):this._msgInject(a,b)},_msgInject:function(a,b){if(!$(a.getProperty("id")+b.type+"_msg")){var c=document.getElementById(a.id+b.type+"error");if(c){c.innerHTML=
"<br>"+b.msg;c=c.style;c.display=""}a.cbErr++}},_msgRemove:function(a,b,c){c=c||false;if(b=document.getElementById(a.id+b.type+"error")){b.innerHTML="";b=b.style;b.display="none"}a.cbErr--},_chkStatus:function(a,b){if(a.cbErr==0){a.effects({duration:500,transition:Fx.Transitions.linear}).start(this.options.styleValid);this.fireEvent("onValid",[a,b],50)}else{a.effects({duration:500,transition:Fx.Transitions.linear}).start(this.options.styleInvalid);this.fireEvent("onInvalid",[a,b],50)}},isOk:function(){var a=
true;this.validations.each(function(b){this._isChildType(b[0])?this._validateChild(b[0],b[1]):this._validate(b[0],b[1]);if(b[0].cbErr>0)a=false}.bind(this));return a},_onSubmit:function(a){a=new Event(a);var b=true;this.validations.each(function(c){this._isChildType(c[0])?this._validateChild(c[0],c[1]):this._validate(c[0],c[1]);if(c[0].cbErr>0)b=false}.bind(this));b||a.stop();return b},_onReset:function(){this.validations.each(function(a){this._isChildType(a[0])||a[0].setStyles(this.options.styleNeutral);
a[0].cbErr=0;this._msgRemove(a[0],a[1],true)}.bind(this))}});fValidator.implement(new Events);fValidator.implement(new Options);
