{"version":3,"file":"~~jquery-validate.360276e6.js","mappings":"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","sources":["webpack://@ultradent/upi-dev-frontend/./src/scripts/plugins/jquery.validate.js"],"sourcesContent":["/*!\n * jQuery Validation Plugin v1.17.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2017 Jörn Zaefferer\n * Released under the MIT license\n */\n(function ( factory ) {\n if ( typeof define === 'function' && define.amd ) {\n define( ['jquery'], factory );\n }\n else if ( typeof module === 'object' && module.exports ) {\n module.exports = factory( require( 'jquery' ) );\n }\n else {\n factory( jQuery );\n }\n}( function ( $ ) {\n\n $.extend( $.fn, {\n\n // https://jqueryvalidation.org/validate/\n validate: function ( options ) {\n\n // If nothing is selected, return nothing; can't chain anyway\n if ( !this.length ) {\n if ( options && options.debug && window.console ) {\n console.warn( 'Nothing selected, can\\'t validate, returning nothing.' );\n }\n return;\n }\n\n // Check if a validator for this form was already created\n var validator = $.data( this[0], 'validator' );\n if ( validator ) {\n return validator;\n }\n\n // Add novalidate tag if HTML5.\n this.attr( 'novalidate', 'novalidate' );\n\n validator = new $.validator( options, this[0] );\n $.data( this[0], 'validator', validator );\n\n if ( validator.settings.onsubmit ) {\n\n this.on( 'click.validate', ':submit', function ( event ) {\n\n // Track the used submit button to properly handle scripted\n // submits later.\n validator.submitButton = event.currentTarget;\n\n // Allow suppressing validation by adding a cancel class to the submit button\n if ( $( this ).hasClass( 'cancel' ) ) {\n validator.cancelSubmit = true;\n }\n\n // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n if ( $( this ).attr( 'formnovalidate' ) !== undefined ) {\n validator.cancelSubmit = true;\n }\n } );\n\n // Validate the form on submit\n this.on( 'submit.validate', function ( event ) {\n if ( validator.settings.debug ) {\n\n // Prevent form submit to be able to see console output\n event.preventDefault();\n }\n\n function handle () {\n var hidden, result;\n\n // Insert a hidden input as a replacement for the missing submit button\n // The hidden input is inserted in two cases:\n // - A user defined a `submitHandler`\n // - There was a pending request due to `remote` method and `stopRequest()`\n // was called to submit the form in case it's valid\n if ( validator.submitButton && (validator.settings.submitHandler || validator.formSubmitted) ) {\n hidden = $( '' )\n .attr( 'name', validator.submitButton.name )\n .val( $( validator.submitButton ).val() )\n .appendTo( validator.currentForm );\n }\n\n if ( validator.settings.submitHandler ) {\n result = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n if ( hidden ) {\n\n // And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n hidden.remove();\n }\n if ( result !== undefined ) {\n return result;\n }\n return false;\n }\n return true;\n }\n\n // Prevent submit for invalid forms or custom submit handlers\n if ( validator.cancelSubmit ) {\n validator.cancelSubmit = false;\n return handle();\n }\n if ( validator.form() ) {\n if ( validator.pendingRequest ) {\n validator.formSubmitted = true;\n return false;\n }\n return handle();\n }\n else {\n validator.focusInvalid();\n return false;\n }\n } );\n }\n\n return validator;\n },\n\n // https://jqueryvalidation.org/valid/\n valid: function () {\n var valid, validator, errorList;\n\n if ( $( this[0] ).is( 'form' ) ) {\n valid = this.validate().form();\n }\n else {\n errorList = [];\n valid = true;\n validator = $( this[0].form ).validate();\n this.each( function () {\n valid = validator.element( this ) && valid;\n if ( !valid ) {\n errorList = errorList.concat( validator.errorList );\n }\n } );\n validator.errorList = errorList;\n }\n return valid;\n },\n\n // https://jqueryvalidation.org/rules/\n rules: function ( command, argument ) {\n var element = this[0],\n settings, staticRules, existingRules, data, param, filtered;\n\n // If nothing is selected, return empty object; can't chain anyway\n if ( element == null ) {\n return;\n }\n\n if ( !element.form && element.hasAttribute( 'contenteditable' ) ) {\n element.form = this.closest( 'form' )[0];\n element.name = this.attr( 'name' );\n }\n\n if ( element.form == null ) {\n return;\n }\n\n if ( command ) {\n settings = $.data( element.form, 'validator' ).settings;\n staticRules = settings.rules;\n existingRules = $.validator.staticRules( element );\n switch ( command ) {\n case 'add':\n $.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n // Remove messages from rules, but allow them to be set separately\n delete existingRules.messages;\n staticRules[element.name] = existingRules;\n if ( argument.messages ) {\n settings.messages[element.name] =\n $.extend( settings.messages[element.name], argument.messages );\n }\n break;\n case 'remove':\n if ( !argument ) {\n delete staticRules[element.name];\n return existingRules;\n }\n filtered = {};\n $.each( argument.split( /\\s/ ), function ( index, method ) {\n filtered[method] = existingRules[method];\n delete existingRules[method];\n } );\n return filtered;\n }\n }\n\n data = $.validator.normalizeRules(\n $.extend(\n {},\n $.validator.classRules( element ),\n $.validator.attributeRules( element ),\n $.validator.dataRules( element ),\n $.validator.staticRules( element )\n ), element );\n\n // Make sure required is at front\n if ( data.required ) {\n param = data.required;\n delete data.required;\n data = $.extend( {required: param}, data );\n }\n\n // Make sure remote is at back\n if ( data.remote ) {\n param = data.remote;\n delete data.remote;\n data = $.extend( data, {remote: param} );\n }\n\n return data;\n }\n } );\n\n// Custom selectors\n $.extend( $.expr.pseudos || $.expr[':'], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n // https://jqueryvalidation.org/blank-selector/\n blank: function ( a ) {\n return !$.trim( '' + $( a ).val() );\n },\n\n // https://jqueryvalidation.org/filled-selector/\n filled: function ( a ) {\n var val = $( a ).val();\n return val !== null && !!$.trim( '' + val );\n },\n\n // https://jqueryvalidation.org/unchecked-selector/\n unchecked: function ( a ) {\n return !$( a ).prop( 'checked' );\n }\n } );\n\n// Constructor for validator\n $.validator = function ( options, form ) {\n this.settings = $.extend( true, {}, $.validator.defaults, options );\n this.currentForm = form;\n this.init();\n };\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n $.validator.format = function ( source, params ) {\n if ( arguments.length === 1 ) {\n return function () {\n var args = $.makeArray( arguments );\n args.unshift( source );\n return $.validator.format.apply( this, args );\n };\n }\n if ( params === undefined ) {\n return source;\n }\n if ( arguments.length > 2 && params.constructor !== Array ) {\n params = $.makeArray( arguments ).slice( 1 );\n }\n if ( params.constructor !== Array ) {\n params = [params];\n }\n $.each( params, function ( i, n ) {\n source = source.replace( new RegExp( '\\\\{' + i + '\\\\}', 'g' ), function () {\n return n;\n } );\n } );\n return source;\n };\n\n $.extend( $.validator, {\n\n defaults: {\n messages: {},\n groups: {},\n rules: {},\n errorClass: 'error',\n pendingClass: 'pending',\n validClass: 'valid',\n errorElement: 'label',\n focusCleanup: false,\n focusInvalid: true,\n errorContainer: $( [] ),\n errorLabelContainer: $( [] ),\n onsubmit: true,\n ignore: ':hidden',\n ignoreTitle: false,\n onfocusin: function ( element ) {\n this.lastActive = element;\n\n // Hide error label and remove error class on focus if enabled\n if ( this.settings.focusCleanup ) {\n if ( this.settings.unhighlight ) {\n this.settings.unhighlight.call( this,\n element,\n this.settings.errorClass,\n this.settings.validClass );\n }\n this.hideThese( this.errorsFor( element ) );\n }\n },\n onfocusout: function ( element ) {\n if ( !this.checkable( element ) && (element.name in this.submitted || !this.optional( element )) ) {\n this.element( element );\n }\n },\n onkeyup: function ( element, event ) {\n\n // Avoid revalidate the field when pressing one of the following keys\n // Shift => 16\n // Ctrl => 17\n // Alt => 18\n // Caps lock => 20\n // End => 35\n // Home => 36\n // Left arrow => 37\n // Up arrow => 38\n // Right arrow => 39\n // Down arrow => 40\n // Insert => 45\n // Num lock => 144\n // AltGr key => 225\n var excludedKeys = [\n 16, 17, 18, 20, 35, 36, 37,\n 38, 39, 40, 45, 144, 225\n ];\n\n if ( event.which ===\n 9 &&\n this.elementValue( element ) ===\n '' ||\n $.inArray( event.keyCode, excludedKeys ) !==\n -1 ) {\n return;\n }\n else if ( element.name in this.submitted || element.name in this.invalid ) {\n this.element( element );\n }\n },\n onclick: function ( element ) {\n\n // Click on selects, radiobuttons and checkboxes\n if ( element.name in this.submitted ) {\n this.element( element );\n\n // Or option elements, check parent select in that case\n }\n else if ( element.parentNode.name in this.submitted ) {\n this.element( element.parentNode );\n }\n },\n highlight: function ( element, errorClass, validClass ) {\n if ( element.type === 'radio' ) {\n this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n }\n else {\n $( element ).addClass( errorClass ).removeClass( validClass );\n }\n },\n unhighlight: function ( element, errorClass, validClass ) {\n if ( element.type === 'radio' ) {\n this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n }\n else {\n $( element ).removeClass( errorClass ).addClass( validClass );\n }\n }\n },\n\n // https://jqueryvalidation.org/jQuery.validator.setDefaults/\n setDefaults: function ( settings ) {\n $.extend( $.validator.defaults, settings );\n },\n\n messages: {\n required: 'This field is required.',\n remote: 'Please fix this field.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateISO: 'Please enter a valid date (ISO).',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n equalTo: 'Please enter the same value again.',\n maxlength: $.validator.format( 'Please enter no more than {0} characters.' ),\n minlength: $.validator.format( 'Please enter at least {0} characters.' ),\n rangelength: $.validator.format( 'Please enter a value between {0} and {1} characters long.' ),\n range: $.validator.format( 'Please enter a value between {0} and {1}.' ),\n max: $.validator.format( 'Please enter a value less than or equal to {0}.' ),\n min: $.validator.format( 'Please enter a value greater than or equal to {0}.' ),\n step: $.validator.format( 'Please enter a multiple of {0}.' )\n },\n\n autoCreateRanges: false,\n\n prototype: {\n\n init: function () {\n this.labelContainer = $( this.settings.errorLabelContainer );\n this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n this.submitted = {};\n this.valueCache = {};\n this.pendingRequest = 0;\n this.pending = {};\n this.invalid = {};\n this.reset();\n\n var groups = (this.groups = {}),\n rules;\n $.each( this.settings.groups, function ( key, value ) {\n if ( typeof value === 'string' ) {\n value = value.split( /\\s/ );\n }\n $.each( value, function ( index, name ) {\n groups[name] = key;\n } );\n } );\n rules = this.settings.rules;\n $.each( rules, function ( key, value ) {\n rules[key] = $.validator.normalizeRule( value );\n } );\n\n function delegate ( event ) {\n\n // Set form expando on contenteditable\n if ( !this.form && this.hasAttribute( 'contenteditable' ) ) {\n this.form = $( this ).closest( 'form' )[0];\n this.name = $( this ).attr( 'name' );\n }\n\n var validator = $.data( this.form, 'validator' ),\n eventType = 'on' + event.type.replace( /^validate/, '' ),\n settings = validator.settings;\n if ( settings[eventType] && !$( this ).is( settings.ignore ) ) {\n settings[eventType].call( validator, this, event );\n }\n }\n\n $( this.currentForm )\n .on( 'focusin.validate focusout.validate keyup.validate',\n ':text, [type=\\'password\\'], [type=\\'file\\'], select, textarea, [type=\\'number\\'], [type=\\'search\\'], ' +\n '[type=\\'tel\\'], [type=\\'url\\'], [type=\\'email\\'], [type=\\'datetime\\'], [type=\\'date\\'], [type=\\'month\\'], ' +\n '[type=\\'week\\'], [type=\\'time\\'], [type=\\'datetime-local\\'], [type=\\'range\\'], [type=\\'color\\'], ' +\n '[type=\\'radio\\'], [type=\\'checkbox\\'], [contenteditable], [type=\\'button\\']', delegate )\n\n // Support: Chrome, oldIE\n // \"select\" is provided as event.target when clicking a option\n .on( 'click.validate', 'select, option, [type=\\'radio\\'], [type=\\'checkbox\\']', delegate );\n\n if ( this.settings.invalidHandler ) {\n $( this.currentForm ).on( 'invalid-form.validate', this.settings.invalidHandler );\n }\n },\n\n // https://jqueryvalidation.org/Validator.form/\n form: function () {\n this.checkForm();\n $.extend( this.submitted, this.errorMap );\n this.invalid = $.extend( {}, this.errorMap );\n if ( !this.valid() ) {\n $( this.currentForm ).triggerHandler( 'invalid-form', [this] );\n }\n this.showErrors();\n return this.valid();\n },\n\n checkForm: function () {\n this.prepareForm();\n for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n this.check( elements[i] );\n }\n return this.valid();\n },\n\n // https://jqueryvalidation.org/Validator.element/\n element: function ( element ) {\n var cleanElement = this.clean( element ),\n checkElement = this.validationTargetFor( cleanElement ),\n v = this,\n result = true,\n rs, group;\n\n if ( checkElement === undefined ) {\n delete this.invalid[cleanElement.name];\n }\n else {\n this.prepareElement( checkElement );\n this.currentElements = $( checkElement );\n\n // If this element is grouped, then validate all group elements already\n // containing a value\n group = this.groups[checkElement.name];\n if ( group ) {\n $.each( this.groups, function ( name, testgroup ) {\n if ( testgroup === group && name !== checkElement.name ) {\n cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n if ( cleanElement && cleanElement.name in v.invalid ) {\n v.currentElements.push( cleanElement );\n result = v.check( cleanElement ) && result;\n }\n }\n } );\n }\n\n rs = this.check( checkElement ) !== false;\n result = result && rs;\n if ( rs ) {\n this.invalid[checkElement.name] = false;\n }\n else {\n this.invalid[checkElement.name] = true;\n }\n\n if ( !this.numberOfInvalids() ) {\n\n // Hide error containers on last error\n this.toHide = this.toHide.add( this.containers );\n }\n this.showErrors();\n\n // Add aria-invalid status for screen readers\n $( element ).attr( 'aria-invalid', !rs );\n }\n\n return result;\n },\n\n // https://jqueryvalidation.org/Validator.showErrors/\n showErrors: function ( errors ) {\n if ( errors ) {\n var validator = this;\n\n // Add items to error list and map\n $.extend( this.errorMap, errors );\n this.errorList = $.map( this.errorMap, function ( message, name ) {\n return {\n message: message,\n element: validator.findByName( name )[0]\n };\n } );\n\n // Remove items from success list\n this.successList = $.grep( this.successList, function ( element ) {\n return !(element.name in errors);\n } );\n }\n if ( this.settings.showErrors ) {\n this.settings.showErrors.call( this, this.errorMap, this.errorList );\n }\n else {\n this.defaultShowErrors();\n }\n },\n\n // https://jqueryvalidation.org/Validator.resetForm/\n resetForm: function () {\n if ( $.fn.resetForm ) {\n $( this.currentForm ).resetForm();\n }\n this.invalid = {};\n this.submitted = {};\n this.prepareForm();\n this.hideErrors();\n var elements = this.elements()\n .removeData( 'previousValue' )\n .removeAttr( 'aria-invalid' );\n\n this.resetElements( elements );\n },\n\n resetElements: function ( elements ) {\n var i;\n\n if ( this.settings.unhighlight ) {\n for ( i = 0; elements[i]; i++ ) {\n this.settings.unhighlight.call( this, elements[i],\n this.settings.errorClass, '' );\n this.findByName( elements[i].name ).removeClass( this.settings.validClass );\n }\n }\n else {\n elements\n .removeClass( this.settings.errorClass )\n .removeClass( this.settings.validClass );\n }\n },\n\n numberOfInvalids: function () {\n return this.objectLength( this.invalid );\n },\n\n objectLength: function ( obj ) {\n /* jshint unused: false */\n var count = 0,\n i;\n for ( i in obj ) {\n\n // This check allows counting elements with empty error\n // message as invalid elements\n if ( obj[i] !== undefined && obj[i] !== null && obj[i] !== false ) {\n count++;\n }\n }\n return count;\n },\n\n hideErrors: function () {\n this.hideThese( this.toHide );\n },\n\n hideThese: function ( errors ) {\n errors.not( this.containers ).text( '' );\n this.addWrapper( errors ).hide();\n },\n\n valid: function () {\n return this.size() === 0;\n },\n\n size: function () {\n return this.errorList.length;\n },\n\n focusInvalid: function () {\n if ( this.settings.focusInvalid ) {\n try {\n $( this.findLastActive() || this.errorList.length && this.errorList[0].element || [] )\n .filter( ':visible' )\n .focus()\n\n // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n .trigger( 'focusin' );\n }\n catch ( e ) {\n\n // Ignore IE throwing errors when focusing hidden elements\n }\n }\n },\n\n findLastActive: function () {\n var lastActive = this.lastActive;\n return lastActive && $.grep( this.errorList, function ( n ) {\n return n.element.name === lastActive.name;\n } ).length === 1 && lastActive;\n },\n\n elements: function () {\n var validator = this,\n rulesCache = {};\n\n // Select all valid inputs inside the form (no submit or reset buttons)\n return $( this.currentForm )\n .find( 'input, select, textarea, [contenteditable]' )\n .not( ':submit, :reset, :image, :disabled' )\n .not( this.settings.ignore )\n .filter( function () {\n var name = this.name || $( this ).attr( 'name' ); // For contenteditable\n if ( !name && validator.settings.debug && window.console ) {\n console.error( '%o has no name assigned', this );\n }\n\n // Set form expando on contenteditable\n if ( this.hasAttribute( 'contenteditable' ) ) {\n this.form = $( this ).closest( 'form' )[0];\n this.name = name;\n }\n\n // Select only the first element for each name, and only those with rules specified\n if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n return false;\n }\n\n rulesCache[name] = true;\n return true;\n } );\n },\n\n clean: function ( selector ) {\n return $( selector )[0];\n },\n\n errors: function () {\n var errorClass = this.settings.errorClass.split( ' ' ).join( '.' );\n return $( this.settings.errorElement + '.' + errorClass, this.errorContext );\n },\n\n resetInternals: function () {\n this.successList = [];\n this.errorList = [];\n this.errorMap = {};\n this.toShow = $( [] );\n this.toHide = $( [] );\n },\n\n reset: function () {\n this.resetInternals();\n this.currentElements = $( [] );\n },\n\n prepareForm: function () {\n this.reset();\n this.toHide = this.errors().add( this.containers );\n },\n\n prepareElement: function ( element ) {\n this.reset();\n this.toHide = this.errorsFor( element );\n },\n\n elementValue: function ( element ) {\n var $element = $( element ),\n type = element.type,\n val, idx;\n\n if ( type === 'radio' || type === 'checkbox' ) {\n return this.findByName( element.name ).filter( ':checked' ).val();\n }\n else if ( type === 'number' && typeof element.validity !== 'undefined' ) {\n return element.validity.badInput ? 'NaN' : $element.val();\n }\n\n if ( element.hasAttribute( 'contenteditable' ) ) {\n val = $element.text();\n }\n else {\n val = $element.val();\n }\n\n if ( type === 'file' ) {\n\n // Modern browser (chrome & safari)\n if ( val.substr( 0, 12 ) === 'C:\\\\fakepath\\\\' ) {\n return val.substr( 12 );\n }\n\n // Legacy browsers\n // Unix-based path\n idx = val.lastIndexOf( '/' );\n if ( idx >= 0 ) {\n return val.substr( idx + 1 );\n }\n\n // Windows-based path\n idx = val.lastIndexOf( '\\\\' );\n if ( idx >= 0 ) {\n return val.substr( idx + 1 );\n }\n\n // Just the file name\n return val;\n }\n\n if ( typeof val === 'string' ) {\n return val.replace( /\\r/g, '' );\n }\n return val;\n },\n\n check: function ( element ) {\n element = this.validationTargetFor( this.clean( element ) );\n\n var rules = $( element ).rules(),\n rulesCount = $.map( rules, function ( n, i ) {\n return i;\n } ).length,\n dependencyMismatch = false,\n val = this.elementValue( element ),\n result, method, rule, normalizer;\n\n // Prioritize the local normalizer defined for this element over the global one\n // if the former exists, otherwise user the global one in case it exists.\n if ( typeof rules.normalizer === 'function' ) {\n normalizer = rules.normalizer;\n }\n else if ( typeof this.settings.normalizer === 'function' ) {\n normalizer = this.settings.normalizer;\n }\n\n // If normalizer is defined, then call it to retreive the changed value instead\n // of using the real one.\n // Note that `this` in the normalizer is `element`.\n if ( normalizer ) {\n val = normalizer.call( element, val );\n\n if ( typeof val !== 'string' ) {\n throw new TypeError( 'The normalizer should return a string value.' );\n }\n\n // Delete the normalizer from rules to avoid treating it as a pre-defined method.\n delete rules.normalizer;\n }\n\n for ( method in rules ) {\n rule = {method: method, parameters: rules[method]};\n try {\n result = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n // If a method indicates that the field is optional and therefore valid,\n // don't mark it as valid when there are no other rules\n if ( result === 'dependency-mismatch' && rulesCount === 1 ) {\n dependencyMismatch = true;\n continue;\n }\n dependencyMismatch = false;\n\n if ( result === 'pending' ) {\n this.toHide = this.toHide.not( this.errorsFor( element ) );\n return;\n }\n\n if ( !result ) {\n this.formatAndAdd( element, rule );\n return false;\n }\n }\n catch ( e ) {\n if ( this.settings.debug && window.console ) {\n console.log( 'Exception occurred when checking element ' +\n element.id +\n ', check the \\'' +\n rule.method +\n '\\' method.', e );\n }\n if ( e instanceof TypeError ) {\n e.message +=\n '. Exception occurred when checking element ' +\n element.id +\n ', check the \\'' +\n rule.method +\n '\\' method.';\n }\n\n throw e;\n }\n }\n if ( dependencyMismatch ) {\n return;\n }\n if ( this.objectLength( rules ) ) {\n this.successList.push( element );\n }\n return true;\n },\n\n // Return the custom message for the given element and validation method\n // specified in the element's HTML5 data attribute\n // return the generic message if present and no method specific message is present\n customDataMessage: function ( element, method ) {\n return $( element ).data( 'msg' + method.charAt( 0 ).toUpperCase() +\n method.substring( 1 ).toLowerCase() ) || $( element ).data( 'msg' );\n },\n\n // Return the custom message for the given element name and validation method\n customMessage: function ( name, method ) {\n var m = this.settings.messages[name];\n return m && (m.constructor === String ? m : m[method]);\n },\n\n // Return the first defined argument, allowing empty strings\n findDefined: function () {\n for ( var i = 0; i < arguments.length; i++ ) {\n if ( arguments[i] !== undefined ) {\n return arguments[i];\n }\n }\n return undefined;\n },\n\n // The second parameter 'rule' used to be a string, and extended to an object literal\n // of the following form:\n // rule = {\n // method: \"method name\",\n // parameters: \"the given method parameters\"\n // }\n //\n // The old behavior still supported, kept to maintain backward compatibility with\n // old code, and will be removed in the next major release.\n defaultMessage: function ( element, rule ) {\n if ( typeof rule === 'string' ) {\n rule = {method: rule};\n }\n\n var message = this.findDefined(\n this.customMessage( element.name, rule.method ),\n this.customDataMessage( element, rule.method ),\n\n // 'title' is never undefined, so handle empty string as undefined\n !this.settings.ignoreTitle && element.title || undefined,\n $.validator.messages[rule.method],\n 'Warning: No message defined for ' + element.name + ''\n ),\n theregex = /\\$?\\{(\\d+)\\}/g;\n if ( typeof message === 'function' ) {\n message = message.call( this, rule.parameters, element );\n }\n else if ( theregex.test( message ) ) {\n message = $.validator.format( message.replace( theregex, '{$1}' ), rule.parameters );\n }\n\n return message;\n },\n\n formatAndAdd: function ( element, rule ) {\n var message = this.defaultMessage( element, rule );\n\n this.errorList.push( {\n message: message,\n element: element,\n method: rule.method\n } );\n\n this.errorMap[element.name] = message;\n this.submitted[element.name] = message;\n },\n\n addWrapper: function ( toToggle ) {\n if ( this.settings.wrapper ) {\n toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n }\n return toToggle;\n },\n\n defaultShowErrors: function () {\n var i, elements, error;\n for ( i = 0; this.errorList[i]; i++ ) {\n error = this.errorList[i];\n if ( this.settings.highlight ) {\n this.settings.highlight.call( this,\n error.element,\n this.settings.errorClass,\n this.settings.validClass );\n }\n this.showLabel( error.element, error.message );\n }\n if ( this.errorList.length ) {\n this.toShow = this.toShow.add( this.containers );\n }\n if ( this.settings.success ) {\n for ( i = 0; this.successList[i]; i++ ) {\n this.showLabel( this.successList[i] );\n }\n }\n if ( this.settings.unhighlight ) {\n for ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n this.settings.unhighlight.call( this,\n elements[i],\n this.settings.errorClass,\n this.settings.validClass );\n }\n }\n this.toHide = this.toHide.not( this.toShow );\n this.hideErrors();\n this.addWrapper( this.toShow ).show();\n },\n\n validElements: function () {\n return this.currentElements.not( this.invalidElements() );\n },\n\n invalidElements: function () {\n return $( this.errorList ).map( function () {\n return this.element;\n } );\n },\n\n showLabel: function ( element, message ) {\n var place, group, errorID, v,\n error = this.errorsFor( element ),\n elementID = this.idOrName( element ),\n describedBy = $( element ).attr( 'aria-describedby' );\n\n if ( error.length ) {\n\n // Refresh error/success class\n error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n // Replace message on existing label\n error.html( message );\n }\n else {\n\n // Create error element\n error = $( '<' + this.settings.errorElement + '>' )\n .attr( 'id', elementID + '-error' )\n .addClass( this.settings.errorClass )\n .html( message || '' );\n\n // Maintain reference to the element to be placed into the DOM\n place = error;\n if ( this.settings.wrapper ) {\n\n // Make sure the element is visible, even in IE\n // actually showing the wrapped element is handled elsewhere\n place = error.hide().show().wrap( '<' + this.settings.wrapper + '/>' ).parent();\n }\n if ( this.labelContainer.length ) {\n this.labelContainer.append( place );\n }\n else if ( this.settings.errorPlacement ) {\n this.settings.errorPlacement.call( this, place, $( element ) );\n }\n else {\n place.insertAfter( element );\n }\n\n // Link error back to the element\n if ( error.is( 'label' ) ) {\n\n // If the error is a label, then associate using 'for'\n error.attr( 'for', elementID );\n\n // If the element is not a child of an associated label, then it's necessary\n // to explicitly apply aria-describedby\n }\n else if ( error.parents( 'label[for=\\'' + this.escapeCssMeta( elementID ) + '\\']' ).length === 0 ) {\n errorID = error.attr( 'id' );\n\n // Respect existing non-error aria-describedby\n if ( !describedBy ) {\n describedBy = errorID;\n }\n else if ( !describedBy.match( new RegExp( '\\\\b' + this.escapeCssMeta( errorID ) + '\\\\b' ) ) ) {\n\n // Add to end of list if not already present\n describedBy += ' ' + errorID;\n }\n $( element ).attr( 'aria-describedby', describedBy );\n\n // If this element is grouped, then assign to all elements in the same group\n group = this.groups[element.name];\n if ( group ) {\n v = this;\n $.each( v.groups, function ( name, testgroup ) {\n if ( testgroup === group ) {\n $( '[name=\\'' + v.escapeCssMeta( name ) + '\\']', v.currentForm )\n .attr( 'aria-describedby', error.attr( 'id' ) );\n }\n } );\n }\n }\n }\n if ( !message && this.settings.success ) {\n error.text( '' );\n if ( typeof this.settings.success === 'string' ) {\n error.addClass( this.settings.success );\n }\n else {\n this.settings.success( error, element );\n }\n }\n this.toShow = this.toShow.add( error );\n },\n\n errorsFor: function ( element ) {\n var name = this.escapeCssMeta( this.idOrName( element ) ),\n describer = $( element ).attr( 'aria-describedby' ),\n selector = 'label[for=\\'' + name + '\\'], label[for=\\'' + name + '\\'] *';\n\n // 'aria-describedby' should directly reference the error element\n if ( describer ) {\n selector = selector + ', #' + this.escapeCssMeta( describer )\n .replace( /\\s+/g, ', #' );\n }\n\n return this\n .errors()\n .filter( selector );\n },\n\n // See https://api.jquery.com/category/selectors/, for CSS\n // meta-characters that should be escaped in order to be used with JQuery\n // as a literal part of a name/id or any selector.\n escapeCssMeta: function ( string ) {\n return string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, '\\\\$1' );\n },\n\n idOrName: function ( element ) {\n return this.groups[element.name] ||\n (this.checkable( element ) ? element.name : element.id || element.name);\n },\n\n validationTargetFor: function ( element ) {\n\n // If radio/checkbox, validate first element in group instead\n if ( this.checkable( element ) ) {\n element = this.findByName( element.name );\n }\n\n // Always apply ignore filter\n return $( element ).not( this.settings.ignore )[0];\n },\n\n checkable: function ( element ) {\n return (/radio|checkbox/i).test( element.type );\n },\n\n findByName: function ( name ) {\n return $( this.currentForm ).find( '[name=\\'' + this.escapeCssMeta( name ) + '\\']' );\n },\n\n getLength: function ( value, element ) {\n switch ( element.nodeName.toLowerCase() ) {\n case 'select':\n return $( 'option:selected', element ).length;\n case 'input':\n if ( this.checkable( element ) ) {\n return this.findByName( element.name ).filter( ':checked' ).length;\n }\n }\n return value.length;\n },\n\n depend: function ( param, element ) {\n return this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;\n },\n\n dependTypes: {\n 'boolean': function ( param ) {\n return param;\n },\n 'string': function ( param, element ) {\n return !!$( param, element.form ).length;\n },\n 'function': function ( param, element ) {\n return param( element );\n }\n },\n\n optional: function ( element ) {\n var val = this.elementValue( element );\n return !$.validator.methods.required.call( this, val, element ) && 'dependency-mismatch';\n },\n\n startRequest: function ( element ) {\n if ( !this.pending[element.name] ) {\n this.pendingRequest++;\n $( element ).addClass( this.settings.pendingClass );\n this.pending[element.name] = true;\n }\n },\n\n stopRequest: function ( element, valid ) {\n this.pendingRequest--;\n\n // Sometimes synchronization fails, make sure pendingRequest is never < 0\n if ( this.pendingRequest < 0 ) {\n this.pendingRequest = 0;\n }\n delete this.pending[element.name];\n $( element ).removeClass( this.settings.pendingClass );\n if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n $( this.currentForm ).submit();\n\n // Remove the hidden input that was used as a replacement for the\n // missing submit button. The hidden input is added by `handle()`\n // to ensure that the value of the used submit button is passed on\n // for scripted submits triggered by this method\n if ( this.submitButton ) {\n $( 'input:hidden[name=\\'' + this.submitButton.name + '\\']', this.currentForm ).remove();\n }\n\n this.formSubmitted = false;\n }\n else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n $( this.currentForm ).triggerHandler( 'invalid-form', [this] );\n this.formSubmitted = false;\n }\n },\n\n previousValue: function ( element, method ) {\n method = typeof method === 'string' && method || 'remote';\n\n return $.data( element, 'previousValue' ) || $.data( element, 'previousValue', {\n old: null,\n valid: true,\n message: this.defaultMessage( element, {method: method} )\n } );\n },\n\n // Cleans up all forms and elements, removes validator-specific events\n destroy: function () {\n this.resetForm();\n\n $( this.currentForm )\n .off( '.validate' )\n .removeData( 'validator' )\n .find( '.validate-equalTo-blur' )\n .off( '.validate-equalTo' )\n .removeClass( 'validate-equalTo-blur' );\n }\n\n },\n\n classRuleSettings: {\n required: {required: true},\n email: {email: true},\n url: {url: true},\n date: {date: true},\n dateISO: {dateISO: true},\n number: {number: true},\n digits: {digits: true},\n creditcard: {creditcard: true}\n },\n\n addClassRules: function ( className, rules ) {\n if ( className.constructor === String ) {\n this.classRuleSettings[className] = rules;\n }\n else {\n $.extend( this.classRuleSettings, className );\n }\n },\n\n classRules: function ( element ) {\n var rules = {},\n classes = $( element ).attr( 'class' );\n\n if ( classes ) {\n $.each( classes.split( ' ' ), function () {\n if ( this in $.validator.classRuleSettings ) {\n $.extend( rules, $.validator.classRuleSettings[this] );\n }\n } );\n }\n return rules;\n },\n\n normalizeAttributeRule: function ( rules, type, method, value ) {\n\n // Convert the value to a number for number inputs, and for text for backwards compability\n // allows type=\"date\" and others to be compared as strings\n if ( /min|max|step/.test( method ) && (type === null || /number|range|text/.test( type )) ) {\n value = Number( value );\n\n // Support Opera Mini, which returns NaN for undefined minlength\n if ( isNaN( value ) ) {\n value = undefined;\n }\n }\n\n if ( value || value === 0 ) {\n rules[method] = value;\n }\n else if ( type === method && type !== 'range' ) {\n\n // Exception: the jquery validate 'range' method\n // does not test for the html5 'range' type\n rules[method] = true;\n }\n },\n\n attributeRules: function ( element ) {\n var rules = {},\n $element = $( element ),\n type = element.getAttribute( 'type' ),\n method, value;\n\n for ( method in $.validator.methods ) {\n\n // Support for in both html5 and older browsers\n if ( method === 'required' ) {\n value = element.getAttribute( method );\n\n // Some browsers return an empty string for the required attribute\n // and non-HTML5 browsers might have required=\"\" markup\n if ( value === '' ) {\n value = true;\n }\n\n // Force non-HTML5 browsers to return bool\n value = !!value;\n }\n else {\n value = $element.attr( method );\n }\n\n this.normalizeAttributeRule( rules, type, method, value );\n }\n\n // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n delete rules.maxlength;\n }\n\n return rules;\n },\n\n dataRules: function ( element ) {\n var rules = {},\n $element = $( element ),\n type = element.getAttribute( 'type' ),\n method, value;\n\n for ( method in $.validator.methods ) {\n value =\n $element.data( 'rule' + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n this.normalizeAttributeRule( rules, type, method, value );\n }\n return rules;\n },\n\n staticRules: function ( element ) {\n var rules = {},\n validator = $.data( element.form, 'validator' );\n\n if ( validator.settings.rules ) {\n rules = $.validator.normalizeRule( validator.settings.rules[element.name] ) || {};\n }\n return rules;\n },\n\n normalizeRules: function ( rules, element ) {\n\n // Handle dependency check\n $.each( rules, function ( prop, val ) {\n\n // Ignore rule when param is explicitly false, eg. required:false\n if ( val === false ) {\n delete rules[prop];\n return;\n }\n if ( val.param || val.depends ) {\n var keepRule = true;\n switch ( typeof val.depends ) {\n case 'string':\n keepRule = !!$( val.depends, element.form ).length;\n break;\n case 'function':\n keepRule = val.depends.call( element, element );\n break;\n }\n if ( keepRule ) {\n rules[prop] = val.param !== undefined ? val.param : true;\n }\n else {\n $.data( element.form, 'validator' ).resetElements( $( element ) );\n delete rules[prop];\n }\n }\n } );\n\n // Evaluate parameters\n $.each( rules, function ( rule, parameter ) {\n rules[rule] = $.isFunction( parameter ) && rule !== 'normalizer' ? parameter( element ) : parameter;\n } );\n\n // Clean number parameters\n $.each( ['minlength', 'maxlength'], function () {\n if ( rules[this] ) {\n rules[this] = Number( rules[this] );\n }\n } );\n $.each( ['rangelength', 'range'], function () {\n var parts;\n if ( rules[this] ) {\n if ( $.isArray( rules[this] ) ) {\n rules[this] = [Number( rules[this][0] ), Number( rules[this][1] )];\n }\n else if ( typeof rules[this] === 'string' ) {\n parts = rules[this].replace( /[\\[\\]]/g, '' ).split( /[\\s,]+/ );\n rules[this] = [Number( parts[0] ), Number( parts[1] )];\n }\n }\n } );\n\n if ( $.validator.autoCreateRanges ) {\n\n // Auto-create ranges\n if ( rules.min != null && rules.max != null ) {\n rules.range = [rules.min, rules.max];\n delete rules.min;\n delete rules.max;\n }\n if ( rules.minlength != null && rules.maxlength != null ) {\n rules.rangelength = [rules.minlength, rules.maxlength];\n delete rules.minlength;\n delete rules.maxlength;\n }\n }\n\n return rules;\n },\n\n // Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n normalizeRule: function ( data ) {\n if ( typeof data === 'string' ) {\n var transformed = {};\n $.each( data.split( /\\s/ ), function () {\n transformed[this] = true;\n } );\n data = transformed;\n }\n return data;\n },\n\n // https://jqueryvalidation.org/jQuery.validator.addMethod/\n addMethod: function ( name, method, message ) {\n $.validator.methods[name] = method;\n $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n if ( method.length < 3 ) {\n $.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n }\n },\n\n // https://jqueryvalidation.org/jQuery.validator.methods/\n methods: {\n\n // https://jqueryvalidation.org/required-method/\n required: function ( value, element, param ) {\n\n // Check if dependency is met\n if ( !this.depend( param, element ) ) {\n return 'dependency-mismatch';\n }\n if ( element.nodeName.toLowerCase() === 'select' ) {\n\n // Could be an array for select-multiple or a string, both are fine this way\n var val = $( element ).val();\n return val && val.length > 0;\n }\n if ( this.checkable( element ) ) {\n return this.getLength( value, element ) > 0;\n }\n return value.length > 0;\n },\n\n // https://jqueryvalidation.org/email-method/\n email: function ( value, element ) {\n\n // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n // Retrieved 2014-01-14\n // If you have a problem with this implementation, report a bug against the above spec\n // Or use custom methods to implement your own email validation\n return this.optional( element ) ||\n /^[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(\n value );\n },\n\n // https://jqueryvalidation.org/url-method/\n url: function ( value, element ) {\n\n // Copyright (c) 2010-2013 Diego Perini, MIT licensed\n // https://gist.github.com/dperini/729294\n // see also https://mathiasbynens.be/demo/url-regex\n // modified to allow protocol-relative URLs\n return this.optional( element ) ||\n /^(?:(?:(?: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(\n value );\n },\n\n // https://jqueryvalidation.org/date-method/\n date: function ( value, element ) {\n return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n },\n\n // https://jqueryvalidation.org/dateISO-method/\n dateISO: function ( value, element ) {\n return this.optional( element ) ||\n /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n },\n\n // https://jqueryvalidation.org/number-method/\n number: function ( value, element ) {\n return this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n },\n\n // https://jqueryvalidation.org/digits-method/\n digits: function ( value, element ) {\n return this.optional( element ) || /^\\d+$/.test( value );\n },\n\n // https://jqueryvalidation.org/minlength-method/\n minlength: function ( value, element, param ) {\n var length = $.isArray( value ) ? value.length : this.getLength( value, element );\n return this.optional( element ) || length >= param;\n },\n\n // https://jqueryvalidation.org/maxlength-method/\n maxlength: function ( value, element, param ) {\n var length = $.isArray( value ) ? value.length : this.getLength( value, element );\n return this.optional( element ) || length <= param;\n },\n\n // https://jqueryvalidation.org/rangelength-method/\n rangelength: function ( value, element, param ) {\n var length = $.isArray( value ) ? value.length : this.getLength( value, element );\n return this.optional( element ) || (length >= param[0] && length <= param[1]);\n },\n\n // https://jqueryvalidation.org/min-method/\n min: function ( value, element, param ) {\n return this.optional( element ) || value >= param;\n },\n\n // https://jqueryvalidation.org/max-method/\n max: function ( value, element, param ) {\n return this.optional( element ) || value <= param;\n },\n\n // https://jqueryvalidation.org/range-method/\n range: function ( value, element, param ) {\n return this.optional( element ) || (value >= param[0] && value <= param[1]);\n },\n\n // https://jqueryvalidation.org/step-method/\n step: function ( value, element, param ) {\n var type = $( element ).attr( 'type' ),\n errorMessage = 'Step attribute on input type ' + type + ' is not supported.',\n supportedTypes = ['text', 'number', 'range'],\n re = new RegExp( '\\\\b' + type + '\\\\b' ),\n notSupported = type && !re.test( supportedTypes.join() ),\n decimalPlaces = function ( num ) {\n var match = ('' + num).match( /(?:\\.(\\d+))?$/ );\n if ( !match ) {\n return 0;\n }\n\n // Number of digits right of decimal point.\n return match[1] ? match[1].length : 0;\n },\n toInt = function ( num ) {\n return Math.round( num * Math.pow( 10, decimals ) );\n },\n valid = true,\n decimals;\n\n // Works only for text, number and range input types\n // TODO find a way to support input types date, datetime, datetime-local, month, time and week\n if ( notSupported ) {\n throw new Error( errorMessage );\n }\n\n decimals = decimalPlaces( param );\n\n // Value can't have too many decimals\n if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n valid = false;\n }\n\n return this.optional( element ) || valid;\n },\n\n // https://jqueryvalidation.org/equalTo-method/\n equalTo: function ( value, element, param ) {\n\n // Bind to the blur event of the target in order to revalidate whenever the target field is updated\n var target = $( param );\n if ( this.settings.onfocusout && target.not( '.validate-equalTo-blur' ).length ) {\n target.addClass( 'validate-equalTo-blur' ).on( 'blur.validate-equalTo', function () {\n $( element ).valid();\n } );\n }\n return value === target.val();\n },\n\n // https://jqueryvalidation.org/remote-method/\n remote: function ( value, element, param, method ) {\n if ( this.optional( element ) ) {\n return 'dependency-mismatch';\n }\n\n method = typeof method === 'string' && method || 'remote';\n\n var previous = this.previousValue( element, method ),\n validator, data, optionDataString;\n\n if ( !this.settings.messages[element.name] ) {\n this.settings.messages[element.name] = {};\n }\n previous.originalMessage = previous.originalMessage || this.settings.messages[element.name][method];\n this.settings.messages[element.name][method] = previous.message;\n\n param = typeof param === 'string' && {url: param} || param;\n optionDataString = $.param( $.extend( {data: value}, param.data ) );\n if ( previous.old === optionDataString ) {\n return previous.valid;\n }\n\n previous.old = optionDataString;\n validator = this;\n this.startRequest( element );\n data = {};\n data[element.name] = value;\n $.ajax( $.extend( true, {\n mode: 'abort',\n port: 'validate' + element.name,\n dataType: 'json',\n data: data,\n context: validator.currentForm,\n success: function ( response ) {\n var valid = response === true || response === 'true',\n errors, message, submitted;\n\n validator.settings.messages[element.name][method] = previous.originalMessage;\n if ( valid ) {\n submitted = validator.formSubmitted;\n validator.resetInternals();\n validator.toHide = validator.errorsFor( element );\n validator.formSubmitted = submitted;\n validator.successList.push( element );\n validator.invalid[element.name] = false;\n validator.showErrors();\n }\n else {\n errors = {};\n message =\n response || validator.defaultMessage( element, {method: method, parameters: value} );\n errors[element.name] = previous.message = message;\n validator.invalid[element.name] = true;\n validator.showErrors( errors );\n }\n previous.valid = valid;\n validator.stopRequest( element, valid );\n }\n }, param ) );\n return 'pending';\n }\n }\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\n var pendingRequests = {},\n ajax;\n\n// Use a prefilter if available (1.5+)\n if ( $.ajaxPrefilter ) {\n $.ajaxPrefilter( function ( settings, _, xhr ) {\n var port = settings.port;\n if ( settings.mode === 'abort' ) {\n if ( pendingRequests[port] ) {\n pendingRequests[port].abort();\n }\n pendingRequests[port] = xhr;\n }\n } );\n }\n else {\n\n // Proxy ajax\n ajax = $.ajax;\n $.ajax = function ( settings ) {\n var mode = ('mode' in settings ? settings : $.ajaxSettings).mode,\n port = ('port' in settings ? settings : $.ajaxSettings).port;\n if ( mode === 'abort' ) {\n if ( pendingRequests[port] ) {\n pendingRequests[port].abort();\n }\n pendingRequests[port] = ajax.apply( this, arguments );\n return pendingRequests[port];\n }\n return ajax.apply( this, arguments );\n };\n }\n return $;\n} ));\n"],"names":["factory","$","extend","fn","validate","options","this","length","validator","data","attr","settings","onsubmit","on","event","submitButton","currentTarget","hasClass","cancelSubmit","undefined","handle","hidden","result","submitHandler","formSubmitted","name","val","appendTo","currentForm","call","remove","debug","preventDefault","form","pendingRequest","focusInvalid","window","console","warn","valid","errorList","is","each","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","hasAttribute","closest","normalizeRule","messages","split","index","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","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","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","labelContainer","errorContext","containers","add","valueCache","pending","reset","delegate","eventType","key","value","invalidHandler","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","removeAttr","resetElements","objectLength","obj","count","not","text","addWrapper","hide","size","findLastActive","filter","focus","trigger","e","rulesCache","find","error","selector","join","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","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","_typeof","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","re","decimalPlaces","num","toInt","Math","round","pow","Error","target","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","define","module","exports","require","jQuery"],"sourceRoot":""}