Files
Orchard/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Lib.min.js
Thierry Fleury cd5ca49b32 Fixes #5519 : DynamicForms client validation issue
jQuery validate script order is important
2015-07-27 11:31:47 +02:00

1 line
26 KiB
JavaScript

!function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return void(e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function n(){var n;return i.settings.submitHandler?(i.submitButton&&(n=t("<input type='hidden'/>").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&n.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,n()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):n():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is("form"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},n=this;return t.each(e.split(/\s/),function(t,e){i[e]=n.attr(e),n.removeAttr(e)}),i},rules:function(e,i){var n=this[0];if(e){var a=t.data(n.form,"validator").settings,r=a.rules,s=t.validator.staticRules(n);switch(e){case"add":t.extend(s,t.validator.normalizeRule(i)),delete s.messages,r[n.name]=s,i.messages&&(a.messages[n.name]=t.extend(a.messages[n.name],i.messages));break;case"remove":if(!i)return delete r[n.name],s;var o={};return t.each(i.split(/\s/),function(t,e){o[e]=s[e],delete s[e]}),o}}var u=t.validator.normalizeRules(t.extend({},t.validator.classRules(n),t.validator.attributeRules(n),t.validator.dataRules(n),t.validator.staticRules(n)),n);if(u.required){var l=u.required;delete u.required,u=t.extend({required:l},u)}return u}}),t.extend(t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){return!!t.trim(""+t(e).val())},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(new RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t,e){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t,e){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||""!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t,e){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,n){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(n):t(e).addClass(i).removeClass(n)},unhighlight:function(e,i,n){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(n):t(e).removeClass(i).addClass(n)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,"validator"),n="on"+e.type.replace(/^validate/,"");i.settings[n]&&i.settings[n].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,n){"string"==typeof n&&(n=n.split(/\s/)),t.each(n,function(t,n){i[n]=e})});var n=this.settings.rules;t.each(n,function(e,i){n[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",e).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",e),this.settings.invalidHandler&&t(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(" ",".");return t(this.settings.errorElement+"."+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr("type"),n=t(e).val();return"radio"===i||"checkbox"===i?t("input[name='"+t(e).attr("name")+"']:checked").val():"string"==typeof n?n.replace(/\r/g,""):n},check:function(e){e=this.validationTargetFor(this.clean(e));var i,n=t(e).rules(),a=!1,r=this.elementValue(e);for(var s in n){var o={method:s,parameters:n[s]};try{if(i=t.validator.methods[s].call(this,r,e,o.parameters),"dependency-mismatch"===i){a=!0;continue}if(a=!1,"pending"===i)return void(this.toHide=this.toHide.not(this.errorsFor(e)));if(!i)return this.formatAndAdd(e,o),!1}catch(u){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+o.method+"' method.",u),u}}return a?void 0:(this.objectLength(n)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data("msg-"+i.toLowerCase())||e.attributes&&t(e).attr("data-msg-"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],"<strong>Warning: No message defined for "+e.name+"</strong>")},formatAndAdd:function(e,i){var n=this.defaultMessage(e,i.method),a=/\$?\{(\d+)\}/g;"function"==typeof n?n=n.call(this,i.parameters,e):a.test(n)&&(n=t.validator.format(n.replace(a,"{$1}"),i.parameters)),this.errorList.push({message:n,element:e}),this.errorMap[e.name]=n,this.submitted[e.name]=n},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var n=this.errorsFor(e);n.length?(n.removeClass(this.settings.validClass).addClass(this.settings.errorClass),n.html(i)):(n=t("<"+this.settings.errorElement+">").attr("for",this.idOrName(e)).addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(n=n.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(n).length||(this.settings.errorPlacement?this.settings.errorPlacement(n,t(e)):n.insertAfter(e))),!i&&this.settings.success&&(n.text(""),"string"==typeof this.settings.success?n.addClass(this.settings.success):this.settings.success(n,e)),this.toShow=this.toShow.add(n)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr("for")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+e+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{"boolean":function(t,e){return t},string:function(e,i){return!!t(e,i.form).length},"function":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},n=t(e).attr("class");return n&&t.each(n.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},n=t(e),a=n[0].getAttribute("type");for(var r in t.validator.methods){var s;"required"===r?(s=n.get(0).getAttribute(r),""===s&&(s=!0),s=!!s):s=n.attr(r),/min|max/.test(r)&&(null===a||/number|range|text/.test(a))&&(s=Number(s)),s?i[r]=s:a===r&&"range"!==a&&(i[r]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,n,a={},r=t(e);for(i in t.validator.methods)n=r.data("rule-"+i.toLowerCase()),void 0!==n&&(a[i]=n);return a},staticRules:function(e){var i={},n=t.data(e.form,"validator");return n.settings.rules&&(i=t.validator.normalizeRule(n.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(n,a){if(a===!1)return void delete e[n];if(a.param||a.depends){var r=!0;switch(typeof a.depends){case"string":r=!!t(a.depends,i.form).length;break;case"function":r=a.depends.call(i,i)}r?e[n]=void 0!==a.param?a.param:!0:delete e[n]}}),t.each(e,function(n,a){e[n]=t.isFunction(a)?a(i):a}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,n){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==n?n:t.validator.messages[e],i.length<3&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,n){if(!this.depend(n,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var a=t(i).val();return a&&a.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(new Date(t).toString())},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i=0,n=0,a=!1;t=t.replace(/\D/g,"");for(var r=t.length-1;r>=0;r--){var s=t.charAt(r);n=parseInt(s,10),a&&(n*=2)>9&&(n-=9),i+=n,a=!a}return i%10===0},minlength:function(e,i,n){var a=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||a>=n},maxlength:function(e,i,n){var a=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||n>=a},rangelength:function(e,i,n){var a=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||a>=n[0]&&a<=n[1]},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&t<=i[1]},equalTo:function(e,i,n){var a=t(n);return this.settings.onfocusout&&a.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){t(i).valid()}),e===a.val()},remote:function(e,i,n){if(this.optional(i))return"dependency-mismatch";var a=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),a.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=a.message,n="string"==typeof n&&{url:n}||n,a.old===e)return a.valid;a.old=e;var r=this;this.startRequest(i);var s={};return s[i.name]=e,t.ajax(t.extend(!0,{url:n,mode:"abort",port:"validate"+i.name,dataType:"json",data:s,success:function(n){r.settings.messages[i.name].remote=a.originalMessage;var s=n===!0||"true"===n;if(s){var o=r.formSubmitted;r.prepareElement(i),r.formSubmitted=o,r.successList.push(i),delete r.invalid[i.name],r.showErrors()}else{var u={},l=n||r.defaultMessage(i,"remote");u[i.name]=a.message=t.isFunction(l)?l(e):l,r.invalid[i.name]=!0,r.showErrors(u)}a.valid=s,r.stopRequest(i,s)}},n)),"pending"}}}),t.format=t.validator.format}(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,n){var a=t.port;"abort"===t.mode&&(e[a]&&e[a].abort(),e[a]=n)});else{var i=t.ajax;t.ajax=function(n){var a=("mode"in n?n:t.ajaxSettings).mode,r=("port"in n?n:t.ajaxSettings).port;return"abort"===a?(e[r]&&e[r].abort(),e[r]=i.apply(this,arguments),e[r]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,n){return this.bind(i,function(i){var a=t(i.target);return a.is(e)?n.apply(a,arguments):void 0})}})}(jQuery),function(t){function e(t,e,i){t.rules[e]=i,t.message&&(t.messages[e]=t.message)}function i(t){return t.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function n(t){return t.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function a(t){return t.substr(0,t.lastIndexOf(".")+1)}function r(t,e){return 0===t.indexOf("*.")&&(t=t.replace("*.",e)),t}function s(e,i){var a=t(this).find("[data-valmsg-for='"+n(i[0].name)+"']"),r=a.attr("data-valmsg-replace"),s=r?t.parseJSON(r)!==!1:null;a.removeClass("field-validation-valid").addClass("field-validation-error"),e.data("unobtrusiveContainer",a),s?(a.empty(),e.removeClass("input-validation-error").appendTo(a)):e.hide()}function o(e,i){var n=t(this).find("[data-valmsg-summary=true]"),a=n.find("ul");a&&a.length&&i.errorList.length&&(a.empty(),n.addClass("validation-summary-errors").removeClass("validation-summary-valid"),t.each(i.errorList,function(){t("<li />").html(this.message).appendTo(a)}))}function u(e){var i=e.data("unobtrusiveContainer"),n=i.attr("data-valmsg-replace"),a=n?t.parseJSON(n):null;i&&(i.addClass("field-validation-valid").removeClass("field-validation-error"),e.removeData("unobtrusiveContainer"),a&&i.empty())}function l(e){var i=t(this);i.data("validator").resetForm(),i.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),i.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function d(e){var i=t(e),n=i.data(c),a=t.proxy(l,e),r=m.unobtrusive.options||{},d=function(i,n){var a=r[i];a&&t.isFunction(a)&&a.apply(e,n)};return n||(n={options:{errorClass:r.errorClass||"input-validation-error",errorElement:r.errorElement||"span",errorPlacement:function(){s.apply(e,arguments),d("errorPlacement",arguments)},invalidHandler:function(){o.apply(e,arguments),d("invalidHandler",arguments)},messages:{},rules:{},success:function(){u.apply(e,arguments),d("success",arguments)}},attachValidation:function(){i.off("reset."+c,a).on("reset."+c,a).validate(this.options)},validate:function(){return i.validate(),i.valid()}},i.data(c,n)),n}var h,m=t.validator,c="unobtrusiveValidation";m.unobtrusive={adapters:[],parseElement:function(e,i){var n,a,r,s=t(e),o=s.parents("form")[0];o&&(n=d(o),n.options.rules[e.name]=a={},n.options.messages[e.name]=r={},t.each(this.adapters,function(){var i="data-val-"+this.name,n=s.attr(i),u={};void 0!==n&&(i+="-",t.each(this.params,function(){u[this]=s.attr(i+this)}),this.adapt({element:e,form:o,message:n,params:u,rules:a,messages:r}))}),t.extend(a,{__dummy__:!0}),i||n.attachValidation())},parse:function(e){var i=t(e),n=i.parents().addBack().filter("form").add(i.find("form")).has("[data-val=true]");i.find("[data-val=true]").each(function(){m.unobtrusive.parseElement(this,!0)}),n.each(function(){var t=d(this);t&&t.attachValidation()})}},h=m.unobtrusive.adapters,h.add=function(t,e,i){return i||(i=e,e=[]),this.push({name:t,params:e,adapt:i}),this},h.addBool=function(t,i){return this.add(t,function(n){e(n,i||t,!0)})},h.addMinMax=function(t,i,n,a,r,s){return this.add(t,[r||"min",s||"max"],function(t){var r=t.params.min,s=t.params.max;r&&s?e(t,a,[r,s]):r?e(t,i,r):s&&e(t,n,s)})},h.addSingleVal=function(t,i,n){return this.add(t,[i||"val"],function(a){e(a,n||t,a.params[i])})},m.addMethod("__dummy__",function(t,e,i){return!0}),m.addMethod("regex",function(t,e,i){var n;return this.optional(e)?!0:(n=new RegExp(i).exec(t),n&&0===n.index&&n[0].length===t.length)}),m.addMethod("nonalphamin",function(t,e,i){var n;return i&&(n=t.match(/\W/g),n=n&&n.length>=i),n}),m.methods.extension?(h.addSingleVal("accept","mimtype"),h.addSingleVal("extension","extension")):h.addSingleVal("extension","extension","accept"),h.addSingleVal("regex","pattern"),h.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),h.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),h.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),h.add("equalto",["other"],function(i){var s=a(i.element.name),o=i.params.other,u=r(o,s),l=t(i.form).find(":input").filter("[name='"+n(u)+"']")[0];e(i,"equalTo",l)}),h.add("required",function(t){("INPUT"!==t.element.tagName.toUpperCase()||"CHECKBOX"!==t.element.type.toUpperCase())&&e(t,"required",!0)}),h.add("remote",["url","type","additionalfields"],function(s){var o={url:s.params.url,type:s.params.type||"GET",data:{}},u=a(s.element.name);t.each(i(s.params.additionalfields||s.element.name),function(e,i){var a=r(i,u);o.data[a]=function(){return t(s.form).find(":input").filter("[name='"+n(a)+"']").val()}}),e(s,"remote",o)}),h.add("password",["min","nonalphamin","regex"],function(t){t.params.min&&e(t,"minlength",t.params.min),t.params.nonalphamin&&e(t,"nonalphamin",t.params.nonalphamin),t.params.regex&&e(t,"regex",t.params.regex)}),t(function(){m.unobtrusive.parse(document)})}(jQuery),function(t){t.validator.addMethod("optionrequired",function(e,i,n){var a=!0;if(t(i).is("input")){var r=t(i).closest("ol");a=r.find("input:checked").length>0,r.toggleClass("input-validation-error",!a)}else if(t(i).is("select")){var s=t(i).val();a=!!s&&s.length>0}return a},"An option is required"),t.validator.unobtrusive.adapters.addBool("mandatory","required"),t.validator.unobtrusive.adapters.addBool("optionrequired")}(jQuery);