/* * Validator v0.8.1 for Bootstrap 3, by @1000hz * Copyright 2015 Cina Saffary * Licensed under http://opensource.org/licenses/MIT * * https://github.com/1000hz/bootstrap-validator */ +function(f){function g(a){return this.each(function(){var b=f(this),d=f.extend({},i.DEFAULTS,b.data(),"object"==typeof a&&a),k=b.data("bs.validator");(k||"destroy"!=a)&&(k||b.data("bs.validator",k=new i(this,d)),"string"==typeof a&&k[a]())})}var h=':input:not([type="submit"], button):enabled:visible',i=function(a,d){this.$element=f(a),this.options=d,d.errors=f.extend({},i.DEFAULTS.errors,d.errors);for(var k in d.custom){if(!d.errors[k]){throw new Error("Missing default error message for custom validator: "+k)}}f.extend(i.VALIDATORS,d.custom),this.$element.attr("novalidate",!0),this.toggleSubmit(),this.$element.on("input.bs.validator change.bs.validator focusout.bs.validator",f.proxy(this.validateInput,this)),this.$element.on("submit.bs.validator",f.proxy(this.onSubmit,this)),this.$element.find("[data-match]").each(function(){var e=f(this),l=e.data("match");f(l).on("input.bs.validator",function(){e.val()&&e.trigger("input.bs.validator")})})};i.DEFAULTS={delay:500,html:!1,disable:!0,custom:{},errors:{match:"Does not match",minlength:"Not long enough"},feedback:{success:"glyphicon-ok",error:"glyphicon-warning-sign"}},i.VALIDATORS={"native":function(c){var d=c[0];return d.checkValidity?d.checkValidity():!0},match:function(a){var d=a.data("match");return !a.val()||a.val()===f(d).val()},minlength:function(c){var d=c.data("minlength");return !c.val()||c.val().length>=d}},i.prototype.validateInput=function(a){var k=f(a.target),l=k.data("bs.validator.errors");if(k.is('[type="radio"]')&&(k=this.$element.find('input[name="'+k.attr("name")+'"]')),this.$element.trigger(a=f.Event("validate.bs.validator",{relatedTarget:k[0]})),!a.isDefaultPrevented()){var m=this;this.runValidators(k).done(function(b){k.data("bs.validator.errors",b),b.length?m.showErrors(k):m.clearErrors(k),l&&b.toString()===l.toString()||(a=b.length?f.Event("invalid.bs.validator",{relatedTarget:k[0],detail:b}):f.Event("valid.bs.validator",{relatedTarget:k[0],detail:l}),m.$element.trigger(a)),m.toggleSubmit(),m.$element.trigger(f.Event("validated.bs.validator",{relatedTarget:k[0]}))})}},i.prototype.runValidators=function(a){function d(b){return a.data(b+"-error")||a.data("error")||"native"==b&&a[0].validationMessage||m.errors[b]}var k=[],l=f.Deferred(),m=this.options;return a.data("bs.validator.deferred")&&a.data("bs.validator.deferred").reject(),a.data("bs.validator.deferred",l),f.each(i.VALIDATORS,f.proxy(function(b,c){if((a.data(b)||"native"==b)&&!c.call(this,a)){var e=d(b);!~k.indexOf(e)&&k.push(e)}},this)),!k.length&&a.val()&&a.data("remote")?this.defer(a,function(){var b={};b[a.attr("name")]=a.val(),f.get(a.data("remote"),b).fail(function(c,e,n){k.push(d("remote")||n)}).always(function(){l.resolve(k)})}):l.resolve(k),l.promise()},i.prototype.validate=function(){var b=this.options.delay;return this.options.delay=0,this.$element.find(h).trigger("input.bs.validator"),this.options.delay=b,this},i.prototype.showErrors=function(a){var d=this.options.html?"html":"text";this.defer(a,function(){var b=a.closest(".form-group"),c=b.find(".help-block.with-errors"),k=b.find(".form-control-feedback"),l=a.data("bs.validator.errors");l.length&&(l=f("