{"version":3,"sources":["jsdelivr-header.js","/npm/jquery-validation-dist@1.13.2-pre/dist/jquery.validate.js"],"names":[],"mappings":"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","file":"/npm/jquery-validation-dist@1.13.2-pre/dist/jquery.validate.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/jquery-validation-dist@1.13.2-pre/dist/jquery.validate.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * jQuery Validation Plugin v1.13.2-pre\n *\n * http://jqueryvalidation.org/\n *\n * Copyright (c) 2015 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 {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend($.fn, {\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.validateDelegate( \":submit\", \"click\", 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\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( event.target ).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 ( $( event.target ).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.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\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\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 = $( \"<input type='hidden'/>\" )\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\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\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\terrorList = errorList.concat( validator.errorList );\n\t\t\t});\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\t// attributes: space separated list of attributes to retrieve and remove\n\tremoveAttrs: function( attributes ) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each( attributes.split( /\\s/ ), function( index, value ) {\n\t\t\tresult[ value ] = $element.attr( value );\n\t\t\t$element.removeAttr( value );\n\t\t});\n\t\treturn result;\n\t},\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\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\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\t// http://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\t// http://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\treturn !!$.trim( \"\" + $( a ).val() );\n\t},\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 ( 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\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\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 ) === \"\" || excludedKeys.indexOf( event.keyCode ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\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\tcreditcard: \"Please enter a valid credit card number.\",\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},\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\t\t\t\tvar validator = $.data( this[ 0 ].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[ 0 ], event );\n\t\t\t\t}\n\t\t\t}\n\t\t\t$( this.currentForm )\n\t\t\t\t.validateDelegate( \":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'], [type='radio'], [type='checkbox']\",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\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.validateDelegate(\"select, option, [type='radio'], [type='checkbox']\", \"click\", delegate);\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).bind( \"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\tresult = true;\n\n\t\t\tthis.lastElement = checkElement;\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\tresult = this.check( checkElement ) !== false;\n\t\t\t\tif ( result ) {\n\t\t\t\t\tdelete this.invalid[ checkElement.name ];\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Add aria-invalid status for screen readers\n\t\t\t$( element ).attr( \"aria-invalid\", !result );\n\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\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\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[ name ],\n\t\t\t\t\t\telement: this.findByName( name )[ 0 ]\n\t\t\t\t\t});\n\t\t\t\t}\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.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar i, elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\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}\n\t\t\t} else {\n\t\t\t\telements.removeClass( this.settings.errorClass );\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\tcount++;\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\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\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\" )\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\tif ( !this.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// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.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[ this.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\treset: 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\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 val,\n\t\t\t\t$element = $( element ),\n\t\t\t\ttype = element.type;\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 ? false : $element.val();\n\t\t\t}\n\n\t\t\tval = $element.val();\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\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\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\tdefaultMessage: function( element, method ) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[ method ],\n\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\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\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,\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\t\t\tif ( error.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\t\t\t// replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\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\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( 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\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\t\t\t\t} else if ( error.parents( \"label[for='\" + elementID + \"']\" ).length === 0 ) {\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\n\t\t\t\t\terrorID = error.attr( \"id\" ).replace( /(:|\\.|\\[|\\]|\\$)/g, \"\\\\$1\");\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\" + errorID + \"\\\\b\" ) ) ) {\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\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + name + \"']\", this.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.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 + \", #\" + describer.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\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='\" + 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\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\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\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 ) {\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, \"remote\" )\n\t\t\t});\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\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 <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\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\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\t// convert the value to a number for number inputs, and for text for backwards compability\n\t\t\t// allows type=\"date\" and others to be compared as strings\n\t\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\t\tvalue = Number( value );\n\t\t\t}\n\n\t\t\tif ( value || value === 0 ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t} else if ( type === method && type !== \"range\" ) {\n\t\t\t\t// exception: the jquery validate 'range' method\n\t\t\t\t// does not test for the html5 'range' type\n\t\t\t\trules[ method ] = true;\n\t\t\t}\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 method, value,\n\t\t\trules = {}, $element = $( element );\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\tif ( value !== undefined ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t}\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\t\t// handle dependency check\n\t\t$.each( rules, function( prop, val ) {\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\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 ) ? 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\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\tmethods: {\n\n\t\t// http://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\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\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 $.trim( value ).length > 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\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\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional( element ) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test( 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    return 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/creditcard-method/\n\t\t// based on http://en.wikipedia.org/wiki/Luhn_algorithm\n\t\tcreditcard: function( value, element ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false,\n\t\t\t\tn, cDigit;\n\n\t\t\tvalue = value.replace( /\\D/g, \"\" );\n\n\t\t\t// Basing min and max length on\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\n\t\t\t\tcDigit = value.charAt( n );\n\t\t\t\tnDigit = parseInt( cDigit, 10 );\n\t\t\t\tif ( bEven ) {\n\t\t\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn ( nCheck % 10 ) === 0;\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/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\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\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout ) {\n\t\t\t\ttarget.unbind( \".validate-equalTo\" ).bind( \"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 ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue( element ),\n\t\t\t\tvalidator, data;\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 = this.settings.messages[ element.name ].remote;\n\t\t\tthis.settings.messages[ element.name ].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\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\turl: param,\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 ].remote = 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.prepareElement( 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\tdelete validator.invalid[ element.name ];\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, \"remote\" );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : 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\n\t}\n\n});\n\n$.format = function deprecated() {\n\tthrow \"$.format has been deprecated. Please use $.validator.format instead.\";\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// 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\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// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n\n$.extend($.fn, {\n\tvalidateDelegate: function( delegate, type, handler ) {\n\t\treturn this.bind(type, function( event ) {\n\t\t\tvar target = $(event.target);\n\t\t\tif ( target.is(delegate) ) {\n\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t}\n\t\t});\n\t}\n});\n\n}));"]}