var JFormValidator=function(){var $,handlers,inputEmail,custom,setHandler=function(name,fn,en){en=en===""?true:en;handlers[name]={enabled:en,exec:fn}},findLabel=function(id,form){var $label,$form=jQuery(form);if(!id){return false}$label=$form.find("#"+id+"-lbl");if($label.length){return $label}$label=$form.find('label[for="'+id+'"]');if($label.length){return $label}return false},handleResponse=function(state,$el){var $label=$el.data("label");if(state===false){$el.addClass("invalid").attr("aria-invalid","true");if($label){$label.addClass("invalid").attr("aria-invalid","true")}}else{$el.removeClass("invalid").attr("aria-invalid","false");if($label){$label.removeClass("invalid").attr("aria-invalid","false")}}},validate=function(el){var $el=jQuery(el),tagName,handler;if($el.attr("disabled")){handleResponse(true,$el);return true}if($el.attr("required")||$el.hasClass("required")){tagName=$el.prop("tagName").toLowerCase();if(tagName==="fieldset"&&($el.hasClass("radio")||$el.hasClass("checkboxes"))){if(!$el.find("input:checked").length){handleResponse(false,$el);return false}}else if(!$el.val()||$el.hasClass("placeholder")||$el.attr("type")==="checkbox"&&!$el.is(":checked")){handleResponse(false,$el);return false}}handler=$el.attr("class")&&$el.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)?$el.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)[1]:"";if(handler===""){handleResponse(true,$el);return true}if(handler&&handler!=="none"&&handlers[handler]&&$el.val()){if(handlers[handler].exec($el.val())!==true){handleResponse(false,$el);return false}}handleResponse(true,$el);return true},isValid=function(form){var valid=true,i,message,errors,error,label;jQuery.each(jQuery(form).find("input, textarea, select, fieldset, button"),function(index,el){if(validate(el)===false){valid=false}});jQuery.each(custom,function(key,validator){if(validator.exec()!==true){valid=false}});if(!valid){message=Joomla.JText._("JLIB_FORM_FIELD_INVALID");errors=jQuery("input.invalid, textarea.invalid, select.invalid, fieldset.invalid, button.invalid");error={};error.error=[];for(i=0;i|\"|'|%|;|(|)|&]","i");return!regex.test(value)});setHandler("password",function(value){regex=/^\S[\S ]{2,98}\S$/;return regex.test(value)});setHandler("numeric",function(value){regex=/^(\d|-)?(\d|,)*\.?\d*$/;return regex.test(value)});setHandler("email",function(value){value=punycode.toASCII(value);regex=/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;return regex.test(value)});jQuery("form.form-validate").each(function(){attachToForm(this)})};initialize();return{isValid:isValid,validate:validate,setHandler:setHandler,attachToForm:attachToForm,custom:custom}};document.formvalidator=null;jQuery(function(){document.formvalidator=new JFormValidator});