(function(n){extend(fn,{validate:function(t){if(!length)return t&&debug&&console&&warn("Nothing selected, can't validate, returning nothing."),void 0;var i=data(this[0],"validator");return i?i:(attr("novalidate","novalidate"),i=new validator(t,this[0]),data(this[0],"validator",i),onsubmit&&(validatedelegate(":submit","click",function(t){submithandler&&(submitbutton=target);n(target).hasClass("cancel")&&(cancelsubmit=!0);void 0!==n(target).attr("formnovalidate")&&(cancelsubmit=!0)}),submit(function(t){function r(){var r;return submithandler?(submitbutton&&(r=n("").attr("name",name).val(n(submitbutton).val()).appendTo(currentform)),call(i,currentform,t),submitbutton&&remove(),!1):!0}return debug&&preventdefault(),cancelsubmit?(cancelsubmit=!1,r()):form()?pendingrequest?(formsubmitted=!0,!1):r():(focusinvalid(),!1)})),i)},valid:function(){if(n(this[0]).is("form"))return validate().form();var t=!0,i=n(this[0].form).validate();return each(function(){t=t&&element(this)}),t},removeAttrs:function(t){var i={},r=this;return each(split(/\s/),function(n,t){i[t]=attr(t);removeattr(t)}),i},rules:function(t,i){var r=this[0],o,u,h;if(t){var e=data(form,"validator").settings,s=rules,f=staticrules(r);switch(t){case"add":extend(f,normalizerule(i));delete messages;s[name]=f;messages&&(messages[name]=extend(messages[name],messages));break;case"remove":return i?(o={},each(split(/\s/),function(n,t){o[t]=f[t];delete f[t]}),o):(delete s[name],f)}}return u=normalizerules(extend({},classrules(r),attributerules(r),datarules(r),staticrules(r)),r),required&&(h=required,delete required,u=extend({required:h},u)),u}});extend(expr[":"],{blank:function(t){return!trim(""+n(t).val())},filled:function(t){return!!trim(""+n(t).val())},unchecked:function(t){return!n(t).prop("checked")}});validator=function(t,i){settings=extend(!0,{},defaults,t);currentform=i;init()};format=function(t,i){return 1===length?function(){var i=makearray(arguments);return unshift(t),apply(this,i)}:(length>2&&constructor!==Array&&(i=makearray(arguments).slice(1)),constructor!==Array&&(i=[i]),each(i,function(n,i){t=replace(RegExp("\\{"+n+"\\}","g"),function(){return i})}),t)};extend(validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:n([]),errorLabelContainer:n([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(n){lastactive=n;focuscleanup&&!blockfocuscleanup&&(unhighlight&&call(this,n,errorclass,validclass),addwrapper(errorsfor(n)).hide())},onfocusout:function(n){!checkable(n)&&(name in submitted||!optional(n))&&element(n)},onkeyup:function(n,t){(9!==which||""!==elementvalue(n))&&(name in submitted||n===lastelement)&&element(n)},onclick:function(n){name in submitted?element(n):name in submitted&&element(parentnode)},highlight:function(t,i,r){"radio"===type?findbyname(name).addClass(i).removeClass(r):n(t).addClass(i).removeClass(r)},unhighlight:function(t,i,r){"radio"===type?findbyname(name).removeClass(i).addClass(r):n(t).removeClass(i).addClass(r)}},setDefaults:function(t){extend(defaults,t)},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:format("Please enter no more than {0} characters."),minlength:format("Please enter at least {0} characters."),rangelength:format("Please enter a value between {0} and {1} characters long."),range:format("Please enter a value between {0} and {1}."),max:format("Please enter a value less than or equal to {0}."),min:format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function i(t){var i=data(this[0].form,"validator"),r="on"+replace(/^validate/,"");settings[r]&&settings[r].call(i,this[0],t)}var r,t;labelcontainer=n(errorlabelcontainer);errorcontext=length&&labelcontainer||n(currentform);containers=n(errorcontainer).add(errorlabelcontainer);submitted={};valuecache={};pendingrequest=0;pending={};invalid={};reset();r=groups={};each(groups,function(t,i){"string"==typeof i&&(i=split(/\s/));each(i,function(n,i){r[i]=t})});t=rules;each(t,function(i,r){t[i]=normalizerule(r)});n(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",i).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",i);invalidhandler&&n(currentform).bind("validate",invalidhandler)},form:function(){return checkform(),extend(submitted,errormap),invalid=extend({},errormap),valid()||n(currentform).triggerHandler("invalid-form",[this]),showerrors(),valid()},checkForm:function(){prepareform();for(var n=0,t=currentelements=elements();t[n];n++)check(t[n]);return valid()},element:function(t){t=validationtargetfor(clean(t));lastelement=t;prepareelement(t);currentelements=n(t);var i=check(t)!==!1;return i?delete invalid[name]:invalid[name]=!0,numberofinvalids()||(tohide=add(containers)),showerrors(),i},showErrors:function(t){if(t){extend(errormap,t);errorlist=[];for(var i in t)push({message:t[i],element:findbyname(i)[0]});successlist=grep(successlist,function(n){return!(name in t)})}showerrors?call(this,errormap,errorlist):defaultshowerrors()},resetForm:function(){resetform&&n(currentform).resetForm();submitted={};lastelement=null;prepareform();hideerrors();elements().removeClass(errorclass).removeData("previousValue")},numberOfInvalids:function(){return objectlength(invalid)},objectLength:function(n){var t=0,i;for(i in n)t++;return t},hideErrors:function(){addwrapper(tohide).hide()},valid:function(){return 0===size()},size:function(){return length},focusInvalid:function(){if(focusinvalid)try{n(findlastactive()||length&&errorlist[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(t){}},findLastActive:function(){var t=lastactive;return t&&1===grep(errorlist,function(n){return name===name}).length&&t},elements:function(){var t=this,i={};return n(currentform).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(ignore).filter(function(){return!name&&debug&&console&&error("%o has no name assigned",this),name in i||!objectlength(n(this).rules())?!1:(i[name]=!0,!0)})},clean:function(t){return n(t)[0]},errors:function(){var t=replace(" ",".");return n(errorelement+"."+t,errorcontext)},reset:function(){successlist=[];errorlist=[];errormap={};toshow=n([]);tohide=n([]);currentelements=n([])},prepareForm:function(){reset();tohide=errors().add(containers)},prepareElement:function(n){reset();tohide=errorsfor(n)},elementValue:function(t){var r=n(t).attr("type"),i=n(t).val();return"radio"===r||"checkbox"===r?n("input[name='"+n(t).attr("name")+"']:checked").val():"string"==typeof i?replace(/\r/g,""):i},check:function(t){var r,u;t=validationtargetfor(clean(t));var i,f=n(t).rules(),e=!1,s=elementvalue(t);for(r in f){u={method:r,parameters:f[r]};try{if(i=methods[r].call(this,s,t,parameters),"dependency-mismatch"===i){e=!0;continue}if(e=!1,"pending"===i)return tohide=not(errorsfor(t)),void 0;if(!i)return formatandadd(t,u),!1}catch(o){throw debug&&console&&log("Exception occurred when checking element "+id+", check the '"+method+"' method.",o),o;}}if(!e)return(objectlength(f)&&push(t),!0)},customDataMessage:function(t,i){return n(t).data("msg-"+tolowercase())||attributes&&n(t).attr("data-msg-"+tolowercase())},customMessage:function(n,t){var i=messages[n];return i&&(constructor===String?i:i[t])},findDefined:function(){for(var n=0;length>n;n++)if(void 0!==arguments[n])return arguments[n];return void 0},defaultMessage:function(t,i){return finddefined(custommessage(name,i),customdatamessage(t,i),!ignoretitle&&title||void 0,messages[i],"Warning: No message defined for "+name+"<\/strong>")},formatAndAdd:function(t,i){var r=defaultmessage(t,method),u=/\$?\{(\d+)\}/g;"function"==typeof r?r=call(this,parameters,t):test(r)&&(r=format(replace(u,"{$1}"),parameters));push({message:r,element:t});errormap[name]=r;submitted[name]=r},addWrapper:function(n){return wrapper&&(n=add(parent(wrapper))),n},defaultShowErrors:function(){for(var i,t,n=0;errorlist[n];n++)t=errorlist[n],highlight&&call(this,element,errorclass,validclass),showlabel(element,message);if(length&&(toshow=add(containers)),success)for(n=0;successlist[n];n++)showlabel(successlist[n]);if(unhighlight)for(n=0,i=validelements();i[n];n++)call(this,i[n],errorclass,validclass);tohide=not(toshow);hideerrors();addwrapper(toshow).show()},validElements:function(){return not(invalidelements())},invalidElements:function(){return n(errorlist).map(function(){return element})},showLabel:function(t,i){var r=errorsfor(t);length?(removeclass(validclass).addClass(errorclass),html(i)):(r=n("<"+errorelement+">").attr("for",idorname(t)).addClass(errorclass).html(i||""),wrapper&&(r=hide().show().wrap("<"+wrapper+"/>").parent()),append(r).length||(errorplacement?errorplacement(r,n(t)):insertafter(t)));!i&&success&&(text(""),"string"==typeof success?addclass(success):success(r,t));toshow=add(r)},errorsFor:function(t){var i=idorname(t);return errors().filter(function(){return n(this).attr("for")===i})},idOrName:function(n){return groups[name]||(checkable(n)?name:id||name)},validationTargetFor:function(n){return checkable(n)&&(n=findbyname(name).not(ignore)[0]),n},checkable:function(n){return/radio|checkbox/test(type)},findByName:function(t){return n(currentform).find("[name='"+t+"']")},getLength:function(t,i){switch(tolowercase()){case"select":return n("option:selected",i).length;case"input":if(checkable(i))return findbyname(name).filter(":checked").length}return length},depend:function(n,t){return dependtypes[typeof n]?dependtypes[typeof n](n,t):!0},dependTypes:{boolean:function(n){return n},string:function(t,i){return!!n(t,form).length},"function":function(n,t){return n(t)}},optional:function(t){var i=elementvalue(t);return!call(this,i,t)&&"dependency-mismatch"},startRequest:function(n){pending[name]||(pendingrequest++,pending[name]=!0)},stopRequest:function(t,i){pendingrequest--;0>pendingrequest&&(pendingrequest=0);delete pending[name];i&&0===pendingrequest&&formsubmitted&&form()?(n(currentform).submit(),formsubmitted=!1):!i&&0===pendingrequest&&formsubmitted&&(n(currentform).triggerHandler("invalid-form",[this]),formsubmitted=!1)},previousValue:function(t){return data(t,"previousValue")||data(t,"previousValue",{old:null,valid:!0,message:defaultmessage(t,"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(t,i){constructor===String?classrulesettings[t]=i:extend(classrulesettings,t)},classRules:function(t){var i={},r=n(t).attr("class");return r&&each(split(" "),function(){this in classrulesettings&&extend(i,classrulesettings[this])}),i},attributeRules:function(t){var u={},e=n(t),f=e[0].getAttribute("type"),r,i;for(r in methods)"required"===r?(i=get(0).getAttribute(r),""===i&&(i=!0),i=!!i):i=attr(r),/min|max/.test(r)&&(null===f||/number|range|text/.test(f))&&(i=Number(i)),i?u[r]=i:f===r&&"range"!==f&&(u[r]=!0);return maxlength&&/-1|2147483647|524288/.test(maxlength)&&delete maxlength,u},dataRules:function(t){var i,r,u={},f=n(t);for(i in methods)r=data("rule-"+tolowercase()),void 0!==r&&(u[i]=r);return u},staticRules:function(t){var i={},r=data(form,"validator");return rules&&(i=normalizerule(rules[name])||{}),i},normalizeRules:function(t,i){return each(t,function(r,u){if(u===!1)return delete t[r],void 0;if(param||depends){var f=!0;switch(typeof depends){case"string":f=!!n(depends,form).length;break;case"function":f=call(i,i)}f?t[r]=void 0!==param?param:!0:delete t[r]}}),each(t,function(r,u){t[r]=isfunction(u)?u(i):u}),each(["minlength","maxlength"],function(){t[this]&&(t[this]=Number(t[this]))}),each(["rangelength","range"],function(){var i;t[this]&&(isarray(t[this])?t[this]=[Number(t[this][0]),Number(t[this][1])]:"string"==typeof t[this]&&(i=t[this].split(/[\s,]+/),t[this]=[Number(i[0]),Number(i[1])]))}),autocreateranges&&(min&&max&&(range=[min,max],delete min,delete max),minlength&&maxlength&&(rangelength=[minlength,maxlength],delete minlength,delete maxlength)),t},normalizeRule:function(t){if("string"==typeof t){var i={};each(split(/\s/),function(){i[this]=!0});t=i}return t},addMethod:function(t,i,r){methods[t]=i;messages[t]=void 0!==r?r:messages[t];3>length&&addclassrules(t,normalizerule(t))},methods:{required:function(t,i,r){if(!depend(r,i))return"dependency-mismatch";if("select"===tolowercase()){var u=n(i).val();return u&&length>0}return checkable(i)?getlength(t,i)>0:trim(t).length>0},email:function(n,t){return optional(t)||/^((([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])))$/test(n)},url:function(n,t){return optional(t)||/^(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})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/test(n)},date:function(n,t){return optional(t)||!/Invalid|NaN/.test(""+new Date(n))},dateISO:function(n,t){return optional(t)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(n)},number:function(n,t){return optional(t)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(n)},digits:function(n,t){return optional(t)||/^\d+$/.test(n)},creditcard:function(n,t){var r,e;if(optional(t))return"dependency-mismatch";if(/[^0-9 \-]+/.test(n))return!1;var f=0,i=0,u=!1;for(n=replace(/\D/g,""),r=length-1;r>=0;r--)e=charat(r),i=parseInt(e,10),u&&(i*=2)>9&&(i-=9),f+=i,u=!u;return 0==f%10},minlength:function(t,i,r){var u=isarray(t)?length:getlength(trim(t),i);return optional(i)||u>=r},maxlength:function(t,i,r){var u=isarray(t)?length:getlength(trim(t),i);return optional(i)||r>=u},rangelength:function(t,i,r){var u=isarray(t)?length:getlength(trim(t),i);return optional(i)||u>=r[0]&&r[1]>=u},min:function(n,t,i){return optional(t)||n>=i},max:function(n,t,i){return optional(t)||i>=n},range:function(n,t,i){return optional(t)||n>=i[0]&&i[1]>=n},equalTo:function(t,i,r){var u=n(r);return onfocusout&&unbind(".validate-equalTo").bind("validate-equalTo",function(){n(i).valid()}),t===val()},remote:function(t,i,r){var f,u,e;return optional(i)?"dependency-mismatch":(f=previousvalue(i),messages[name]||(messages[name]={}),originalmessage=messages[name].remote,messages[name].remote=message,r="string"==typeof r&&{url:r}||r,old===t)?valid:(old=t,u=this,startrequest(i),e={},e[name]=t,ajax(extend(!0,{url:r,mode:"abort",port:"validate"+name,dataType:"json",data:e,success:function(r){var e,h,s,o;messages[name].remote=originalmessage;e=r===!0||"true"===r;e?(h=formsubmitted,prepareelement(i),formsubmitted=h,push(i),delete invalid[name],showerrors()):(s={},o=r||defaultmessage(i,"remote"),s[name]=message=isfunction(o)?o(t):o,invalid[name]=!0,showerrors(s));valid=e;stoprequest(i,e)}},r)),"pending")}}});format=format})(jQuery),function(n){var t={},i;ajaxprefilter?ajaxprefilter(function(n,i,r){var u=port;"abort"===mode&&(t[u]&&t[u].abort(),t[u]=r)}):(i=ajax,ajax=function(r){var f=("mode"in r?r:ajaxsettings).mode,u=("port"in r?r:ajaxsettings).port;return"abort"===f?(t[u]&&t[u].abort(),t[u]=apply(this,arguments),t[u]):apply(this,arguments)})}(jQuery),function(n){extend(fn,{validateDelegate:function(t,i,r){return bind(i,function(i){var u=n(target);if(is(t))return apply(u,arguments)})}})}(jQuery),function(n){function i(n,t,i){rules[t]=i;message&&(messages[t]=message)}function h(n){return replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(n){return replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function e(n){return substr(0,lastindexof(".")+1)}function o(n,t){return indexof("*.")===0&&(n=replace("*.",t)),n}function c(t,i){var r=n(this).find("[data-valmsg-for='"+f(i[0].name)+"']"),u=attr("data-valmsg-replace"),e=u?parsejson(u)!==!1:null;removeclass("field-validation-valid").addClass("field-validation-error");data("unobtrusiveContainer",r);e?(empty(),removeclass("input-validation-error").appendTo(r)):hide()}function l(t,i){var u=n(this).find("[data-valmsg-summary=true]"),r=find("ul");r&&length&&length&&(empty(),addclass("validation-summary-errors").removeClass("validation-summary-valid"),each(errorlist,function(){n("

  • ").html(message).appendTo(r)}))}function a(t){var i=data("unobtrusiveContainer"),r=attr("data-valmsg-replace"),u=r?parsejson(r):null;i&&(addclass("field-validation-valid").removeClass("field-validation-error"),removedata("unobtrusiveContainer"),u&&empty())}function v(){var t=n(this),i="__jquery_unobtrusive_validation_form_reset";if(!data(i)){data(i,!0);try{data("validator").resetForm()}finally{removedata(i)}find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function s(t){var i=n(t),f=data(u),s=proxy(v,t),e=options||{},o=function(i,r){var u=e[i];u&&isfunction(u)&&apply(t,r)};return f||(f={options:{errorClass:errorclass||"input-validation-error",errorElement:errorelement||"span",errorPlacement:function(){apply(t,arguments);o("errorPlacement",arguments)},invalidHandler:function(){apply(t,arguments);o("invalidHandler",arguments)},messages:{},rules:{},success:function(){apply(t,arguments);o("success",arguments)}},attachValidation:function(){off("reset."+u,s).on("reset."+u,s).validate(options)},validate:function(){return validate(),valid()}},data(u,f)),f}var r=validator,t,u="unobtrusiveValidation";unobtrusive={adapters:[],parseElement:function(t,i){var u=n(t),f=parents("form")[0],r,e,o;f&&(r=s(f),rules[name]=e={},messages[name]=o={},each(adapters,function(){var i="data-val-"+name,r=attr(i),s={};r!==undefined&&(i+="-",each(params,function(){s[this]=attr(i+this)}),adapt({element:t,form:f,message:r,params:s,rules:e,messages:o}))}),extend(e,{__dummy__:!0}),i||attachvalidation())},parse:function(t){var i=n(t),u=parents().addBack().filter("form").add(find("form")).has("[data-val=true]");find("[data-val=true]").each(function(){parseelement(this,!0)});each(function(){var n=s(this);n&&attachvalidation()})}};t=adapters;add=function(n,t,i){return i||(i=t,t=[]),push({name:n,params:t,adapt:i}),this};addbool=function(n,t){return add(n,function(r){i(r,t||n,!0)})};addminmax=function(n,t,r,u,f,e){return add(n,[f||"min",e||"max"],function(n){var f=min,e=max;f&&e?i(n,u,[f,e]):f?i(n,t,f):e&&i(n,r,e)})};addsingleval=function(n,t,r){return add(n,[t||"val"],function(u){i(u,r||n,params[t])})};addmethod("__dummy__",function(){return!0});addmethod("regex",function(n,t,i){var r;return optional(t)?!0:(r=new RegExp(i).exec(n),r&&index===0&&r[0].length===length)});addmethod("nonalphamin",function(n,t,i){var r;return i&&(r=match(/\W/g),r=r&&length>=i),r});extension?(addsingleval("accept","mimtype"),addsingleval("extension","extension")):addsingleval("extension","extension","accept");addsingleval("regex","pattern");addbool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");addminmax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");addminmax("minlength","minlength").addMinMax("maxlength","minlength","maxlength");add("equalto",["other"],function(t){var r=e(name),u=other,s=o(u,r),h=n(form).find(":input").filter("[name='"+f(s)+"']")[0];i(t,"equalTo",h)});add("required",function(n){(touppercase()!=="INPUT"||touppercase()!=="CHECKBOX")&&i(n,"required",!0)});add("remote",["url","type","additionalfields"],function(t){var r={url:url,type:type||"GET",data:{}},u=e(name);each(h(additionalfields||name),function(i,e){var s=o(e,u);data[s]=function(){var i=n(form).find(":input").filter("[name='"+f(s)+"']");return is(":checkbox")?filter(":checked").val()||filter(":hidden").val()||"":is(":radio")?filter(":checked").val()||"":val()}});i(t,"remote",r)});add("password",["min","nonalphamin","regex"],function(n){min&&i(n,"minlength",min);nonalphamin&&i(n,"nonalphamin",nonalphamin);regex&&i(n,"regex",regex)});n(function(){parse(document)})}(jQuery)