{"version":3,"sources":["jquery.validate.js","additional-methods.min.js","jquery.validate.unobtrusive.js","jquery.unobtrusive-ajax.js"],"names":["factory","define","amd","module","exports","require","jQuery","$","extend","fn","validate","options","this","length","debug","window","console","warn","validator","data","attr","settings","onsubmit","on","event","submitHandler","submitButton","target","hasClass","cancelSubmit","undefined","handle","hidden","result","name","val","appendTo","currentForm","call","remove","preventDefault","form","pendingRequest","formSubmitted","focusInvalid","valid","errorList","is","each","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","normalizeRule","messages","split","index","method","removeAttr","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","blank","a","trim","filled","unchecked","prop","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","i","n","replace","RegExp","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","excludedKeys","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","max","min","step","autoCreateRanges","prototype","delegate","hasAttribute","closest","eventType","labelContainer","errorContext","containers","add","valueCache","pending","reset","key","value","invalidHandler","find","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","v","prepareElement","testgroup","push","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","resetElements","objectLength","obj","count","not","text","addWrapper","hide","size","findLastActive","filter","focus","trigger","e","rulesCache","error","selector","join","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","rulesCount","dependencyMismatch","normalizer","TypeError","parameters","methods","formatAndAdd","log","id","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","html","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","match","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","isFunction","parts","isArray","transformed","addMethod","Date","toString","decimals","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","toInt","Math","round","pow","Error","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","b","c","d","f","g","h","files","bankaccountNL","giroaccountNL","parseInt","fromCharCode","mastercard","visa","amex","dinersclub","enroute","discover","jcb","unknown","all","UTC","getUTCFullYear","getUTCMonth","getUTCDate","j","k","l","o","p","q","AL","AD","AT","AZ","BE","BH","BA","BR","BG","CR","HR","CY","CZ","DK","DO","EE","FO","FI","FR","GE","DE","GI","GR","GL","GT","HU","IS","IE","IL","IT","KZ","KW","LV","LB","LI","LT","LU","MK","MT","MR","MU","MC","MD","ME","NL","NO","PK","PS","PL","PT","RO","SM","SA","RS","SK","SI","ES","SE","CH","TN","TR","AE","GB","VG","indexOf","eq","caseSensitive","includeTerritories","includeMilitary","unobtrusive","setValidationValues","ruleName","splitAndTrim","escapeAttributeValue","getModelPrefix","fieldName","appendModelPrefix","prefix","onError","inputElement","container","replaceAttrValue","parseJSON","empty","onErrors","list","onSuccess","onReset","$form","validationInfo","data_validation","onResetProxy","proxy","defaultOptions","$jQval","execInContext","func","attachValidation","adapters","parseElement","skipAttach","valInfo","paramValues","adapt","__dummy__","parse","$selector","$forms","addBack","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","nonalphamin","extension","other","fullOtherName","tagName","additionalfields","paramName","field","regex","extensions","document","getFunction","code","argNames","shift","Function","isMethodProxySafe","asyncOnBeforeSend","setRequestHeader","asyncOnSuccess","contentType","update","prepend","replaceWith","asyncRequest","confirm","loading","duration","cache","beforeSend","complete","status","getResponseHeader","formdata","FormData","file","processData","data_click","data_target","evt","href","offset","pageX","left","pageY","top","setTimeout","currentTarget","clickInfo","clickTarget","isCancel","action","serializeArray"],"mappings":"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","file":"vendor-form.min.js","sourcesContent":["/*!\n * jQuery Validation Plugin v1.15.1\n *\n * http://jqueryvalidation.org/\n *\n * Copyright (c) 2016 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// http://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = event.target;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\n\t\t\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// http://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// http://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null || element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t\tif ( method === \"required\" ) {\n\t\t\t\t\t\t$( element ).removeAttr( \"aria-required\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t\t$( element ).attr( \"aria-required\", \"true\" );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr[ \":\" ], {\n\n\t// http://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// http://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// http://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// http://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && this.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable]\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\n\t\t\t// Add aria-required to any Static/Data/Class required fields before first validation\n\t\t\t// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html\n\t\t\t$( this.currentForm ).find( \"[required], [data-rule-required], .required\" ).attr( \"aria-required\", \"true\" );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( obj[ i ] ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.focus()\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( this.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( element.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule;\n\n\t\t\t// If a normalizer is defined for this element, then\n\t\t\t// call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tval = rules.normalizer.call( element, val );\n\n\t\t\t\tif ( typeof val !== \"string\" ) {\n\t\t\t\t\tthrow new TypeError( \"The normalizer should return a string value.\" );\n\t\t\t\t}\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating\n\t\t\t\t// it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// http://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value.length > 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/date-method/\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n}));","/*! jQuery Validation Plugin - v1.15.1 - 7/22/2016\n * http://jqueryvalidation.org/\n * Copyright (c) 2016 Jörn Zaefferer; Licensed MIT */\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\",\"./jquery.validate.min\"],a):\"object\"==typeof module&&module.exports?module.exports=a(require(\"jquery\")):a(jQuery)}(function(a){!function(){function b(a){return a.replace(/<.[^<>]*?>/g,\" \").replace(/ | /gi,\" \").replace(/[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g,\"\")}a.validator.addMethod(\"maxWords\",function(a,c,d){return this.optional(c)||b(a).match(/\\b\\w+\\b/g).length<=d},a.validator.format(\"Please enter {0} words or less.\")),a.validator.addMethod(\"minWords\",function(a,c,d){return this.optional(c)||b(a).match(/\\b\\w+\\b/g).length>=d},a.validator.format(\"Please enter at least {0} words.\")),a.validator.addMethod(\"rangeWords\",function(a,c,d){var e=b(a),f=/\\b\\w+\\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format(\"Please enter between {0} and {1} words.\"))}(),a.validator.addMethod(\"accept\",function(b,c,d){var e,f,g,h=\"string\"==typeof d?d.replace(/\\s/g,\"\"):\"image/*\",i=this.optional(c);if(i)return i;if(\"file\"===a(c).attr(\"type\")&&(h=h.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\").replace(/,/g,\"|\").replace(/\\/\\*/g,\"/.*\"),c.files&&c.files.length))for(g=new RegExp(\".?(\"+h+\")$\",\"i\"),e=0;e,.\\/? ])+/g,\"\"),11!==a.length)return!1;var b,c,d,e,f=0;if(b=parseInt(a.substring(9,10),10),c=parseInt(a.substring(10,11),10),d=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},\"\"===a||\"00000000000\"===a||\"11111111111\"===a||\"22222222222\"===a||\"33333333333\"===a||\"44444444444\"===a||\"55555555555\"===a||\"66666666666\"===a||\"77777777777\"===a||\"88888888888\"===a||\"99999999999\"===a)return!1;for(e=1;e<=9;e++)f+=parseInt(a.substring(e-1,e),10)*(11-e);if(d(f,b)){for(f=0,e=1;e<=10;e++)f+=parseInt(a.substring(e-1,e),10)*(12-e);return d(f,c)}return!1},\"Please specify a valid CPF number\"),a.validator.addMethod(\"creditcard\",function(a,b){if(this.optional(b))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\\D/g,\"\"),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},\"Please enter a valid credit card number.\"),a.validator.addMethod(\"creditcardtypes\",function(a,b,c){if(/[^0-9\\-]+/.test(a))return!1;a=a.replace(/\\D/g,\"\");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&/^(5[12345])/.test(a)?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},\"Please enter a valid credit card number.\"),a.validator.addMethod(\"currency\",function(a,b,c){var d,e=\"string\"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,\"\"),f=g?f+\"]\":f+\"]?\",d=\"^[\"+f+\"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\",d=new RegExp(d),this.optional(b)||d.test(a)},\"Please specify a valid currency\"),a.validator.addMethod(\"dateFA\",function(a,b){return this.optional(b)||/^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod(\"dateITA\",function(a,b){var c,d,e,f,g,h=!1,i=/^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;return i.test(a)?(c=a.split(\"/\"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod(\"dateNL\",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod(\"extension\",function(a,b,c){return c=\"string\"==typeof c?c.replace(/,/g,\"|\"):\"png|jpe?g|gif\",this.optional(b)||a.match(new RegExp(\"\\\\.(\"+c+\")$\",\"i\"))},a.validator.format(\"Please enter a value with a valid extension.\")),a.validator.addMethod(\"giroaccountNL\",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},\"Please specify a valid giro account number\"),a.validator.addMethod(\"iban\",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,\"\").toUpperCase(),m=\"\",n=!0,o=\"\",p=\"\",q=5;if(l.length9&&a.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/)},\"Please specify a valid mobile number\"),a.validator.addMethod(\"nieES\",function(a){\"use strict\";return a=a.toUpperCase(),!!a.match(\"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\")&&(/^[T]{1}/.test(a)?a[8]===/^[T]{1}[A-Z0-9]{8}$/.test(a):!!/^[XYZ]{1}/.test(a)&&a[8]===\"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(a.replace(\"X\",\"0\").replace(\"Y\",\"1\").replace(\"Z\",\"2\").substring(0,8)%23))},\"Please specify a valid NIE number.\"),a.validator.addMethod(\"nifES\",function(a){\"use strict\";return a=a.toUpperCase(),!!a.match(\"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?\"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]===String.fromCharCode(64))},\"Please specify a valid NIF number.\"),a.validator.addMethod(\"notEqualTo\",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},\"Please enter a different value, values must not be the same.\"),a.validator.addMethod(\"nowhitespace\",function(a,b){return this.optional(b)||/^\\S+$/i.test(a)},\"No white space please\"),a.validator.addMethod(\"pattern\",function(a,b,c){return!!this.optional(b)||(\"string\"==typeof c&&(c=new RegExp(\"^(?:\"+c+\")$\")),c.test(a))},\"Invalid format.\"),a.validator.addMethod(\"phoneNL\",function(a,b){return this.optional(b)||/^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test(a)},\"Please specify a valid phone number.\"),a.validator.addMethod(\"phoneUK\",function(a,b){return a=a.replace(/\\(|\\)|\\s+|-/g,\"\"),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/)},\"Please specify a valid phone number\"),a.validator.addMethod(\"phoneUS\",function(a,b){return a=a.replace(/\\s+/g,\"\"),this.optional(b)||a.length>9&&a.match(/^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]([02-9]\\d|1[02-9])-?\\d{4}$/)},\"Please specify a valid phone number\"),a.validator.addMethod(\"phonesUK\",function(a,b){return a=a.replace(/\\(|\\)|\\s+|-/g,\"\"),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/)},\"Please specify a valid uk phone number\"),a.validator.addMethod(\"postalCodeCA\",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test(a)},\"Please specify a valid postal code\"),a.validator.addMethod(\"postalcodeBR\",function(a,b){return this.optional(b)||/^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test(a)},\"Informe um CEP válido.\"),a.validator.addMethod(\"postalcodeIT\",function(a,b){return this.optional(b)||/^\\d{5}$/.test(a)},\"Please specify a valid postal code\"),a.validator.addMethod(\"postalcodeNL\",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test(a)},\"Please specify a valid postal code\"),a.validator.addMethod(\"postcodeUK\",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test(a)},\"Please specify a valid UK postcode\"),a.validator.addMethod(\"require_from_group\",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data(\"valid_req_grp\")?f.data(\"valid_req_grp\"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data(\"valid_req_grp\",g),a(c).data(\"being_validated\")||(e.data(\"being_validated\",!0),e.each(function(){g.element(this)}),e.data(\"being_validated\",!1)),h},a.validator.format(\"Please fill at least {0} of these fields.\")),a.validator.addMethod(\"skip_or_fill_minimum\",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data(\"valid_skip\")?f.data(\"valid_skip\"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data(\"valid_skip\",g),a(c).data(\"being_validated\")||(e.data(\"being_validated\",!0),e.each(function(){g.element(this)}),e.data(\"being_validated\",!1)),i},a.validator.format(\"Please either skip these fields or fill at least {0} of them.\")),a.validator.addMethod(\"stateUS\",function(a,b,c){var d,e=\"undefined\"==typeof c,f=!e&&\"undefined\"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&\"undefined\"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&\"undefined\"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?\"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\":g?\"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\":\"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\":\"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\",d=f?new RegExp(d):new RegExp(d,\"i\"),this.optional(b)||d.test(a)},\"Please specify a valid state\"),a.validator.addMethod(\"strippedminlength\",function(b,c,d){return a(b).text().length>=d},a.validator.format(\"Please enter at least {0} characters\")),a.validator.addMethod(\"time\",function(a,b){return this.optional(b)||/^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test(a)},\"Please enter a valid time, between 00:00 and 23:59\"),a.validator.addMethod(\"time12h\",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test(a)},\"Please enter a valid time in 12-hour am/pm format\"),a.validator.addMethod(\"url2\",function(a,b){return this.optional(b)||/^(https?|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(a)},a.validator.messages.url),a.validator.addMethod(\"vinUS\",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=[\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"J\",\"K\",\"L\",\"M\",\"N\",\"P\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports \n module.exports = factory(require('jquery-validation'));\n } else {\n // Browser global\n jQuery.validator.unobtrusive = factory(jQuery);\n }\n}(function ($) {\n var $jQval = $.validator,\n adapters,\n data_validation = \"unobtrusiveValidation\";\n\n function setValidationValues(options, ruleName, value) {\n options.rules[ruleName] = value;\n if (options.message) {\n options.messages[ruleName] = options.message;\n }\n }\n\n function splitAndTrim(value) {\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n }\n\n function escapeAttributeValue(value) {\n // As mentioned on http://api.jquery.com/category/selectors/\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n }\n\n function getModelPrefix(fieldName) {\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n }\n\n function appendModelPrefix(value, prefix) {\n if (value.indexOf(\"*.\") === 0) {\n value = value.replace(\"*.\", prefix);\n }\n return value;\n }\n\n function onError(error, inputElement) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n error.data(\"unobtrusiveContainer\", container);\n\n if (replace) {\n container.empty();\n error.removeClass(\"input-validation-error\").appendTo(container);\n }\n else {\n error.hide();\n }\n }\n\n function onErrors(event, validator) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\n list = container.find(\"ul\");\n\n if (list && list.length && validator.errorList.length) {\n list.empty();\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n $.each(validator.errorList, function () {\n $(\"\").html(this.message).appendTo(list);\n });\n }\n }\n\n function onSuccess(error) { // 'this' is the form element\n var container = error.data(\"unobtrusiveContainer\");\n\n if (container) {\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n error.removeData(\"unobtrusiveContainer\");\n\n if (replace) {\n container.empty();\n }\n }\n }\n\n function onReset(event) { // 'this' is the form element\n var $form = $(this),\n key = '__jquery_unobtrusive_validation_form_reset';\n if ($form.data(key)) {\n return;\n }\n // Set a flag that indicates we're currently resetting the form.\n $form.data(key, true);\n try {\n $form.data(\"validator\").resetForm();\n } finally {\n $form.removeData(key);\n }\n\n $form.find(\".validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .removeClass(\"validation-summary-errors\");\n $form.find(\".field-validation-error\")\n .addClass(\"field-validation-valid\")\n .removeClass(\"field-validation-error\")\n .removeData(\"unobtrusiveContainer\")\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\n .removeData(\"unobtrusiveContainer\");\n }\n\n function validationInfo(form) {\n var $form = $(form),\n result = $form.data(data_validation),\n onResetProxy = $.proxy(onReset, form),\n defaultOptions = $jQval.unobtrusive.options || {},\n execInContext = function (name, args) {\n var func = defaultOptions[name];\n func && $.isFunction(func) && func.apply(form, args);\n };\n\n if (!result) {\n result = {\n options: { // options structure passed to jQuery Validate's validate() method\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\n errorElement: defaultOptions.errorElement || \"span\",\n errorPlacement: function () {\n onError.apply(form, arguments);\n execInContext(\"errorPlacement\", arguments);\n },\n invalidHandler: function () {\n onErrors.apply(form, arguments);\n execInContext(\"invalidHandler\", arguments);\n },\n messages: {},\n rules: {},\n success: function () {\n onSuccess.apply(form, arguments);\n execInContext(\"success\", arguments);\n }\n },\n attachValidation: function () {\n $form\n .off(\"reset.\" + data_validation, onResetProxy)\n .on(\"reset.\" + data_validation, onResetProxy)\n .validate(this.options);\n },\n validate: function () { // a validation function that is called by unobtrusive Ajax\n $form.validate();\n return $form.valid();\n }\n };\n $form.data(data_validation, result);\n }\n\n return result;\n }\n\n $jQval.unobtrusive = {\n adapters: [],\n\n parseElement: function (element, skipAttach) {\n /// \n /// Parses a single HTML element for unobtrusive validation attributes.\n /// \n /// The HTML element to be parsed.\n /// [Optional] true to skip attaching the\n /// validation to the form. If parsing just this single element, you should specify true.\n /// If parsing several elements, you should specify false, and manually attach the validation\n /// to the form when you are finished. The default is false.\n var $element = $(element),\n form = $element.parents(\"form\")[0],\n valInfo, rules, messages;\n\n if (!form) { // Cannot do client-side validation without a form\n return;\n }\n\n valInfo = validationInfo(form);\n valInfo.options.rules[element.name] = rules = {};\n valInfo.options.messages[element.name] = messages = {};\n\n $.each(this.adapters, function () {\n var prefix = \"data-val-\" + this.name,\n message = $element.attr(prefix),\n paramValues = {};\n\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\n prefix += \"-\";\n\n $.each(this.params, function () {\n paramValues[this] = $element.attr(prefix + this);\n });\n\n this.adapt({\n element: element,\n form: form,\n message: message,\n params: paramValues,\n rules: rules,\n messages: messages\n });\n }\n });\n\n $.extend(rules, { \"__dummy__\": true });\n\n if (!skipAttach) {\n valInfo.attachValidation();\n }\n },\n\n parse: function (selector) {\n /// \n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\n /// attribute values.\n /// \n /// Any valid jQuery selector.\n\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n // element with data-val=true\n var $selector = $(selector),\n $forms = $selector.parents()\n .addBack()\n .filter(\"form\")\n .add($selector.find(\"form\"))\n .has(\"[data-val=true]\");\n\n $selector.find(\"[data-val=true]\").each(function () {\n $jQval.unobtrusive.parseElement(this, true);\n });\n\n $forms.each(function () {\n var info = validationInfo(this);\n if (info) {\n info.attachValidation();\n }\n });\n }\n };\n\n adapters = $jQval.unobtrusive.adapters;\n\n adapters.add = function (adapterName, params, fn) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] An array of parameter names (strings) that will\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n /// mmmm is the parameter name).\n /// The function to call, which adapts the values from the HTML\n /// attributes into jQuery Validate rules and/or messages.\n /// \n if (!fn) { // Called with no params, just a function\n fn = params;\n params = [];\n }\n this.push({ name: adapterName, params: params, adapt: fn });\n return this;\n };\n\n adapters.addBool = function (adapterName, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has no parameter values.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, function (options) {\n setValidationValues(options, ruleName || adapterName, true);\n });\n };\n\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// The name of the jQuery Validate rule to be used when you only\n /// have a minimum value.\n /// The name of the jQuery Validate rule to be used when you only\n /// have a maximum value.\n /// The name of the jQuery Validate rule to be used when you\n /// have both a minimum and maximum value.\n /// [Optional] The name of the HTML attribute that\n /// contains the minimum value. The default is \"min\".\n /// [Optional] The name of the HTML attribute that\n /// contains the maximum value. The default is \"max\".\n /// \n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n var min = options.params.min,\n max = options.params.max;\n\n if (min && max) {\n setValidationValues(options, minMaxRuleName, [min, max]);\n }\n else if (min) {\n setValidationValues(options, minRuleName, min);\n }\n else if (max) {\n setValidationValues(options, maxRuleName, max);\n }\n });\n };\n\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has a single value.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\n /// [Optional] The name of the HTML attribute that contains the value.\n /// The default is \"val\".\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, [attribute || \"val\"], function (options) {\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n });\n };\n\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n return true;\n });\n\n $jQval.addMethod(\"regex\", function (value, element, params) {\n var match;\n if (this.optional(element)) {\n return true;\n }\n\n match = new RegExp(params).exec(value);\n return (match && (match.index === 0) && (match[0].length === value.length));\n });\n\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\n var match;\n if (nonalphamin) {\n match = value.match(/\\W/g);\n match = match && match.length >= nonalphamin;\n }\n return match;\n });\n\n if ($jQval.methods.extension) {\n adapters.addSingleVal(\"accept\", \"mimtype\");\n adapters.addSingleVal(\"extension\", \"extension\");\n } else {\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n // validating the extension, and ignore mime-type validations as they are not supported.\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n }\n\n adapters.addSingleVal(\"regex\", \"pattern\");\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n adapters.add(\"equalto\", [\"other\"], function (options) {\n var prefix = getModelPrefix(options.element.name),\n other = options.params.other,\n fullOtherName = appendModelPrefix(other, prefix),\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n setValidationValues(options, \"equalTo\", element);\n });\n adapters.add(\"required\", function (options) {\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n setValidationValues(options, \"required\", true);\n }\n });\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n var value = {\n url: options.params.url,\n type: options.params.type || \"GET\",\n data: {}\n },\n prefix = getModelPrefix(options.element.name);\n\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n var paramName = appendModelPrefix(fieldName, prefix);\n value.data[paramName] = function () {\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n // For checkboxes and radio buttons, only pick up values from checked fields.\n if (field.is(\":checkbox\")) {\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n }\n else if (field.is(\":radio\")) {\n return field.filter(\":checked\").val() || '';\n }\n return field.val();\n };\n });\n\n setValidationValues(options, \"remote\", value);\n });\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\n if (options.params.min) {\n setValidationValues(options, \"minlength\", options.params.min);\n }\n if (options.params.nonalphamin) {\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n }\n if (options.params.regex) {\n setValidationValues(options, \"regex\", options.params.regex);\n }\n });\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\n setValidationValues(options, \"extension\", options.params.extensions);\n });\n\n $(function () {\n $jQval.unobtrusive.parse(document);\n });\n\n return $jQval.unobtrusive;\n}));\n","// Unobtrusive Ajax support library for jQuery\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n// @version \n// \n// Microsoft grants you the right to use these script files for the sole\n// purpose of either: (i) interacting through your browser with the Microsoft\n// website or online service, subject to the applicable licensing or use\n// terms; or (ii) using the files as included with a Microsoft product subject\n// to that product's license terms. Microsoft reserves all other rights to the\n// files not expressly granted by Microsoft, whether by implication, estoppel\n// or otherwise. Insofar as a script file is dual licensed under GPL,\n// Microsoft neither took the code under GPL nor distributes it thereunder but\n// under the terms set out in this paragraph. All notices and licenses\n// below are for informational purposes only.\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global window: false, jQuery: false */\n\n(function ($) {\n var data_click = \"unobtrusiveAjaxClick\",\n data_target = \"unobtrusiveAjaxClickTarget\",\n data_validation = \"unobtrusiveValidation\";\n\n function getFunction(code, argNames) {\n var fn = window, parts = (code || \"\").split(\".\");\n while (fn && parts.length) {\n fn = fn[parts.shift()];\n }\n if (typeof (fn) === \"function\") {\n return fn;\n }\n argNames.push(code);\n return Function.constructor.apply(null, argNames);\n }\n\n function isMethodProxySafe(method) {\n return method === \"GET\" || method === \"POST\";\n }\n\n function asyncOnBeforeSend(xhr, method) {\n if (!isMethodProxySafe(method)) {\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", method);\n }\n }\n\n function asyncOnSuccess(element, data, contentType) {\n var mode;\n\n if (contentType.indexOf(\"application/x-javascript\") !== -1) { // jQuery already executes JavaScript for us\n return;\n }\n\n mode = (element.getAttribute(\"data-ajax-mode\") || \"\").toUpperCase();\n $(element.getAttribute(\"data-ajax-update\")).each(function (i, update) {\n var top;\n\n switch (mode) {\n case \"BEFORE\":\n $(update).prepend(data);\n break;\n case \"AFTER\":\n $(update).append(data);\n break;\n case \"REPLACE-WITH\":\n $(update).replaceWith(data);\n break;\n default:\n $(update).html(data);\n break;\n }\n });\n }\n\n function asyncRequest(element, options) {\n var confirm, loading, method, duration;\n\n confirm = element.getAttribute(\"data-ajax-confirm\");\n if (confirm && !window.confirm(confirm)) {\n return;\n }\n\n loading = $(element.getAttribute(\"data-ajax-loading\"));\n duration = parseInt(element.getAttribute(\"data-ajax-loading-duration\"), 10) || 0;\n\n $.extend(options, {\n type: element.getAttribute(\"data-ajax-method\") || undefined,\n url: element.getAttribute(\"data-ajax-url\") || undefined,\n cache: (element.getAttribute(\"data-ajax-cache\") || \"\").toLowerCase() === \"true\",\n beforeSend: function (xhr) {\n var result;\n asyncOnBeforeSend(xhr, method);\n result = getFunction(element.getAttribute(\"data-ajax-begin\"), [\"xhr\"]).apply(element, arguments);\n if (result !== false) {\n loading.show(duration);\n }\n return result;\n },\n complete: function () {\n loading.hide(duration);\n getFunction(element.getAttribute(\"data-ajax-complete\"), [\"xhr\", \"status\"]).apply(element, arguments);\n },\n success: function (data, status, xhr) {\n asyncOnSuccess(element, data, xhr.getResponseHeader(\"Content-Type\") || \"text/html\");\n getFunction(element.getAttribute(\"data-ajax-success\"), [\"data\", \"status\", \"xhr\"]).apply(element, arguments);\n },\n error: function () {\n getFunction(element.getAttribute(\"data-ajax-failure\"), [\"xhr\", \"status\", \"error\"]).apply(element, arguments);\n }\n });\n\n options.data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\n\n method = options.type.toUpperCase();\n if (!isMethodProxySafe(method)) {\n options.type = \"POST\";\n options.data.push({ name: \"X-HTTP-Method-Override\", value: method });\n }\n\n // change here:\n // Check for a Form POST with enctype=multipart/form-data\n // add the input file that were not previously included in the serializeArray()\n // set processData and contentType to false\n var $element = $(element);\n if ($element.is(\"form\") && $element.attr(\"enctype\") == \"multipart/form-data\") {\n var formdata = new FormData();\n $.each(options.data, function (i, v) {\n formdata.append(v.name, v.value);\n });\n $(\"input[type=file]\", $element).each(function () {\n var file = this;\n $.each(file.files, function (n, v) {\n formdata.append(file.name, v);\n });\n });\n $.extend(options, {\n processData: false,\n contentType: false,\n data: formdata\n });\n }\n // end change\n\n $.ajax(options);\n }\n\n function validate(form) {\n var validationInfo = $(form).data(data_validation);\n return !validationInfo || !validationInfo.validate || validationInfo.validate();\n }\n\n $(document).on(\"click\", \"a[data-ajax=true]\", function (evt) {\n evt.preventDefault();\n asyncRequest(this, {\n url: this.href,\n type: \"GET\",\n data: []\n });\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] input[type=image]\", function (evt) {\n var name = evt.target.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]),\n offset = target.offset();\n\n form.data(data_click, [\n { name: name + \".x\", value: Math.round(evt.pageX - offset.left) },\n { name: name + \".y\", value: Math.round(evt.pageY - offset.top) }\n ]);\n\n setTimeout(function () {\n form.removeData(data_click);\n }, 0);\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] :submit\", function (evt) {\n var name = evt.currentTarget.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]);\n\n form.data(data_click, name ? [{ name: name, value: evt.currentTarget.value }] : []);\n form.data(data_target, target);\n\n setTimeout(function () {\n form.removeData(data_click);\n form.removeData(data_target);\n }, 0);\n });\n\n $(document).on(\"submit\", \"form[data-ajax=true]\", function (evt) {\n var clickInfo = $(this).data(data_click) || [],\n clickTarget = $(this).data(data_target),\n isCancel = clickTarget && (clickTarget.hasClass(\"cancel\") || clickTarget.attr('formnovalidate') !== undefined);\n evt.preventDefault();\n if (!isCancel && !validate(this)) {\n return;\n }\n asyncRequest(this, {\n url: this.action,\n type: this.method || \"GET\",\n data: clickInfo.concat($(this).serializeArray())\n });\n });\n}(jQuery));\n"]}