(function($){var createdElements=[];var defaults={options:{prependExistingHelpBlock:false,sniffHtml:true,preventSubmit:true,submitError:false,submitSuccess:false,semanticallyStrict:false,autoAdd:{helpBlocks:true},filter:function(){return true;}},methods:{init:function(options){var settings=$.extend(true,{},defaults);settings.options=$.extend(true,settings.options,options);var $siblingElements=this;var uniqueForms=$.unique($siblingElements.map(function(){return $(this).parents("form")[0];}).toArray());$(uniqueForms).bind("submit",function(e){var $form=$(this);var warningsFound=0;var $inputs=$form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);$inputs.trigger("submit.validation").trigger("validationLostFocus.validation");$inputs.each(function(i,el){var $this=$(el),$controlGroup=$this.parents(".control-group").first();if($controlGroup.hasClass("warning")){$controlGroup.removeClass("warning").addClass("error");warningsFound++;}});$inputs.trigger("validationLostFocus.validation");if(warningsFound){if(settings.options.preventSubmit){e.preventDefault();}$form.addClass("error");if($.isFunction(settings.options.submitError)){settings.options.submitError($form,e,$inputs.jqBootstrapValidation("collectErrors",true));}}else{$form.removeClass("error");if($.isFunction(settings.options.submitSuccess)){settings.options.submitSuccess($form,e);}}});return this.each(function(){var $this=$(this),$controlGroup=$this.parents(".control-group").first(),$helpBlock=$controlGroup.find(".help-block").first(),$form=$this.parents("form").first(),validatorNames=[];if(!$helpBlock.length&&settings.options.autoAdd&&settings.options.autoAdd.helpBlocks){$helpBlock=$('
');$controlGroup.find('.controls').append($helpBlock);createdElements.push($helpBlock[0]);}if(settings.options.sniffHtml){var message="";if($this.attr("pattern")!==undefined){message="Not in the expected format";if($this.data("validationPatternMessage")){message=$this.data("validationPatternMessage");}$this.data("validationPatternMessage",message);$this.data("validationPatternRegex",$this.attr("pattern"));}if($this.attr("max")!==undefined||$this.attr("aria-valuemax")!==undefined){var max=($this.attr("max")!==undefined?$this.attr("max"):$this.attr("aria-valuemax"));message="Too high: Maximum of '"+max+"'";if($this.data("validationMaxMessage")){message=$this.data("validationMaxMessage");}$this.data("validationMaxMessage",message);$this.data("validationMaxMax",max);}if($this.attr("min")!==undefined||$this.attr("aria-valuemin")!==undefined){var min=($this.attr("min")!==undefined?$this.attr("min"):$this.attr("aria-valuemin"));message="Too low: Minimum of '"+min+"'";if($this.data("validationMinMessage")){message=$this.data("validationMinMessage");}$this.data("validationMinMessage",message);$this.data("validationMinMin",min);}if($this.attr("maxlength")!==undefined){message="Too long: Maximum of '"+$this.attr("maxlength")+"' characters";if($this.data("validationMaxlengthMessage")){message=$this.data("validationMaxlengthMessage");}$this.data("validationMaxlengthMessage",message);$this.data("validationMaxlengthMaxlength",$this.attr("maxlength"));}if($this.attr("minlength")!==undefined){message="Too short: Minimum of '"+$this.attr("minlength")+"' characters";if($this.data("validationMinlengthMessage")){message=$this.data("validationMinlengthMessage");}$this.data("validationMinlengthMessage",message);$this.data("validationMinlengthMinlength",$this.attr("minlength"));}if($this.attr("required")!==undefined||$this.attr("aria-required")!==undefined){message=settings.builtInValidators.required.message;if($this.data("validationRequiredMessage")){message=$this.data("validationRequiredMessage");}$this.data("validationRequiredMessage",message);}if($this.attr("type")!==undefined&&$this.attr("type").toLowerCase()==="number"){message=settings.builtInValidators.number.message;if($this.data("validationNumberMessage")){message=$this.data("validationNumberMessage");}$this.data("validationNumberMessage",message);}if($this.attr("type")!==undefined&&$this.attr("type").toLowerCase()==="email"){message="Not a valid email address";if($this.data("validationValidemailMessage")){message=$this.data("validationValidemailMessage");}else if($this.data("validationEmailMessage")){message=$this.data("validationEmailMessage");}$this.data("validationValidemailMessage",message);}if($this.attr("minchecked")!==undefined){message="Not enough options checked; Minimum of '"+$this.attr("minchecked")+"' required";if($this.data("validationMincheckedMessage")){message=$this.data("validationMincheckedMessage");}$this.data("validationMincheckedMessage",message);$this.data("validationMincheckedMinchecked",$this.attr("minchecked"));}if($this.attr("maxchecked")!==undefined){message="Too many options checked; Maximum of '"+$this.attr("maxchecked")+"' required";if($this.data("validationMaxcheckedMessage")){message=$this.data("validationMaxcheckedMessage");}$this.data("validationMaxcheckedMessage",message);$this.data("validationMaxcheckedMaxchecked",$this.attr("maxchecked"));}}if($this.data("validation")!==undefined){validatorNames=$this.data("validation").split(",");}$.each($this.data(),function(i,el){var parts=i.replace(/([A-Z])/g,",$1").split(",");if(parts[0]==="validation"&&parts[1]){validatorNames.push(parts[1]);}});var validatorNamesToInspect=validatorNames;var newValidatorNamesToInspect=[];do{$.each(validatorNames,function(i,el){validatorNames[i]=formatValidatorName(el);});validatorNames=$.unique(validatorNames);newValidatorNamesToInspect=[];$.each(validatorNamesToInspect,function(i,el){if($this.data("validation"+el+"Shortcut")!==undefined){$.each($this.data("validation"+el+"Shortcut").split(","),function(i2,el2){newValidatorNamesToInspect.push(el2);});}else if(settings.builtInValidators[el.toLowerCase()]){var validator=settings.builtInValidators[el.toLowerCase()];if(validator.type.toLowerCase()==="shortcut"){$.each(validator.shortcut.split(","),function(i,el){el=formatValidatorName(el);newValidatorNamesToInspect.push(el);validatorNames.push(el);});}}});validatorNamesToInspect=newValidatorNamesToInspect;}while(validatorNamesToInspect.length>0)var validators={};$.each(validatorNames,function(i,el){var message=$this.data("validation"+el+"Message");var hasOverrideMessage=(message!==undefined);var foundValidator=false;message=(message?message:"'"+el+"' validation failed ");$.each(settings.validatorTypes,function(validatorType,validatorTemplate){if(validators[validatorType]===undefined){validators[validatorType]=[];}if(!foundValidator&&$this.data("validation"+el+formatValidatorName(validatorTemplate.name))!==undefined){validators[validatorType].push($.extend(true,{name:formatValidatorName(validatorTemplate.name),message:message},validatorTemplate.init($this,el)));foundValidator=true;}});if(!foundValidator&&settings.builtInValidators[el.toLowerCase()]){var validator=$.extend(true,{},settings.builtInValidators[el.toLowerCase()]);if(hasOverrideMessage){validator.message=message;}var validatorType=validator.type.toLowerCase();if(validatorType==="shortcut"){foundValidator=true;}else{$.each(settings.validatorTypes,function(validatorTemplateType,validatorTemplate){if(validators[validatorTemplateType]===undefined){validators[validatorTemplateType]=[];}if(!foundValidator&&validatorType===validatorTemplateType.toLowerCase()){$this.data("validation"+el+formatValidatorName(validatorTemplate.name),validator[validatorTemplate.name.toLowerCase()]);validators[validatorType].push($.extend(validator,validatorTemplate.init($this,el)));foundValidator=true;}});}}if(!foundValidator){$.error("Cannot find validation info for '"+el+"'");}});$helpBlock.data("original-contents",($helpBlock.data("original-contents")?$helpBlock.data("original-contents"):$helpBlock.html()));$helpBlock.data("original-role",($helpBlock.data("original-role")?$helpBlock.data("original-role"):$helpBlock.attr("role")));$controlGroup.data("original-classes",($controlGroup.data("original-clases")?$controlGroup.data("original-classes"):$controlGroup.attr("class")));$this.data("original-aria-invalid",($this.data("original-aria-invalid")?$this.data("original-aria-invalid"):$this.attr("aria-invalid")));$this.bind("validation.validation",function(event,params){var value=getValue($this);var errorsFound=[];$.each(validators,function(validatorType,validatorTypeArray){if(value||value.length||(params&¶ms.includeEmpty)||(!!settings.validatorTypes[validatorType].blockSubmit&¶ms&&!!params.submitting)){$.each(validatorTypeArray,function(i,validator){if(settings.validatorTypes[validatorType].validate($this,value,validator)){errorsFound.push(validator.message);}});}});return errorsFound;});$this.bind("getValidators.validation",function(){return validators;});$this.bind("submit.validation",function(){return $this.triggerHandler("change.validation",{submitting:true});});$this.bind(["keyup","focus","blur","click","keydown","keypress","change"].join(".validation ")+".validation",function(e,params){var value=getValue($this);var errorsFound=[];$controlGroup.find("input,textarea,select").each(function(i,el){var oldCount=errorsFound.length;$.each($(el).triggerHandler("validation.validation",params),function(j,message){errorsFound.push(message);});if(errorsFound.length>oldCount){$(el).attr("aria-invalid","true");}else{var original=$this.data("original-aria-invalid");$(el).attr("aria-invalid",(original!==undefined?original:false));}});$form.find("input,select,textarea").not($this).not("[name=\""+$this.attr("name")+"\"]").trigger("validationLostFocus.validation");errorsFound=$.unique(errorsFound.sort());if(errorsFound.length){$controlGroup.removeClass("success error").addClass("warning");if(settings.options.semanticallyStrict&&errorsFound.length===1){$helpBlock.html(errorsFound[0]+(settings.options.prependExistingHelpBlock?$helpBlock.data("original-contents"):""));}else{$helpBlock.html("