{"version":3,"file":"jwsdw-validate.js","sources":["../../../../../../../webfrontend/assets/vendor/jquery/jqueryValidate/jquery.validate.js","../../../../../../../webfrontend/assets/vendor/jquery/jqueryValidate/localization/messages_it.js","../../../../../../../temp/ngAnnotate/assets/modules/localization/jQueryValidate/messages_it.js","../../../../../../../temp/ngAnnotate/assets/jwsdw-validate.js"],"sourcesContent":["/*!\r\n * jQuery Validation Plugin v1.19.3\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2021 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\r\n\r\n\t// https://jqueryvalidation.org/validate/\r\n\tvalidate: function( options ) {\r\n\r\n\t\t// If nothing is selected, return nothing; can't chain anyway\r\n\t\tif ( !this.length ) {\r\n\t\t\tif ( options && options.debug && window.console ) {\r\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if a validator for this form was already created\r\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\r\n\t\t// Add novalidate tag if HTML5.\r\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\r\n\r\n\t\tvalidator = new $.validator( options, this[ 0 ] );\r\n\t\t$.data( this[ 0 ], \"validator\", validator );\r\n\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\r\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\r\n\r\n\t\t\t\t// Track the used submit button to properly handle scripted\r\n\t\t\t\t// submits later.\r\n\t\t\t\tvalidator.submitButton = event.currentTarget;\r\n\r\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\r\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\r\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// Validate the form on submit\r\n\t\t\tthis.on( \"submit.validate\", function( event ) {\r\n\t\t\t\tif ( validator.settings.debug ) {\r\n\r\n\t\t\t\t\t// Prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tvar hidden, result;\r\n\r\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t// The hidden input is inserted in two cases:\r\n\t\t\t\t\t// - A user defined a `submitHandler`\r\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\r\n\t\t\t\t\t// was called to submit the form in case it's valid\r\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\r\n\t\t\t\t\t\thidden = $( \"\" )\r\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\r\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\r\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\r\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\r\n\t\t\t\t\t\tif ( hidden ) {\r\n\r\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( result !== undefined ) {\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn validator;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/valid/\r\n\tvalid: function() {\r\n\t\tvar valid, validator, errorList;\r\n\r\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\r\n\t\t\tvalid = this.validate().form();\r\n\t\t} else {\r\n\t\t\terrorList = [];\r\n\t\t\tvalid = true;\r\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvalid = validator.element( this ) && valid;\r\n\t\t\t\tif ( !valid ) {\r\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tvalidator.errorList = errorList;\r\n\t\t}\r\n\t\treturn valid;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/rules/\r\n\trules: function( command, argument ) {\r\n\t\tvar element = this[ 0 ],\r\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\r\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\r\n\r\n\t\t// If nothing is selected, return empty object; can't chain anyway\r\n\t\tif ( element == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !element.form && isContentEditable ) {\r\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\r\n\t\t\telement.name = this.attr( \"name\" );\r\n\t\t}\r\n\r\n\t\tif ( element.form == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( command ) {\r\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\r\n\t\t\tstaticRules = settings.rules;\r\n\t\t\texistingRules = $.validator.staticRules( element );\r\n\t\t\tswitch ( command ) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\r\n\r\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\r\n\t\t\t\tdelete existingRules.messages;\r\n\t\t\t\tstaticRules[ element.name ] = existingRules;\r\n\t\t\t\tif ( argument.messages ) {\r\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif ( !argument ) {\r\n\t\t\t\t\tdelete staticRules[ element.name ];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tfiltered = {};\r\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\r\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\r\n\t\t\t\t\tdelete existingRules[ method ];\r\n\t\t\t\t} );\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.classRules( element ),\r\n\t\t\t$.validator.attributeRules( element ),\r\n\t\t\t$.validator.dataRules( element ),\r\n\t\t\t$.validator.staticRules( element )\r\n\t\t), element );\r\n\r\n\t\t// Make sure required is at front\r\n\t\tif ( data.required ) {\r\n\t\t\tparam = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend( { required: param }, data );\r\n\t\t}\r\n\r\n\t\t// Make sure remote is at back\r\n\t\tif ( data.remote ) {\r\n\t\t\tparam = data.remote;\r\n\t\t\tdelete data.remote;\r\n\t\t\tdata = $.extend( data, { remote: param } );\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n} );\r\n\r\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\r\nvar trim = function( str ) {\r\n\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\r\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\r\n};\r\n\r\n// Custom selectors\r\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\r\n\r\n\t// https://jqueryvalidation.org/blank-selector/\r\n\tblank: function( a ) {\r\n\t\treturn !trim( \"\" + $( a ).val() );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/filled-selector/\r\n\tfilled: function( a ) {\r\n\t\tvar val = $( a ).val();\r\n\t\treturn val !== null && !!trim( \"\" + val );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/unchecked-selector/\r\n\tunchecked: function( a ) {\r\n\t\treturn !$( a ).prop( \"checked\" );\r\n\t}\r\n} );\r\n\r\n// Constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n// https://jqueryvalidation.org/jQuery.validator.format/\r\n$.validator.format = function( source, params ) {\r\n\tif ( arguments.length === 1 ) {\r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray( arguments );\r\n\t\t\targs.unshift( source );\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\t}\r\n\tif ( params === undefined ) {\r\n\t\treturn source;\r\n\t}\r\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\r\n\t\tparams = $.makeArray( arguments ).slice( 1 );\r\n\t}\r\n\tif ( params.constructor !== Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each( params, function( i, n ) {\r\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\r\n\t\t\treturn n;\r\n\t\t} );\r\n\t} );\r\n\treturn source;\r\n};\r\n\r\n$.extend( $.validator, {\r\n\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tpendingClass: \"pending\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusCleanup: false,\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: \":hidden\",\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function( element ) {\r\n\t\t\tthis.lastActive = element;\r\n\r\n\t\t\t// Hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup ) {\r\n\t\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function( element ) {\r\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function( element, event ) {\r\n\r\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\r\n\t\t\t// Shift => 16\r\n\t\t\t// Ctrl => 17\r\n\t\t\t// Alt => 18\r\n\t\t\t// Caps lock => 20\r\n\t\t\t// End => 35\r\n\t\t\t// Home => 36\r\n\t\t\t// Left arrow => 37\r\n\t\t\t// Up arrow => 38\r\n\t\t\t// Right arrow => 39\r\n\t\t\t// Down arrow => 40\r\n\t\t\t// Insert => 45\r\n\t\t\t// Num lock => 144\r\n\t\t\t// AltGr key => 225\r\n\t\t\tvar excludedKeys = [\r\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\r\n\t\t\t\t38, 39, 40, 45, 144, 225\r\n\t\t\t];\r\n\r\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function( element ) {\r\n\r\n\t\t\t// Click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted ) {\r\n\t\t\t\tthis.element( element );\r\n\r\n\t\t\t// Or option elements, check parent select in that case\r\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\r\n\t\t\t\tthis.element( element.parentNode );\r\n\t\t\t}\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\r\n\tsetDefaults: function( settings ) {\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date (ISO).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\r\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\r\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\r\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\r\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\r\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\r\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\r\n\t},\r\n\r\n\tautoCreateRanges: false,\r\n\r\n\tprototype: {\r\n\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\r\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tvar currentForm = this.currentForm,\r\n\t\t\t\tgroups = ( this.groups = {} ),\r\n\t\t\t\trules;\r\n\t\t\t$.each( this.settings.groups, function( key, value ) {\r\n\t\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\t\tvalue = value.split( /\\s/ );\r\n\t\t\t\t}\r\n\t\t\t\t$.each( value, function( index, name ) {\r\n\t\t\t\t\tgroups[ name ] = key;\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t\trules = this.settings.rules;\r\n\t\t\t$.each( rules, function( key, value ) {\r\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\r\n\t\t\t} );\r\n\r\n\t\t\tfunction delegate( event ) {\r\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( !this.form && isContentEditable ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\r\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\r\n\t\t\t\tif ( currentForm !== this.form ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\r\n\t\t\t\t\tsettings = validator.settings;\r\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\r\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\r\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\r\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\r\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\r\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\r\n\r\n\t\t\t\t// Support: Chrome, oldIE\r\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\r\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\r\n\r\n\t\t\tif ( this.settings.invalidHandler ) {\r\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.form/\r\n\t\tform: function() {\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend( this.submitted, this.errorMap );\r\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\r\n\t\t\tif ( !this.valid() ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\r\n\t\t\t\tthis.check( elements[ i ] );\r\n\t\t\t}\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.element/\r\n\t\telement: function( element ) {\r\n\t\t\tvar cleanElement = this.clean( element ),\r\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\r\n\t\t\t\tv = this,\r\n\t\t\t\tresult = true,\r\n\t\t\t\trs, group;\r\n\r\n\t\t\tif ( checkElement === undefined ) {\r\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\r\n\t\t\t} else {\r\n\t\t\t\tthis.prepareElement( checkElement );\r\n\t\t\t\tthis.currentElements = $( checkElement );\r\n\r\n\t\t\t\t// If this element is grouped, then validate all group elements already\r\n\t\t\t\t// containing a value\r\n\t\t\t\tgroup = this.groups[ checkElement.name ];\r\n\t\t\t\tif ( group ) {\r\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\r\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\r\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\r\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\r\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\trs = this.check( checkElement ) !== false;\r\n\t\t\t\tresult = result && rs;\r\n\t\t\t\tif ( rs ) {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !this.numberOfInvalids() ) {\r\n\r\n\t\t\t\t\t// Hide error containers on last error\r\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showErrors();\r\n\r\n\t\t\t\t// Add aria-invalid status for screen readers\r\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\r\n\t\tshowErrors: function( errors ) {\r\n\t\t\tif ( errors ) {\r\n\t\t\t\tvar validator = this;\r\n\r\n\t\t\t\t// Add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmessage: message,\r\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\r\n\t\t\t\t\t};\r\n\t\t\t\t} );\r\n\r\n\t\t\t\t// Remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\r\n\t\t\t\t\treturn !( element.name in errors );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.showErrors ) {\r\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\r\n\t\t\t} else {\r\n\t\t\t\tthis.defaultShowErrors();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\r\n\t\tresetForm: function() {\r\n\t\t\tif ( $.fn.resetForm ) {\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\t}\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tvar elements = this.elements()\r\n\t\t\t\t.removeData( \"previousValue\" )\r\n\t\t\t\t.removeAttr( \"aria-invalid\" );\r\n\r\n\t\t\tthis.resetElements( elements );\r\n\t\t},\r\n\r\n\t\tresetElements: function( elements ) {\r\n\t\t\tvar i;\r\n\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\r\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\r\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\telements\r\n\t\t\t\t\t.removeClass( this.settings.errorClass )\r\n\t\t\t\t\t.removeClass( this.settings.validClass );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\treturn this.objectLength( this.invalid );\r\n\t\t},\r\n\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\t/* jshint unused: false */\r\n\t\t\tvar count = 0,\r\n\t\t\t\ti;\r\n\t\t\tfor ( i in obj ) {\r\n\r\n\t\t\t\t// This check allows counting elements with empty error\r\n\t\t\t\t// message as invalid elements\r\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\thideErrors: function() {\r\n\t\t\tthis.hideThese( this.toHide );\r\n\t\t},\r\n\r\n\t\thideThese: function( errors ) {\r\n\t\t\terrors.not( this.containers ).text( \"\" );\r\n\t\t\tthis.addWrapper( errors ).hide();\r\n\t\t},\r\n\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() === 0;\r\n\t\t},\r\n\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif ( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\r\n\t\t\t\t\t.filter( \":visible\" )\r\n\t\t\t\t\t.trigger( \"focus\" )\r\n\r\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t.trigger( \"focusin\" );\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\r\n\t\t\t\treturn n.element.name === lastActive.name;\r\n\t\t\t} ).length === 1 && lastActive;\r\n\t\t},\r\n\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\r\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\treturn $( this.currentForm )\r\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\r\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter( function() {\r\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\r\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\r\n\r\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\r\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( isContentEditable ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = name;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ignore elements that belong to other/nested forms\r\n\t\t\t\tif ( this.form !== validator.currentForm ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trulesCache[ name ] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[ 0 ];\r\n\t\t},\r\n\r\n\t\terrors: function() {\r\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\r\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\r\n\t\t},\r\n\r\n\t\tresetInternals: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $( [] );\r\n\t\t\tthis.toHide = $( [] );\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.resetInternals();\r\n\t\t\tthis.currentElements = $( [] );\r\n\t\t},\r\n\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor( element );\r\n\t\t},\r\n\r\n\t\telementValue: function( element ) {\r\n\t\t\tvar $element = $( element ),\r\n\t\t\t\ttype = element.type,\r\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\r\n\t\t\t\tval, idx;\r\n\r\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\r\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\r\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\r\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( isContentEditable ) {\r\n\t\t\t\tval = $element.text();\r\n\t\t\t} else {\r\n\t\t\t\tval = $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( type === \"file\" ) {\r\n\r\n\t\t\t\t// Modern browser (chrome & safari)\r\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\r\n\t\t\t\t\treturn val.substr( 12 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Legacy browsers\r\n\t\t\t\t// Unix-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Windows-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Just the file name\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\r\n\t\t\tif ( typeof val === \"string\" ) {\r\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\r\n\r\n\t\t\tvar rules = $( element ).rules(),\r\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t} ).length,\r\n\t\t\t\tdependencyMismatch = false,\r\n\t\t\t\tval = this.elementValue( element ),\r\n\t\t\t\tresult, method, rule, normalizer;\r\n\r\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\r\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\r\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = rules.normalizer;\r\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = this.settings.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\r\n\t\t\t// of using the real one.\r\n\t\t\t// Note that `this` in the normalizer is `element`.\r\n\t\t\tif ( normalizer ) {\r\n\t\t\t\tval = normalizer.call( element, val );\r\n\r\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\r\n\t\t\t\tdelete rules.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( method in rules ) {\r\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\r\n\r\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\r\n\t\t\t\t\tif ( result === \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( e instanceof TypeError ) {\r\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( dependencyMismatch ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( this.objectLength( rules ) ) {\r\n\t\t\t\tthis.successList.push( element );\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element and validation method\r\n\t\t// specified in the element's HTML5 data attribute\r\n\t\t// return the generic message if present and no method specific message is present\r\n\t\tcustomDataMessage: function( element, method ) {\r\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\r\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[ name ];\r\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\r\n\t\t},\r\n\r\n\t\t// Return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\r\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\r\n\t\t\t\t\treturn arguments[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\r\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\r\n\t\t// of the following form:\r\n\t\t// rule = {\r\n\t\t// method: \"method name\",\r\n\t\t// parameters: \"the given method parameters\"\r\n\t\t// }\r\n\t\t//\r\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\r\n\t\t// old code, and will be removed in the next major release.\r\n\t\tdefaultMessage: function( element, rule ) {\r\n\t\t\tif ( typeof rule === \"string\" ) {\r\n\t\t\t\trule = { method: rule };\r\n\t\t\t}\r\n\r\n\t\t\tvar message = this.findDefined(\r\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\r\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\r\n\r\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\r\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t\t$.validator.messages[ rule.method ],\r\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\r\n\t\t\t\t),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message === \"function\" ) {\r\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\r\n\t\t\t} else if ( theregex.test( message ) ) {\r\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\r\n\t\t\t}\r\n\r\n\t\t\treturn message;\r\n\t\t},\r\n\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule );\r\n\r\n\t\t\tthis.errorList.push( {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element,\r\n\t\t\t\tmethod: rule.method\r\n\t\t\t} );\r\n\r\n\t\t\tthis.errorMap[ element.name ] = message;\r\n\t\t\tthis.submitted[ element.name ] = message;\r\n\t\t},\r\n\r\n\t\taddWrapper: function( toToggle ) {\r\n\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\t}\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tvar i, elements, error;\r\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\r\n\t\t\t\terror = this.errorList[ i ];\r\n\t\t\t\tif ( this.settings.highlight ) {\r\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif ( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.success ) {\r\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not( this.invalidElements() );\r\n\t\t},\r\n\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $( this.errorList ).map( function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tshowLabel: function( element, message ) {\r\n\t\t\tvar place, group, errorID, v,\r\n\t\t\t\terror = this.errorsFor( element ),\r\n\t\t\t\telementID = this.idOrName( element ),\r\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\r\n\r\n\t\t\tif ( error.length ) {\r\n\r\n\t\t\t\t// Refresh error/success class\r\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\r\n\r\n\t\t\t\t// Replace message on existing label\r\n\t\t\t\terror.html( message );\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Create error element\r\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\r\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\r\n\t\t\t\t\t.addClass( this.settings.errorClass )\r\n\t\t\t\t\t.html( message || \"\" );\r\n\r\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\r\n\t\t\t\tplace = error;\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\r\n\t\t\t\t\t// Make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.labelContainer.length ) {\r\n\t\t\t\t\tthis.labelContainer.append( place );\r\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\r\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tplace.insertAfter( element );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Link error back to the element\r\n\t\t\t\tif ( error.is( \"label\" ) ) {\r\n\r\n\t\t\t\t\t// If the error is a label, then associate using 'for'\r\n\t\t\t\t\terror.attr( \"for\", elementID );\r\n\r\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\r\n\t\t\t\t\t// to explicitly apply aria-describedby\r\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\r\n\t\t\t\t\terrorID = error.attr( \"id\" );\r\n\r\n\t\t\t\t\t// Respect existing non-error aria-describedby\r\n\t\t\t\t\tif ( !describedBy ) {\r\n\t\t\t\t\t\tdescribedBy = errorID;\r\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\r\n\r\n\t\t\t\t\t\t// Add to end of list if not already present\r\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\r\n\r\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\r\n\t\t\t\t\tgroup = this.groups[ element.name ];\r\n\t\t\t\t\tif ( group ) {\r\n\t\t\t\t\t\tv = this;\r\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\t\tif ( testgroup === group ) {\r\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\r\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\terror.text( \"\" );\r\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\r\n\t\t\t\t\terror.addClass( this.settings.success );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.settings.success( error, element );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add( error );\r\n\t\t},\r\n\r\n\t\terrorsFor: function( element ) {\r\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\r\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\r\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\r\n\r\n\t\t\t// 'aria-describedby' should directly reference the error element\r\n\t\t\tif ( describer ) {\r\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\r\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\r\n\t\t\t}\r\n\r\n\t\t\treturn this\r\n\t\t\t\t.errors()\r\n\t\t\t\t.filter( selector );\r\n\t\t},\r\n\r\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\r\n\t\t// meta-characters that should be escaped in order to be used with JQuery\r\n\t\t// as a literal part of a name/id or any selector.\r\n\t\tescapeCssMeta: function( string ) {\r\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\r\n\t\t},\r\n\r\n\t\tidOrName: function( element ) {\r\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\r\n\t\t},\r\n\r\n\t\tvalidationTargetFor: function( element ) {\r\n\r\n\t\t\t// If radio/checkbox, validate first element in group instead\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\telement = this.findByName( element.name );\r\n\t\t\t}\r\n\r\n\t\t\t// Always apply ignore filter\r\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\r\n\t\t},\r\n\r\n\t\tfindByName: function( name ) {\r\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\r\n\t\t},\r\n\r\n\t\tgetLength: function( value, element ) {\r\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase \"select\":\r\n\t\t\t\treturn $( \"option:selected\", element ).length;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\r\n\t\tdepend: function( param, element ) {\r\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\r\n\t\t},\r\n\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function( param ) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function( param, element ) {\r\n\t\t\t\treturn !!$( param, element.form ).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function( param, element ) {\r\n\t\t\t\treturn param( element );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\toptional: function( element ) {\r\n\t\t\tvar val = this.elementValue( element );\r\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\r\n\t\t},\r\n\r\n\t\tstartRequest: function( element ) {\r\n\t\t\tif ( !this.pending[ element.name ] ) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\r\n\t\t\t\tthis.pending[ element.name ] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopRequest: function( element, valid ) {\r\n\t\t\tthis.pendingRequest--;\r\n\r\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif ( this.pendingRequest < 0 ) {\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\t}\r\n\t\t\tdelete this.pending[ element.name ];\r\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\r\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$( this.currentForm ).submit();\r\n\r\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\r\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\r\n\t\t\t\t// to ensure that the value of the used submit button is passed on\r\n\t\t\t\t// for scripted submits triggered by this method\r\n\t\t\t\tif ( this.submitButton ) {\r\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpreviousValue: function( element, method ) {\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\t// Cleans up all forms and elements, removes validator-specific events\r\n\t\tdestroy: function() {\r\n\t\t\tthis.resetForm();\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.off( \".validate\" )\r\n\t\t\t\t.removeData( \"validator\" )\r\n\t\t\t\t.find( \".validate-equalTo-blur\" )\r\n\t\t\t\t\t.off( \".validate-equalTo\" )\r\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\r\n\t\t\t\t.find( \".validate-lessThan-blur\" )\r\n\t\t\t\t\t.off( \".validate-lessThan\" )\r\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\r\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\r\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\r\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\r\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\r\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\r\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\r\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\r\n\t\t\t\t\t.off( \".validate-greaterThan\" )\r\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclassRuleSettings: {\r\n\t\trequired: { required: true },\r\n\t\temail: { email: true },\r\n\t\turl: { url: true },\r\n\t\tdate: { date: true },\r\n\t\tdateISO: { dateISO: true },\r\n\t\tnumber: { number: true },\r\n\t\tdigits: { digits: true },\r\n\t\tcreditcard: { creditcard: true }\r\n\t},\r\n\r\n\taddClassRules: function( className, rules ) {\r\n\t\tif ( className.constructor === String ) {\r\n\t\t\tthis.classRuleSettings[ className ] = rules;\r\n\t\t} else {\r\n\t\t\t$.extend( this.classRuleSettings, className );\r\n\t\t}\r\n\t},\r\n\r\n\tclassRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tclasses = $( element ).attr( \"class\" );\r\n\r\n\t\tif ( classes ) {\r\n\t\t\t$.each( classes.split( \" \" ), function() {\r\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\r\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\r\n\r\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\r\n\t\t// allows type=\"date\" and others to be compared as strings\r\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\r\n\t\t\tvalue = Number( value );\r\n\r\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\r\n\t\t\tif ( isNaN( value ) ) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( value || value === 0 ) {\r\n\t\t\trules[ method ] = value;\r\n\t\t} else if ( type === method && type !== \"range\" ) {\r\n\r\n\t\t\t// Exception: the jquery validate 'range' method\r\n\t\t\t// does not test for the html5 'range' type\r\n\t\t\trules[ method ] = true;\r\n\t\t}\r\n\t},\r\n\r\n\tattributeRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\r\n\t\t\t// Support for in both html5 and older browsers\r\n\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\tvalue = element.getAttribute( method );\r\n\r\n\t\t\t\t// Some browsers return an empty string for the required attribute\r\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\r\n\t\t\t\tif ( value === \"\" ) {\r\n\t\t\t\t\tvalue = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Force non-HTML5 browsers to return bool\r\n\t\t\t\tvalue = !!value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $element.attr( method );\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\r\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\r\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tdataRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\r\n\r\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\r\n\t\t\tif ( value === \"\" ) {\r\n\t\t\t\tvalue = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tstaticRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tvalidator = $.data( element.form, \"validator\" );\r\n\r\n\t\tif ( validator.settings.rules ) {\r\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeRules: function( rules, element ) {\r\n\r\n\t\t// Handle dependency check\r\n\t\t$.each( rules, function( prop, val ) {\r\n\r\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif ( val === false ) {\r\n\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( val.param || val.depends ) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch ( typeof val.depends ) {\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif ( keepRule ) {\r\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\r\n\t\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// Evaluate parameters\r\n\t\t$.each( rules, function( rule, parameter ) {\r\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\r\n\t\t} );\r\n\r\n\t\t// Clean number parameters\r\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\trules[ this ] = Number( rules[ this ] );\r\n\t\t\t}\r\n\t\t} );\r\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\r\n\t\t\tvar parts;\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\r\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\r\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\r\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\r\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( $.validator.autoCreateRanges ) {\r\n\r\n\t\t\t// Auto-create ranges\r\n\t\t\tif ( rules.min != null && rules.max != null ) {\r\n\t\t\t\trules.range = [ rules.min, rules.max ];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\r\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function( data ) {\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each( data.split( /\\s/ ), function() {\r\n\t\t\t\ttransformed[ this ] = true;\r\n\t\t\t} );\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\r\n\taddMethod: function( name, method, message ) {\r\n\t\t$.validator.methods[ name ] = method;\r\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\r\n\t\tif ( method.length < 3 ) {\r\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\r\n\tmethods: {\r\n\r\n\t\t// https://jqueryvalidation.org/required-method/\r\n\t\trequired: function( value, element, param ) {\r\n\r\n\t\t\t// Check if dependency is met\r\n\t\t\tif ( !this.depend( param, element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\r\n\r\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $( element ).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\t}\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\treturn this.getLength( value, element ) > 0;\r\n\t\t\t}\r\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/email-method/\r\n\t\temail: function( value, element ) {\r\n\r\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\r\n\t\t\t// Retrieved 2014-01-14\r\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\r\n\t\t\t// Or use custom methods to implement your own email validation\r\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 );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/url-method/\r\n\t\turl: function( value, element ) {\r\n\r\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\r\n\t\t\t// https://gist.github.com/dperini/729294\r\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\r\n\t\t\t// modified to allow protocol-relative URLs\r\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/date-method/\r\n\t\tdate: ( function() {\r\n\t\t\tvar called = false;\r\n\r\n\t\t\treturn function( value, element ) {\r\n\t\t\t\tif ( !called ) {\r\n\t\t\t\t\tcalled = true;\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.warn(\r\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\r\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\r\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\r\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\r\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\r\n\t\t\t};\r\n\t\t}() ),\r\n\r\n\t\t// https://jqueryvalidation.org/dateISO-method/\r\n\t\tdateISO: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/number-method/\r\n\t\tnumber: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/digits-method/\r\n\t\tdigits: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/minlength-method/\r\n\t\tminlength: function( value, element, param ) {\r\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/maxlength-method/\r\n\t\tmaxlength: function( value, element, param ) {\r\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/rangelength-method/\r\n\t\trangelength: function( value, element, param ) {\r\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/min-method/\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/max-method/\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/range-method/\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/step-method/\r\n\t\tstep: function( value, element, param ) {\r\n\t\t\tvar type = $( element ).attr( \"type\" ),\r\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\r\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\r\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\r\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\r\n\t\t\t\tdecimalPlaces = function( num ) {\r\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\r\n\t\t\t\t\tif ( !match ) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Number of digits right of decimal point.\r\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\r\n\t\t\t\t},\r\n\t\t\t\ttoInt = function( num ) {\r\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\r\n\t\t\t\t},\r\n\t\t\t\tvalid = true,\r\n\t\t\t\tdecimals;\r\n\r\n\t\t\t// Works only for text, number and range input types\r\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\r\n\t\t\tif ( notSupported ) {\r\n\t\t\t\tthrow new Error( errorMessage );\r\n\t\t\t}\r\n\r\n\t\t\tdecimals = decimalPlaces( param );\r\n\r\n\t\t\t// Value can't have too many decimals\r\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\r\n\t\t\t\tvalid = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.optional( element ) || valid;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/equalTo-method/\r\n\t\tequalTo: function( value, element, param ) {\r\n\r\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\tvar target = $( param );\r\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\r\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\r\n\t\t\t\t\t$( element ).valid();\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\treturn value === target.val();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/remote-method/\r\n\t\tremote: function( value, element, param, method ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\tvar previous = this.previousValue( element, method ),\r\n\t\t\t\tvalidator, data, optionDataString;\r\n\r\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\r\n\t\t\t\tthis.settings.messages[ element.name ] = {};\r\n\t\t\t}\r\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\r\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\r\n\r\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\r\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\r\n\t\t\tif ( previous.old === optionDataString ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = optionDataString;\r\n\t\t\tvalidator = this;\r\n\t\t\tthis.startRequest( element );\r\n\t\t\tdata = {};\r\n\t\t\tdata[ element.name ] = value;\r\n\t\t\t$.ajax( $.extend( true, {\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontext: validator.currentForm,\r\n\t\t\t\tsuccess: function( response ) {\r\n\t\t\t\t\tvar valid = response === true || response === \"true\",\r\n\t\t\t\t\t\terrors, message, submitted;\r\n\r\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.resetInternals();\r\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push( element );\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrors = {};\r\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\r\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\r\n\t\t\t\t\t\tvalidator.showErrors( errors );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest( element, valid );\r\n\t\t\t\t}\r\n\t\t\t}, param ) );\r\n\t\t\treturn \"pending\";\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n// Ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\r\n\r\nvar pendingRequests = {},\r\n\tajax;\r\n\r\n// Use a prefilter if available (1.5+)\r\nif ( $.ajaxPrefilter ) {\r\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\r\n\t\tvar port = settings.port;\r\n\t\tif ( settings.mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = xhr;\r\n\t\t}\r\n\t} );\r\n} else {\r\n\r\n\t// Proxy ajax\r\n\tajax = $.ajax;\r\n\t$.ajax = function( settings ) {\r\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\tif ( mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\r\n\t\t\treturn pendingRequests[ port ];\r\n\t\t}\r\n\t\treturn ajax.apply( this, arguments );\r\n\t};\r\n}\r\nreturn $;\r\n}));","(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n/*\r\n * Translated default messages for the jQuery validation plugin.\r\n * Locale: DE (German, Deutsch)\r\n */\r\n$.extend( $.validator.messages, {\r\n\trequired: \"Questo campo è obbligatorio.\",\r\n\tmaxlength: $.validator.format('Inserisci un massimo di {0} caratteri.'),\r\n\tminlength: $.validator.format('Inserisci un minimo di {0} caratteri.'),\r\n\trangelength: $.validator.format('Inserisci un minimo di {0} e un massimo di {1} caratteri.'),\r\n\temail: 'Inserire un indirizzo e-mail valido',\r\n\turl: 'Inserire un URL valido.',\r\n\tdate: 'Inserire una data valida.',\r\n\tnumber: 'Inserire un numero.',\r\n\tdigits: 'Inserisci solo cifre.',\r\n\tequalTo: 'Ripeti l’inserimento del valore',\r\n\trange: $.validator.format('Inserisci un valore tra {0} e {1}.'),\r\n\tmax: $.validator.format('Inserisci un valore inferiore o uguale a {0}'),\r\n\tmin: $.validator.format('Inserisci un valore superiore o uguale a {0}'),\r\n\tcreditcard: 'Inserisci un numero di carta di credito valido'\r\n} );\r\nreturn $;\r\n}));\r\n","'use strict';\r\n\r\n(function (factory) {\r\n factory(jQuery);\r\n}(function ($) {\r\n\r\n /*\r\n * Translated default messages for the jQuery validation plugin.\r\n * Locale: DE (German, Deutsch)\r\n */\r\n $.extend($.validator.messages, {\r\n 'invalid': 'Inserisci dati validi',\r\n 'legalDate': 'Per ordinare nello Shop Jack Wolfskin devi avere almeno 18 anni.',\r\n 'maxlength': $.validator.format('Inserisci un massimo di {0} caratteri.'),\r\n 'minlength': $.validator.format('Inserisci un minimo di {0} caratteri.'),\r\n 'rangelength': $.validator.format('Inserisci un minimo di {0} e un massimo di {1} caratteri.'),\r\n 'email': 'Inserire un indirizzo e-mail valido',\r\n 'url': 'Inserire un URL valido.',\r\n 'date': 'Inserire una data valida.',\r\n 'number': 'Inserire un numero.',\r\n 'digits': 'Inserisci solo cifre.',\r\n 'equalTo': 'Ripeti l’inserimento del valore',\r\n 'range': $.validator.format('Inserisci un valore tra {0} e {1}.'),\r\n 'max': $.validator.format('Inserisci un valore inferiore o uguale a {0}'),\r\n 'min': $.validator.format('Inserisci un valore superiore o uguale a {0}'),\r\n 'creditcard': 'Inserisci un numero di carta di credito valido',\r\n 'invalidZip': 'Indica il tuo codice postale valido.',\r\n 'couponCodeMistakenForGiftCard': 'Inserisci un codice coupon o un codice promozionale valido. Se hai una carta regalo, puoi utilizzarla inserendola nel checkout',\r\n 'invalidGiftCard': ' Indica il codice della tua carta regalo. Se hai un codice coupon o un codice promozionale, puoi utilizzarlo inserendolo nel carrello.',\r\n 'streetMissingHouseNumber': 'Non ha indicato il numero civico, è corretto?',\r\n 'invalidPassword': 'La password deve essere lunga almeno 8 caratteri e deve contenere almeno un carattere speciale, una lettera maiuscola e un numero.',\r\n 'passwordsDontMatch': 'le password non coincidono.',\r\n 'selectReturnReason': 'Seleziona il motivo del reso per continuare'\r\n });\r\n return $;\r\n}));\r\n","'use strict';\r\n\r\n(function ($) {\r\n var $formElements = $('.jwsdw-form-validate'),\r\n countryLists = $('.jwsdw-input-country, .jwsdw-country'),\r\n template = document.querySelector('#warningMessage'),\r\n templateContent = template.content,\r\n classesToCheck = ['jws-formError', 'jwsdw-softFormError'];\r\n\r\n countryLists.each(function() {\r\n var countryList = $(this),\r\n countryListItems = countryList.children('option').get();\r\n\r\n countryListItems.sort(function(a, b) {\r\n if (!$(a).attr('value')) {\r\n return -1;\r\n }\r\n if (!$(b).attr('value')) {\r\n return 1;\r\n }\r\n return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());\r\n });\r\n $.each(countryListItems, function(idx, itm) {\r\n countryList.append(itm);\r\n });\r\n });\r\n\r\n $.validator.setDefaults({\r\n 'errorClass': 'jws-formErrorMessage jws-copy1',\r\n 'validClass': 'jws-formLabelValid',\r\n 'rules': {\r\n 'email': {\r\n 'invalidvalue': true,\r\n 'customemail': true\r\n }\r\n },\r\n 'ignore': ':hidden, .jwsdw-validate-ignore, .jwsdw-validate-disable',\r\n 'onkeyup': (function () {\r\n let originalFn = $.validator.defaults.onkeyup;\r\n return function (element, event) {\r\n if (\r\n element.classList.contains('jwsdw-no-async-validate') ||\r\n (element.classList.contains('jwsdw-no-async-validate-empty') && !element.value)\r\n ) {\r\n return false;\r\n }\r\n return originalFn.call(this, element, event);\r\n };\r\n }()),\r\n 'errorPlacement': function(error, element) {\r\n let $element = $(element),\r\n $error = $(error),\r\n templateContentClone = templateContent.cloneNode(true),\r\n templateElement = templateContentClone.querySelector(\".jws-notificationWrapper\"),\r\n siblingError = $element.siblings('.jws-notificationWrapper'),\r\n errorDisplayed = siblingError.length ? true : false,\r\n message,\r\n displayedNotificationMessage,\r\n displayedNotificationText;\r\n\r\n const hasAllClasses = classesToCheck.every(className => templateElement.classList.contains(className));\r\n\r\n if (hasAllClasses) {\r\n classesToCheck.forEach(className => {\r\n templateContent.classList.add(className);\r\n });\r\n }\r\n\r\n if ($element.data('error') === 'warning' && $element.hasClass('jwsdw-softFormError')) {\r\n message = templateContentClone.querySelector('.jws-notificationMessage');\r\n message.textContent = $error.text();\r\n message.id = $element.prop('name') + '-warningMessage';\r\n\r\n if (!errorDisplayed) {\r\n $element.parent().append(templateContentClone);\r\n $element.attr('aria-describedby', $element.prop('name') + '-warningMessage');\r\n } else {\r\n displayedNotificationMessage = $element.parent().find('.jws-notificationMessage');\r\n displayedNotificationText = $element.val().length === $element.prop('maxLength') ? $element.data('error-message-length') : $element.data('error-message');\r\n displayedNotificationMessage.text(displayedNotificationText);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ($element.attr('type') === 'file') {\r\n $element.parent('.jws-fileInputWrapper').addClass('jws-fileInputWrapperError');\r\n error.appendTo($element.parent('.jws-fileInputWrapper').next('.jws-formErrorMessage'));\r\n $element.parent('.jws-fileInputWrapper').next('.jws-formErrorMessage').removeClass('jws-hidden');\r\n } else if ($element.attr('type') === 'radio') {\r\n error.appendTo($element.parent().parent().parent());\r\n } else {\r\n if ($element.attr('id') &&\r\n ($element.attr('id').indexOf('selectedBirthday') > 0 ||\r\n $element.attr('id').indexOf('dateselect') > 0 ||\r\n $element.attr('id').indexOf('dateOfBirth') > 0)) {\r\n error.appendTo($element.closest('form').find('.jwsdw-error-container'));\r\n } else if ($element.parent().hasClass('jws-selectWrapper') || $element.parent().hasClass('jws-roundWrapper') || $element.attr('id') === 'jwsdw-contact-allData') {\r\n error.appendTo($element.parent().parent());\r\n } else {\r\n error.appendTo($element.parent());\r\n }\r\n }\r\n },\r\n 'highlight': function(element, errorClass, validClass) {\r\n let $element = $(element),\r\n $form = $element.closest('form'),\r\n templateContentClone = templateContent.cloneNode(true),\r\n siblingError = $element.siblings('.jws-notificationWrapper'),\r\n errorDisplayed = siblingError.length ? true : false,\r\n $radioElements,\r\n message,\r\n displayedNotificationMessage;\r\n\r\n if ($element.attr('type') === 'file') {\r\n $element.parent('.jws-fileInputWrapper').addClass('jws-fileInputWrapperError');\r\n $element.parent('.jws-fileInputWrapper').removeClass(validClass);\r\n\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputName, .jws-fileInputName-name').addClass('jws-colorRedStatus');\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputName, .jws-fileInputName-name').removeClass('jws-colorGreenStatus');\r\n\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputButton').addClass('jws-fileInputButtonError');\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputButton').removeClass('jws-fileInputButtonSuccess');\r\n } else if ($element.attr('type') !== 'radio') {\r\n if (!$element.hasClass('jwsdw-softFormError')) {\r\n $element.siblings('.jws-notificationWrapper').remove();\r\n }\r\n if ($element.data('error') === 'warning' && $element.hasClass('jwsdw-softFormError')) {\r\n message = templateContentClone.querySelector('.jws-notificationMessage');\r\n if ($element.val().length === $element.prop('maxLength') && $element.data('error-message-length')) {\r\n message.textContent = $element.data('error-message-length');\r\n } else {\r\n message.textContent = $element.data('error-message');\r\n }\r\n message.id = $element.prop('name') + '-warningMessage';\r\n\r\n if (!errorDisplayed) {\r\n $element.parent().append(templateContentClone);\r\n $element.attr('aria-describedby', $element.prop('name') + '-warningMessage');\r\n } else {\r\n displayedNotificationMessage = $element.parent().find('.jws-notificationMessage');\r\n displayedNotificationMessage.text(message.textContent);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (element.id) {\r\n $element.addClass('jws-formError');\r\n $form.find('label[for=' + element.id + ']').addClass('jws-formError');\r\n $form.find('label[for=' + element.id + ']').removeClass(validClass);\r\n }\r\n } else {\r\n $radioElements = $form.find('[name=' + $element.attr('name') + ']');\r\n if (element.id) {\r\n $radioElements.each(function () {\r\n $form.find('label[for=' + this.id + ']').addClass('jws-formError');\r\n });\r\n }\r\n }\r\n },\r\n 'unhighlight': function(element, errorClass, validClass) {\r\n let $element = $(element),\r\n $form = $element.closest('form'),\r\n templateContentClone = templateContent.cloneNode(true),\r\n siblingError = $element.siblings('.jws-notificationWrapper'),\r\n errorDisplayed = siblingError.length ? true : false,\r\n $radioElements,\r\n message,\r\n displayedNotificationMessage;\r\n\r\n if ($element.attr('type') === 'file') {\r\n $element.parent('.jws-fileInputWrapper').removeClass('jws-fileInputWrapperError');\r\n $element.parent('.jws-fileInputWrapper').next('.jws-formErrorMessage').addClass('jws-hidden');\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputName, .jws-fileInputName-name').removeClass('jws-colorRedStatus');\r\n $element.parent('.jws-fileInputWrapper').find('.jws-fileInputButton').removeClass('jws-fileInputButtonError');\r\n } else if ($element.attr('type') !== 'radio') {\r\n if (!$element.hasClass('jwsdw-softFormError')) {\r\n $element.siblings('.jws-notificationWrapper').remove();\r\n }\r\n if ($element.data('error') === 'warning' && $element.hasClass('jwsdw-softFormError')) {\r\n message = templateContentClone.querySelector('.jws-notificationMessage');\r\n if ($element.val().length === $element.prop('maxLength') && $element.data('error-message-length')) {\r\n message.textContent = $element.data('error-message-length');\r\n } else {\r\n message.textContent = $element.data('error-message');\r\n }\r\n message.id = $element.prop('name') + '-warningMessage';\r\n\r\n if (!errorDisplayed) {\r\n $element.parent().append(templateContentClone);\r\n $element.attr('aria-describedby', $element.prop('name') + '-warningMessage');\r\n } else {\r\n displayedNotificationMessage = $element.parent().find('.jws-notificationMessage');\r\n displayedNotificationMessage.text(message.textContent);\r\n }\r\n\r\n return;\r\n }\r\n if (element.id) {\r\n $element.removeClass('jws-formError');\r\n $form.find('label[for=' + element.id + ']').removeClass('jws-formError');\r\n $form.find('label[for=' + element.id + ']').addClass(validClass);\r\n }\r\n } else {\r\n $radioElements = $form.find('[name=' + $element.attr('name') + ']');\r\n if (element.id) {\r\n $radioElements.each(function () {\r\n $form.find('label[for=' + this.id + ']').removeClass('jws-formError');\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n $.validator.addMethod('invalidvalue', function (value, element) {\r\n return value !== $(element).attr('data-jwsdw-invalidvalue');\r\n }, $.validator.messages.email);\r\n\r\n $.validator.addMethod(\"requiredCheckboxGroup\", function(value, element, params) {\r\n if (!params.is(':checked')) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }, $.validator.messages.invalid);\r\n\r\n $.validator.addMethod('custompassword', function(value) {\r\n var minLength = value.length >= 8,\r\n hasSpecialChar = /[^a-zA-Z0-9]/.test(value),\r\n hasNum = /\\d/.test(value),\r\n hasUpperCase = /[A-Z]/.test(value);\r\n\r\n return minLength && hasSpecialChar && hasNum && hasUpperCase;\r\n }, $.validator.messages.invalidPassword);\r\n\r\n $.validator.addMethod('customemail', function(value) {\r\n var mailRegExp = new RegExp(window.jwsdwSettings.validation.mailAddress.pattern);\r\n return !value || mailRegExp.test(value);\r\n }, $.validator.messages.email);\r\n\r\n $.validator.addMethod('digitsonly', function(value) {\r\n return /^\\d*$/.test(value);\r\n }, $.validator.messages.digits);\r\n\r\n $.validator.addMethod('customname', function(value) {\r\n return /^[^0-9!?_\\[\\]{}|><%§=*#]*$/.test(value);\r\n }, $.validator.messages.invalid);\r\n\r\n $.validator.addMethod('custompostcode', function(value, element) {\r\n var regexZip,\r\n $countryCode = $(element).closest('form').find('.jwsdw-input-country'),\r\n currentCountryCode = window.jwsdwSettings.countryCode;\r\n if ($countryCode.length > 0) {\r\n currentCountryCode = $countryCode.val();\r\n }\r\n regexZip = new RegExp(window.jwsdwSettings.validation.zipCodeRegex[currentCountryCode]);\r\n\r\n return $(element).prop('required') || value ? regexZip.test(value) : true;\r\n }, $.validator.messages.invalidZip);\r\n\r\n $.validator.addMethod('isAdult', function (value) {\r\n return isAdult(value, 18);\r\n }, $.validator.messages.legalDate);\r\n\r\n $.validator.addMethod('checkDate', function (value, element) {\r\n return this.optional(element) || checkDate(value);\r\n }, $.validator.messages.date);\r\n\r\n $.validator.addMethod('pattern', function(value, element) {\r\n var pattern = new RegExp($(element).attr('pattern'));\r\n\r\n return !value || pattern.test(value);\r\n }, $.validator.messages.invalid);\r\n\r\n $.validator.addMethod('invalidchars', function(value) {\r\n var pattern = new RegExp(window.jwsdwSettings.validation.invalidChars);\r\n\r\n return !pattern.test(value);\r\n }, $.validator.messages.invalid);\r\n\r\n $.validator.addMethod(\"checkPhoneNumber\", function(value, element) {\r\n let phoneRegex = new RegExp($(element).attr('pattern'));\r\n\r\n return this.optional(element) || phoneRegex.test(value);\r\n }, $.validator.messages.phoneNumber);\r\n\r\n $.validator.addMethod('localPhoneNumber', function(value, element) {\r\n let phoneRegex = new RegExp($(element).attr('data-pattern'));\r\n\r\n return this.optional(element) || phoneRegex.test(value);\r\n }, $.validator.messages.localPhoneNumber);\r\n\r\n $.validator.addMethod('oneRequired', function (value, element, params) {\r\n return params.some(function(id) {\r\n return $('#' + id).val().length > 0;\r\n });\r\n }, $.validator.messages.invalid);\r\n\r\n $.validator.addMethod(\"checkPhoneNumber\", function(value, element) {\r\n let phoneRegex = /^\\+?[0-9\\s\\-\\(\\).]{10,15}$/;\r\n\r\n return this.optional(element) || phoneRegex.test(value);\r\n }, $.validator.messages.phoneNumber);\r\n\r\n // couponCode validation only for DE / AT\r\n if (window.jwsdwSettings && /DE|AT/.test(window.jwsdwSettings.countryCode)) {\r\n $.validator.addMethod('couponCode', function(value) {\r\n return !/^\\d{19}$/.test(value);\r\n }, $.validator.messages.couponCodeMistakenForGiftCard);\r\n\r\n $.validator.addClassRules('jwsdw-input-couponCode', {\r\n 'couponCode': true\r\n });\r\n }\r\n\r\n // Class Rules\r\n $.validator.addClassRules('jwsdw-input-password', {\r\n 'custompassword': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-input-email', {\r\n 'customemail': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-input-digits', {\r\n 'digitsonly': true\r\n });\r\n\r\n\r\n $.validator.addClassRules('jwsdw-input-name', {\r\n 'customname': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-input-postcode', {\r\n 'custompostcode': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-input-withPattern', {\r\n 'pattern': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-input-localPhone', {\r\n 'localPhoneNumber': true\r\n });\r\n\r\n $.validator.addClassRules('jws-input', {\r\n 'invalidchars': true\r\n });\r\n\r\n $.validator.addClassRules('jwsdw-checkbox-group', {\r\n 'requiredCheckboxGroup': true\r\n });\r\n\r\n $(document).on('keydown change', '.jws-input', function(e) {\r\n var $input = $(this);\r\n\r\n if (e.type === 'change') {\r\n $input.val($input.val().trim());\r\n }\r\n\r\n setTimeout(function() {\r\n var required = $input.attr('aria-required');\r\n\r\n if (required && $input.val().length === 0 &&\r\n !/dateOfBirth(Day|Month)/.test($input.attr('id'))) {\r\n $input.valid();\r\n }\r\n }, 100);\r\n });\r\n\r\n\r\n $(document).on('change', '.jwsdw-input-country', function() {\r\n $(this).closest('form').find('.jwsdw-input-postcode').valid();\r\n });\r\n\r\n // remove coupon errors on focus out\r\n $(document).on('focusout', '.jwsdw-input-couponCode', function() {\r\n var $this = $(this);\r\n\r\n if ($this.hasClass('jws-formError')) {\r\n $this.removeClass('jws-formError');\r\n $this.parent().find('.jws-formErrorMessage').remove();\r\n }\r\n });\r\n\r\n // remove coupon errors on click outside coupon area if not focused\r\n $('body').on('click', function(e) {\r\n var $couponArea = $('.jwsdw-input-couponCode');\r\n\r\n if (!$couponArea.is(e.target) && $couponArea.hasClass('jws-formError')) {\r\n $couponArea.removeClass('jws-formError');\r\n $couponArea.parent().find('.jws-formErrorMessage').remove();\r\n }\r\n });\r\n\r\n // initialize form validation\r\n // http://jqueryvalidation.org/validate/\r\n $formElements.each(function() {\r\n $(this).validate();\r\n });\r\n\r\n /**\r\n * @description Method to validate date fields\r\n * @param {String} value date field value\r\n * @param {Number} min minimum age\r\n * @returns {Boolean} true if valid\r\n */\r\n function isAdult(value, min) { // eslint-disable-line\r\n var today = new Date(),\r\n birthDateArr = value.split('/'),\r\n day = parseInt(birthDateArr[0]),\r\n month = parseInt(birthDateArr[1]),\r\n year = parseInt(birthDateArr[2]),\r\n birthDate;\r\n if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {\r\n birthDate = new Date(year, month - 1, day);\r\n today.setFullYear(today.getFullYear() - min);\r\n return birthDate <= today;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @description Method to validate date fields\r\n * @param {String} value date field value\r\n * @returns {Boolean} true if valid\r\n */\r\n function checkDate(value) { // eslint-disable-line\r\n var birthDateArr = value.split('/'),\r\n monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\r\n day = parseInt(birthDateArr[0]),\r\n month = parseInt(birthDateArr[1]),\r\n year = parseInt(birthDateArr[2]),\r\n date = new Date(year, month - 1, day),\r\n now = new Date();\r\n\r\n // Adjust for leap years\r\n if (!isNaN(year) &&\r\n (year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0))) {\r\n monthLength[1] = 29;\r\n }\r\n\r\n // general check if day is valid\r\n if (!isNaN(day) &&\r\n (day < 1 || day > 31)) {\r\n return false;\r\n }\r\n\r\n // general check if month is valid\r\n if (!isNaN(month) && (month > 12 || month < 1)) {\r\n return false;\r\n }\r\n\r\n // if day & month is set, check if day can fall within month\r\n if (!isNaN(day) && !isNaN(month) && (day > monthLength[month - 1])) {\r\n return false;\r\n }\r\n\r\n // check if year is within reasonable birthday range\r\n if (!isNaN(year) && year < 1900) {\r\n return false;\r\n }\r\n\r\n // check if day is set when month is set\r\n if ((isNaN(day) && !isNaN(month))) {\r\n return false;\r\n }\r\n\r\n // check if day and month are set, when year is set\r\n if ((isNaN(day) || isNaN(month)) && !isNaN(year)) {\r\n return false;\r\n }\r\n\r\n // check if all fields are set\r\n if ((isNaN(day) || isNaN(month)) || isNaN(year)) {\r\n return false;\r\n }\r\n\r\n // if all fields are set, check if date lies in past\r\n if (!isNaN(day) && !isNaN(month) && !isNaN(year) && (isNaN(date.getTime()) || date.getTime() > now.getTime())) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}(jQuery));\r\n"],"names":["factory","define","amd","module","exports","require","jQuery","$","extend","fn","validate","options","validator","this","length","data","attr","settings","onsubmit","on","event","submitButton","currentTarget","hasClass","cancelSubmit","undefined","handle","hidden","result","submitHandler","formSubmitted","name","val","appendTo","currentForm","debug","call","remove","preventDefault","form","pendingRequest","focusInvalid","window","console","warn","valid","errorList","is","each","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","trim","str","replace","expr","pseudos","blank","a","filled","unchecked","prop","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","i","n","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","trigger","e","rulesCache","find","error","selector","join","resetInternals","toShow","$element","validity","badInput","substr","idx","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","errorID","elementID","idOrName","describedBy","html","place","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","match","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","parts","isArray","transformed","addMethod","called","Date","toString","decimalPlaces","num","toInt","Math","round","pow","decimals","errorMessage","re","Error","target","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","legalDate","invalidZip","couponCodeMistakenForGiftCard","invalidGiftCard","streetMissingHouseNumber","invalidPassword","passwordsDontMatch","selectReturnReason","$formElements","countryLists","templateContent","document","querySelector","content","classesToCheck","isAdult","today","birthDateArr","day","parseInt","month","year","birthDate","setFullYear","getFullYear","checkDate","monthLength","now","getTime","countryList","countryListItems","children","get","sort","b","localeCompare","itm","invalidvalue","customemail","let","originalFn","classList","contains","$error","templateContentClone","cloneNode","templateElement","siblingError","siblings","errorDisplayed","displayedNotificationMessage","displayedNotificationText","every","forEach","textContent","next","indexOf","$form","$radioElements","minLength","hasSpecialChar","hasNum","hasUpperCase","mailRegExp","jwsdwSettings","validation","mailAddress","pattern","$countryCode","currentCountryCode","countryCode","regexZip","zipCodeRegex","invalidChars","phoneRegex","phoneNumber","localPhoneNumber","some","couponCode","custompassword","digitsonly","customname","custompostcode","invalidchars","requiredCheckboxGroup","$input","setTimeout","$this","$couponArea"],"mappings":"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"}