+function(n){"use strict";function i(t){return t.is('[type="checkbox"]')?t.prop("checked"):t.is('[type="radio"]')?!!n('[name="'+t.attr("name")+'"]:checked').length:t.is("select[multiple]")?(t.val()||[]).length:t.val()}function r(i){return this.each(function(){var u=n(this),f=n.extend({},t.DEFAULTS,u.data(),typeof i=="object"&&i),r=u.data("bs.validator");(r||i!="destroy")&&(r||u.data("bs.validator",r=new t(this,f)),typeof i=="string"&&r[i]())})}var t=function(r,u){this.options=u;this.validators=n.extend({},t.VALIDATORS,u.custom);this.$element=n(r);this.$btn=n('button[type="submit"], input[type="submit"]').filter('[form="'+this.$element.attr("id")+'"]').add(this.$element.find('input[type="submit"], button[type="submit"]'));this.update();this.$element.on("input.bs.validator change.bs.validator focusout.bs.validator",n.proxy(this.onInput,this));this.$element.on("submit.bs.validator",n.proxy(this.onSubmit,this));this.$element.on("reset.bs.validator",n.proxy(this.reset,this));this.$element.find("[data-match]").each(function(){var t=n(this),r=t.attr("data-match");n(r).on("input.bs.validator",function(){i(t)&&t.trigger("input.bs.validator")})});this.$inputs.filter(function(){return i(n(this))&&!n(this).closest(".has-error").length}).trigger("focusout");this.$element.attr("novalidate",!0)},u;t.VERSION="0.11.9";t.INPUT_SELECTOR=':input:not([type="hidden"], [type="submit"], [type="reset"], button)';t.FOCUS_OFFSET=20;t.DEFAULTS={delay:500,html:!1,disable:!0,focus:!0,custom:{},errors:{match:"Does not match",minlength:"Not long enough"},feedback:{success:"glyphicon-ok",error:"glyphicon-remove"}};t.VALIDATORS={"native":function(n){var t=n[0];if(t.checkValidity)return!t.checkValidity()&&!t.validity.valid&&(t.validationMessage||"error!")},match:function(i){var r=i.attr("data-match");return i.val()!==n(r).val()&&t.DEFAULTS.errors.match},minlength:function(n){var i=n.attr("data-minlength");return n.val().length<i&&t.DEFAULTS.errors.minlength}};t.prototype.update=function(){var i=this;return this.$inputs=this.$element.find(t.INPUT_SELECTOR).add(this.$element.find('[data-validate="true"]')).not(this.$element.find('[data-validate="false"]').each(function(){i.clearErrors(n(this))})),this.toggleSubmit(),this};t.prototype.onInput=function(t){var r=this,i=n(t.target),u=t.type!=="focusout";this.$inputs.is(i)&&this.validateInput(i,u).done(function(){r.toggleSubmit()})};t.prototype.validateInput=function(t,r){var o=i(t),e=t.data("bs.validator.errors"),f,u;if(t.is('[type="radio"]')&&(t=this.$element.find('input[name="'+t.attr("name")+'"]')),f=n.Event("validate.bs.validator",{relatedTarget:t[0]}),this.$element.trigger(f),!f.isDefaultPrevented())return u=this,this.runValidators(t).done(function(i){t.data("bs.validator.errors",i);i.length?r?u.defer(t,u.showErrors):u.showErrors(t):u.clearErrors(t);e&&i.toString()===e.toString()||(f=i.length?n.Event("invalid.bs.validator",{relatedTarget:t[0],detail:i}):n.Event("valid.bs.validator",{relatedTarget:t[0],detail:e}),u.$element.trigger(f));u.toggleSubmit();u.$element.trigger(n.Event("validated.bs.validator",{relatedTarget:t[0]}))})};t.prototype.runValidators=function(t){function e(n){return t.attr("data-"+n+"-error")}function o(){var n=t[0].validity;return n.typeMismatch?t.attr("data-type-error"):n.patternMismatch?t.attr("data-pattern-error"):n.stepMismatch?t.attr("data-step-error"):n.rangeOverflow?t.attr("data-max-error"):n.rangeUnderflow?t.attr("data-min-error"):n.valueMissing?t.attr("data-required-error"):null}function s(){return t.attr("data-error")}function f(n){return e(n)||o()||s()}var r=[],u=n.Deferred();return t.data("bs.validator.deferred")&&t.data("bs.validator.deferred").reject(),t.data("bs.validator.deferred",u),n.each(this.validators,n.proxy(function(n,u){var e=null;(i(t)||t.attr("required"))&&(t.attr("data-"+n)!==undefined||n=="native")&&(e=u.call(this,t))&&(e=f(n)||e,~r.indexOf(e)||r.push(e))},this)),!r.length&&i(t)&&t.attr("data-remote")?this.defer(t,function(){var e={};e[t.attr("name")]=i(t);n.get(t.attr("data-remote"),e).fail(function(n,t,i){r.push(f("remote")||i)}).always(function(){u.resolve(r)})}):u.resolve(r),u.promise()};t.prototype.validate=function(){var t=this;return n.when(this.$inputs.map(function(){return t.validateInput(n(this),!1)})).then(function(){t.toggleSubmit();t.focusError()}),this};t.prototype.focusError=function(){if(this.options.focus){var i=this.$element.find(".has-error:first :input");i.length!==0&&(n("html, body").animate({scrollTop:i.offset().top-t.FOCUS_OFFSET},250),i.focus())}};t.prototype.showErrors=function(t){var e=this.options.html?"html":"text",r=t.data("bs.validator.errors"),i=t.closest(".form-group"),u=i.find(".help-block.with-errors"),f=i.find(".form-control-feedback");r.length&&(r=n("<ul/>").addClass("list-unstyled").append(n.map(r,function(t){return n("<li/>")[e](t)})),u.data("bs.validator.originalContent")===undefined&&u.data("bs.validator.originalContent",u.html()),u.empty().append(r),i.addClass("has-error has-danger"),i.hasClass("has-feedback")&&f.removeClass(this.options.feedback.success)&&f.addClass(this.options.feedback.error)&&i.removeClass("has-success"))};t.prototype.clearErrors=function(n){var t=n.closest(".form-group"),u=t.find(".help-block.with-errors"),r=t.find(".form-control-feedback");u.html(u.data("bs.validator.originalContent"));t.removeClass("has-error has-danger has-success");t.hasClass("has-feedback")&&r.removeClass(this.options.feedback.error)&&r.removeClass(this.options.feedback.success)&&i(n)&&r.addClass(this.options.feedback.success)&&t.addClass("has-success")};t.prototype.hasErrors=function(){function t(){return!!(n(this).data("bs.validator.errors")||[]).length}return!!this.$inputs.filter(t).length};t.prototype.isIncomplete=function(){function t(){var t=i(n(this));return!(typeof t=="string"?n.trim(t):t)}return!!this.$inputs.filter("[required]").filter(t).length};t.prototype.onSubmit=function(n){this.validate();(this.isIncomplete()||this.hasErrors())&&n.preventDefault()};t.prototype.toggleSubmit=function(){this.options.disable&&this.$btn.toggleClass("disabled",this.isIncomplete()||this.hasErrors())};t.prototype.defer=function(t,i){if(i=n.proxy(i,this,t),!this.options.delay)return i();window.clearTimeout(t.data("bs.validator.timeout"));t.data("bs.validator.timeout",window.setTimeout(i,this.options.delay))};t.prototype.reset=function(){return this.$element.find(".form-control-feedback").removeClass(this.options.feedback.error).removeClass(this.options.feedback.success),this.$inputs.removeData(["bs.validator.errors","bs.validator.deferred"]).each(function(){var t=n(this),i=t.data("bs.validator.timeout");window.clearTimeout(i)&&t.removeData("bs.validator.timeout")}),this.$element.find(".help-block.with-errors").each(function(){var t=n(this),i=t.data("bs.validator.originalContent");t.removeData("bs.validator.originalContent").html(i)}),this.$btn.removeClass("disabled"),this.$element.find(".has-error, .has-danger, .has-success").removeClass("has-error has-danger has-success"),this};t.prototype.destroy=function(){return this.reset(),this.$element.removeAttr("novalidate").removeData("bs.validator").off(".bs.validator"),this.$inputs.off(".bs.validator"),this.options=null,this.validators=null,this.$element=null,this.$btn=null,this.$inputs=null,this};u=n.fn.validator;n.fn.validator=r;n.fn.validator.Constructor=t;n.fn.validator.noConflict=function(){return n.fn.validator=u,this};n(window).on("load",function(){n('form[data-toggle="validator"]').each(function(){var t=n(this);r.call(t,t.data())})})}(jQuery)