diff --git a/js/lib/jquery/plugins/validate/additional-methods.js b/js/lib/jquery/plugins/validate/additional-methods.js
index b0534b54ba9..c6a7229185a 100644
--- a/js/lib/jquery/plugins/validate/additional-methods.js
+++ b/js/lib/jquery/plugins/validate/additional-methods.js
@@ -1,148 +1,671 @@
/*!
- * jQuery Validation Plugin 1.11.1
+ * jQuery Validation Plugin v1.19.5
*
- * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
- * http://docs.jquery.com/Plugins/Validation
+ * https://jqueryvalidation.org/
*
- * Copyright 2013 Jörn Zaefferer
- * Released under the MIT license:
- * http://www.opensource.org/licenses/mit-license.php
+ * Copyright (c) 2022 Jörn Zaefferer
+ * Released under the MIT license
*/
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "./jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+( function() {
+
+ function stripHtml( value ) {
+
+ // Remove html tags and space chars
+ return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
+
+ // Remove punctuation
+ .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
+ }
+
+ $.validator.addMethod( "maxWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
+ }, $.validator.format( "Please enter {0} words or less." ) );
+
+ $.validator.addMethod( "minWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
+ }, $.validator.format( "Please enter at least {0} words." ) );
+
+ $.validator.addMethod( "rangeWords", function( value, element, params ) {
+ var valueStripped = stripHtml( value ),
+ regex = /\b\w+\b/g;
+ return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
+ }, $.validator.format( "Please enter between {0} and {1} words." ) );
+
+}() );
+
+/**
+ * This is used in the United States to process payments, deposits,
+ * or transfers using the Automated Clearing House (ACH) or Fedwire
+ * systems. A very common use case would be to validate a form for
+ * an ACH bill payment.
+ */
+$.validator.addMethod( "abaRoutingNumber", function( value ) {
+ var checksum = 0;
+ var tokens = value.split( "" );
+ var length = tokens.length;
+
+ // Length Check
+ if ( length !== 9 ) {
+ return false;
+ }
-(function() {
+ // Calc the checksum
+ // https://en.wikipedia.org/wiki/ABA_routing_transit_number
+ for ( var i = 0; i < length; i += 3 ) {
+ checksum += parseInt( tokens[ i ], 10 ) * 3 +
+ parseInt( tokens[ i + 1 ], 10 ) * 7 +
+ parseInt( tokens[ i + 2 ], 10 );
+ }
- function stripHtml(value) {
- // remove html tags and space chars
- return value.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' ')
- // remove punctuation
- .replace(/[.(),;:!?%#$'"_+=\/\-]*/g,'');
+ // If not zero and divisible by 10 then valid
+ if ( checksum !== 0 && checksum % 10 === 0 ) {
+ return true;
}
- jQuery.validator.addMethod("maxWords", function(value, element, params) {
- return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params;
- }, jQuery.validator.format("Please enter {0} words or less."));
- jQuery.validator.addMethod("minWords", function(value, element, params) {
- return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params;
- }, jQuery.validator.format("Please enter at least {0} words."));
+ return false;
+}, "Please enter a valid routing number." );
+
+// Accept a value from a file input based on a required mimetype
+$.validator.addMethod( "accept", function( value, element, param ) {
+
+ // Split mime on commas in case we have multiple types we can accept
+ var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
+ optionalValue = this.optional( element ),
+ i, file, regex;
+
+ // Element is optional
+ if ( optionalValue ) {
+ return optionalValue;
+ }
- jQuery.validator.addMethod("rangeWords", function(value, element, params) {
- var valueStripped = stripHtml(value);
- var regex = /\b\w+\b/g;
- return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1];
- }, jQuery.validator.format("Please enter between {0} and {1} words."));
+ if ( $( element ).attr( "type" ) === "file" ) {
-}());
+ // Escape string to be used in the regex
+ // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
+ // Escape also "/*" as "/.*" as a wildcard
+ typeParam = typeParam
+ .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
+ .replace( /,/g, "|" )
+ .replace( /\/\*/g, "/.*" );
-jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
- return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value);
-}, "Letters or punctuation only please");
+ // Check if the element has a FileList before checking each file
+ if ( element.files && element.files.length ) {
+ regex = new RegExp( ".?(" + typeParam + ")$", "i" );
+ for ( i = 0; i < element.files.length; i++ ) {
+ file = element.files[ i ];
-jQuery.validator.addMethod("alphanumeric", function(value, element) {
- return this.optional(element) || /^\w+$/i.test(value);
-}, "Letters, numbers, and underscores only please");
+ // Grab the mimetype from the loaded file, verify it matches
+ if ( !file.type.match( regex ) ) {
+ return false;
+ }
+ }
+ }
+ }
-jQuery.validator.addMethod("lettersonly", function(value, element) {
- return this.optional(element) || /^[a-z]+$/i.test(value);
-}, "Letters only please");
+ // Either return true because we've validated each file, or because the
+ // browser does not support element.files and the FileList feature
+ return true;
+}, $.validator.format( "Please enter a value with a valid mimetype." ) );
-jQuery.validator.addMethod("nowhitespace", function(value, element) {
- return this.optional(element) || /^\S+$/i.test(value);
-}, "No white space please");
+$.validator.addMethod( "alphanumeric", function( value, element ) {
+ return this.optional( element ) || /^\w+$/i.test( value );
+}, "Letters, numbers, and underscores only please." );
-jQuery.validator.addMethod("ziprange", function(value, element) {
- return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value);
-}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
+/*
+ * Dutch bank account numbers (not 'giro' numbers) have 9 digits
+ * and pass the '11 check'.
+ * We accept the notation with spaces, as that is common.
+ * acceptable: 123456789 or 12 34 56 789
+ */
+$.validator.addMethod( "bankaccountNL", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
+ if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
+ return false;
+ }
-jQuery.validator.addMethod("zipcodeUS", function(value, element) {
- return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value);
-}, "The specified US ZIP Code is invalid");
+ // Now '11 check'
+ var account = value.replace( / /g, "" ), // Remove spaces
+ sum = 0,
+ len = account.length,
+ pos, factor, digit;
+ for ( pos = 0; pos < len; pos++ ) {
+ factor = len - pos;
+ digit = account.substring( pos, pos + 1 );
+ sum = sum + factor * digit;
+ }
+ return sum % 11 === 0;
+}, "Please specify a valid bank account number." );
-jQuery.validator.addMethod("integer", function(value, element) {
- return this.optional(element) || /^-?\d+$/.test(value);
-}, "A positive or negative non-decimal number please");
+$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
+ return this.optional( element ) ||
+ ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
+ ( $.validator.methods.giroaccountNL.call( this, value, element ) );
+}, "Please specify a valid bank or giro account number." );
/**
- * Return true, if the value is a valid vehicle identification number (VIN).
+ * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
*
- * Works with all kind of text inputs.
+ * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
*
- * @example
- * @desc Declares a required input element whose value must be a valid vehicle identification number.
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
*
- * @name jQuery.validator.methods.vinUS
- * @type Boolean
- * @cat Plugins/Validate/Methods
+ * BIC definition in detail:
+ * - First 4 characters - bank code (only letters)
+ * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
+ * - Next 2 characters - location code (letters and digits)
+ * a. shall not start with '0' or '1'
+ * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
+ * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
*/
-jQuery.validator.addMethod("vinUS", function(v) {
- if (v.length !== 17) {
+$.validator.addMethod( "bic", function( value, element ) {
+ return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
+}, "Please specify a valid BIC code." );
+
+/*
+ * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
+ * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
+ *
+ * Spanish CIF structure:
+ *
+ * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
+ *
+ * Where:
+ *
+ * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
+ * P: 2 characters. Province.
+ * N: 5 characters. Secuencial Number within the province.
+ * C: 1 character. Control Digit: [0-9A-J].
+ *
+ * [ T ]: Kind of Organizations. Possible values:
+ *
+ * A. Corporations
+ * B. LLCs
+ * C. General partnerships
+ * D. Companies limited partnerships
+ * E. Communities of goods
+ * F. Cooperative Societies
+ * G. Associations
+ * H. Communities of homeowners in horizontal property regime
+ * J. Civil Societies
+ * K. Old format
+ * L. Old format
+ * M. Old format
+ * N. Nonresident entities
+ * P. Local authorities
+ * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
+ * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
+ * S. Organs of State Administration and regions
+ * V. Agrarian Transformation
+ * W. Permanent establishments of non-resident in Spain
+ *
+ * [ C ]: Control Digit. It can be a number or a letter depending on T value:
+ * [ T ] --> [ C ]
+ * ------ ----------
+ * A Number
+ * B Number
+ * E Number
+ * H Number
+ * K Letter
+ * P Letter
+ * Q Letter
+ * S Letter
+ *
+ */
+$.validator.addMethod( "cifES", function( value, element ) {
+ "use strict";
+
+ if ( this.optional( element ) ) {
+ return true;
+ }
+
+ var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
+ var letter = value.substring( 0, 1 ), // [ T ]
+ number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
+ control = value.substring( 8, 9 ), // [ C ]
+ all_sum = 0,
+ even_sum = 0,
+ odd_sum = 0,
+ i, n,
+ control_digit,
+ control_letter;
+
+ function isOdd( n ) {
+ return n % 2 === 0;
+ }
+
+ // Quick format test
+ if ( value.length !== 9 || !cifRegEx.test( value ) ) {
return false;
}
- var i, n, d, f, cd, cdv;
- var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
- var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
- var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
- var rs = 0;
- for(i = 0; i < 17; i++){
- f = FL[i];
- d = v.slice(i,i+1);
- if (i === 8) {
- cdv = d;
- }
- if (!isNaN(d)) {
- d *= f;
+
+ for ( i = 0; i < number.length; i++ ) {
+ n = parseInt( number[ i ], 10 );
+
+ // Odd positions
+ if ( isOdd( i ) ) {
+
+ // Odd positions are multiplied first.
+ n *= 2;
+
+ // If the multiplication is bigger than 10 we need to adjust
+ odd_sum += n < 10 ? n : n - 9;
+
+ // Even positions
+ // Just sum them
} else {
- for (n = 0; n < LL.length; n++) {
- if (d.toUpperCase() === LL[n]) {
- d = VL[n];
- d *= f;
- if (isNaN(cdv) && n === 8) {
- cdv = LL[n];
- }
- break;
- }
+ even_sum += n;
+ }
+ }
+
+ all_sum = even_sum + odd_sum;
+ control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
+ control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
+ control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
+
+ // Control must be a digit
+ if ( letter.match( /[ABEH]/ ) ) {
+ return control === control_digit;
+
+ // Control must be a letter
+ } else if ( letter.match( /[KPQS]/ ) ) {
+ return control === control_letter;
+ }
+
+ // Can be either
+ return control === control_digit || control === control_letter;
+
+}, "Please specify a valid CIF number." );
+
+/*
+ * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number.
+ * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cnhBR", function( value ) {
+
+ // Removing special characters from value
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+ // Checking value to have 11 digits only
+ if ( value.length !== 11 ) {
+ return false;
+ }
+
+ var sum = 0, dsc = 0, firstChar,
+ firstCN, secondCN, i, j, v;
+
+ firstChar = value.charAt( 0 );
+
+ if ( new Array( 12 ).join( firstChar ) === value ) {
+ return false;
+ }
+
+ // Step 1 - using first Check Number:
+ for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) {
+ sum += +( value.charAt( i ) * j );
+ }
+
+ firstCN = sum % 11;
+ if ( firstCN >= 10 ) {
+ firstCN = 0;
+ dsc = 2;
+ }
+
+ sum = 0;
+ for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) {
+ sum += +( value.charAt( i ) * j );
+ }
+
+ secondCN = sum % 11;
+ if ( secondCN >= 10 ) {
+ secondCN = 0;
+ } else {
+ secondCN = secondCN - dsc;
+ }
+
+ return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) );
+
+}, "Please specify a valid CNH number." );
+
+/*
+ * Brazillian value number (Cadastrado de Pessoas Juridica).
+ * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cnpjBR", function( value, element ) {
+ "use strict";
+
+ if ( this.optional( element ) ) {
+ return true;
+ }
+
+ // Removing no number
+ value = value.replace( /[^\d]+/g, "" );
+
+ // Checking value to have 14 digits only
+ if ( value.length !== 14 ) {
+ return false;
+ }
+
+ // Elimina values invalidos conhecidos
+ if ( value === "00000000000000" ||
+ value === "11111111111111" ||
+ value === "22222222222222" ||
+ value === "33333333333333" ||
+ value === "44444444444444" ||
+ value === "55555555555555" ||
+ value === "66666666666666" ||
+ value === "77777777777777" ||
+ value === "88888888888888" ||
+ value === "99999999999999" ) {
+ return false;
+ }
+
+ // Valida DVs
+ var tamanho = ( value.length - 2 );
+ var numeros = value.substring( 0, tamanho );
+ var digitos = value.substring( tamanho );
+ var soma = 0;
+ var pos = tamanho - 7;
+
+ for ( var i = tamanho; i >= 1; i-- ) {
+ soma += numeros.charAt( tamanho - i ) * pos--;
+ if ( pos < 2 ) {
+ pos = 9;
+ }
+ }
+
+ var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
+
+ if ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {
+ return false;
+ }
+
+ tamanho = tamanho + 1;
+ numeros = value.substring( 0, tamanho );
+ soma = 0;
+ pos = tamanho - 7;
+
+ for ( var il = tamanho; il >= 1; il-- ) {
+ soma += numeros.charAt( tamanho - il ) * pos--;
+ if ( pos < 2 ) {
+ pos = 9;
+ }
+ }
+
+ resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
+
+ if ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {
+ return false;
+ }
+
+ return true;
+
+}, "Please specify a CNPJ value number." );
+
+/*
+ * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
+ * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cpfBR", function( value, element ) {
+ "use strict";
+
+ if ( this.optional( element ) ) {
+ return true;
+ }
+
+ // Removing special characters from value
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+ // Checking value to have 11 digits only
+ if ( value.length !== 11 ) {
+ return false;
+ }
+
+ var sum = 0,
+ firstCN, secondCN, checkResult, i;
+
+ firstCN = parseInt( value.substring( 9, 10 ), 10 );
+ secondCN = parseInt( value.substring( 10, 11 ), 10 );
+
+ checkResult = function( sum, cn ) {
+ var result = ( sum * 10 ) % 11;
+ if ( ( result === 10 ) || ( result === 11 ) ) {
+ result = 0;
+ }
+ return ( result === cn );
+ };
+
+ // Checking for dump data
+ if ( value === "" ||
+ value === "00000000000" ||
+ value === "11111111111" ||
+ value === "22222222222" ||
+ value === "33333333333" ||
+ value === "44444444444" ||
+ value === "55555555555" ||
+ value === "66666666666" ||
+ value === "77777777777" ||
+ value === "88888888888" ||
+ value === "99999999999"
+ ) {
+ return false;
+ }
+
+ // Step 1 - using first Check Number:
+ for ( i = 1; i <= 9; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
+ }
+
+ // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
+ if ( checkResult( sum, firstCN ) ) {
+ sum = 0;
+ for ( i = 1; i <= 10; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
+ }
+ return checkResult( sum, secondCN );
+ }
+ return false;
+
+}, "Please specify a valid CPF number." );
+
+// https://jqueryvalidation.org/creditcard-method/
+// based on https://en.wikipedia.org/wiki/Luhn_algorithm
+$.validator.addMethod( "creditcard", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return "dependency-mismatch";
+ }
+
+ // Accept only spaces, digits and dashes
+ if ( /[^0-9 \-]+/.test( value ) ) {
+ return false;
+ }
+
+ var nCheck = 0,
+ nDigit = 0,
+ bEven = false,
+ n, cDigit;
+
+ value = value.replace( /\D/g, "" );
+
+ // Basing min and max length on
+ // https://dev.ean.com/general-info/valid-card-types/
+ if ( value.length < 13 || value.length > 19 ) {
+ return false;
+ }
+
+ for ( n = value.length - 1; n >= 0; n-- ) {
+ cDigit = value.charAt( n );
+ nDigit = parseInt( cDigit, 10 );
+ if ( bEven ) {
+ if ( ( nDigit *= 2 ) > 9 ) {
+ nDigit -= 9;
}
}
- rs += d;
+
+ nCheck += nDigit;
+ bEven = !bEven;
}
- cd = rs % 11;
- if (cd === 10) {
- cd = "X";
+
+ return ( nCheck % 10 ) === 0;
+}, "Please enter a valid credit card number." );
+
+/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+ * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+ * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+ */
+$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
+ if ( /[^0-9\-]+/.test( value ) ) {
+ return false;
+ }
+
+ value = value.replace( /\D/g, "" );
+
+ var validTypes = 0x0000;
+
+ if ( param.mastercard ) {
+ validTypes |= 0x0001;
+ }
+ if ( param.visa ) {
+ validTypes |= 0x0002;
+ }
+ if ( param.amex ) {
+ validTypes |= 0x0004;
+ }
+ if ( param.dinersclub ) {
+ validTypes |= 0x0008;
+ }
+ if ( param.enroute ) {
+ validTypes |= 0x0010;
+ }
+ if ( param.discover ) {
+ validTypes |= 0x0020;
+ }
+ if ( param.jcb ) {
+ validTypes |= 0x0040;
+ }
+ if ( param.unknown ) {
+ validTypes |= 0x0080;
+ }
+ if ( param.all ) {
+ validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+ }
+ if ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
+ return value.length === 14;
+ }
+ if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
+ return value.length === 16;
}
- if (cd === cdv) {
+ if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0080 ) { // Unknown
return true;
}
return false;
-}, "The specified vehicle identification number (VIN) is invalid.");
+}, "Please enter a valid credit card number." );
+
+/**
+ * Validates currencies with any given symbols by @jameslouiz
+ * Symbols can be optional or required. Symbols required by default
+ *
+ * Usage examples:
+ * currency: ["£", false] - Use false for soft currency validation
+ * currency: ["$", false]
+ * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
+ *
+ *
+ *
+ * Soft symbol checking
+ * currencyInput: {
+ * currency: ["$", false]
+ * }
+ *
+ * Strict symbol checking (default)
+ * currencyInput: {
+ * currency: "$"
+ * //OR
+ * currency: ["$", true]
+ * }
+ *
+ * Multiple Symbols
+ * currencyInput: {
+ * currency: "$,£,¢"
+ * }
+ */
+$.validator.addMethod( "currency", function( value, element, param ) {
+ var isParamString = typeof param === "string",
+ symbol = isParamString ? param : param[ 0 ],
+ soft = isParamString ? true : param[ 1 ],
+ regex;
+
+ symbol = symbol.replace( /,/g, "" );
+ symbol = soft ? symbol + "]" : symbol + "]?";
+ regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
+ regex = new RegExp( regex );
+ return this.optional( element ) || regex.test( value );
+
+}, "Please specify a valid currency." );
+
+$.validator.addMethod( "dateFA", function( value, element ) {
+ return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
+}, $.validator.messages.date );
/**
* Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
*
- * @example jQuery.validator.methods.date("01/01/1900")
+ * @example $.validator.methods.date("01/01/1900")
* @result true
*
- * @example jQuery.validator.methods.date("01/13/1990")
+ * @example $.validator.methods.date("01/13/1990")
* @result false
*
- * @example jQuery.validator.methods.date("01.01.1900")
+ * @example $.validator.methods.date("01.01.1900")
* @result false
*
* @example
* @desc Declares an optional input element whose value must be a valid date.
*
- * @name jQuery.validator.methods.dateITA
+ * @name $.validator.methods.dateITA
* @type Boolean
* @cat Plugins/Validate/Methods
*/
-jQuery.validator.addMethod("dateITA", function(value, element) {
- var check = false;
- var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
- if( re.test(value)) {
- var adata = value.split('/');
- var gg = parseInt(adata[0],10);
- var mm = parseInt(adata[1],10);
- var aaaa = parseInt(adata[2],10);
- var xdata = new Date(aaaa,mm-1,gg);
- if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){
+$.validator.addMethod( "dateITA", function( value, element ) {
+ var check = false,
+ re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
+ adata, gg, mm, aaaa, xdata;
+ if ( re.test( value ) ) {
+ adata = value.split( "/" );
+ gg = parseInt( adata[ 0 ], 10 );
+ mm = parseInt( adata[ 1 ], 10 );
+ aaaa = parseInt( adata[ 2 ], 10 );
+ xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
+ if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
check = true;
} else {
check = false;
@@ -150,92 +673,152 @@ jQuery.validator.addMethod("dateITA", function(value, element) {
} else {
check = false;
}
- return this.optional(element) || check;
-}, "Please enter a correct date");
+ return this.optional( element ) || check;
+}, $.validator.messages.date );
+
+$.validator.addMethod( "dateNL", function( value, element ) {
+ return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
+}, $.validator.messages.date );
+
+// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
+$.validator.addMethod( "extension", function( value, element, param ) {
+ param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
+ return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
+}, $.validator.format( "Please enter a value with a valid extension." ) );
+
+/**
+ * Dutch giro account numbers (not bank numbers) have max 7 digits
+ */
+$.validator.addMethod( "giroaccountNL", function( value, element ) {
+ return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
+}, "Please specify a valid giro account number." );
+
+$.validator.addMethod( "greaterThan", function( value, element, param ) {
+ var target = $( param );
+
+ if ( this.settings.onfocusout && target.not( ".validate-greaterThan-blur" ).length ) {
+ target.addClass( "validate-greaterThan-blur" ).on( "blur.validate-greaterThan", function() {
+ $( element ).valid();
+ } );
+ }
+
+ return value > target.val();
+}, "Please enter a greater value." );
+
+$.validator.addMethod( "greaterThanEqual", function( value, element, param ) {
+ var target = $( param );
+
+ if ( this.settings.onfocusout && target.not( ".validate-greaterThanEqual-blur" ).length ) {
+ target.addClass( "validate-greaterThanEqual-blur" ).on( "blur.validate-greaterThanEqual", function() {
+ $( element ).valid();
+ } );
+ }
+
+ return value >= target.val();
+}, "Please enter a greater value." );
/**
* IBAN is the international bank account number.
* It has a country - specific format, that is checked here too
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
*/
-jQuery.validator.addMethod("iban", function(value, element) {
- // some quick simple tests to prevent needless work
- if (this.optional(element)) {
+$.validator.addMethod( "iban", function( value, element ) {
+
+ // Some quick simple tests to prevent needless work
+ if ( this.optional( element ) ) {
return true;
}
- if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(value))) {
+
+ // Remove spaces and to upper case
+ var iban = value.replace( / /g, "" ).toUpperCase(),
+ ibancheckdigits = "",
+ leadingZeroes = true,
+ cRest = "",
+ cOperator = "",
+ countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
+
+ // Check for IBAN code length.
+ // It contains:
+ // country code ISO 3166-1 - two letters,
+ // two check digits,
+ // Basic Bank Account Number (BBAN) - up to 30 chars
+ var minimalIBANlength = 5;
+ if ( iban.length < minimalIBANlength ) {
return false;
}
- // check the country code and find the country specific format
- var iban = value.replace(/ /g,'').toUpperCase(); // remove spaces and to upper case
- var countrycode = iban.substring(0,2);
- var bbancountrypatterns = {
- 'AL': "\\d{8}[\\dA-Z]{16}",
- 'AD': "\\d{8}[\\dA-Z]{12}",
- 'AT': "\\d{16}",
- 'AZ': "[\\dA-Z]{4}\\d{20}",
- 'BE': "\\d{12}",
- 'BH': "[A-Z]{4}[\\dA-Z]{14}",
- 'BA': "\\d{16}",
- 'BR': "\\d{23}[A-Z][\\dA-Z]",
- 'BG': "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
- 'CR': "\\d{17}",
- 'HR': "\\d{17}",
- 'CY': "\\d{8}[\\dA-Z]{16}",
- 'CZ': "\\d{20}",
- 'DK': "\\d{14}",
- 'DO': "[A-Z]{4}\\d{20}",
- 'EE': "\\d{16}",
- 'FO': "\\d{14}",
- 'FI': "\\d{14}",
- 'FR': "\\d{10}[\\dA-Z]{11}\\d{2}",
- 'GE': "[\\dA-Z]{2}\\d{16}",
- 'DE': "\\d{18}",
- 'GI': "[A-Z]{4}[\\dA-Z]{15}",
- 'GR': "\\d{7}[\\dA-Z]{16}",
- 'GL': "\\d{14}",
- 'GT': "[\\dA-Z]{4}[\\dA-Z]{20}",
- 'HU': "\\d{24}",
- 'IS': "\\d{22}",
- 'IE': "[\\dA-Z]{4}\\d{14}",
- 'IL': "\\d{19}",
- 'IT': "[A-Z]\\d{10}[\\dA-Z]{12}",
- 'KZ': "\\d{3}[\\dA-Z]{13}",
- 'KW': "[A-Z]{4}[\\dA-Z]{22}",
- 'LV': "[A-Z]{4}[\\dA-Z]{13}",
- 'LB': "\\d{4}[\\dA-Z]{20}",
- 'LI': "\\d{5}[\\dA-Z]{12}",
- 'LT': "\\d{16}",
- 'LU': "\\d{3}[\\dA-Z]{13}",
- 'MK': "\\d{3}[\\dA-Z]{10}\\d{2}",
- 'MT': "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
- 'MR': "\\d{23}",
- 'MU': "[A-Z]{4}\\d{19}[A-Z]{3}",
- 'MC': "\\d{10}[\\dA-Z]{11}\\d{2}",
- 'MD': "[\\dA-Z]{2}\\d{18}",
- 'ME': "\\d{18}",
- 'NL': "[A-Z]{4}\\d{10}",
- 'NO': "\\d{11}",
- 'PK': "[\\dA-Z]{4}\\d{16}",
- 'PS': "[\\dA-Z]{4}\\d{21}",
- 'PL': "\\d{24}",
- 'PT': "\\d{21}",
- 'RO': "[A-Z]{4}[\\dA-Z]{16}",
- 'SM': "[A-Z]\\d{10}[\\dA-Z]{12}",
- 'SA': "\\d{2}[\\dA-Z]{18}",
- 'RS': "\\d{18}",
- 'SK': "\\d{20}",
- 'SI': "\\d{15}",
- 'ES': "\\d{20}",
- 'SE': "\\d{20}",
- 'CH': "\\d{5}[\\dA-Z]{12}",
- 'TN': "\\d{20}",
- 'TR': "\\d{5}[\\dA-Z]{17}",
- 'AE': "\\d{3}\\d{16}",
- 'GB': "[A-Z]{4}\\d{14}",
- 'VG': "[\\dA-Z]{4}\\d{16}"
+ // Check the country code and find the country specific format
+ countrycode = iban.substring( 0, 2 );
+ bbancountrypatterns = {
+ "AL": "\\d{8}[\\dA-Z]{16}",
+ "AD": "\\d{8}[\\dA-Z]{12}",
+ "AT": "\\d{16}",
+ "AZ": "[\\dA-Z]{4}\\d{20}",
+ "BE": "\\d{12}",
+ "BH": "[A-Z]{4}[\\dA-Z]{14}",
+ "BA": "\\d{16}",
+ "BR": "\\d{23}[A-Z][\\dA-Z]",
+ "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
+ "CR": "\\d{17}",
+ "HR": "\\d{17}",
+ "CY": "\\d{8}[\\dA-Z]{16}",
+ "CZ": "\\d{20}",
+ "DK": "\\d{14}",
+ "DO": "[A-Z]{4}\\d{20}",
+ "EE": "\\d{16}",
+ "FO": "\\d{14}",
+ "FI": "\\d{14}",
+ "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "GE": "[\\dA-Z]{2}\\d{16}",
+ "DE": "\\d{18}",
+ "GI": "[A-Z]{4}[\\dA-Z]{15}",
+ "GR": "\\d{7}[\\dA-Z]{16}",
+ "GL": "\\d{14}",
+ "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
+ "HU": "\\d{24}",
+ "IS": "\\d{22}",
+ "IE": "[\\dA-Z]{4}\\d{14}",
+ "IL": "\\d{19}",
+ "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "KZ": "\\d{3}[\\dA-Z]{13}",
+ "KW": "[A-Z]{4}[\\dA-Z]{22}",
+ "LV": "[A-Z]{4}[\\dA-Z]{13}",
+ "LB": "\\d{4}[\\dA-Z]{20}",
+ "LI": "\\d{5}[\\dA-Z]{12}",
+ "LT": "\\d{16}",
+ "LU": "\\d{3}[\\dA-Z]{13}",
+ "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
+ "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
+ "MR": "\\d{23}",
+ "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
+ "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "MD": "[\\dA-Z]{2}\\d{18}",
+ "ME": "\\d{18}",
+ "NL": "[A-Z]{4}\\d{10}",
+ "NO": "\\d{11}",
+ "PK": "[\\dA-Z]{4}\\d{16}",
+ "PS": "[\\dA-Z]{4}\\d{21}",
+ "PL": "\\d{24}",
+ "PT": "\\d{21}",
+ "RO": "[A-Z]{4}[\\dA-Z]{16}",
+ "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "SA": "\\d{2}[\\dA-Z]{18}",
+ "RS": "\\d{18}",
+ "SK": "\\d{20}",
+ "SI": "\\d{15}",
+ "ES": "\\d{20}",
+ "SE": "\\d{20}",
+ "CH": "\\d{5}[\\dA-Z]{12}",
+ "TN": "\\d{20}",
+ "TR": "\\d{5}[\\dA-Z]{17}",
+ "AE": "\\d{3}\\d{16}",
+ "GB": "[A-Z]{4}\\d{14}",
+ "VG": "[\\dA-Z]{4}\\d{16}"
};
- var bbanpattern = bbancountrypatterns[countrycode];
+
+ bbanpattern = bbancountrypatterns[ countrycode ];
+
// As new countries will start using IBAN in the
// future, we only check if the countrycode is known.
// This prevents false negatives, while almost all
@@ -243,302 +826,508 @@ jQuery.validator.addMethod("iban", function(value, element) {
// by the checksum validation below anyway.
// Strict checking should return FALSE for unknown
// countries.
- if (typeof bbanpattern !== 'undefined') {
- var ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", "");
- if (!(ibanregexp.test(iban))) {
- return false; // invalid country specific format
+ if ( typeof bbanpattern !== "undefined" ) {
+ ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
+ if ( !( ibanregexp.test( iban ) ) ) {
+ return false; // Invalid country specific format
}
}
- // now check the checksum, first convert to digits
- var ibancheck = iban.substring(4,iban.length) + iban.substring(0,4);
- var ibancheckdigits = "";
- var leadingZeroes = true;
- var charAt;
- for (var i =0; i param ) {
+ return false;
+ }
}
- // now '11 check'
- var account = value.replace(/ /g,''); // remove spaces
- var sum = 0;
- var len = account.length;
- for (var pos=0; pos param ) {
+ return false;
+ }
+ }
+ }
+ }
-jQuery.validator.addMethod("bankorgiroaccountNL", function(value, element) {
- return this.optional(element) ||
- ($.validator.methods["bankaccountNL"].call(this, value, element)) ||
- ($.validator.methods["giroaccountNL"].call(this, value, element));
-}, "Please specify a valid bank or giro account number");
+ return true;
+}, $.validator.format( "File size must not exceed {0} bytes each." ) );
+// Limit the size of all files in a FileList.
+$.validator.addMethod( "maxsizetotal", function( value, element, param ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
-jQuery.validator.addMethod("time", function(value, element) {
- return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(value);
-}, "Please enter a valid time, between 00:00 and 23:59");
-jQuery.validator.addMethod("time12h", function(value, element) {
- return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value);
-}, "Please enter a valid time in 12-hour am/pm format");
+ if ( $( element ).attr( "type" ) === "file" ) {
+ if ( element.files && element.files.length ) {
+ var totalSize = 0;
-/**
- * matches US phone number format
- *
- * where the area code may not start with 1 and the prefix may not start with 1
- * allows '-' or ' ' as a separator and allows parens around area code
- * some people may want to put a '1' in front of their number
- *
- * 1(212)-999-2345 or
- * 212 999 2344 or
- * 212-999-0983
+ for ( var i = 0; i < element.files.length; i++ ) {
+ totalSize += element.files[ i ].size;
+ if ( totalSize > param ) {
+ return false;
+ }
+ }
+ }
+ }
+
+ return true;
+}, $.validator.format( "Total size of all files must not exceed {0} bytes." ) );
+
+
+$.validator.addMethod( "mobileNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid mobile number." );
+
+$.validator.addMethod( "mobileRU", function( phone_number, element ) {
+ var ruPhone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || ruPhone_number.length > 9 && /^((\+7|7|8)+([0-9]){10})$/.test( ruPhone_number );
+}, "Please specify a valid mobile number." );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "mobileUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
+}, "Please specify a valid mobile number." );
+
+$.validator.addMethod( "netmask", function( value, element ) {
+ return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
+}, "Please enter a valid netmask." );
+
+/*
+ * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
+ * authorities to any foreigner.
*
- * but not
- * 111-123-5434
- * and not
- * 212 123 4567
+ * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
+ * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
+ * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
*/
-jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
- phone_number = phone_number.replace(/\s+/g, "");
- return this.optional(element) || phone_number.length > 9 &&
- phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
-}, "Please specify a valid phone number");
-
-jQuery.validator.addMethod('phoneUK', function(phone_number, element) {
- phone_number = phone_number.replace(/\(|\)|\s+|-/g,'');
- return this.optional(element) || phone_number.length > 9 &&
- phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/);
-}, 'Please specify a valid phone number');
-
-jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
- phone_number = phone_number.replace(/\(|\)|\s+|-/g,'');
- return this.optional(element) || phone_number.length > 9 &&
- phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/);
-}, 'Please specify a valid mobile number');
-
-//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
-jQuery.validator.addMethod('phonesUK', function(phone_number, element) {
- phone_number = phone_number.replace(/\(|\)|\s+|-/g,'');
- return this.optional(element) || phone_number.length > 9 &&
- phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/);
-}, 'Please specify a valid uk phone number');
-// On the above three UK functions, do the following server side processing:
-// Compare original input with this RegEx pattern:
-// ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
-// Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
-// Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
-// A number of very detailed GB telephone number RegEx patterns can also be found at:
-// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+$.validator.addMethod( "nieES", function( value, element ) {
+ "use strict";
-// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
-jQuery.validator.addMethod('postcodeUK', function(value, element) {
- return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value);
-}, 'Please specify a valid UK postcode');
+ if ( this.optional( element ) ) {
+ return true;
+ }
-// TODO check if value starts with <, otherwise don't try stripping anything
-jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
- return jQuery(value).text().length >= param;
-}, jQuery.validator.format("Please enter at least {0} characters"));
-
-// same as email, but TLD is optional
-jQuery.validator.addMethod("email2", function(value, element, param) {
- return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
-}, jQuery.validator.messages.email);
-
-// same as url, but TLD is optional
-jQuery.validator.addMethod("url2", function(value, element, param) {
- return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
-}, jQuery.validator.messages.url);
-
-// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
-// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
-// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
-jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
- if (/[^0-9\-]+/.test(value)) {
+ var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
+ var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
+ letter = value.substr( value.length - 1 ).toUpperCase(),
+ number;
+
+ value = value.toString().toUpperCase();
+
+ // Quick format test
+ if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
return false;
}
- value = value.replace(/\D/g, "");
+ // X means same number
+ // Y means number + 10000000
+ // Z means number + 20000000
+ value = value.replace( /^[X]/, "0" )
+ .replace( /^[Y]/, "1" )
+ .replace( /^[Z]/, "2" );
- var validTypes = 0x0000;
+ number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
- if (param.mastercard) {
- validTypes |= 0x0001;
- }
- if (param.visa) {
- validTypes |= 0x0002;
- }
- if (param.amex) {
- validTypes |= 0x0004;
- }
- if (param.dinersclub) {
- validTypes |= 0x0008;
- }
- if (param.enroute) {
- validTypes |= 0x0010;
- }
- if (param.discover) {
- validTypes |= 0x0020;
- }
- if (param.jcb) {
- validTypes |= 0x0040;
- }
- if (param.unknown) {
- validTypes |= 0x0080;
- }
- if (param.all) {
- validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+ return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
+
+}, "Please specify a valid NIE number." );
+
+/*
+ * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
+ */
+$.validator.addMethod( "nifES", function( value, element ) {
+ "use strict";
+
+ if ( this.optional( element ) ) {
+ return true;
}
- if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard
- return value.length === 16;
+
+ value = value.toUpperCase();
+
+ // Basic format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
}
- if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
- return value.length === 16;
+
+ // Test NIF
+ if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
+ return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
}
- if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex
- return value.length === 15;
+
+ // Test specials NIF (starts with K, L or M)
+ if ( /^[KLM]{1}/.test( value ) ) {
+ return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
}
- if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub
- return value.length === 14;
+
+ return false;
+
+}, "Please specify a valid NIF number." );
+
+/*
+ * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
+ */
+$.validator.addMethod( "nipPL", function( value ) {
+ "use strict";
+
+ value = value.replace( /[^0-9]/g, "" );
+
+ if ( value.length !== 10 ) {
+ return false;
}
- if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute
- return value.length === 15;
+
+ var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
+ var intSum = 0;
+ for ( var i = 0; i < 9; i++ ) {
+ intSum += arrSteps[ i ] * value[ i ];
}
- if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
- return value.length === 16;
+ var int2 = intSum % 11;
+ var intControlNr = ( int2 === 10 ) ? 0 : int2;
+
+ return ( intControlNr === parseInt( value[ 9 ], 10 ) );
+}, "Please specify a valid NIP number." );
+
+/**
+ * Created for project jquery-validation.
+ * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a
+ * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers
+ * that are being used for validation.
+ * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça
+ * @author Cleiton da Silva Mendonça
+ * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça
+ * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça
+ */
+$.validator.addMethod( "nisBR", function( value ) {
+ var number;
+ var cn;
+ var sum = 0;
+ var dv;
+ var count;
+ var multiplier;
+
+ // Removing special characters from value
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+ // Checking value to have 11 digits only
+ if ( value.length !== 11 ) {
+ return false;
}
- if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
- return value.length === 16;
+
+ //Get check number of value
+ cn = parseInt( value.substring( 10, 11 ), 10 );
+
+ //Get number with 10 digits of the value
+ number = parseInt( value.substring( 0, 10 ), 10 );
+
+ for ( count = 2; count < 12; count++ ) {
+ multiplier = count;
+ if ( count === 10 ) {
+ multiplier = 2;
+ }
+ if ( count === 11 ) {
+ multiplier = 3;
+ }
+ sum += ( ( number % 10 ) * multiplier );
+ number = parseInt( number / 10, 10 );
}
- if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
- return value.length === 15;
+ dv = ( sum % 11 );
+
+ if ( dv > 1 ) {
+ dv = ( 11 - dv );
+ } else {
+ dv = 0;
}
- if (validTypes & 0x0080) { //unknown
+
+ if ( cn === dv ) {
return true;
+ } else {
+ return false;
}
- return false;
-}, "Please enter a valid credit card number.");
+}, "Please specify a valid NIS/PIS number." );
-jQuery.validator.addMethod("ipv4", function(value, element, param) {
- return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value);
-}, "Please enter a valid IP v4 address.");
+$.validator.addMethod( "notEqualTo", function( value, element, param ) {
+ return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
+}, "Please enter a different value, values must not be the same." );
-jQuery.validator.addMethod("ipv6", function(value, element, param) {
- return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);
-}, "Please enter a valid IP v6 address.");
+$.validator.addMethod( "nowhitespace", function( value, element ) {
+ return this.optional( element ) || /^\S+$/i.test( value );
+}, "No white space please." );
/**
* Return true if the field value matches the given format RegExp
*
-* @example jQuery.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
+* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
* @result true
*
-* @example jQuery.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
+* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
* @result false
*
-* @name jQuery.validator.methods.pattern
+* @name $.validator.methods.pattern
* @type Boolean
* @cat Plugins/Validate/Methods
*/
-jQuery.validator.addMethod("pattern", function(value, element, param) {
- if (this.optional(element)) {
+$.validator.addMethod( "pattern", function( value, element, param ) {
+ if ( this.optional( element ) ) {
return true;
}
- if (typeof param === 'string') {
- param = new RegExp('^(?:' + param + ')$');
+ if ( typeof param === "string" ) {
+ param = new RegExp( "^(?:" + param + ")$" );
}
- return param.test(value);
-}, "Invalid format.");
+ return param.test( value );
+}, "Invalid format." );
+
+/**
+ * Dutch phone numbers have 10 digits (or 11 and start with +31).
+ */
+$.validator.addMethod( "phoneNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid phone number." );
+
+/**
+ * Polish telephone numbers have 9 digits.
+ *
+ * Mobile phone numbers starts with following digits:
+ * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88.
+ *
+ * Fixed-line numbers starts with area codes:
+ * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33,
+ * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61,
+ * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84,
+ * 85, 86, 87, 89, 91, 94, 95.
+ *
+ * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39.
+ *
+ * Excludes intelligent networks (premium rate, shared cost, free phone numbers).
+ *
+ * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en
+ */
+$.validator.addMethod( "phonePL", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\s+/g, "" );
+ var regexp = /^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/;
+ return this.optional( element ) || regexp.test( phone_number );
+}, "Please specify a valid phone number." );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+
+// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
+$.validator.addMethod( "phonesUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
+}, "Please specify a valid uk phone number." );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "phoneUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
+}, "Please specify a valid phone number." );
+
+/**
+ * Matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345 or
+ * 212 999 2344 or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+$.validator.addMethod( "phoneUS", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\s+/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/ );
+}, "Please specify a valid phone number." );
+
+/*
+* Valida CEPs do brasileiros:
+*
+* Formatos aceitos:
+* 99999-999
+* 99.999-999
+* 99999999
+*/
+$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
+ return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
+}, "Informe um CEP válido." );
+
+/**
+ * Matches a valid Canadian Postal Code
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
+ * @result true
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
+ * @result false
+ *
+ * @name jQuery.validator.methods.postalCodeCA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "postalCodeCA", function( value, element ) {
+ return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
+}, "Please specify a valid postal code." );
+/* Matches Italian postcode (CAP) */
+$.validator.addMethod( "postalcodeIT", function( value, element ) {
+ return this.optional( element ) || /^\d{5}$/.test( value );
+}, "Please specify a valid postal code." );
+
+$.validator.addMethod( "postalcodeNL", function( value, element ) {
+ return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
+}, "Please specify a valid postal code." );
+
+// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
+$.validator.addMethod( "postcodeUK", function( value, element ) {
+ return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
+}, "Please specify a valid UK postcode." );
/*
* Lets you say "at least X inputs that match selector Y must be filled."
*
* The end result is that neither of these inputs:
*
- *
- *
+ *
+ *
*
- * ...will validate unless at least one of them is filled.
+ * ...will validate unless at least one of them is filled.
*
- * partnumber: {require_from_group: [1,".productinfo"]},
+ * partnumber: {require_from_group: [1,".productinfo"]},
* description: {require_from_group: [1,".productinfo"]}
*
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
*/
-jQuery.validator.addMethod("require_from_group", function(value, element, options) {
- var validator = this;
- var selector = options[1];
- var validOrNot = $(selector, element.form).filter(function() {
- return validator.elementValue(this);
- }).length >= options[0];
-
- if(!$(element).data('being_validated')) {
- var fields = $(selector, element.form);
- fields.data('being_validated', true);
- fields.valid();
- fields.data('being_validated', false);
- }
- return validOrNot;
-}, jQuery.format("Please fill at least {0} of these fields."));
+$.validator.addMethod( "require_from_group", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
+ isValid = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length >= options[ 0 ];
+
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_req_grp", validator );
+
+ // If element isn't being validated, run each require_from_group field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please fill at least {0} of these fields." ) );
/*
* Lets you say "either at least X inputs that match selector Y must be filled,
@@ -546,72 +1335,178 @@ jQuery.validator.addMethod("require_from_group", function(value, element, option
*
* The end result, is that none of these inputs:
*
- *
- *
- *
+ *
+ *
+ *
*
- * ...will validate unless either at least two of them are filled,
- * OR none of them are.
+ * ...will validate unless either at least two of them are filled,
+ * OR none of them are.
*
- * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
- * description: {skip_or_fill_minimum: [2,".productinfo"]},
- * color: {skip_or_fill_minimum: [2,".productinfo"]}
+ * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
+ * description: {skip_or_fill_minimum: [2,".productinfo"]},
+ * color: {skip_or_fill_minimum: [2,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
*
*/
-jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) {
- var validator = this,
- numberRequired = options[0],
- selector = options[1];
- var numberFilled = $(selector, element.form).filter(function() {
- return validator.elementValue(this);
- }).length;
- var valid = numberFilled >= numberRequired || numberFilled === 0;
-
- if(!$(element).data('being_validated')) {
- var fields = $(selector, element.form);
- fields.data('being_validated', true);
- fields.valid();
- fields.data('being_validated', false);
- }
- return valid;
-}, jQuery.format("Please either skip these fields or fill at least {0} of them."));
+$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
+ numberFilled = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length,
+ isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
-// Accept a value from a file input based on a required mimetype
-jQuery.validator.addMethod("accept", function(value, element, param) {
- // Split mime on commas in case we have multiple types we can accept
- var typeParam = typeof param === "string" ? param.replace(/\s/g, '').replace(/,/g, '|') : "image/*",
- optionalValue = this.optional(element),
- i, file;
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_skip", validator );
- // Element is optional
- if (optionalValue) {
- return optionalValue;
+ // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
+
+/* Validates US States and/or Territories by @jdforsythe
+ * Can be case insensitive or require capitalization - default is case insensitive
+ * Can include US Territories or not - default does not
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
+ *
+ * Note: "States" always includes DC (District of Colombia)
+ *
+ * Usage examples:
+ *
+ * This is the default - case insensitive, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false,
+ * includeTerritories: false,
+ * includeMilitary: false
+ * }
+ *
+ * Only allow capital letters, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false
+ * }
+ *
+ * Case insensitive, include territories but not military zones
+ * stateInput: {
+ * includeTerritories: true
+ * }
+ *
+ * Only allow capital letters, include territories and military zones
+ * stateInput: {
+ * caseSensitive: true,
+ * includeTerritories: true,
+ * includeMilitary: true
+ * }
+ *
+ */
+$.validator.addMethod( "stateUS", function( value, element, options ) {
+ var isDefault = typeof options === "undefined",
+ caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
+ includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
+ includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
+ regex;
+
+ if ( !includeTerritories && !includeMilitary ) {
+ regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+ } else if ( includeTerritories && includeMilitary ) {
+ regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else if ( includeTerritories ) {
+ regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else {
+ regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
}
- if ($(element).attr("type") === "file") {
- // If we are using a wildcard, make it regex friendly
- typeParam = typeParam.replace(/\*/g, ".*");
+ regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
+ return this.optional( element ) || regex.test( value );
+}, "Please specify a valid state." );
- // Check if the element has a FileList before checking each file
- if (element.files && element.files.length) {
- for (i = 0; i < element.files.length; i++) {
- file = element.files[i];
+// TODO check if value starts with <, otherwise don't try stripping anything
+$.validator.addMethod( "strippedminlength", function( value, element, param ) {
+ return $( value ).text().length >= param;
+}, $.validator.format( "Please enter at least {0} characters." ) );
- // Grab the mimetype from the loaded file, verify it matches
- if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) {
- return false;
+$.validator.addMethod( "time", function( value, element ) {
+ return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
+}, "Please enter a valid time, between 00:00 and 23:59." );
+
+$.validator.addMethod( "time12h", function( value, element ) {
+ return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
+}, "Please enter a valid time in 12-hour am/pm format." );
+
+// Same as url, but TLD is optional
+$.validator.addMethod( "url2", function( value, element ) {
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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,}\.?)|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff])|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62}\.)))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
+}, $.validator.messages.url );
+
+/**
+ * Return true, if the value is a valid vehicle identification number (VIN).
+ *
+ * Works with all kind of text inputs.
+ *
+ * @example
+ * @desc Declares a required input element whose value must be a valid vehicle identification number.
+ *
+ * @name $.validator.methods.vinUS
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "vinUS", function( v ) {
+ if ( v.length !== 17 ) {
+ return false;
+ }
+
+ var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
+ VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
+ rs = 0,
+ i, n, d, f, cd, cdv;
+
+ for ( i = 0; i < 17; i++ ) {
+ f = FL[ i ];
+ d = v.slice( i, i + 1 );
+ if ( i === 8 ) {
+ cdv = d;
+ }
+ if ( !isNaN( d ) ) {
+ d *= f;
+ } else {
+ for ( n = 0; n < LL.length; n++ ) {
+ if ( d.toUpperCase() === LL[ n ] ) {
+ d = VL[ n ];
+ d *= f;
+ if ( isNaN( cdv ) && n === 8 ) {
+ cdv = LL[ n ];
+ }
+ break;
}
}
}
+ rs += d;
+ }
+ cd = rs % 11;
+ if ( cd === 10 ) {
+ cd = "X";
}
+ if ( cd === cdv ) {
+ return true;
+ }
+ return false;
+}, "The specified vehicle identification number (VIN) is invalid." );
- // Either return true because we've validated each file, or because the
- // browser does not support element.files and the FileList feature
- return true;
-}, jQuery.format("Please enter a value with a valid mimetype."));
+$.validator.addMethod( "zipcodeUS", function( value, element ) {
+ return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
+}, "The specified US ZIP Code is invalid." );
-// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
-jQuery.validator.addMethod("extension", function(value, element, param) {
- param = typeof param === "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
- return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
-}, jQuery.format("Please enter a value with a valid extension."));
+$.validator.addMethod( "ziprange", function( value, element ) {
+ return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx." );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/additional-methods.min.js b/js/lib/jquery/plugins/validate/additional-methods.min.js
index 0c5539ad56e..80f14b58c2e 100644
--- a/js/lib/jquery/plugins/validate/additional-methods.min.js
+++ b/js/lib/jquery/plugins/validate/additional-methods.min.js
@@ -1,2 +1,4 @@
-/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
-* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(){function t(t){return t.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'"_+=\/\-]*/g,"")}jQuery.validator.addMethod("maxWords",function(e,i,a){return this.optional(i)||a>=t(e).match(/\b\w+\b/g).length},jQuery.validator.format("Please enter {0} words or less.")),jQuery.validator.addMethod("minWords",function(e,i,a){return this.optional(i)||t(e).match(/\b\w+\b/g).length>=a},jQuery.validator.format("Please enter at least {0} words.")),jQuery.validator.addMethod("rangeWords",function(e,i,a){var r=t(e),n=/\b\w+\b/g;return this.optional(i)||r.match(n).length>=a[0]&&r.match(n).length<=a[1]},jQuery.validator.format("Please enter between {0} and {1} words."))})(),jQuery.validator.addMethod("letterswithbasicpunc",function(t,e){return this.optional(e)||/^[a-z\-.,()'"\s]+$/i.test(t)},"Letters or punctuation only please"),jQuery.validator.addMethod("alphanumeric",function(t,e){return this.optional(e)||/^\w+$/i.test(t)},"Letters, numbers, and underscores only please"),jQuery.validator.addMethod("lettersonly",function(t,e){return this.optional(e)||/^[a-z]+$/i.test(t)},"Letters only please"),jQuery.validator.addMethod("nowhitespace",function(t,e){return this.optional(e)||/^\S+$/i.test(t)},"No white space please"),jQuery.validator.addMethod("ziprange",function(t,e){return this.optional(e)||/^90[2-5]\d\{2\}-\d{4}$/.test(t)},"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx"),jQuery.validator.addMethod("zipcodeUS",function(t,e){return this.optional(e)||/\d{5}-\d{4}$|^\d{5}$/.test(t)},"The specified US ZIP Code is invalid"),jQuery.validator.addMethod("integer",function(t,e){return this.optional(e)||/^-?\d+$/.test(t)},"A positive or negative non-decimal number please"),jQuery.validator.addMethod("vinUS",function(t){if(17!==t.length)return!1;var e,i,a,r,n,s,u=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],d=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],o=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],l=0;for(e=0;17>e;e++){if(r=o[e],a=t.slice(e,e+1),8===e&&(s=a),isNaN(a)){for(i=0;u.length>i;i++)if(a.toUpperCase()===u[i]){a=d[i],a*=r,isNaN(s)&&8===i&&(s=u[i]);break}}else a*=r;l+=a}return n=l%11,10===n&&(n="X"),n===s?!0:!1},"The specified vehicle identification number (VIN) is invalid."),jQuery.validator.addMethod("dateITA",function(t,e){var i=!1,a=/^\d{1,2}\/\d{1,2}\/\d{4}$/;if(a.test(t)){var r=t.split("/"),n=parseInt(r[0],10),s=parseInt(r[1],10),u=parseInt(r[2],10),d=new Date(u,s-1,n);i=d.getFullYear()===u&&d.getMonth()===s-1&&d.getDate()===n?!0:!1}else i=!1;return this.optional(e)||i},"Please enter a correct date"),jQuery.validator.addMethod("iban",function(t,e){if(this.optional(e))return!0;if(!/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(t))return!1;var i=t.replace(/ /g,"").toUpperCase(),a=i.substring(0,2),r={AL:"\\d{8}[\\dA-Z]{16}",AD:"\\d{8}[\\dA-Z]{12}",AT:"\\d{16}",AZ:"[\\dA-Z]{4}\\d{20}",BE:"\\d{12}",BH:"[A-Z]{4}[\\dA-Z]{14}",BA:"\\d{16}",BR:"\\d{23}[A-Z][\\dA-Z]",BG:"[A-Z]{4}\\d{6}[\\dA-Z]{8}",CR:"\\d{17}",HR:"\\d{17}",CY:"\\d{8}[\\dA-Z]{16}",CZ:"\\d{20}",DK:"\\d{14}",DO:"[A-Z]{4}\\d{20}",EE:"\\d{16}",FO:"\\d{14}",FI:"\\d{14}",FR:"\\d{10}[\\dA-Z]{11}\\d{2}",GE:"[\\dA-Z]{2}\\d{16}",DE:"\\d{18}",GI:"[A-Z]{4}[\\dA-Z]{15}",GR:"\\d{7}[\\dA-Z]{16}",GL:"\\d{14}",GT:"[\\dA-Z]{4}[\\dA-Z]{20}",HU:"\\d{24}",IS:"\\d{22}",IE:"[\\dA-Z]{4}\\d{14}",IL:"\\d{19}",IT:"[A-Z]\\d{10}[\\dA-Z]{12}",KZ:"\\d{3}[\\dA-Z]{13}",KW:"[A-Z]{4}[\\dA-Z]{22}",LV:"[A-Z]{4}[\\dA-Z]{13}",LB:"\\d{4}[\\dA-Z]{20}",LI:"\\d{5}[\\dA-Z]{12}",LT:"\\d{16}",LU:"\\d{3}[\\dA-Z]{13}",MK:"\\d{3}[\\dA-Z]{10}\\d{2}",MT:"[A-Z]{4}\\d{5}[\\dA-Z]{18}",MR:"\\d{23}",MU:"[A-Z]{4}\\d{19}[A-Z]{3}",MC:"\\d{10}[\\dA-Z]{11}\\d{2}",MD:"[\\dA-Z]{2}\\d{18}",ME:"\\d{18}",NL:"[A-Z]{4}\\d{10}",NO:"\\d{11}",PK:"[\\dA-Z]{4}\\d{16}",PS:"[\\dA-Z]{4}\\d{21}",PL:"\\d{24}",PT:"\\d{21}",RO:"[A-Z]{4}[\\dA-Z]{16}",SM:"[A-Z]\\d{10}[\\dA-Z]{12}",SA:"\\d{2}[\\dA-Z]{18}",RS:"\\d{18}",SK:"\\d{20}",SI:"\\d{15}",ES:"\\d{20}",SE:"\\d{20}",CH:"\\d{5}[\\dA-Z]{12}",TN:"\\d{20}",TR:"\\d{5}[\\dA-Z]{17}",AE:"\\d{3}\\d{16}",GB:"[A-Z]{4}\\d{14}",VG:"[\\dA-Z]{4}\\d{16}"},n=r[a];if(n!==void 0){var s=RegExp("^[A-Z]{2}\\d{2}"+n+"$","");if(!s.test(i))return!1}for(var u,d=i.substring(4,i.length)+i.substring(0,4),o="",l=!0,h=0;d.length>h;h++)u=d.charAt(h),"0"!==u&&(l=!1),l||(o+="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(u));for(var F="",c="",m=0;o.length>m;m++){var f=o.charAt(m);c=""+F+f,F=c%97}return 1===F},"Please specify a valid IBAN"),jQuery.validator.addMethod("dateNL",function(t,e){return this.optional(e)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(t)},"Please enter a correct date"),jQuery.validator.addMethod("phoneNL",function(t,e){return this.optional(e)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(t)},"Please specify a valid phone number."),jQuery.validator.addMethod("mobileNL",function(t,e){return this.optional(e)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(t)},"Please specify a valid mobile number"),jQuery.validator.addMethod("postalcodeNL",function(t,e){return this.optional(e)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(t)},"Please specify a valid postal code"),jQuery.validator.addMethod("bankaccountNL",function(t,e){if(this.optional(e))return!0;if(!/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(t))return!1;for(var i=t.replace(/ /g,""),a=0,r=i.length,n=0;r>n;n++){var s=r-n,u=i.substring(n,n+1);a+=s*u}return 0===a%11},"Please specify a valid bank account number"),jQuery.validator.addMethod("giroaccountNL",function(t,e){return this.optional(e)||/^[0-9]{1,7}$/.test(t)},"Please specify a valid giro account number"),jQuery.validator.addMethod("bankorgiroaccountNL",function(t,e){return this.optional(e)||$.validator.methods.bankaccountNL.call(this,t,e)||$.validator.methods.giroaccountNL.call(this,t,e)},"Please specify a valid bank or giro account number"),jQuery.validator.addMethod("time",function(t,e){return this.optional(e)||/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(t)},"Please enter a valid time, between 00:00 and 23:59"),jQuery.validator.addMethod("time12h",function(t,e){return this.optional(e)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(t)},"Please enter a valid time in 12-hour am/pm format"),jQuery.validator.addMethod("phoneUS",function(t,e){return t=t.replace(/\s+/g,""),this.optional(e)||t.length>9&&t.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number"),jQuery.validator.addMethod("phoneUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||t.length>9&&t.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),jQuery.validator.addMethod("mobileUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||t.length>9&&t.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),jQuery.validator.addMethod("phonesUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||t.length>9&&t.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),jQuery.validator.addMethod("postcodeUK",function(t,e){return this.optional(e)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(t)},"Please specify a valid UK postcode"),jQuery.validator.addMethod("strippedminlength",function(t,e,i){return jQuery(t).text().length>=i},jQuery.validator.format("Please enter at least {0} characters")),jQuery.validator.addMethod("email2",function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(t)},jQuery.validator.messages.email),jQuery.validator.addMethod("url2",function(t,e){return this.optional(e)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},jQuery.validator.messages.url),jQuery.validator.addMethod("creditcardtypes",function(t,e,i){if(/[^0-9\-]+/.test(t))return!1;t=t.replace(/\D/g,"");var a=0;return i.mastercard&&(a|=1),i.visa&&(a|=2),i.amex&&(a|=4),i.dinersclub&&(a|=8),i.enroute&&(a|=16),i.discover&&(a|=32),i.jcb&&(a|=64),i.unknown&&(a|=128),i.all&&(a=255),1&a&&/^(5[12345])/.test(t)?16===t.length:2&a&&/^(4)/.test(t)?16===t.length:4&a&&/^(3[47])/.test(t)?15===t.length:8&a&&/^(3(0[012345]|[68]))/.test(t)?14===t.length:16&a&&/^(2(014|149))/.test(t)?15===t.length:32&a&&/^(6011)/.test(t)?16===t.length:64&a&&/^(3)/.test(t)?16===t.length:64&a&&/^(2131|1800)/.test(t)?15===t.length:128&a?!0:!1},"Please enter a valid credit card number."),jQuery.validator.addMethod("ipv4",function(t,e){return this.optional(e)||/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(t)},"Please enter a valid IP v4 address."),jQuery.validator.addMethod("ipv6",function(t,e){return this.optional(e)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(t)},"Please enter a valid IP v6 address."),jQuery.validator.addMethod("pattern",function(t,e,i){return this.optional(e)?!0:("string"==typeof i&&(i=RegExp("^(?:"+i+")$")),i.test(t))},"Invalid format."),jQuery.validator.addMethod("require_from_group",function(t,e,i){var a=this,r=i[1],n=$(r,e.form).filter(function(){return a.elementValue(this)}).length>=i[0];if(!$(e).data("being_validated")){var s=$(r,e.form);s.data("being_validated",!0),s.valid(),s.data("being_validated",!1)}return n},jQuery.format("Please fill at least {0} of these fields.")),jQuery.validator.addMethod("skip_or_fill_minimum",function(t,e,i){var a=this,r=i[0],n=i[1],s=$(n,e.form).filter(function(){return a.elementValue(this)}).length,u=s>=r||0===s;if(!$(e).data("being_validated")){var d=$(n,e.form);d.data("being_validated",!0),d.valid(),d.data("being_validated",!1)}return u},jQuery.format("Please either skip these fields or fill at least {0} of them.")),jQuery.validator.addMethod("accept",function(t,e,i){var a,r,n="string"==typeof i?i.replace(/\s/g,"").replace(/,/g,"|"):"image/*",s=this.optional(e);if(s)return s;if("file"===$(e).attr("type")&&(n=n.replace(/\*/g,".*"),e.files&&e.files.length))for(a=0;e.files.length>a;a++)if(r=e.files[a],!r.type.match(RegExp(".?("+n+")$","i")))return!1;return!0},jQuery.format("Please enter a value with a valid mimetype.")),jQuery.validator.addMethod("extension",function(t,e,i){return i="string"==typeof i?i.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(e)||t.match(RegExp(".("+i+")$","i"))},jQuery.format("Please enter a value with a valid extension."));
\ No newline at end of file
+/*! jQuery Validation Plugin - v1.19.5 - 7/1/2022
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("abaRoutingNumber",function(a){var b=0,c=a.split(""),d=c.length;if(9!==d)return!1;for(var e=0;e9?"0":f,g="JABCDEFGHI".substr(f,1).toString(),i.match(/[ABEH]/)?k===f:i.match(/[KPQS]/)?k===g:k===f||k===g},"Please specify a valid CIF number."),a.validator.addMethod("cnhBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f,g,h=0,i=0;if(b=a.charAt(0),new Array(12).join(b)===a)return!1;for(e=0,f=9,g=0;e<9;++e,--f)h+=+(a.charAt(e)*f);for(c=h%11,c>=10&&(c=0,i=2),h=0,e=0,f=1,g=0;e<9;++e,++f)h+=+(a.charAt(e)*f);return d=h%11,d>=10?d=0:d-=i,String(c).concat(d)===a.substr(-2)},"Please specify a valid CNH number."),a.validator.addMethod("cnpjBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/[^\d]+/g,""),14!==a.length)return!1;if("00000000000000"===a||"11111111111111"===a||"22222222222222"===a||"33333333333333"===a||"44444444444444"===a||"55555555555555"===a||"66666666666666"===a||"77777777777777"===a||"88888888888888"===a||"99999999999999"===a)return!1;for(var c=a.length-2,d=a.substring(0,c),e=a.substring(c),f=0,g=c-7,h=c;h>=1;h--)f+=d.charAt(c-h)*g--,g<2&&(g=9);var i=f%11<2?0:11-f%11;if(i!==parseInt(e.charAt(0),10))return!1;c+=1,d=a.substring(0,c),f=0,g=c-7;for(var j=c;j>=1;j--)f+=d.charAt(c-j)*g--,g<2&&(g=9);return i=f%11<2?0:11-f%11,i===parseInt(e.charAt(1),10)},"Please specify a CNPJ value number."),a.validator.addMethod("cpfBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var c,d,e,f,g=0;if(c=parseInt(a.substring(9,10),10),d=parseInt(a.substring(10,11),10),e=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(f=1;f<=9;f++)g+=parseInt(a.substring(f-1,f),10)*(11-f);if(e(g,c)){for(g=0,f=1;f<=10;f++)g+=parseInt(a.substring(f-1,f),10)*(12-f);return e(g,d)}return!1},"Please specify a valid CPF number."),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&(/^(5[12345])/.test(a)||/^(2[234567])/.test(a))?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency."),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number."),a.validator.addMethod("greaterThan",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThan-blur").length&&e.addClass("validate-greaterThan-blur").on("blur.validate-greaterThan",function(){a(c).valid()}),b>e.val()},"Please enter a greater value."),a.validator.addMethod("greaterThanEqual",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThanEqual-blur").length&&e.addClass("validate-greaterThanEqual-blur").on("blur.validate-greaterThanEqual",function(){a(c).valid()}),b>=e.val()},"Please enter a greater value."),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="",q=5;if(l.lengthd)},a.validator.format("Please select no more than {0} files.")),a.validator.addMethod("maxsize",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0;ed)return!1;return!0},a.validator.format("File size must not exceed {0} bytes each.")),a.validator.addMethod("maxsizetotal",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0,f=0;fd)return!1;return!0},a.validator.format("Total size of all files must not exceed {0} bytes.")),a.validator.addMethod("mobileNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid mobile number."),a.validator.addMethod("mobileRU",function(a,b){var c=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||c.length>9&&/^((\+7|7|8)+([0-9]){10})$/.test(c)},"Please specify a valid mobile number."),a.validator.addMethod("mobileUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number."),a.validator.addMethod("netmask",function(a,b){return this.optional(b)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(a)},"Please enter a valid netmask."),a.validator.addMethod("nieES",function(a,b){"use strict";if(this.optional(b))return!0;var c,d=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),e="TRWAGMYFPDXBNJZSQVHLCKET",f=a.substr(a.length-1).toUpperCase();return a=a.toString().toUpperCase(),!(a.length>10||a.length<9||!d.test(a))&&(a=a.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2"),c=9===a.length?a.substr(0,8):a.substr(0,9),e.charAt(parseInt(c,10)%23)===f)},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a,b){"use strict";return!!this.optional(b)||(a=a.toUpperCase(),!!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,1)%23)))},"Please specify a valid NIF number."),a.validator.addMethod("nipPL",function(a){"use strict";if(a=a.replace(/[^0-9]/g,""),10!==a.length)return!1;for(var b=[6,5,7,2,3,4,5,6,7],c=0,d=0;d<9;d++)c+=b[d]*a[d];var e=c%11,f=10===e?0:e;return f===parseInt(a[9],10)},"Please specify a valid NIP number."),a.validator.addMethod("nisBR",function(a){var b,c,d,e,f,g=0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;for(c=parseInt(a.substring(10,11),10),b=parseInt(a.substring(0,10),10),e=2;e<12;e++)f=e,10===e&&(f=2),11===e&&(f=3),g+=b%10*f,b=parseInt(b/10,10);return d=g%11,d=d>1?11-d:0,c===d},"Please specify a valid NIS/PIS number."),a.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please."),a.validator.addMethod("pattern",function(a,b,c){return!!this.optional(b)||("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonePL",function(a,b){a=a.replace(/\s+/g,"");var c=/^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/;return this.optional(b)||c.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number."),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number."),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number."),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode."),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=!e&&"undefined"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&"undefined"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&"undefined"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state."),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters.")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59."),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format."),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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,}\.?)|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff])|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62}\.)))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c").attr("name", validator.submitButton.name).val( $(validator.submitButton).val() ).appendTo(validator.currentForm);
- }
- validator.settings.submitHandler.call( validator, validator.currentForm, event );
- if ( validator.submitButton ) {
- // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+ var hidden, result;
+
+ // Insert a hidden input as a replacement for the missing submit button
+ // The hidden input is inserted in two cases:
+ // - A user defined a `submitHandler`
+ // - There was a pending request due to `remote` method and `stopRequest()`
+ // was called to submit the form in case it's valid
+ if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
+ hidden = $( "" )
+ .attr( "name", validator.submitButton.name )
+ .val( $( validator.submitButton ).val() )
+ .appendTo( validator.currentForm );
+ }
+
+ if ( validator.settings.submitHandler && !validator.settings.debug ) {
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
+ if ( hidden ) {
+
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
hidden.remove();
}
+ if ( result !== undefined ) {
+ return result;
+ }
return false;
}
return true;
}
- // prevent submit for invalid forms or custom submit handlers
+ // Prevent submit for invalid forms or custom submit handlers
if ( validator.cancelSubmit ) {
validator.cancelSubmit = false;
return handle();
@@ -90,190 +113,257 @@ $.extend($.fn, {
validator.focusInvalid();
return false;
}
- });
+ } );
}
return validator;
},
- // http://docs.jquery.com/Plugins/Validation/valid
+
+ // https://jqueryvalidation.org/valid/
valid: function() {
- if ( $(this[0]).is("form")) {
- return this.validate().form();
+ var valid, validator, errorList;
+
+ if ( $( this[ 0 ] ).is( "form" ) ) {
+ valid = this.validate().form();
} else {
- var valid = true;
- var validator = $(this[0].form).validate();
- this.each(function() {
- valid = valid && validator.element(this);
- });
- return valid;
+ errorList = [];
+ valid = true;
+ validator = $( this[ 0 ].form ).validate();
+ this.each( function() {
+ valid = validator.element( this ) && valid;
+ if ( !valid ) {
+ errorList = errorList.concat( validator.errorList );
+ }
+ } );
+ validator.errorList = errorList;
}
+ return valid;
},
- // attributes: space seperated list of attributes to retrieve and remove
- removeAttrs: function( attributes ) {
- var result = {},
- $element = this;
- $.each(attributes.split(/\s/), function( index, value ) {
- result[value] = $element.attr(value);
- $element.removeAttr(value);
- });
- return result;
- },
- // http://docs.jquery.com/Plugins/Validation/rules
+
+ // https://jqueryvalidation.org/rules/
rules: function( command, argument ) {
- var element = this[0];
+ var element = this[ 0 ],
+ isContentEditable = typeof this.attr( "contenteditable" ) !== "undefined" && this.attr( "contenteditable" ) !== "false",
+ settings, staticRules, existingRules, data, param, filtered;
+
+ // If nothing is selected, return empty object; can't chain anyway
+ if ( element == null ) {
+ return;
+ }
+
+ if ( !element.form && isContentEditable ) {
+ element.form = this.closest( "form" )[ 0 ];
+ element.name = this.attr( "name" );
+ }
+
+ if ( element.form == null ) {
+ return;
+ }
if ( command ) {
- var settings = $.data(element.form, "validator").settings;
- var staticRules = settings.rules;
- var existingRules = $.validator.staticRules(element);
- switch(command) {
+ settings = $.data( element.form, "validator" ).settings;
+ staticRules = settings.rules;
+ existingRules = $.validator.staticRules( element );
+ switch ( command ) {
case "add":
- $.extend(existingRules, $.validator.normalizeRule(argument));
- // remove messages from rules, but allow them to be set separetely
+ $.extend( existingRules, $.validator.normalizeRule( argument ) );
+
+ // Remove messages from rules, but allow them to be set separately
delete existingRules.messages;
- staticRules[element.name] = existingRules;
+ staticRules[ element.name ] = existingRules;
if ( argument.messages ) {
- settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+ settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
}
break;
case "remove":
if ( !argument ) {
- delete staticRules[element.name];
+ delete staticRules[ element.name ];
return existingRules;
}
- var filtered = {};
- $.each(argument.split(/\s/), function( index, method ) {
- filtered[method] = existingRules[method];
- delete existingRules[method];
- });
+ filtered = {};
+ $.each( argument.split( /\s/ ), function( index, method ) {
+ filtered[ method ] = existingRules[ method ];
+ delete existingRules[ method ];
+ } );
return filtered;
}
}
- var data = $.validator.normalizeRules(
+ data = $.validator.normalizeRules(
$.extend(
{},
- $.validator.classRules(element),
- $.validator.attributeRules(element),
- $.validator.dataRules(element),
- $.validator.staticRules(element)
- ), element);
+ $.validator.classRules( element ),
+ $.validator.attributeRules( element ),
+ $.validator.dataRules( element ),
+ $.validator.staticRules( element )
+ ), element );
- // make sure required is at front
+ // Make sure required is at front
if ( data.required ) {
- var param = data.required;
+ param = data.required;
delete data.required;
- data = $.extend({required: param}, data);
+ data = $.extend( { required: param }, data );
+ }
+
+ // Make sure remote is at back
+ if ( data.remote ) {
+ param = data.remote;
+ delete data.remote;
+ data = $.extend( data, { remote: param } );
}
return data;
}
-});
+} );
+
+// JQuery trim is deprecated, provide a trim method based on String.prototype.trim
+var trim = function( str ) {
+
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill
+ return str.replace( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "" );
+};
// Custom selectors
-$.extend($.expr[":"], {
- // http://docs.jquery.com/Plugins/Validation/blank
- blank: function( a ) { return !$.trim("" + $(a).val()); },
- // http://docs.jquery.com/Plugins/Validation/filled
- filled: function( a ) { return !!$.trim("" + $(a).val()); },
- // http://docs.jquery.com/Plugins/Validation/unchecked
- unchecked: function( a ) { return !$(a).prop("checked"); }
-});
-
-// constructor for validator
+$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
+
+ // https://jqueryvalidation.org/blank-selector/
+ blank: function( a ) {
+ return !trim( "" + $( a ).val() );
+ },
+
+ // https://jqueryvalidation.org/filled-selector/
+ filled: function( a ) {
+ var val = $( a ).val();
+ return val !== null && !!trim( "" + val );
+ },
+
+ // https://jqueryvalidation.org/unchecked-selector/
+ unchecked: function( a ) {
+ return !$( a ).prop( "checked" );
+ }
+} );
+
+// Constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
+// https://jqueryvalidation.org/jQuery.validator.format/
$.validator.format = function( source, params ) {
if ( arguments.length === 1 ) {
return function() {
- var args = $.makeArray(arguments);
- args.unshift(source);
+ var args = $.makeArray( arguments );
+ args.unshift( source );
return $.validator.format.apply( this, args );
};
}
+ if ( params === undefined ) {
+ return source;
+ }
if ( arguments.length > 2 && params.constructor !== Array ) {
- params = $.makeArray(arguments).slice(1);
+ params = $.makeArray( arguments ).slice( 1 );
}
if ( params.constructor !== Array ) {
params = [ params ];
}
- $.each(params, function( i, n ) {
- source = source.replace( new RegExp("\\{" + i + "\\}", "g"), function() {
+ $.each( params, function( i, n ) {
+ source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
return n;
- });
- });
+ } );
+ } );
return source;
};
-$.extend($.validator, {
+$.extend( $.validator, {
defaults: {
messages: {},
groups: {},
rules: {},
errorClass: "error",
+ pendingClass: "pending",
validClass: "valid",
errorElement: "label",
+ focusCleanup: false,
focusInvalid: true,
- errorContainer: $([]),
- errorLabelContainer: $([]),
+ errorContainer: $( [] ),
+ errorLabelContainer: $( [] ),
onsubmit: true,
ignore: ":hidden",
ignoreTitle: false,
- onfocusin: function( element, event ) {
+ onfocusin: function( element ) {
this.lastActive = element;
- // hide error label and remove error class on focus if enabled
- if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+ // Hide error label and remove error class on focus if enabled
+ if ( this.settings.focusCleanup ) {
if ( this.settings.unhighlight ) {
this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
}
- this.addWrapper(this.errorsFor(element)).hide();
+ this.hideThese( this.errorsFor( element ) );
}
},
- onfocusout: function( element, event ) {
- if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
- this.element(element);
+ onfocusout: function( element ) {
+ if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
+ this.element( element );
}
},
onkeyup: function( element, event ) {
- if ( event.which === 9 && this.elementValue(element) === "" ) {
+
+ // Avoid revalidate the field when pressing one of the following keys
+ // Shift => 16
+ // Ctrl => 17
+ // Alt => 18
+ // Caps lock => 20
+ // End => 35
+ // Home => 36
+ // Left arrow => 37
+ // Up arrow => 38
+ // Right arrow => 39
+ // Down arrow => 40
+ // Insert => 45
+ // Num lock => 144
+ // AltGr key => 225
+ var excludedKeys = [
+ 16, 17, 18, 20, 35, 36, 37,
+ 38, 39, 40, 45, 144, 225
+ ];
+
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
return;
- } else if ( element.name in this.submitted || element === this.lastElement ) {
- this.element(element);
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
+ this.element( element );
}
},
- onclick: function( element, event ) {
- // click on selects, radiobuttons and checkboxes
+ onclick: function( element ) {
+
+ // Click on selects, radiobuttons and checkboxes
if ( element.name in this.submitted ) {
- this.element(element);
- }
- // or option elements, check parent select in that case
- else if ( element.parentNode.name in this.submitted ) {
- this.element(element.parentNode);
+ this.element( element );
+
+ // Or option elements, check parent select in that case
+ } else if ( element.parentNode.name in this.submitted ) {
+ this.element( element.parentNode );
}
},
highlight: function( element, errorClass, validClass ) {
if ( element.type === "radio" ) {
- this.findByName(element.name).addClass(errorClass).removeClass(validClass);
+ this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
} else {
- $(element).addClass(errorClass).removeClass(validClass);
+ $( element ).addClass( errorClass ).removeClass( validClass );
}
},
unhighlight: function( element, errorClass, validClass ) {
if ( element.type === "radio" ) {
- this.findByName(element.name).removeClass(errorClass).addClass(validClass);
+ this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
} else {
- $(element).removeClass(errorClass).addClass(validClass);
+ $( element ).removeClass( errorClass ).addClass( validClass );
}
}
},
- // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+ // https://jqueryvalidation.org/jQuery.validator.setDefaults/
setDefaults: function( settings ) {
$.extend( $.validator.defaults, settings );
},
@@ -287,14 +377,14 @@ $.extend($.validator, {
dateISO: "Please enter a valid date (ISO).",
number: "Please enter a valid number.",
digits: "Please enter only digits.",
- creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
- maxlength: $.validator.format("Please enter no more than {0} characters."),
- minlength: $.validator.format("Please enter at least {0} characters."),
- rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
- range: $.validator.format("Please enter a value between {0} and {1}."),
- max: $.validator.format("Please enter a value less than or equal to {0}."),
- min: $.validator.format("Please enter a value greater than or equal to {0}.")
+ maxlength: $.validator.format( "Please enter no more than {0} characters." ),
+ minlength: $.validator.format( "Please enter at least {0} characters." ),
+ rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
+ range: $.validator.format( "Please enter a value between {0} and {1}." ),
+ max: $.validator.format( "Please enter a value less than or equal to {0}." ),
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
+ step: $.validator.format( "Please enter a multiple of {0}." )
},
autoCreateRanges: false,
@@ -302,9 +392,9 @@ $.extend($.validator, {
prototype: {
init: function() {
- this.labelContainer = $(this.settings.errorLabelContainer);
- this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
- this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+ this.labelContainer = $( this.settings.errorLabelContainer );
+ this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
+ this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
this.submitted = {};
this.valueCache = {};
this.pendingRequest = 0;
@@ -312,48 +402,68 @@ $.extend($.validator, {
this.invalid = {};
this.reset();
- var groups = (this.groups = {});
- $.each(this.settings.groups, function( key, value ) {
+ var currentForm = this.currentForm,
+ groups = ( this.groups = {} ),
+ rules;
+ $.each( this.settings.groups, function( key, value ) {
if ( typeof value === "string" ) {
- value = value.split(/\s/);
+ value = value.split( /\s/ );
}
- $.each(value, function( index, name ) {
- groups[name] = key;
- });
- });
- var rules = this.settings.rules;
- $.each(rules, function( key, value ) {
- rules[key] = $.validator.normalizeRule(value);
- });
-
- function delegate(event) {
- var validator = $.data(this[0].form, "validator"),
- eventType = "on" + event.type.replace(/^validate/, "");
- if ( validator.settings[eventType] ) {
- validator.settings[eventType].call(validator, this[0], event);
+ $.each( value, function( index, name ) {
+ groups[ name ] = key;
+ } );
+ } );
+ rules = this.settings.rules;
+ $.each( rules, function( key, value ) {
+ rules[ key ] = $.validator.normalizeRule( value );
+ } );
+
+ function delegate( event ) {
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
+
+ // Set form expando on contenteditable
+ if ( !this.form && isContentEditable ) {
+ this.form = $( this ).closest( "form" )[ 0 ];
+ this.name = $( this ).attr( "name" );
+ }
+
+ // Ignore the element if it belongs to another form. This will happen mainly
+ // when setting the `form` attribute of an input to the id of another form.
+ if ( currentForm !== this.form ) {
+ return;
+ }
+
+ var validator = $.data( this.form, "validator" ),
+ eventType = "on" + event.type.replace( /^validate/, "" ),
+ settings = validator.settings;
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
+ settings[ eventType ].call( validator, this, event );
}
}
- $(this.currentForm)
- .validateDelegate(":text, [type='password'], [type='file'], select, textarea, " +
- "[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
- "[type='email'], [type='datetime'], [type='date'], [type='month'], " +
- "[type='week'], [type='time'], [type='datetime-local'], " +
- "[type='range'], [type='color'] ",
- "focusin focusout keyup", delegate)
- .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate);
+
+ $( this.currentForm )
+ .on( "focusin.validate focusout.validate keyup.validate",
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
+ "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
+
+ // Support: Chrome, oldIE
+ // "select" is provided as event.target when clicking a option
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
if ( this.settings.invalidHandler ) {
- $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
}
},
- // http://docs.jquery.com/Plugins/Validation/Validator/form
+ // https://jqueryvalidation.org/Validator.form/
form: function() {
this.checkForm();
- $.extend(this.submitted, this.errorMap);
- this.invalid = $.extend({}, this.errorMap);
+ $.extend( this.submitted, this.errorMap );
+ this.invalid = $.extend( {}, this.errorMap );
if ( !this.valid() ) {
- $(this.currentForm).triggerHandler("invalid-form", [this]);
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
}
this.showErrors();
return this.valid();
@@ -361,48 +471,81 @@ $.extend($.validator, {
checkForm: function() {
this.prepareForm();
- for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
- this.check( elements[i] );
+ for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
+ this.check( elements[ i ] );
}
return this.valid();
},
- // http://docs.jquery.com/Plugins/Validation/Validator/element
+ // https://jqueryvalidation.org/Validator.element/
element: function( element ) {
- element = this.validationTargetFor( this.clean( element ) );
- this.lastElement = element;
- this.prepareElement( element );
- this.currentElements = $(element);
- var result = this.check( element ) !== false;
- if ( result ) {
- delete this.invalid[element.name];
+ var cleanElement = this.clean( element ),
+ checkElement = this.validationTargetFor( cleanElement ),
+ v = this,
+ result = true,
+ rs, group;
+
+ if ( checkElement === undefined ) {
+ delete this.invalid[ cleanElement.name ];
} else {
- this.invalid[element.name] = true;
- }
- if ( !this.numberOfInvalids() ) {
- // Hide error containers on last error
- this.toHide = this.toHide.add( this.containers );
+ this.prepareElement( checkElement );
+ this.currentElements = $( checkElement );
+
+ // If this element is grouped, then validate all group elements already
+ // containing a value
+ group = this.groups[ checkElement.name ];
+ if ( group ) {
+ $.each( this.groups, function( name, testgroup ) {
+ if ( testgroup === group && name !== checkElement.name ) {
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
+ if ( cleanElement && cleanElement.name in v.invalid ) {
+ v.currentElements.push( cleanElement );
+ result = v.check( cleanElement ) && result;
+ }
+ }
+ } );
+ }
+
+ rs = this.check( checkElement ) !== false;
+ result = result && rs;
+ if ( rs ) {
+ this.invalid[ checkElement.name ] = false;
+ } else {
+ this.invalid[ checkElement.name ] = true;
+ }
+
+ if ( !this.numberOfInvalids() ) {
+
+ // Hide error containers on last error
+ this.toHide = this.toHide.add( this.containers );
+ }
+ this.showErrors();
+
+ // Add aria-invalid status for screen readers
+ $( element ).attr( "aria-invalid", !rs );
}
- this.showErrors();
+
return result;
},
- // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+ // https://jqueryvalidation.org/Validator.showErrors/
showErrors: function( errors ) {
if ( errors ) {
- // add items to error list and map
+ var validator = this;
+
+ // Add items to error list and map
$.extend( this.errorMap, errors );
- this.errorList = [];
- for ( var name in errors ) {
- this.errorList.push({
- message: errors[name],
- element: this.findByName(name)[0]
- });
- }
- // remove items from success list
+ this.errorList = $.map( this.errorMap, function( message, name ) {
+ return {
+ message: message,
+ element: validator.findByName( name )[ 0 ]
+ };
+ } );
+
+ // Remove items from success list
this.successList = $.grep( this.successList, function( element ) {
- return !(element.name in errors);
- });
+ return !( element.name in errors );
+ } );
}
if ( this.settings.showErrors ) {
this.settings.showErrors.call( this, this.errorMap, this.errorList );
@@ -411,32 +554,64 @@ $.extend($.validator, {
}
},
- // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+ // https://jqueryvalidation.org/Validator.resetForm/
resetForm: function() {
if ( $.fn.resetForm ) {
- $(this.currentForm).resetForm();
+ $( this.currentForm ).resetForm();
}
+ this.invalid = {};
this.submitted = {};
- this.lastElement = null;
this.prepareForm();
this.hideErrors();
- this.elements().removeClass( this.settings.errorClass ).removeData( "previousValue" );
+ var elements = this.elements()
+ .removeData( "previousValue" )
+ .removeAttr( "aria-invalid" );
+
+ this.resetElements( elements );
+ },
+
+ resetElements: function( elements ) {
+ var i;
+
+ if ( this.settings.unhighlight ) {
+ for ( i = 0; elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ],
+ this.settings.errorClass, "" );
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
+ }
+ } else {
+ elements
+ .removeClass( this.settings.errorClass )
+ .removeClass( this.settings.validClass );
+ }
},
numberOfInvalids: function() {
- return this.objectLength(this.invalid);
+ return this.objectLength( this.invalid );
},
objectLength: function( obj ) {
- var count = 0;
- for ( var i in obj ) {
- count++;
+ /* jshint unused: false */
+ var count = 0,
+ i;
+ for ( i in obj ) {
+
+ // This check allows counting elements with empty error
+ // message as invalid elements
+ if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
+ count++;
+ }
}
return count;
},
hideErrors: function() {
- this.addWrapper( this.toHide ).hide();
+ this.hideThese( this.toHide );
+ },
+
+ hideThese: function( errors ) {
+ errors.not( this.containers ).text( "" );
+ this.addWrapper( errors ).hide();
},
valid: function() {
@@ -450,64 +625,84 @@ $.extend($.validator, {
focusInvalid: function() {
if ( this.settings.focusInvalid ) {
try {
- $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
- .filter(":visible")
- .focus()
- // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
- .trigger("focusin");
- } catch(e) {
- // ignore IE throwing errors when focusing hidden elements
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
+ .filter( ":visible" )
+ .trigger( "focus" )
+
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+ .trigger( "focusin" );
+ } catch ( e ) {
+
+ // Ignore IE throwing errors when focusing hidden elements
}
}
},
findLastActive: function() {
var lastActive = this.lastActive;
- return lastActive && $.grep(this.errorList, function( n ) {
+ return lastActive && $.grep( this.errorList, function( n ) {
return n.element.name === lastActive.name;
- }).length === 1 && lastActive;
+ } ).length === 1 && lastActive;
},
elements: function() {
var validator = this,
rulesCache = {};
- // select all valid inputs inside the form (no submit or reset buttons)
- return $(this.currentForm)
- .find("input, select, textarea")
- .not(":submit, :reset, :image, [disabled]")
+ // Select all valid inputs inside the form (no submit or reset buttons)
+ return $( this.currentForm )
+ .find( "input, select, textarea, [contenteditable]" )
+ .not( ":submit, :reset, :image, :disabled" )
.not( this.settings.ignore )
- .filter(function() {
- if ( !this.name && validator.settings.debug && window.console ) {
- console.error( "%o has no name assigned", this);
+ .filter( function() {
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
+
+ if ( !name && validator.settings.debug && window.console ) {
+ console.error( "%o has no name assigned", this );
+ }
+
+ // Set form expando on contenteditable
+ if ( isContentEditable ) {
+ this.form = $( this ).closest( "form" )[ 0 ];
+ this.name = name;
}
- // select only the first element for each name, and only those with rules specified
- if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {
+ // Ignore elements that belong to other/nested forms
+ if ( this.form !== validator.currentForm ) {
return false;
}
- rulesCache[this.name] = true;
+ // Select only the first element for each name, and only those with rules specified
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
+ return false;
+ }
+
+ rulesCache[ name ] = true;
return true;
- });
+ } );
},
clean: function( selector ) {
- return $(selector)[0];
+ return $( selector )[ 0 ];
},
errors: function() {
- var errorClass = this.settings.errorClass.replace(" ", ".");
- return $(this.settings.errorElement + "." + errorClass, this.errorContext);
+ var errorClass = this.settings.errorClass.split( " " ).join( "." );
+ return $( this.settings.errorElement + "." + errorClass, this.errorContext );
},
- reset: function() {
+ resetInternals: function() {
this.successList = [];
this.errorList = [];
this.errorMap = {};
- this.toShow = $([]);
- this.toHide = $([]);
- this.currentElements = $([]);
+ this.toShow = $( [] );
+ this.toHide = $( [] );
+ },
+
+ reset: function() {
+ this.resetInternals();
+ this.currentElements = $( [] );
},
prepareForm: function() {
@@ -517,19 +712,53 @@ $.extend($.validator, {
prepareElement: function( element ) {
this.reset();
- this.toHide = this.errorsFor(element);
+ this.toHide = this.errorsFor( element );
},
elementValue: function( element ) {
- var type = $(element).attr("type"),
- val = $(element).val();
+ var $element = $( element ),
+ type = element.type,
+ isContentEditable = typeof $element.attr( "contenteditable" ) !== "undefined" && $element.attr( "contenteditable" ) !== "false",
+ val, idx;
if ( type === "radio" || type === "checkbox" ) {
- return $("input[name='" + $(element).attr("name") + "']:checked").val();
+ return this.findByName( element.name ).filter( ":checked" ).val();
+ } else if ( type === "number" && typeof element.validity !== "undefined" ) {
+ return element.validity.badInput ? "NaN" : $element.val();
+ }
+
+ if ( isContentEditable ) {
+ val = $element.text();
+ } else {
+ val = $element.val();
+ }
+
+ if ( type === "file" ) {
+
+ // Modern browser (chrome & safari)
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
+ return val.substr( 12 );
+ }
+
+ // Legacy browsers
+ // Unix-based path
+ idx = val.lastIndexOf( "/" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Windows-based path
+ idx = val.lastIndexOf( "\\" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Just the file name
+ return val;
}
if ( typeof val === "string" ) {
- return val.replace(/\r/g, "");
+ return val.replace( /\r/g, "" );
}
return val;
},
@@ -537,27 +766,47 @@ $.extend($.validator, {
check: function( element ) {
element = this.validationTargetFor( this.clean( element ) );
- var rules = $(element).rules();
- var dependencyMismatch = false;
- var val = this.elementValue(element);
- var result;
+ var rules = $( element ).rules(),
+ rulesCount = $.map( rules, function( n, i ) {
+ return i;
+ } ).length,
+ dependencyMismatch = false,
+ val = this.elementValue( element ),
+ result, method, rule, normalizer;
+
+ // Prioritize the local normalizer defined for this element over the global one
+ // if the former exists, otherwise user the global one in case it exists.
+ if ( typeof rules.normalizer === "function" ) {
+ normalizer = rules.normalizer;
+ } else if ( typeof this.settings.normalizer === "function" ) {
+ normalizer = this.settings.normalizer;
+ }
- for (var method in rules ) {
- var rule = { method: method, parameters: rules[method] };
- try {
+ // If normalizer is defined, then call it to retreive the changed value instead
+ // of using the real one.
+ // Note that `this` in the normalizer is `element`.
+ if ( normalizer ) {
+ val = normalizer.call( element, val );
+
+ // Delete the normalizer from rules to avoid treating it as a pre-defined method.
+ delete rules.normalizer;
+ }
- result = $.validator.methods[method].call( this, val, element, rule.parameters );
+ for ( method in rules ) {
+ rule = { method: method, parameters: rules[ method ] };
+ try {
+ result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
- // if a method indicates that the field is optional and therefore valid,
+ // If a method indicates that the field is optional and therefore valid,
// don't mark it as valid when there are no other rules
- if ( result === "dependency-mismatch" ) {
+ if ( result === "dependency-mismatch" && rulesCount === 1 ) {
dependencyMismatch = true;
continue;
}
dependencyMismatch = false;
if ( result === "pending" ) {
- this.toHide = this.toHide.not( this.errorsFor(element) );
+ this.toHide = this.toHide.not( this.errorsFor( element ) );
return;
}
@@ -565,70 +814,94 @@ $.extend($.validator, {
this.formatAndAdd( element, rule );
return false;
}
- } catch(e) {
+ } catch ( e ) {
if ( this.settings.debug && window.console ) {
console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
}
+ if ( e instanceof TypeError ) {
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
+ }
+
throw e;
}
}
if ( dependencyMismatch ) {
return;
}
- if ( this.objectLength(rules) ) {
- this.successList.push(element);
+ if ( this.objectLength( rules ) ) {
+ this.successList.push( element );
}
return true;
},
- // return the custom message for the given element and validation method
+ // Return the custom message for the given element and validation method
// specified in the element's HTML5 data attribute
+ // return the generic message if present and no method specific message is present
customDataMessage: function( element, method ) {
- return $(element).data("msg-" + method.toLowerCase()) || (element.attributes && $(element).attr("data-msg-" + method.toLowerCase()));
+ return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
+ method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
},
- // return the custom message for the given element name and validation method
+ // Return the custom message for the given element name and validation method
customMessage: function( name, method ) {
- var m = this.settings.messages[name];
- return m && (m.constructor === String ? m : m[method]);
+ var m = this.settings.messages[ name ];
+ return m && ( m.constructor === String ? m : m[ method ] );
},
- // return the first defined argument, allowing empty strings
+ // Return the first defined argument, allowing empty strings
findDefined: function() {
- for(var i = 0; i < arguments.length; i++) {
- if ( arguments[i] !== undefined ) {
- return arguments[i];
+ for ( var i = 0; i < arguments.length; i++ ) {
+ if ( arguments[ i ] !== undefined ) {
+ return arguments[ i ];
}
}
return undefined;
},
- defaultMessage: function( element, method ) {
- return this.findDefined(
- this.customMessage( element.name, method ),
- this.customDataMessage( element, method ),
- // title is never undefined, so handle empty string as undefined
- !this.settings.ignoreTitle && element.title || undefined,
- $.validator.messages[method],
- "Warning: No message defined for " + element.name + ""
- );
- },
+ // The second parameter 'rule' used to be a string, and extended to an object literal
+ // of the following form:
+ // rule = {
+ // method: "method name",
+ // parameters: "the given method parameters"
+ // }
+ //
+ // The old behavior still supported, kept to maintain backward compatibility with
+ // old code, and will be removed in the next major release.
+ defaultMessage: function( element, rule ) {
+ if ( typeof rule === "string" ) {
+ rule = { method: rule };
+ }
- formatAndAdd: function( element, rule ) {
- var message = this.defaultMessage( element, rule.method ),
+ var message = this.findDefined(
+ this.customMessage( element.name, rule.method ),
+ this.customDataMessage( element, rule.method ),
+
+ // 'title' is never undefined, so handle empty string as undefined
+ !this.settings.ignoreTitle && element.title || undefined,
+ $.validator.messages[ rule.method ],
+ "Warning: No message defined for " + element.name + ""
+ ),
theregex = /\$?\{(\d+)\}/g;
if ( typeof message === "function" ) {
- message = message.call(this, rule.parameters, element);
- } else if (theregex.test(message)) {
- message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
+ message = message.call( this, rule.parameters, element );
+ } else if ( theregex.test( message ) ) {
+ message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
}
- this.errorList.push({
+
+ return message;
+ },
+
+ formatAndAdd: function( element, rule ) {
+ var message = this.defaultMessage( element, rule );
+
+ this.errorList.push( {
message: message,
- element: element
- });
+ element: element,
+ method: rule.method
+ } );
- this.errorMap[element.name] = message;
- this.submitted[element.name] = message;
+ this.errorMap[ element.name ] = message;
+ this.submitted[ element.name ] = message;
},
addWrapper: function( toToggle ) {
@@ -639,9 +912,9 @@ $.extend($.validator, {
},
defaultShowErrors: function() {
- var i, elements;
- for ( i = 0; this.errorList[i]; i++ ) {
- var error = this.errorList[i];
+ var i, elements, error;
+ for ( i = 0; this.errorList[ i ]; i++ ) {
+ error = this.errorList[ i ];
if ( this.settings.highlight ) {
this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
}
@@ -651,13 +924,13 @@ $.extend($.validator, {
this.toShow = this.toShow.add( this.containers );
}
if ( this.settings.success ) {
- for ( i = 0; this.successList[i]; i++ ) {
- this.showLabel( this.successList[i] );
+ for ( i = 0; this.successList[ i ]; i++ ) {
+ this.showLabel( this.successList[ i ] );
}
}
if ( this.settings.unhighlight ) {
- for ( i = 0, elements = this.validElements(); elements[i]; i++ ) {
- this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+ for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
}
}
this.toHide = this.toHide.not( this.toShow );
@@ -666,216 +939,336 @@ $.extend($.validator, {
},
validElements: function() {
- return this.currentElements.not(this.invalidElements());
+ return this.currentElements.not( this.invalidElements() );
},
invalidElements: function() {
- return $(this.errorList).map(function() {
+ return $( this.errorList ).map( function() {
return this.element;
- });
+ } );
},
showLabel: function( element, message ) {
- var label = this.errorsFor( element );
- if ( label.length ) {
- // refresh error/success class
- label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
- // replace message on existing label
- label.html(message);
+ var place, group, errorID, v,
+ error = this.errorsFor( element ),
+ elementID = this.idOrName( element ),
+ describedBy = $( element ).attr( "aria-describedby" );
+
+ if ( error.length ) {
+
+ // Refresh error/success class
+ error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+ // Replace message on existing label
+ error.html( message );
} else {
- // create label
- label = $("<" + this.settings.errorElement + ">")
- .attr("for", this.idOrName(element))
- .addClass(this.settings.errorClass)
- .html(message || "");
+
+ // Create error element
+ error = $( "<" + this.settings.errorElement + ">" )
+ .attr( "id", elementID + "-error" )
+ .addClass( this.settings.errorClass )
+ .html( message || "" );
+
+ // Maintain reference to the element to be placed into the DOM
+ place = error;
if ( this.settings.wrapper ) {
- // make sure the element is visible, even in IE
+
+ // Make sure the element is visible, even in IE
// actually showing the wrapped element is handled elsewhere
- label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+ place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
}
- if ( !this.labelContainer.append(label).length ) {
- if ( this.settings.errorPlacement ) {
- this.settings.errorPlacement(label, $(element) );
- } else {
- label.insertAfter(element);
+ if ( this.labelContainer.length ) {
+ this.labelContainer.append( place );
+ } else if ( this.settings.errorPlacement ) {
+ this.settings.errorPlacement.call( this, place, $( element ) );
+ } else {
+ place.insertAfter( element );
+ }
+
+ // Link error back to the element
+ if ( error.is( "label" ) ) {
+
+ // If the error is a label, then associate using 'for'
+ error.attr( "for", elementID );
+
+ // If the element is not a child of an associated label, then it's necessary
+ // to explicitly apply aria-describedby
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
+ errorID = error.attr( "id" );
+
+ // Respect existing non-error aria-describedby
+ if ( !describedBy ) {
+ describedBy = errorID;
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
+
+ // Add to end of list if not already present
+ describedBy += " " + errorID;
+ }
+ $( element ).attr( "aria-describedby", describedBy );
+
+ // If this element is grouped, then assign to all elements in the same group
+ group = this.groups[ element.name ];
+ if ( group ) {
+ v = this;
+ $.each( v.groups, function( name, testgroup ) {
+ if ( testgroup === group ) {
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
+ .attr( "aria-describedby", error.attr( "id" ) );
+ }
+ } );
}
}
}
if ( !message && this.settings.success ) {
- label.text("");
+ error.text( "" );
if ( typeof this.settings.success === "string" ) {
- label.addClass( this.settings.success );
+ error.addClass( this.settings.success );
} else {
- this.settings.success( label, element );
+ this.settings.success( error, element );
}
}
- this.toShow = this.toShow.add(label);
+ this.toShow = this.toShow.add( error );
},
errorsFor: function( element ) {
- var name = this.idOrName(element);
- return this.errors().filter(function() {
- return $(this).attr("for") === name;
- });
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
+ describer = $( element ).attr( "aria-describedby" ),
+ selector = "label[for='" + name + "'], label[for='" + name + "'] *";
+
+ // 'aria-describedby' should directly reference the error element
+ if ( describer ) {
+ selector = selector + ", #" + this.escapeCssMeta( describer )
+ .replace( /\s+/g, ", #" );
+ }
+
+ return this
+ .errors()
+ .filter( selector );
+ },
+
+ // See https://api.jquery.com/category/selectors/, for CSS
+ // meta-characters that should be escaped in order to be used with JQuery
+ // as a literal part of a name/id or any selector.
+ escapeCssMeta: function( string ) {
+ if ( string === undefined ) {
+ return "";
+ }
+
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
},
idOrName: function( element ) {
- return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+ return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
},
validationTargetFor: function( element ) {
- // if radio/checkbox, validate first element in group instead
- if ( this.checkable(element) ) {
- element = this.findByName( element.name ).not(this.settings.ignore)[0];
+
+ // If radio/checkbox, validate first element in group instead
+ if ( this.checkable( element ) ) {
+ element = this.findByName( element.name );
}
- return element;
+
+ // Always apply ignore filter
+ return $( element ).not( this.settings.ignore )[ 0 ];
},
checkable: function( element ) {
- return (/radio|checkbox/i).test(element.type);
+ return ( /radio|checkbox/i ).test( element.type );
},
findByName: function( name ) {
- return $(this.currentForm).find("[name='" + name + "']");
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
},
getLength: function( value, element ) {
- switch( element.nodeName.toLowerCase() ) {
+ switch ( element.nodeName.toLowerCase() ) {
case "select":
- return $("option:selected", element).length;
+ return $( "option:selected", element ).length;
case "input":
- if ( this.checkable( element) ) {
- return this.findByName(element.name).filter(":checked").length;
+ if ( this.checkable( element ) ) {
+ return this.findByName( element.name ).filter( ":checked" ).length;
}
}
return value.length;
},
depend: function( param, element ) {
- return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
},
dependTypes: {
- "boolean": function( param, element ) {
+ "boolean": function( param ) {
return param;
},
"string": function( param, element ) {
- return !!$(param, element.form).length;
+ return !!$( param, element.form ).length;
},
"function": function( param, element ) {
- return param(element);
+ return param( element );
}
},
optional: function( element ) {
- var val = this.elementValue(element);
- return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
+ var val = this.elementValue( element );
+ return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
},
startRequest: function( element ) {
- if ( !this.pending[element.name] ) {
+ if ( !this.pending[ element.name ] ) {
this.pendingRequest++;
- this.pending[element.name] = true;
+ $( element ).addClass( this.settings.pendingClass );
+ this.pending[ element.name ] = true;
}
},
stopRequest: function( element, valid ) {
this.pendingRequest--;
- // sometimes synchronization fails, make sure pendingRequest is never < 0
+
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
if ( this.pendingRequest < 0 ) {
this.pendingRequest = 0;
}
- delete this.pending[element.name];
- if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
- $(this.currentForm).submit();
+ delete this.pending[ element.name ];
+ $( element ).removeClass( this.settings.pendingClass );
+ if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {
+ $( this.currentForm ).trigger( "submit" );
+
+ // Remove the hidden input that was used as a replacement for the
+ // missing submit button. The hidden input is added by `handle()`
+ // to ensure that the value of the used submit button is passed on
+ // for scripted submits triggered by this method
+ if ( this.submitButton ) {
+ $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
+ }
+
this.formSubmitted = false;
- } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
- $(this.currentForm).triggerHandler("invalid-form", [this]);
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
this.formSubmitted = false;
}
},
- previousValue: function( element ) {
- return $.data(element, "previousValue") || $.data(element, "previousValue", {
+ previousValue: function( element, method ) {
+ method = typeof method === "string" && method || "remote";
+
+ return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
old: null,
valid: true,
- message: this.defaultMessage( element, "remote" )
- });
+ message: this.defaultMessage( element, { method: method } )
+ } );
+ },
+
+ // Cleans up all forms and elements, removes validator-specific events
+ destroy: function() {
+ this.resetForm();
+
+ $( this.currentForm )
+ .off( ".validate" )
+ .removeData( "validator" )
+ .find( ".validate-equalTo-blur" )
+ .off( ".validate-equalTo" )
+ .removeClass( "validate-equalTo-blur" )
+ .find( ".validate-lessThan-blur" )
+ .off( ".validate-lessThan" )
+ .removeClass( "validate-lessThan-blur" )
+ .find( ".validate-lessThanEqual-blur" )
+ .off( ".validate-lessThanEqual" )
+ .removeClass( "validate-lessThanEqual-blur" )
+ .find( ".validate-greaterThanEqual-blur" )
+ .off( ".validate-greaterThanEqual" )
+ .removeClass( "validate-greaterThanEqual-blur" )
+ .find( ".validate-greaterThan-blur" )
+ .off( ".validate-greaterThan" )
+ .removeClass( "validate-greaterThan-blur" );
}
},
classRuleSettings: {
- required: {required: true},
- email: {email: true},
- url: {url: true},
- date: {date: true},
- dateISO: {dateISO: true},
- number: {number: true},
- digits: {digits: true},
- creditcard: {creditcard: true}
+ required: { required: true },
+ email: { email: true },
+ url: { url: true },
+ date: { date: true },
+ dateISO: { dateISO: true },
+ number: { number: true },
+ digits: { digits: true },
+ creditcard: { creditcard: true }
},
addClassRules: function( className, rules ) {
if ( className.constructor === String ) {
- this.classRuleSettings[className] = rules;
+ this.classRuleSettings[ className ] = rules;
} else {
- $.extend(this.classRuleSettings, className);
+ $.extend( this.classRuleSettings, className );
}
},
classRules: function( element ) {
- var rules = {};
- var classes = $(element).attr("class");
+ var rules = {},
+ classes = $( element ).attr( "class" );
+
if ( classes ) {
- $.each(classes.split(" "), function() {
+ $.each( classes.split( " " ), function() {
if ( this in $.validator.classRuleSettings ) {
- $.extend(rules, $.validator.classRuleSettings[this]);
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
}
- });
+ } );
}
return rules;
},
+ normalizeAttributeRule: function( rules, type, method, value ) {
+
+ // Convert the value to a number for number inputs, and for text for backwards compability
+ // allows type="date" and others to be compared as strings
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
+ value = Number( value );
+
+ // Support Opera Mini, which returns NaN for undefined minlength
+ if ( isNaN( value ) ) {
+ value = undefined;
+ }
+ }
+
+ if ( value || value === 0 ) {
+ rules[ method ] = value;
+ } else if ( type === method && type !== "range" ) {
+
+ // Exception: the jquery validate 'range' method
+ // does not test for the html5 'range' type
+ rules[ type === "date" ? "dateISO" : method ] = true;
+ }
+ },
+
attributeRules: function( element ) {
- var rules = {};
- var $element = $(element);
- var type = $element[0].getAttribute("type");
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
- for (var method in $.validator.methods) {
- var value;
+ for ( method in $.validator.methods ) {
- // support for in both html5 and older browsers
+ // Support for in both html5 and older browsers
if ( method === "required" ) {
- value = $element.get(0).getAttribute(method);
+ value = element.getAttribute( method );
+
// Some browsers return an empty string for the required attribute
// and non-HTML5 browsers might have required="" markup
if ( value === "" ) {
value = true;
}
- // force non-HTML5 browsers to return bool
+
+ // Force non-HTML5 browsers to return bool
value = !!value;
} else {
- value = $element.attr(method);
- }
-
- // convert the value to a number for number inputs, and for text for backwards compability
- // allows type="date" and others to be compared as strings
- if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
- value = Number(value);
+ value = $element.attr( method );
}
- if ( value ) {
- rules[method] = value;
- } else if ( type === method && type !== 'range' ) {
- // exception: the jquery validate 'range' method
- // does not test for the html5 'range' type
- rules[method] = true;
- }
+ this.normalizeAttributeRule( rules, type, method, value );
}
- // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
- if ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
+ if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
delete rules.maxlength;
}
@@ -883,84 +1276,96 @@ $.extend($.validator, {
},
dataRules: function( element ) {
- var method, value,
- rules = {}, $element = $(element);
- for (method in $.validator.methods) {
- value = $element.data("rule-" + method.toLowerCase());
- if ( value !== undefined ) {
- rules[method] = value;
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
+
+ for ( method in $.validator.methods ) {
+ value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
+
+ // Cast empty attributes like `data-rule-required` to `true`
+ if ( value === "" ) {
+ value = true;
}
+
+ this.normalizeAttributeRule( rules, type, method, value );
}
return rules;
},
staticRules: function( element ) {
- var rules = {};
- var validator = $.data(element.form, "validator");
+ var rules = {},
+ validator = $.data( element.form, "validator" );
+
if ( validator.settings.rules ) {
- rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+ rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
}
return rules;
},
normalizeRules: function( rules, element ) {
- // handle dependency check
- $.each(rules, function( prop, val ) {
- // ignore rule when param is explicitly false, eg. required:false
+
+ // Handle dependency check
+ $.each( rules, function( prop, val ) {
+
+ // Ignore rule when param is explicitly false, eg. required:false
if ( val === false ) {
- delete rules[prop];
+ delete rules[ prop ];
return;
}
if ( val.param || val.depends ) {
var keepRule = true;
- switch (typeof val.depends) {
+ switch ( typeof val.depends ) {
case "string":
- keepRule = !!$(val.depends, element.form).length;
+ keepRule = !!$( val.depends, element.form ).length;
break;
case "function":
- keepRule = val.depends.call(element, element);
+ keepRule = val.depends.call( element, element );
break;
}
if ( keepRule ) {
- rules[prop] = val.param !== undefined ? val.param : true;
+ rules[ prop ] = val.param !== undefined ? val.param : true;
} else {
- delete rules[prop];
+ $.data( element.form, "validator" ).resetElements( $( element ) );
+ delete rules[ prop ];
}
}
- });
+ } );
- // evaluate parameters
- $.each(rules, function( rule, parameter ) {
- rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
- });
+ // Evaluate parameters
+ $.each( rules, function( rule, parameter ) {
+ rules[ rule ] = typeof parameter === "function" && rule !== "normalizer" ? parameter( element ) : parameter;
+ } );
- // clean number parameters
- $.each(['minlength', 'maxlength'], function() {
- if ( rules[this] ) {
- rules[this] = Number(rules[this]);
+ // Clean number parameters
+ $.each( [ "minlength", "maxlength" ], function() {
+ if ( rules[ this ] ) {
+ rules[ this ] = Number( rules[ this ] );
}
- });
- $.each(['rangelength', 'range'], function() {
+ } );
+ $.each( [ "rangelength", "range" ], function() {
var parts;
- if ( rules[this] ) {
- if ( $.isArray(rules[this]) ) {
- rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
- } else if ( typeof rules[this] === "string" ) {
- parts = rules[this].split(/[\s,]+/);
- rules[this] = [Number(parts[0]), Number(parts[1])];
+ if ( rules[ this ] ) {
+ if ( Array.isArray( rules[ this ] ) ) {
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
+ } else if ( typeof rules[ this ] === "string" ) {
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
}
}
- });
+ } );
if ( $.validator.autoCreateRanges ) {
- // auto-create ranges
- if ( rules.min && rules.max ) {
- rules.range = [rules.min, rules.max];
+
+ // Auto-create ranges
+ if ( rules.min != null && rules.max != null ) {
+ rules.range = [ rules.min, rules.max ];
delete rules.min;
delete rules.max;
}
- if ( rules.minlength && rules.maxlength ) {
- rules.rangelength = [rules.minlength, rules.maxlength];
+ if ( rules.minlength != null && rules.maxlength != null ) {
+ rules.rangelength = [ rules.minlength, rules.maxlength ];
delete rules.minlength;
delete rules.maxlength;
}
@@ -973,259 +1378,284 @@ $.extend($.validator, {
normalizeRule: function( data ) {
if ( typeof data === "string" ) {
var transformed = {};
- $.each(data.split(/\s/), function() {
- transformed[this] = true;
- });
+ $.each( data.split( /\s/ ), function() {
+ transformed[ this ] = true;
+ } );
data = transformed;
}
return data;
},
- // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+ // https://jqueryvalidation.org/jQuery.validator.addMethod/
addMethod: function( name, method, message ) {
- $.validator.methods[name] = method;
- $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];
+ $.validator.methods[ name ] = method;
+ $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
if ( method.length < 3 ) {
- $.validator.addClassRules(name, $.validator.normalizeRule(name));
+ $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
}
},
+ // https://jqueryvalidation.org/jQuery.validator.methods/
methods: {
- // http://docs.jquery.com/Plugins/Validation/Methods/required
+ // https://jqueryvalidation.org/required-method/
required: function( value, element, param ) {
- // check if dependency is met
- if ( !this.depend(param, element) ) {
+
+ // Check if dependency is met
+ if ( !this.depend( param, element ) ) {
return "dependency-mismatch";
}
if ( element.nodeName.toLowerCase() === "select" ) {
- // could be an array for select-multiple or a string, both are fine this way
- var val = $(element).val();
+
+ // Could be an array for select-multiple or a string, both are fine this way
+ var val = $( element ).val();
return val && val.length > 0;
}
- if ( this.checkable(element) ) {
- return this.getLength(value, element) > 0;
+ if ( this.checkable( element ) ) {
+ return this.getLength( value, element ) > 0;
}
- return $.trim(value).length > 0;
+ return value !== undefined && value !== null && value.length > 0;
},
- // http://docs.jquery.com/Plugins/Validation/Methods/email
+ // https://jqueryvalidation.org/email-method/
email: function( value, element ) {
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
- return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
+
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
+ // Retrieved 2014-01-14
+ // If you have a problem with this implementation, report a bug against the above spec
+ // Or use custom methods to implement your own email validation
+ return 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 );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/url
+ // https://jqueryvalidation.org/url-method/
url: function( value, element ) {
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
- return this.optional(element) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
- },
- // http://docs.jquery.com/Plugins/Validation/Methods/date
- date: function( value, element ) {
- return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
+ // https://gist.github.com/dperini/729294
+ // see also https://mathiasbynens.be/demo/url-regex
+ // modified to allow protocol-relative URLs
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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 );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+ // https://jqueryvalidation.org/date-method/
+ date: ( function() {
+ var called = false;
+
+ return function( value, element ) {
+ if ( !called ) {
+ called = true;
+ if ( this.settings.debug && window.console ) {
+ console.warn(
+ "The `date` method is deprecated and will be removed in version '2.0.0'.\n" +
+ "Please don't use it, since it relies on the Date constructor, which\n" +
+ "behaves very differently across browsers and locales. Use `dateISO`\n" +
+ "instead or one of the locale specific methods in `localizations/`\n" +
+ "and `additional-methods.js`."
+ );
+ }
+ }
+
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
+ };
+ }() ),
+
+ // https://jqueryvalidation.org/dateISO-method/
dateISO: function( value, element ) {
- return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
+ return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/number
+ // https://jqueryvalidation.org/number-method/
number: function( value, element ) {
- return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/digits
+ // https://jqueryvalidation.org/digits-method/
digits: function( value, element ) {
- return this.optional(element) || /^\d+$/.test(value);
- },
-
- // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
- // based on http://en.wikipedia.org/wiki/Luhn
- creditcard: function( value, element ) {
- if ( this.optional(element) ) {
- return "dependency-mismatch";
- }
- // accept only spaces, digits and dashes
- if ( /[^0-9 \-]+/.test(value) ) {
- return false;
- }
- var nCheck = 0,
- nDigit = 0,
- bEven = false;
-
- value = value.replace(/\D/g, "");
-
- for (var n = value.length - 1; n >= 0; n--) {
- var cDigit = value.charAt(n);
- nDigit = parseInt(cDigit, 10);
- if ( bEven ) {
- if ( (nDigit *= 2) > 9 ) {
- nDigit -= 9;
- }
- }
- nCheck += nDigit;
- bEven = !bEven;
- }
-
- return (nCheck % 10) === 0;
+ return this.optional( element ) || /^\d+$/.test( value );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/minlength
+ // https://jqueryvalidation.org/minlength-method/
minlength: function( value, element, param ) {
- var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
- return this.optional(element) || length >= param;
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length >= param;
},
- // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+ // https://jqueryvalidation.org/maxlength-method/
maxlength: function( value, element, param ) {
- var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
- return this.optional(element) || length <= param;
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length <= param;
},
- // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+ // https://jqueryvalidation.org/rangelength-method/
rangelength: function( value, element, param ) {
- var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
- return this.optional(element) || ( length >= param[0] && length <= param[1] );
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/min
+ // https://jqueryvalidation.org/min-method/
min: function( value, element, param ) {
- return this.optional(element) || value >= param;
+ return this.optional( element ) || value >= param;
},
- // http://docs.jquery.com/Plugins/Validation/Methods/max
+ // https://jqueryvalidation.org/max-method/
max: function( value, element, param ) {
- return this.optional(element) || value <= param;
+ return this.optional( element ) || value <= param;
},
- // http://docs.jquery.com/Plugins/Validation/Methods/range
+ // https://jqueryvalidation.org/range-method/
range: function( value, element, param ) {
- return this.optional(element) || ( value >= param[0] && value <= param[1] );
+ return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
},
- // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+ // https://jqueryvalidation.org/step-method/
+ step: function( value, element, param ) {
+ var type = $( element ).attr( "type" ),
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
+ supportedTypes = [ "text", "number", "range" ],
+ re = new RegExp( "\\b" + type + "\\b" ),
+ notSupported = type && !re.test( supportedTypes.join() ),
+ decimalPlaces = function( num ) {
+ var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
+ if ( !match ) {
+ return 0;
+ }
+
+ // Number of digits right of decimal point.
+ return match[ 1 ] ? match[ 1 ].length : 0;
+ },
+ toInt = function( num ) {
+ return Math.round( num * Math.pow( 10, decimals ) );
+ },
+ valid = true,
+ decimals;
+
+ // Works only for text, number and range input types
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
+ if ( notSupported ) {
+ throw new Error( errorMessage );
+ }
+
+ decimals = decimalPlaces( param );
+
+ // Value can't have too many decimals
+ if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
+ valid = false;
+ }
+
+ return this.optional( element ) || valid;
+ },
+
+ // https://jqueryvalidation.org/equalTo-method/
equalTo: function( value, element, param ) {
- // bind to the blur event of the target in order to revalidate whenever the target field is updated
- // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
- var target = $(param);
- if ( this.settings.onfocusout ) {
- target.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
- $(element).valid();
- });
+
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
+ var target = $( param );
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
+ $( element ).valid();
+ } );
}
return value === target.val();
},
- // http://docs.jquery.com/Plugins/Validation/Methods/remote
- remote: function( value, element, param ) {
- if ( this.optional(element) ) {
+ // https://jqueryvalidation.org/remote-method/
+ remote: function( value, element, param, method ) {
+ if ( this.optional( element ) ) {
return "dependency-mismatch";
}
- var previous = this.previousValue(element);
- if (!this.settings.messages[element.name] ) {
- this.settings.messages[element.name] = {};
- }
- previous.originalMessage = this.settings.messages[element.name].remote;
- this.settings.messages[element.name].remote = previous.message;
+ method = typeof method === "string" && method || "remote";
+
+ var previous = this.previousValue( element, method ),
+ validator, data, optionDataString;
- param = typeof param === "string" && {url:param} || param;
+ if ( !this.settings.messages[ element.name ] ) {
+ this.settings.messages[ element.name ] = {};
+ }
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
+ this.settings.messages[ element.name ][ method ] = previous.message;
- if ( previous.old === value ) {
+ param = typeof param === "string" && { url: param } || param;
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
+ if ( previous.old === optionDataString ) {
return previous.valid;
}
- previous.old = value;
- var validator = this;
- this.startRequest(element);
- var data = {};
- data[element.name] = value;
- $.ajax($.extend(true, {
- url: param,
+ previous.old = optionDataString;
+ validator = this;
+ this.startRequest( element );
+ data = {};
+ data[ element.name ] = value;
+ $.ajax( $.extend( true, {
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
+ context: validator.currentForm,
success: function( response ) {
- validator.settings.messages[element.name].remote = previous.originalMessage;
- var valid = response === true || response === "true";
+ var valid = response === true || response === "true",
+ errors, message, submitted;
+
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
if ( valid ) {
- var submitted = validator.formSubmitted;
- validator.prepareElement(element);
+ submitted = validator.formSubmitted;
+ validator.resetInternals();
+ validator.toHide = validator.errorsFor( element );
validator.formSubmitted = submitted;
- validator.successList.push(element);
- delete validator.invalid[element.name];
+ validator.successList.push( element );
+ validator.invalid[ element.name ] = false;
validator.showErrors();
} else {
- var errors = {};
- var message = response || validator.defaultMessage( element, "remote" );
- errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
- validator.invalid[element.name] = true;
- validator.showErrors(errors);
+ errors = {};
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
+ errors[ element.name ] = previous.message = message;
+ validator.invalid[ element.name ] = true;
+ validator.showErrors( errors );
}
previous.valid = valid;
- validator.stopRequest(element, valid);
+ validator.stopRequest( element, valid );
}
- }, param));
+ }, param ) );
return "pending";
}
-
}
-});
-
-// deprecated, use $.validator.format instead
-$.format = $.validator.format;
-
-}(jQuery));
+} );
-// ajax mode: abort
+// Ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
-(function($) {
- var pendingRequests = {};
- // Use a prefilter if available (1.5+)
- if ( $.ajaxPrefilter ) {
- $.ajaxPrefilter(function( settings, _, xhr ) {
- var port = settings.port;
- if ( settings.mode === "abort" ) {
- if ( pendingRequests[port] ) {
- pendingRequests[port].abort();
- }
- pendingRequests[port] = xhr;
+
+var pendingRequests = {},
+ ajax;
+
+// Use a prefilter if available (1.5+)
+if ( $.ajaxPrefilter ) {
+ $.ajaxPrefilter( function( settings, _, xhr ) {
+ var port = settings.port;
+ if ( settings.mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
}
- });
- } else {
- // Proxy ajax
- var ajax = $.ajax;
- $.ajax = function( settings ) {
- var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
- port = ( "port" in settings ? settings : $.ajaxSettings ).port;
- if ( mode === "abort" ) {
- if ( pendingRequests[port] ) {
- pendingRequests[port].abort();
- }
- pendingRequests[port] = ajax.apply(this, arguments);
- return pendingRequests[port];
+ pendingRequests[ port ] = xhr;
+ }
+ } );
+} else {
+
+ // Proxy ajax
+ ajax = $.ajax;
+ $.ajax = function( settings ) {
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+ if ( mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
}
- return ajax.apply(this, arguments);
- };
- }
-}(jQuery));
-
-// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
-// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
-(function($) {
- $.extend($.fn, {
- validateDelegate: function( delegate, type, handler ) {
- return this.bind(type, function( event ) {
- var target = $(event.target);
- if ( target.is(delegate) ) {
- return handler.apply(target, arguments);
- }
- });
+ pendingRequests[ port ] = ajax.apply( this, arguments );
+ return pendingRequests[ port ];
}
- });
-}(jQuery));
+ return ajax.apply( this, arguments );
+ };
+}
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/jquery.validate.min.js b/js/lib/jquery/plugins/validate/jquery.validate.min.js
index cbaf5109a43..442a41317af 100644
--- a/js/lib/jquery/plugins/validate/jquery.validate.min.js
+++ b/js/lib/jquery/plugins/validate/jquery.validate.min.js
@@ -1,2 +1,4 @@
-/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
-* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."),void 0;var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t("").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is("form"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,"validator").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case"add":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case"remove":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){return!!t.trim(""+t(e).val())},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||""!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,"validator"),s="on"+e.type.replace(/^validate/,"");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){"string"==typeof s&&(s=s.split(/\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",e).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",e),this.settings.invalidHandler&&t(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(" ",".");return t(this.settings.errorElement+"."+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr("type"),s=t(e).val();return"radio"===i||"checkbox"===i?t("input[name='"+t(e).attr("name")+"']:checked").val():"string"==typeof s?s.replace(/\r/g,""):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),"dependency-mismatch"===i){r=!0;continue}if(r=!1,"pending"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+u.method+"' method.",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data("msg-"+i.toLowerCase())||e.attributes&&t(e).attr("data-msg-"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],"Warning: No message defined for "+e.name+"")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\$?\{(\d+)\}/g;"function"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,"{$1}"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t("<"+this.settings.errorElement+">").attr("for",this.idOrName(e)).addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(s=s.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(""),"string"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr("for")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+e+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{"boolean":function(t){return t},string:function(e,i){return!!t(e,i.form).length},"function":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr("class");return s&&t.each(s.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute("type");for(var n in t.validator.methods){var a;"required"===n?(a=s.get(0).getAttribute(n),""===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&"range"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data("rule-"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,"validator");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case"string":n=!!t(r.depends,i.form).length;break;case"function":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(""+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\D/g,"");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return"dependency-mismatch";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s="string"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:"abort",port:"validate"+i.name,dataType:"json",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||"true"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,"remote");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),"pending"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;"abort"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=("mode"in s?s:t.ajaxSettings).mode,n=("port"in s?s:t.ajaxSettings).port;return"abort"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery);
\ No newline at end of file
+/*! jQuery Validation Plugin - v1.19.5 - 7/1/2022
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[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(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a});
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ar.js b/js/lib/jquery/plugins/validate/localization/messages_ar.js
index 6df9495f53e..c58f8bf6c7d 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ar.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ar.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: AR (Arabic; العربية)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "هذا الحقل إلزامي",
- remote: "يرجى تصحيح هذا الحقل للمتابعة",
- email: "رجاء إدخال عنوان بريد إلكتروني صحيح",
- url: "رجاء إدخال عنوان موقع إلكتروني صحيح",
- date: "رجاء إدخال تاريخ صحيح",
- dateISO: "رجاء إدخال تاريخ صحيح (ISO)",
- number: "رجاء إدخال عدد بطريقة صحيحة",
- digits: "رجاء إدخال أرقام فقط",
- creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح",
- equalTo: "رجاء إدخال نفس القيمة",
- accept: "رجاء إدخال ملف بامتداد موافق عليه",
- maxlength: $.validator.format("الحد الأقصى لعدد الحروف هو {0}"),
- minlength: $.validator.format("الحد الأدنى لعدد الحروف هو {0}"),
- rangelength: $.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"),
- range: $.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),
- max: $.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"),
- min: $.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "هذا الحقل إلزامي",
+ remote: "يرجى تصحيح هذا الحقل للمتابعة",
+ email: "رجاء إدخال عنوان بريد إلكتروني صحيح",
+ url: "رجاء إدخال عنوان موقع إلكتروني صحيح",
+ date: "رجاء إدخال تاريخ صحيح",
+ dateISO: "رجاء إدخال تاريخ صحيح (ISO)",
+ number: "رجاء إدخال عدد بطريقة صحيحة",
+ digits: "رجاء إدخال أرقام فقط",
+ creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح",
+ equalTo: "رجاء إدخال نفس القيمة",
+ extension: "رجاء إدخال ملف بامتداد موافق عليه",
+ maxlength: $.validator.format( "الحد الأقصى لعدد الحروف هو {0}" ),
+ minlength: $.validator.format( "الحد الأدنى لعدد الحروف هو {0}" ),
+ rangelength: $.validator.format( "عدد الحروف يجب أن يكون بين {0} و {1}" ),
+ range: $.validator.format( "رجاء إدخال عدد قيمته بين {0} و {1}" ),
+ max: $.validator.format( "رجاء إدخال عدد أقل من أو يساوي {0}" ),
+ min: $.validator.format( "رجاء إدخال عدد أكبر من أو يساوي {0}" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_az.js b/js/lib/jquery/plugins/validate/localization/messages_az.js
new file mode 100644
index 00000000000..e04169dd4ba
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_az.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: Az (Azeri; azərbaycan dili)
+ */
+$.extend( $.validator.messages, {
+ required: "Bu xana mütləq doldurulmalıdır.",
+ remote: "Zəhmət olmasa, düzgün məna daxil edin.",
+ email: "Zəhmət olmasa, düzgün elektron poçt daxil edin.",
+ url: "Zəhmət olmasa, düzgün URL daxil edin.",
+ date: "Zəhmət olmasa, düzgün tarix daxil edin.",
+ dateISO: "Zəhmət olmasa, düzgün ISO formatlı tarix daxil edin.",
+ number: "Zəhmət olmasa, düzgün rəqəm daxil edin.",
+ digits: "Zəhmət olmasa, yalnız rəqəm daxil edin.",
+ creditcard: "Zəhmət olmasa, düzgün kredit kart nömrəsini daxil edin.",
+ equalTo: "Zəhmət olmasa, eyni mənanı bir daha daxil edin.",
+ extension: "Zəhmət olmasa, düzgün genişlənməyə malik faylı seçin.",
+ maxlength: $.validator.format( "Zəhmət olmasa, {0} simvoldan çox olmayaraq daxil edin." ),
+ minlength: $.validator.format( "Zəhmət olmasa, {0} simvoldan az olmayaraq daxil edin." ),
+ rangelength: $.validator.format( "Zəhmət olmasa, {0} - {1} aralığında uzunluğa malik simvol daxil edin." ),
+ range: $.validator.format( "Zəhmət olmasa, {0} - {1} aralığında rəqəm daxil edin." ),
+ max: $.validator.format( "Zəhmət olmasa, {0} və ondan kiçik rəqəm daxil edin." ),
+ min: $.validator.format( "Zəhmət olmasa, {0} və ondan böyük rəqəm daxil edin." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_bg.js b/js/lib/jquery/plugins/validate/localization/messages_bg.js
index 10ba1d32295..c725eeadb54 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_bg.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_bg.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: BG (Bulgarian; български език)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Полето е задължително.",
- remote: "Моля, въведете правилната стойност.",
- email: "Моля, въведете валиден email.",
- url: "Моля, въведете валидно URL.",
- date: "Моля, въведете валидна дата.",
- dateISO: "Моля, въведете валидна дата (ISO).",
- number: "Моля, въведете валиден номер.",
- digits: "Моля, въведете само цифри",
- creditcard: "Моля, въведете валиден номер на кредитна карта.",
- equalTo: "Моля, въведете същата стойност отново.",
- accept: "Моля, въведете стойност с валидно разширение.",
- maxlength: $.validator.format("Моля, въведете повече от {0} символа."),
- minlength: $.validator.format("Моля, въведете поне {0} символа."),
- rangelength: $.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),
- range: $.validator.format("Моля, въведете стойност между {0} и {1}."),
- max: $.validator.format("Моля, въведете стойност по-малка или равна на {0}."),
- min: $.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Полето е задължително.",
+ remote: "Моля, въведете правилната стойност.",
+ email: "Моля, въведете валиден email.",
+ url: "Моля, въведете валидно URL.",
+ date: "Моля, въведете валидна дата.",
+ dateISO: "Моля, въведете валидна дата (ISO).",
+ number: "Моля, въведете валиден номер.",
+ digits: "Моля, въведете само цифри.",
+ creditcard: "Моля, въведете валиден номер на кредитна карта.",
+ equalTo: "Моля, въведете същата стойност отново.",
+ extension: "Моля, въведете стойност с валидно разширение.",
+ maxlength: $.validator.format( "Моля, въведете не повече от {0} символа." ),
+ minlength: $.validator.format( "Моля, въведете поне {0} символа." ),
+ rangelength: $.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ),
+ range: $.validator.format( "Моля, въведете стойност между {0} и {1}." ),
+ max: $.validator.format( "Моля, въведете стойност по-малка или равна на {0}." ),
+ min: $.validator.format( "Моля, въведете стойност по-голяма или равна на {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_bn_BD.js b/js/lib/jquery/plugins/validate/localization/messages_bn_BD.js
new file mode 100644
index 00000000000..44c7b6777d8
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_bn_BD.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: bn_BD (Bengali, Bangladesh)
+ */
+$.extend( $.validator.messages, {
+ required: "এই তথ্যটি আবশ্যক।",
+ remote: "এই তথ্যটি ঠিক করুন।",
+ email: "অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।",
+ url: "অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।",
+ date: "তারিখ সঠিক নয়।",
+ dateISO: "অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।",
+ number: "অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।",
+ digits: "এখানে শুধু সংখ্যা ব্যবহার করা যাবে।",
+ creditcard: "অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।",
+ equalTo: "একই মান আবার লিখুন।",
+ extension: "সঠিক ধরনের ফাইল আপলোড করুন।",
+ maxlength: $.validator.format( "{0}টির বেশি অক্ষর লেখা যাবে না।" ),
+ minlength: $.validator.format( "{0}টির কম অক্ষর লেখা যাবে না।" ),
+ rangelength: $.validator.format( "{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।" ),
+ range: $.validator.format( "{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।" ),
+ max: $.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।" ),
+ min: $.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ca.js b/js/lib/jquery/plugins/validate/localization/messages_ca.js
index 940c37f5475..c6bed8a462f 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ca.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ca.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: CA (Catalan; català)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Aquest camp és obligatori.",
- remote: "Si us plau, omple aquest camp.",
- email: "Si us plau, escriu una adreça de correu-e vàlida",
- url: "Si us plau, escriu una URL vàlida.",
- date: "Si us plau, escriu una data vàlida.",
- dateISO: "Si us plau, escriu una data (ISO) vàlida.",
- number: "Si us plau, escriu un número enter vàlid.",
- digits: "Si us plau, escriu només dígits.",
- creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
- equalTo: "Si us plau, escriu el maateix valor de nou.",
- accept: "Si us plau, escriu un valor amb una extensió acceptada.",
- maxlength: $.validator.format("Si us plau, no escriguis més de {0} caracters."),
- minlength: $.validator.format("Si us plau, no escriguis menys de {0} caracters."),
- rangelength: $.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),
- range: $.validator.format("Si us plau, escriu un valor entre {0} i {1}."),
- max: $.validator.format("Si us plau, escriu un valor menor o igual a {0}."),
- min: $.validator.format("Si us plau, escriu un valor major o igual a {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Aquest camp és obligatori.",
+ remote: "Si us plau, omple aquest camp.",
+ email: "Si us plau, escriu una adreça de correu-e vàlida.",
+ url: "Si us plau, escriu una URL vàlida.",
+ date: "Si us plau, escriu una data vàlida.",
+ dateISO: "Si us plau, escriu una data (ISO) vàlida.",
+ number: "Si us plau, escriu un número enter vàlid.",
+ digits: "Si us plau, escriu només dígits.",
+ creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
+ equalTo: "Si us plau, escriu el mateix valor de nou.",
+ extension: "Si us plau, escriu un valor amb una extensió acceptada.",
+ maxlength: $.validator.format( "Si us plau, no escriguis més de {0} caracters." ),
+ minlength: $.validator.format( "Si us plau, no escriguis menys de {0} caracters." ),
+ rangelength: $.validator.format( "Si us plau, escriu un valor entre {0} i {1} caracters." ),
+ range: $.validator.format( "Si us plau, escriu un valor entre {0} i {1}." ),
+ max: $.validator.format( "Si us plau, escriu un valor menor o igual a {0}." ),
+ min: $.validator.format( "Si us plau, escriu un valor major o igual a {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_cs.js b/js/lib/jquery/plugins/validate/localization/messages_cs.js
index 43cc3ad1b04..2ab4b516684 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_cs.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_cs.js
@@ -1,25 +1,36 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: CS (Czech; čeština, český jazyk)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Tento údaj je povinný.",
- remote: "Prosím, opravte tento údaj.",
- email: "Prosím, zadejte platný e-mail.",
- url: "Prosím, zadejte platné URL.",
- date: "Prosím, zadejte platné datum.",
- dateISO: "Prosím, zadejte platné datum (ISO).",
- number: "Prosím, zadejte číslo.",
- digits: "Prosím, zadávejte pouze číslice.",
- creditcard: "Prosím, zadejte číslo kreditní karty.",
- equalTo: "Prosím, zadejte znovu stejnou hodnotu.",
- accept: "Prosím, zadejte soubor se správnou příponou.",
- maxlength: $.validator.format("Prosím, zadejte nejvíce {0} znaků."),
- minlength: $.validator.format("Prosím, zadejte nejméně {0} znaků."),
- rangelength: $.validator.format("Prosím, zadejte od {0} do {1} znaků."),
- range: $.validator.format("Prosím, zadejte hodnotu od {0} do {1}."),
- max: $.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."),
- min: $.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Tento údaj je povinný.",
+ remote: "Prosím, opravte tento údaj.",
+ email: "Prosím, zadejte platný e-mail.",
+ url: "Prosím, zadejte platné URL.",
+ date: "Prosím, zadejte platné datum.",
+ dateISO: "Prosím, zadejte platné datum (ISO).",
+ number: "Prosím, zadejte číslo.",
+ digits: "Prosím, zadávejte pouze číslice.",
+ creditcard: "Prosím, zadejte číslo kreditní karty.",
+ equalTo: "Prosím, zadejte znovu stejnou hodnotu.",
+ extension: "Prosím, zadejte soubor se správnou příponou.",
+ maxlength: $.validator.format( "Prosím, zadejte nejvíce {0} znaků." ),
+ minlength: $.validator.format( "Prosím, zadejte nejméně {0} znaků." ),
+ rangelength: $.validator.format( "Prosím, zadejte od {0} do {1} znaků." ),
+ range: $.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ),
+ max: $.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ),
+ min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." ),
+ step: $.validator.format( "Musí být násobkem čísla {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_da.js b/js/lib/jquery/plugins/validate/localization/messages_da.js
index bcceb202e19..17ca887fc33 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_da.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_da.js
@@ -1,22 +1,46 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: DA (Danish; dansk)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Dette felt er påkrævet.",
- maxlength: $.validator.format("Indtast højst {0} tegn."),
- minlength: $.validator.format("Indtast mindst {0} tegn."),
- rangelength: $.validator.format("Indtast mindst {0} og højst {1} tegn."),
- email: "Indtast en gyldig email-adresse.",
- url: "Indtast en gyldig URL.",
- date: "Indtast en gyldig dato.",
- number: "Indtast et tal.",
- digits: "Indtast kun cifre.",
- equalTo: "Indtast den samme værdi igen.",
- range: $.validator.format("Angiv en værdi mellem {0} og {1}."),
- max: $.validator.format("Angiv en værdi der højst er {0}."),
- min: $.validator.format("Angiv en værdi der mindst er {0}."),
- creditcard: "Indtast et gyldigt kreditkortnummer."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Dette felt er påkrævet.",
+ remote: "Ret venligst dette felt.",
+ email: "Indtast en gyldig email-adresse.",
+ url: "Indtast en gyldig URL.",
+ date: "Indtast en gyldig dato.",
+ number: "Indtast et tal.",
+ digits: "Indtast kun cifre.",
+ creditcard: "Indtast et gyldigt kreditkortnummer.",
+ equalTo: "Indtast den samme værdi igen.",
+ time: "Angiv en gyldig tid mellem kl. 00:00 og 23:59.",
+ ipv4: "Angiv venligst en gyldig IPv4-adresse.",
+ ipv6: "Angiv venligst en gyldig IPv6-adresse.",
+ require_from_group: $.validator.format( "Angiv mindst {0} af disse felter." ),
+ extension: "Indtast venligst en værdi med en gyldig endelse.",
+ pattern: "Ugyldigt format.",
+ lettersonly: "Angiv venligst kun bogstaver.",
+ nowhitespace: "Må ikke indholde mellemrum.",
+ maxlength: $.validator.format( "Indtast højst {0} tegn." ),
+ minlength: $.validator.format( "Indtast mindst {0} tegn." ),
+ rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
+ range: $.validator.format( "Angiv en værdi mellem {0} og {1}." ),
+ max: $.validator.format( "Angiv en værdi der højst er {0}." ),
+ min: $.validator.format( "Angiv en værdi der mindst er {0}." ),
+ minWords: $.validator.format( "Indtast venligst mindst {0} ord." ),
+ maxWords: $.validator.format( "Indtast venligst højst {0} ord." ),
+ step: $.validator.format( "Angiv en værdi gange {0}." ),
+ notEqualTo: "Angiv en anden værdi, værdierne må ikke være det samme.",
+ integer: "Angiv et ikke-decimaltal, der er positivt eller negativt."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_de.js b/js/lib/jquery/plugins/validate/localization/messages_de.js
index 073853e97b3..611c16f71f0 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_de.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_de.js
@@ -1,22 +1,82 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: DE (German, Deutsch)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Dieses Feld ist ein Pflichtfeld.",
- maxlength: $.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),
- minlength: $.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),
- rangelength: $.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),
- email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
- url: "Geben Sie bitte eine gültige URL ein.",
- date: "Bitte geben Sie ein gültiges Datum ein.",
- number: "Geben Sie bitte eine Nummer ein.",
- digits: "Geben Sie bitte nur Ziffern ein.",
- equalTo: "Bitte denselben Wert wiederholen.",
- range: $.validator.format("Geben Sie bitte einen Wert zwischen {0} und {1} ein."),
- max: $.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
- min: $.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
- creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Dieses Feld ist ein Pflichtfeld.",
+ maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
+ minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
+ rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
+ email: "Geben Sie bitte eine gültige E-Mail-Adresse ein.",
+ url: "Geben Sie bitte eine gültige URL ein.",
+ date: "Geben Sie bitte ein gültiges Datum ein.",
+ number: "Geben Sie bitte eine Nummer ein.",
+ digits: "Geben Sie bitte nur Ziffern ein.",
+ equalTo: "Wiederholen Sie bitte denselben Wert.",
+ range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
+ max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
+ min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
+ creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
+ remote: "Korrigieren Sie bitte dieses Feld.",
+ dateISO: "Geben Sie bitte ein gültiges Datum ein (ISO-Format).",
+ step: $.validator.format( "Geben Sie bitte ein Vielfaches von {0} ein." ),
+ maxWords: $.validator.format( "Geben Sie bitte {0} Wörter oder weniger ein." ),
+ minWords: $.validator.format( "Geben Sie bitte mindestens {0} Wörter ein." ),
+ rangeWords: $.validator.format( "Geben Sie bitte zwischen {0} und {1} Wörtern ein." ),
+ accept: "Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",
+ alphanumeric: "Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",
+ bankaccountNL: "Geben Sie bitte eine gültige Kontonummer ein.",
+ bankorgiroaccountNL: "Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",
+ bic: "Geben Sie bitte einen gültigen BIC-Code ein.",
+ cifES: "Geben Sie bitte eine gültige CIF-Nummer ein.",
+ cpfBR: "Geben Sie bitte eine gültige CPF-Nummer ein.",
+ creditcardtypes: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
+ currency: "Geben Sie bitte eine gültige Währung ein.",
+ extension: "Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",
+ giroaccountNL: "Geben Sie bitte eine gültige Girokontonummer ein.",
+ iban: "Geben Sie bitte eine gültige IBAN ein.",
+ integer: "Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",
+ ipv4: "Geben Sie bitte eine gültige IPv4-Adresse ein.",
+ ipv6: "Geben Sie bitte eine gültige IPv6-Adresse ein.",
+ lettersonly: "Geben Sie bitte nur Buchstaben ein.",
+ letterswithbasicpunc: "Geben Sie bitte nur Buchstaben oder Interpunktion ein.",
+ mobileNL: "Geben Sie bitte eine gültige Handynummer ein.",
+ mobileUK: "Geben Sie bitte eine gültige Handynummer ein.",
+ netmask: "Geben Sie bitte eine gültige Netzmaske ein.",
+ nieES: "Geben Sie bitte eine gültige NIE-Nummer ein.",
+ nifES: "Geben Sie bitte eine gültige NIF-Nummer ein.",
+ nipPL: "Geben Sie bitte eine gültige NIP-Nummer ein.",
+ notEqualTo: "Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",
+ nowhitespace: "Kein Leerzeichen bitte.",
+ pattern: "Ungültiges Format.",
+ phoneNL: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ phonesUK: "Geben Sie bitte eine gültige britische Telefonnummer ein.",
+ phoneUK: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ phoneUS: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ postalcodeBR: "Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",
+ postalCodeCA: "Geben Sie bitte eine gültige kanadische Postleitzahl ein.",
+ postalcodeIT: "Geben Sie bitte eine gültige italienische Postleitzahl ein.",
+ postalcodeNL: "Geben Sie bitte eine gültige niederländische Postleitzahl ein.",
+ postcodeUK: "Geben Sie bitte eine gültige britische Postleitzahl ein.",
+ require_from_group: $.validator.format( "Füllen Sie bitte mindestens {0} dieser Felder aus." ),
+ skip_or_fill_minimum: $.validator.format( "Überspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus." ),
+ stateUS: "Geben Sie bitte einen gültigen US-Bundesstaat ein.",
+ strippedminlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
+ time: "Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",
+ time12h: "Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",
+ vinUS: "Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",
+ zipcodeUS: "Die angegebene US-Postleitzahl ist ungültig.",
+ ziprange: "Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_el.js b/js/lib/jquery/plugins/validate/localization/messages_el.js
index 6cd5a1de4ef..f2dc9e9dcc2 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_el.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_el.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: EL (Greek; ελληνικά)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Αυτό το πεδίο είναι υποχρεωτικό.",
- remote: "Παρακαλώ διορθώστε αυτό το πεδίο.",
- email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",
- url: "Παρακαλώ εισάγετε ένα έγκυρο URL.",
- date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",
- dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",
- number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",
- digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",
- creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",
- equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.",
- accept: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",
- maxlength: $.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."),
- minlength: $.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."),
- rangelength: $.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."),
- range: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."),
- max: $.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."),
- min: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Αυτό το πεδίο είναι υποχρεωτικό.",
+ remote: "Παρακαλώ διορθώστε αυτό το πεδίο.",
+ email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",
+ url: "Παρακαλώ εισάγετε ένα έγκυρο URL.",
+ date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",
+ dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",
+ number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",
+ digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",
+ creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",
+ equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.",
+ extension: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",
+ maxlength: $.validator.format( "Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες." ),
+ minlength: $.validator.format( "Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες." ),
+ rangelength: $.validator.format( "Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων." ),
+ range: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}." ),
+ max: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}." ),
+ min: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_es.js b/js/lib/jquery/plugins/validate/localization/messages_es.js
index 3a30eee8f35..4829dc23a75 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_es.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_es.js
@@ -1,25 +1,38 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: ES (Spanish; Español)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Este campo es obligatorio.",
- remote: "Por favor, rellena este campo.",
- email: "Por favor, escribe una dirección de correo válida",
- url: "Por favor, escribe una URL válida.",
- date: "Por favor, escribe una fecha válida.",
- dateISO: "Por favor, escribe una fecha (ISO) válida.",
- number: "Por favor, escribe un número entero válido.",
- digits: "Por favor, escribe sólo dígitos.",
- creditcard: "Por favor, escribe un número de tarjeta válido.",
- equalTo: "Por favor, escribe el mismo valor de nuevo.",
- accept: "Por favor, escribe un valor con una extensión aceptada.",
- maxlength: $.validator.format("Por favor, no escribas más de {0} caracteres."),
- minlength: $.validator.format("Por favor, no escribas menos de {0} caracteres."),
- rangelength: $.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
- range: $.validator.format("Por favor, escribe un valor entre {0} y {1}."),
- max: $.validator.format("Por favor, escribe un valor menor o igual a {0}."),
- min: $.validator.format("Por favor, escribe un valor mayor o igual a {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, rellena este campo.",
+ email: "Por favor, escribe una dirección de correo válida.",
+ url: "Por favor, escribe una URL válida.",
+ date: "Por favor, escribe una fecha válida.",
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
+ number: "Por favor, escribe un número válido.",
+ digits: "Por favor, escribe sólo dígitos.",
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
+ extension: "Por favor, escribe un valor con una extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, no escribas más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribe un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribe un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escribe un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escribe un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escribe un NIF válido.",
+ nieES: "Por favor, escribe un NIE válido.",
+ cifES: "Por favor, escribe un CIF válido."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_es_AR.js b/js/lib/jquery/plugins/validate/localization/messages_es_AR.js
new file mode 100644
index 00000000000..aa15bf494e2
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_es_AR.js
@@ -0,0 +1,39 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES (Spanish; Español)
+ * Region: AR (Argentina)
+ */
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, completá este campo.",
+ email: "Por favor, escribí una dirección de correo válida.",
+ url: "Por favor, escribí una URL válida.",
+ date: "Por favor, escribí una fecha válida.",
+ dateISO: "Por favor, escribí una fecha (ISO) válida.",
+ number: "Por favor, escribí un número entero válido.",
+ digits: "Por favor, escribí sólo dígitos.",
+ creditcard: "Por favor, escribí un número de tarjeta válido.",
+ equalTo: "Por favor, escribí el mismo valor de nuevo.",
+ extension: "Por favor, escribí un valor con una extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, no escribas más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribí un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribí un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escribí un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escribí un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escribí un NIF válido.",
+ nieES: "Por favor, escribí un NIE válido.",
+ cifES: "Por favor, escribí un CIF válido."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_es_PE.js b/js/lib/jquery/plugins/validate/localization/messages_es_PE.js
new file mode 100644
index 00000000000..1d9e3882736
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_es_PE.js
@@ -0,0 +1,39 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES (Spanish; Español)
+ * Region: PE (Perú)
+ */
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, llene este campo.",
+ email: "Por favor, escriba un correo electrónico válido.",
+ url: "Por favor, escriba una URL válida.",
+ date: "Por favor, escriba una fecha válida.",
+ dateISO: "Por favor, escriba una fecha (ISO) válida.",
+ number: "Por favor, escriba un número válido.",
+ digits: "Por favor, escriba sólo dígitos.",
+ creditcard: "Por favor, escriba un número de tarjeta válido.",
+ equalTo: "Por favor, escriba el mismo valor de nuevo.",
+ extension: "Por favor, escriba un valor con una extensión permitida.",
+ maxlength: $.validator.format( "Por favor, no escriba más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escriba menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escriba un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escriba un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escriba un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escriba un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escriba un NIF válido.",
+ nieES: "Por favor, escriba un NIE válido.",
+ cifES: "Por favor, escriba un CIF válido."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_et.js b/js/lib/jquery/plugins/validate/localization/messages_et.js
index aaa26777f57..3fc27885d2c 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_et.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_et.js
@@ -1,23 +1,33 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: ET (Estonian; eesti, eesti keel)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "See väli peab olema täidetud.",
- maxlength: $.validator.format("Palun sisestage vähem kui {0} tähemärki."),
- minlength: $.validator.format("Palun sisestage vähemalt {0} tähemärki."),
- rangelength: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."),
- email: "Palun sisestage korrektne e-maili aadress.",
- url: "Palun sisestage korrektne URL.",
- date: "Palun sisestage korrektne kuupäev.",
- dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).",
- number: "Palun sisestage korrektne number.",
- digits: "Palun sisestage ainult numbreid.",
- equalTo: "Palun sisestage sama väärtus uuesti.",
- range: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."),
- max: $.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."),
- min: $.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."),
- creditcard: "Palun sisestage korrektne krediitkaardi number."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "See väli peab olema täidetud.",
+ maxlength: $.validator.format( "Palun sisestage vähem kui {0} tähemärki." ),
+ minlength: $.validator.format( "Palun sisestage vähemalt {0} tähemärki." ),
+ rangelength: $.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki." ),
+ email: "Palun sisestage korrektne e-maili aadress.",
+ url: "Palun sisestage korrektne URL.",
+ date: "Palun sisestage korrektne kuupäev.",
+ dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).",
+ number: "Palun sisestage korrektne number.",
+ digits: "Palun sisestage ainult numbreid.",
+ equalTo: "Palun sisestage sama väärtus uuesti.",
+ range: $.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1}." ),
+ max: $.validator.format( "Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}." ),
+ min: $.validator.format( "Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}." ),
+ creditcard: "Palun sisestage korrektne krediitkaardi number."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_eu.js b/js/lib/jquery/plugins/validate/localization/messages_eu.js
index 8f02f1b229e..6a36df851fd 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_eu.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_eu.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: EU (Basque; euskara, euskera)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Eremu hau beharrezkoa da.",
- remote: "Mesedez, bete eremu hau.",
- email: "Mesedez, idatzi baliozko posta helbide bat.",
- url: "Mesedez, idatzi baliozko URL bat.",
- date: "Mesedez, idatzi baliozko data bat.",
- dateISO: "Mesedez, idatzi baliozko (ISO) data bat.",
- number: "Mesedez, idatzi baliozko zenbaki oso bat.",
- digits: "Mesedez, idatzi digituak soilik.",
- creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.",
- equalTo: "Mesedez, idatzi berdina berriro ere.",
- accept: "Mesedez, idatzi onartutako luzapena duen balio bat.",
- maxlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gehiago."),
- minlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gutxiago."),
- rangelength: $.validator.format("Mesedez, idatzi {0} eta {1} karaktere arteko balio bat."),
- range: $.validator.format("Mesedez, idatzi {0} eta {1} arteko balio bat."),
- max: $.validator.format("Mesedez, idatzi {0} edo txikiagoa den balio bat."),
- min: $.validator.format("Mesedez, idatzi {0} edo handiagoa den balio bat.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Eremu hau beharrezkoa da.",
+ remote: "Mesedez, bete eremu hau.",
+ email: "Mesedez, idatzi baliozko posta helbide bat.",
+ url: "Mesedez, idatzi baliozko URL bat.",
+ date: "Mesedez, idatzi baliozko data bat.",
+ dateISO: "Mesedez, idatzi baliozko (ISO) data bat.",
+ number: "Mesedez, idatzi baliozko zenbaki oso bat.",
+ digits: "Mesedez, idatzi digituak soilik.",
+ creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.",
+ equalTo: "Mesedez, idatzi berdina berriro ere.",
+ extension: "Mesedez, idatzi onartutako luzapena duen balio bat.",
+ maxlength: $.validator.format( "Mesedez, ez idatzi {0} karaktere baino gehiago." ),
+ minlength: $.validator.format( "Mesedez, ez idatzi {0} karaktere baino gutxiago." ),
+ rangelength: $.validator.format( "Mesedez, idatzi {0} eta {1} karaktere arteko balio bat." ),
+ range: $.validator.format( "Mesedez, idatzi {0} eta {1} arteko balio bat." ),
+ max: $.validator.format( "Mesedez, idatzi {0} edo txikiagoa den balio bat." ),
+ min: $.validator.format( "Mesedez, idatzi {0} edo handiagoa den balio bat." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_fa.js b/js/lib/jquery/plugins/validate/localization/messages_fa.js
index 38163525cb9..1c5de03b90e 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_fa.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_fa.js
@@ -1,25 +1,39 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: FA (Persian; فارسی)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "تکمیل این فیلد اجباری است.",
- remote: "لطفا این فیلد را تصحیح کنید.",
- email: ".لطفا یک ایمیل صحیح وارد کنید",
- url: "لطفا آدرس صحیح وارد کنید.",
- date: "لطفا یک تاریخ صحیح وارد کنید",
- dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
- number: "لطفا عدد صحیح وارد کنید.",
- digits: "لطفا تنها رقم وارد کنید",
- creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
- equalTo: "لطفا مقدار برابری وارد کنید",
- accept: "لطفا مقداری وارد کنید که ",
- maxlength: $.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."),
- minlength: $.validator.format("لطفا کمتر از {0} حرف وارد نکنید."),
- rangelength: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),
- range: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),
- max: $.validator.format("لطفا مقداری کمتر از {0} حرف وارد کنید."),
- min: $.validator.format("لطفا مقداری بیشتر از {0} حرف وارد کنید.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "تکمیل این فیلد اجباری است.",
+ remote: "لطفا این فیلد را تصحیح کنید.",
+ email: "لطفا یک ایمیل صحیح وارد کنید.",
+ url: "لطفا آدرس صحیح وارد کنید.",
+ date: "لطفا تاریخ صحیح وارد کنید.",
+ dateFA: "لطفا یک تاریخ صحیح وارد کنید.",
+ dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
+ number: "لطفا عدد صحیح وارد کنید.",
+ digits: "لطفا تنها رقم وارد کنید.",
+ creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
+ equalTo: "لطفا مقدار برابری وارد کنید.",
+ extension: "لطفا مقداری وارد کنید که.",
+ alphanumeric: "لطفا مقدار را عدد (انگلیسی) وارد کنید.",
+ maxlength: $.validator.format( "لطفا بیشتر از {0} حرف وارد نکنید." ),
+ minlength: $.validator.format( "لطفا کمتر از {0} حرف وارد نکنید." ),
+ rangelength: $.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
+ range: $.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
+ max: $.validator.format( "لطفا مقداری کمتر از {0} وارد کنید." ),
+ min: $.validator.format( "لطفا مقداری بیشتر از {0} وارد کنید." ),
+ minWords: $.validator.format( "لطفا حداقل {0} کلمه وارد کنید." ),
+ maxWords: $.validator.format( "لطفا حداکثر {0} کلمه وارد کنید." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_fi.js b/js/lib/jquery/plugins/validate/localization/messages_fi.js
index a1fc03c5b98..ab5887b072c 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_fi.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_fi.js
@@ -1,23 +1,33 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: FI (Finnish; suomi, suomen kieli)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Tämä kenttä on pakollinen.",
- email: "Syötä oikea sähköpostiosoite.",
- url: "Syötä oikea URL osoite.",
- date: "Syötä oike päivämäärä.",
- dateISO: "Syötä oike päivämäärä (VVVV-MM-DD).",
- number: "Syötä numero.",
- creditcard: "Syötä voimassa oleva luottokorttinumero.",
- digits: "Syötä pelkästään numeroita.",
- equalTo: "Syötä sama arvo uudestaan.",
- maxlength: $.validator.format("Voit syöttää enintään {0} merkkiä."),
- minlength: $.validator.format("Vähintään {0} merkkiä."),
- rangelength: $.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."),
- range: $.validator.format("Syötä arvo {0} ja {1} väliltä."),
- max: $.validator.format("Syötä arvo joka on pienempi tai yhtä suuri kuin {0}."),
- min: $.validator.format("Syötä arvo joka on yhtä suuri tai suurempi kuin {0}.")
- });
-}(jQuery));
+$.extend( $.validator.messages, {
+ required: "Tämä kenttä on pakollinen.",
+ email: "Syötä oikea sähköpostiosoite.",
+ url: "Syötä oikea URL-osoite.",
+ date: "Syötä oikea päivämäärä.",
+ dateISO: "Syötä oikea päivämäärä muodossa VVVV-KK-PP.",
+ number: "Syötä luku.",
+ creditcard: "Syötä voimassa oleva luottokorttinumero.",
+ digits: "Syötä pelkästään numeroita.",
+ equalTo: "Syötä sama arvo uudestaan.",
+ maxlength: $.validator.format( "Voit syöttää enintään {0} merkkiä." ),
+ minlength: $.validator.format( "Vähintään {0} merkkiä." ),
+ rangelength: $.validator.format( "Syötä vähintään {0} ja enintään {1} merkkiä." ),
+ range: $.validator.format( "Syötä arvo väliltä {0}–{1}." ),
+ max: $.validator.format( "Syötä arvo, joka on enintään {0}." ),
+ min: $.validator.format( "Syötä arvo, joka on vähintään {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_fr.js b/js/lib/jquery/plugins/validate/localization/messages_fr.js
index c976ff460e6..3ee1ea49502 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_fr.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_fr.js
@@ -1,47 +1,64 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: FR (French; français)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Ce champ est obligatoire.",
- remote: "Veuillez corriger ce champ.",
- email: "Veuillez fournir une adresse électronique valide.",
- url: "Veuillez fournir une adresse URL valide.",
- date: "Veuillez fournir une date valide.",
- dateISO: "Veuillez fournir une date valide (ISO).",
- number: "Veuillez fournir un numéro valide.",
- digits: "Veuillez fournir seulement des chiffres.",
- creditcard: "Veuillez fournir un numéro de carte de crédit valide.",
- equalTo: "Veuillez fournir encore la même valeur.",
- accept: "Veuillez fournir une valeur avec une extension valide.",
- maxlength: $.validator.format("Veuillez fournir au plus {0} caractères."),
- minlength: $.validator.format("Veuillez fournir au moins {0} caractères."),
- rangelength: $.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."),
- range: $.validator.format("Veuillez fournir une valeur entre {0} et {1}."),
- max: $.validator.format("Veuillez fournir une valeur inférieur ou égal à {0}."),
- min: $.validator.format("Veuillez fournir une valeur supérieur ou égal à {0}."),
- maxWords: $.validator.format("Veuillez fournir au plus {0} mots."),
- minWords: $.validator.format("Veuillez fournir au moins {0} mots."),
- rangeWords: $.validator.format("Veuillez fournir entre {0} et {1} mots."),
- letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.",
- alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages",
- lettersonly: "Veuillez fournir seulement des lettres.",
- nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.",
- ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
- integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.",
- vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).",
- dateITA: "Veuillez fournir une date valide.",
- time: "Veuillez fournir une heure valide entre 00:00 et 23:59.",
- phoneUS: "Veuillez fournir un numéro de téléphone valide.",
- phoneUK: "Veuillez fournir un numéro de téléphone valide.",
- mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.",
- strippedminlength: $.validator.format("Veuillez fournir au moins {0} caractères."),
- email2: "Veuillez fournir une adresse électronique valide.",
- url2: "Veuillez fournir une adresse URL valide.",
- creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
- ipv4: "Veuillez fournir une adresse IP v4 valide.",
- ipv6: "Veuillez fournir une adresse IP v6 valide.",
- require_from_group: "Veuillez fournir au moins {0} de ces champs."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Ce champ est obligatoire.",
+ remote: "Veuillez corriger ce champ.",
+ email: "Veuillez fournir une adresse électronique valide.",
+ url: "Veuillez fournir une adresse URL valide.",
+ date: "Veuillez fournir une date valide.",
+ dateISO: "Veuillez fournir une date valide (ISO).",
+ number: "Veuillez fournir un numéro valide.",
+ digits: "Veuillez fournir seulement des chiffres.",
+ creditcard: "Veuillez fournir un numéro de carte de crédit valide.",
+ equalTo: "Veuillez fournir encore la même valeur.",
+ notEqualTo: "Veuillez fournir une valeur différente, les valeurs ne doivent pas être identiques.",
+ extension: "Veuillez fournir une valeur avec une extension valide.",
+ maxlength: $.validator.format( "Veuillez fournir au plus {0} caractères." ),
+ minlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
+ rangelength: $.validator.format( "Veuillez fournir une valeur qui contient entre {0} et {1} caractères." ),
+ range: $.validator.format( "Veuillez fournir une valeur entre {0} et {1}." ),
+ max: $.validator.format( "Veuillez fournir une valeur inférieure ou égale à {0}." ),
+ min: $.validator.format( "Veuillez fournir une valeur supérieure ou égale à {0}." ),
+ step: $.validator.format( "Veuillez fournir une valeur multiple de {0}." ),
+ maxWords: $.validator.format( "Veuillez fournir au plus {0} mots." ),
+ minWords: $.validator.format( "Veuillez fournir au moins {0} mots." ),
+ rangeWords: $.validator.format( "Veuillez fournir entre {0} et {1} mots." ),
+ letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.",
+ alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",
+ lettersonly: "Veuillez fournir seulement des lettres.",
+ nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.",
+ ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
+ integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.",
+ vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).",
+ dateITA: "Veuillez fournir une date valide.",
+ time: "Veuillez fournir une heure valide entre 00:00 et 23:59.",
+ phoneUS: "Veuillez fournir un numéro de téléphone valide.",
+ phoneUK: "Veuillez fournir un numéro de téléphone valide.",
+ mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.",
+ strippedminlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
+ email2: "Veuillez fournir une adresse électronique valide.",
+ url2: "Veuillez fournir une adresse URL valide.",
+ creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
+ ipv4: "Veuillez fournir une adresse IP v4 valide.",
+ ipv6: "Veuillez fournir une adresse IP v6 valide.",
+ require_from_group: $.validator.format( "Veuillez fournir au moins {0} de ces champs." ),
+ nifES: "Veuillez fournir un numéro NIF valide.",
+ nieES: "Veuillez fournir un numéro NIE valide.",
+ cifES: "Veuillez fournir un numéro CIF valide.",
+ postalCodeCA: "Veuillez fournir un code postal valide.",
+ pattern: "Format non valide."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ge.js b/js/lib/jquery/plugins/validate/localization/messages_ge.js
new file mode 100644
index 00000000000..5a422e45438
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_ge.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/**
+ * @author @tatocaster
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GE (Georgian; ქართული)
+ */
+$.extend( $.validator.messages, {
+ required: "ეს ველი სავალდებულოა.",
+ remote: "გთხოვთ შეასწოროთ.",
+ email: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
+ url: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
+ date: "გთხოვთ შეიყვანოთ სწორი თარიღი.",
+ dateISO: "გთხოვთ შეიყვანოთ სწორი ფორმატით (ISO).",
+ number: "გთხოვთ შეიყვანოთ რიცხვი.",
+ digits: "დაშვებულია მხოლოდ ციფრები.",
+ creditcard: "გთხოვთ შეიყვანოთ სწორი ფორმატის ბარათის კოდი.",
+ equalTo: "გთხოვთ შეიყვანოთ იგივე მნიშვნელობა.",
+ maxlength: $.validator.format( "გთხოვთ შეიყვანოთ არა უმეტეს {0} სიმბოლოსი." ),
+ minlength: $.validator.format( "შეიყვანეთ მინიმუმ {0} სიმბოლო." ),
+ rangelength: $.validator.format( "გთხოვთ შეიყვანოთ {0} -დან {1} -მდე რაოდენობის სიმბოლოები." ),
+ range: $.validator.format( "შეიყვანეთ {0} -სა {1} -ს შორის." ),
+ max: $.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა ნაკლები ან ტოლი {0} -ს." ),
+ min: $.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა მეტი ან ტოლი {0} -ს." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_gl.js b/js/lib/jquery/plugins/validate/localization/messages_gl.js
new file mode 100644
index 00000000000..05036171390
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_gl.js
@@ -0,0 +1,40 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GL (Galician; Galego)
+ */
+( function( $ ) {
+ $.extend( $.validator.messages, {
+ required: "Este campo é obrigatorio.",
+ remote: "Por favor, cubre este campo.",
+ email: "Por favor, escribe unha dirección de correo válida.",
+ url: "Por favor, escribe unha URL válida.",
+ date: "Por favor, escribe unha data válida.",
+ dateISO: "Por favor, escribe unha data (ISO) válida.",
+ number: "Por favor, escribe un número válido.",
+ digits: "Por favor, escribe só díxitos.",
+ creditcard: "Por favor, escribe un número de tarxeta válido.",
+ equalTo: "Por favor, escribe o mesmo valor de novo.",
+ extension: "Por favor, escribe un valor cunha extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, non escribas máis de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, non escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribe un valor entre {0} e {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribe un valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, escribe un valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, escribe un valor maior ou igual a {0}." ),
+ nifES: "Por favor, escribe un NIF válido.",
+ nieES: "Por favor, escribe un NIE válido.",
+ cifES: "Por favor, escribe un CIF válido."
+ } );
+}( jQuery ) );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_he.js b/js/lib/jquery/plugins/validate/localization/messages_he.js
index 373feee7fcc..cb84b56a265 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_he.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_he.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: HE (Hebrew; עברית)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "השדה הזה הינו שדה חובה",
- remote: "נא לתקן שדה זה",
- email: "נא למלא כתובת דוא\"ל חוקית",
- url: "נא למלא כתובת אינטרנט חוקית",
- date: "נא למלא תאריך חוקי",
- dateISO: "נא למלא תאריך חוקי (ISO)",
- number: "נא למלא מספר",
- digits: "נא למלא רק מספרים",
- creditcard: "נא למלא מספר כרטיס אשראי חוקי",
- equalTo: "נא למלא את אותו ערך שוב",
- accept: "נא למלא ערך עם סיומת חוקית",
- maxlength: $.validator.format(".נא לא למלא יותר מ- {0} תווים"),
- minlength: $.validator.format("נא למלא לפחות {0} תווים"),
- rangelength: $.validator.format("נא למלא ערך בין {0} ל- {1} תווים"),
- range: $.validator.format("נא למלא ערך בין {0} ל- {1}"),
- max: $.validator.format("נא למלא ערך קטן או שווה ל- {0}"),
- min: $.validator.format("נא למלא ערך גדול או שווה ל- {0}")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "השדה הזה הינו שדה חובה",
+ remote: "נא לתקן שדה זה",
+ email: "נא למלא כתובת דוא\"ל חוקית",
+ url: "נא למלא כתובת אינטרנט חוקית",
+ date: "נא למלא תאריך חוקי",
+ dateISO: "נא למלא תאריך חוקי (ISO)",
+ number: "נא למלא מספר",
+ digits: "נא למלא רק מספרים",
+ creditcard: "נא למלא מספר כרטיס אשראי חוקי",
+ equalTo: "נא למלא את אותו ערך שוב",
+ extension: "נא למלא ערך עם סיומת חוקית",
+ maxlength: $.validator.format( ".נא לא למלא יותר מ- {0} תווים" ),
+ minlength: $.validator.format( "נא למלא לפחות {0} תווים" ),
+ rangelength: $.validator.format( "נא למלא ערך בין {0} ל- {1} תווים" ),
+ range: $.validator.format( "נא למלא ערך בין {0} ל- {1}" ),
+ max: $.validator.format( "נא למלא ערך קטן או שווה ל- {0}" ),
+ min: $.validator.format( "נא למלא ערך גדול או שווה ל- {0}" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_hr.js b/js/lib/jquery/plugins/validate/localization/messages_hr.js
index 895ae2dca97..092506dbefb 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_hr.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_hr.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: HR (Croatia; hrvatski jezik)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Ovo polje je obavezno.",
- remote: "Ovo polje treba popraviti.",
- email: "Unesite ispravnu e-mail adresu.",
- url: "Unesite ispravan URL.",
- date: "Unesite ispravan datum.",
- dateISO: "Unesite ispravan datum (ISO).",
- number: "Unesite ispravan broj.",
- digits: "Unesite samo brojeve.",
- creditcard: "Unesite ispravan broj kreditne kartice.",
- equalTo: "Unesite ponovo istu vrijednost.",
- accept: "Unesite vrijednost sa ispravnom ekstenzijom.",
- maxlength: $.validator.format("Maksimalni broj znakova je {0} ."),
- minlength: $.validator.format("Minimalni broj znakova je {0} ."),
- rangelength: $.validator.format("Unesite vrijednost između {0} i {1} znakova."),
- range: $.validator.format("Unesite vrijednost između {0} i {1}."),
- max: $.validator.format("Unesite vrijednost manju ili jednaku {0}."),
- min: $.validator.format("Unesite vrijednost veću ili jednaku {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Ovo polje je obavezno.",
+ remote: "Ovo polje treba popraviti.",
+ email: "Unesite ispravnu e-mail adresu.",
+ url: "Unesite ispravan URL.",
+ date: "Unesite ispravan datum.",
+ dateISO: "Unesite ispravan datum (ISO).",
+ number: "Unesite ispravan broj.",
+ digits: "Unesite samo brojeve.",
+ creditcard: "Unesite ispravan broj kreditne kartice.",
+ equalTo: "Unesite ponovo istu vrijednost.",
+ extension: "Unesite vrijednost sa ispravnom ekstenzijom.",
+ maxlength: $.validator.format( "Maksimalni broj znakova je {0} ." ),
+ minlength: $.validator.format( "Minimalni broj znakova je {0} ." ),
+ rangelength: $.validator.format( "Unesite vrijednost između {0} i {1} znakova." ),
+ range: $.validator.format( "Unesite vrijednost između {0} i {1}." ),
+ max: $.validator.format( "Unesite vrijednost manju ili jednaku {0}." ),
+ min: $.validator.format( "Unesite vrijednost veću ili jednaku {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_hu.js b/js/lib/jquery/plugins/validate/localization/messages_hu.js
index cd73fc3eefe..616ae251c91 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_hu.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_hu.js
@@ -1,24 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: HU (Hungarian; Magyar)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Kötelező megadni.",
- maxlength: $.validator.format("Legfeljebb {0} karakter hosszú legyen."),
- minlength: $.validator.format("Legalább {0} karakter hosszú legyen."),
- rangelength: $.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),
- email: "Érvényes e-mail címnek kell lennie.",
- url: "Érvényes URL-nek kell lennie.",
- date: "Dátumnak kell lennie.",
- number: "Számnak kell lennie.",
- digits: "Csak számjegyek lehetnek.",
- equalTo: "Meg kell egyeznie a két értéknek.",
- range: $.validator.format("{0} és {1} közé kell esnie."),
- max: $.validator.format("Nem lehet nagyobb, mint {0}."),
- min: $.validator.format("Nem lehet kisebb, mint {0}."),
- creditcard: "Érvényes hitelkártyaszámnak kell lennie.",
- remote: "Kérem javítsa ki ezt a mezőt.",
- dateISO: "Kérem írjon be egy érvényes dátumot (ISO)."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Kötelező megadni.",
+ maxlength: $.validator.format( "Legfeljebb {0} karakter hosszú legyen." ),
+ minlength: $.validator.format( "Legalább {0} karakter hosszú legyen." ),
+ rangelength: $.validator.format( "Legalább {0} és legfeljebb {1} karakter hosszú legyen." ),
+ email: "Érvényes e-mail címnek kell lennie.",
+ url: "Érvényes URL-nek kell lennie.",
+ date: "Dátumnak kell lennie.",
+ number: "Számnak kell lennie.",
+ digits: "Csak számjegyek lehetnek.",
+ equalTo: "Meg kell egyeznie a két értéknek.",
+ range: $.validator.format( "{0} és {1} közé kell esnie." ),
+ max: $.validator.format( "Nem lehet nagyobb, mint {0}." ),
+ min: $.validator.format( "Nem lehet kisebb, mint {0}." ),
+ creditcard: "Érvényes hitelkártyaszámnak kell lennie.",
+ remote: "Kérem javítsa ki ezt a mezőt.",
+ dateISO: "Kérem írjon be egy érvényes dátumot (ISO).",
+ step: $.validator.format( "A {0} egyik többszörösét adja meg." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_hy_AM.js b/js/lib/jquery/plugins/validate/localization/messages_hy_AM.js
new file mode 100644
index 00000000000..c6aec5c331a
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_hy_AM.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HY_AM (Armenian; հայերեն լեզու)
+ */
+$.extend( $.validator.messages, {
+ required: "Պարտադիր լրացման դաշտ",
+ remote: "Ներմուծեք ճիշտ արժեքը",
+ email: "Ներմուծեք վավեր էլեկտրոնային փոստի հասցե",
+ url: "Ներմուծեք վավեր URL",
+ date: "Ներմուծեք վավեր ամսաթիվ",
+ dateISO: "Ներմուծեք ISO ֆորմատով վավեր ամսաթիվ։",
+ number: "Ներմուծեք թիվ",
+ digits: "Ներմուծեք միայն թվեր",
+ creditcard: "Ներմուծեք ճիշտ բանկային քարտի համար",
+ equalTo: "Ներմուծեք միևնուն արժեքը ևս մեկ անգամ",
+ extension: "Ընտրեք ճիշտ ընդլանումով ֆայլ",
+ maxlength: $.validator.format( "Ներմուծեք ոչ ավել քան {0} նիշ" ),
+ minlength: $.validator.format( "Ներմուծեք ոչ պակաս քան {0} նիշ" ),
+ rangelength: $.validator.format( "Ներմուծեք {0}֊ից {1} երկարությամբ արժեք" ),
+ range: $.validator.format( "Ներմուծեք թիվ {0}֊ից {1} միջակայքում" ),
+ max: $.validator.format( "Ներմուծեք թիվ, որը փոքր կամ հավասար է {0}֊ին" ),
+ min: $.validator.format( "Ներմուծեք թիվ, որը մեծ կամ հավասար է {0}֊ին" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_id.js b/js/lib/jquery/plugins/validate/localization/messages_id.js
new file mode 100644
index 00000000000..052a9881656
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_id.js
@@ -0,0 +1,34 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ID (Indonesia; Indonesian)
+ */
+$.extend( $.validator.messages, {
+ required: "Kolom ini diperlukan.",
+ remote: "Harap benarkan kolom ini.",
+ email: "Silakan masukkan format email yang benar.",
+ url: "Silakan masukkan format URL yang benar.",
+ date: "Silakan masukkan format tanggal yang benar.",
+ dateISO: "Silakan masukkan format tanggal(ISO) yang benar.",
+ number: "Silakan masukkan angka yang benar.",
+ digits: "Harap masukan angka saja.",
+ creditcard: "Harap masukkan format kartu kredit yang benar.",
+ equalTo: "Harap masukkan nilai yg sama dengan sebelumnya.",
+ maxlength: $.validator.format( "Input dibatasi hanya {0} karakter." ),
+ minlength: $.validator.format( "Input tidak kurang dari {0} karakter." ),
+ rangelength: $.validator.format( "Panjang karakter yg diizinkan antara {0} dan {1} karakter." ),
+ range: $.validator.format( "Harap masukkan nilai antara {0} dan {1}." ),
+ max: $.validator.format( "Harap masukkan nilai lebih kecil atau sama dengan {0}." ),
+ min: $.validator.format( "Harap masukkan nilai lebih besar atau sama dengan {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_is.js b/js/lib/jquery/plugins/validate/localization/messages_is.js
new file mode 100644
index 00000000000..e3f75d01418
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_is.js
@@ -0,0 +1,33 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: IS (Icelandic; íslenska)
+ */
+$.extend( $.validator.messages, {
+ required: "Þessi reitur er nauðsynlegur.",
+ remote: "Lagaðu þennan reit.",
+ maxlength: $.validator.format( "Sláðu inn mest {0} stafi." ),
+ minlength: $.validator.format( "Sláðu inn minnst {0} stafi." ),
+ rangelength: $.validator.format( "Sláðu inn minnst {0} og mest {1} stafi." ),
+ email: "Sláðu inn gilt netfang.",
+ url: "Sláðu inn gilda vefslóð.",
+ date: "Sláðu inn gilda dagsetningu.",
+ number: "Sláðu inn tölu.",
+ digits: "Sláðu inn tölustafi eingöngu.",
+ equalTo: "Sláðu sama gildi inn aftur.",
+ range: $.validator.format( "Sláðu inn gildi milli {0} og {1}." ),
+ max: $.validator.format( "Sláðu inn gildi sem er minna en eða jafnt og {0}." ),
+ min: $.validator.format( "Sláðu inn gildi sem er stærra en eða jafnt og {0}." ),
+ creditcard: "Sláðu inn gilt greiðslukortanúmer."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_it.js b/js/lib/jquery/plugins/validate/localization/messages_it.js
index 19323b0f560..1d2953f5d28 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_it.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_it.js
@@ -1,25 +1,39 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: IT (Italian; Italiano)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Campo obbligatorio.",
- remote: "Controlla questo campo.",
- email: "Inserisci un indirizzo email valido.",
- url: "Inserisci un indirizzo web valido.",
- date: "Inserisci una data valida.",
- dateISO: "Inserisci una data valida (ISO).",
- number: "Inserisci un numero valido.",
- digits: "Inserisci solo numeri.",
- creditcard: "Inserisci un numero di carta di credito valido.",
- equalTo: "Il valore non corrisponde.",
- accept: "Inserisci un valore con un'estensione valida.",
- maxlength: $.validator.format("Non inserire più di {0} caratteri."),
- minlength: $.validator.format("Inserisci almeno {0} caratteri."),
- rangelength: $.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),
- range: $.validator.format("Inserisci un valore compreso tra {0} e {1}."),
- max: $.validator.format("Inserisci un valore minore o uguale a {0}."),
- min: $.validator.format("Inserisci un valore maggiore o uguale a {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Campo obbligatorio.",
+ remote: "Controlla questo campo.",
+ email: "Inserisci un indirizzo email valido.",
+ url: "Inserisci un indirizzo web valido.",
+ date: "Inserisci una data valida.",
+ dateISO: "Inserisci una data valida (ISO).",
+ number: "Inserisci un numero valido.",
+ digits: "Inserisci solo numeri.",
+ creditcard: "Inserisci un numero di carta di credito valido.",
+ equalTo: "Il valore non corrisponde.",
+ extension: "Inserisci un valore con un'estensione valida.",
+ maxlength: $.validator.format( "Non inserire più di {0} caratteri." ),
+ minlength: $.validator.format( "Inserisci almeno {0} caratteri." ),
+ rangelength: $.validator.format( "Inserisci un valore compreso tra {0} e {1} caratteri." ),
+ range: $.validator.format( "Inserisci un valore compreso tra {0} e {1}." ),
+ max: $.validator.format( "Inserisci un valore minore o uguale a {0}." ),
+ min: $.validator.format( "Inserisci un valore maggiore o uguale a {0}." ),
+ nifES: "Inserisci un NIF valido.",
+ nieES: "Inserisci un NIE valido.",
+ cifES: "Inserisci un CIF valido.",
+ currency: "Inserisci una valuta valida."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ja.js b/js/lib/jquery/plugins/validate/localization/messages_ja.js
index cb060c9c129..f72c53dc45a 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ja.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ja.js
@@ -1,25 +1,36 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: JA (Japanese; 日本語)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "このフィールドは必須です。",
- remote: "このフィールドを修正してください。",
- email: "有効なEメールアドレスを入力してください。",
- url: "有効なURLを入力してください。",
- date: "有効な日付を入力してください。",
- dateISO: "有効な日付(ISO)を入力してください。",
- number: "有効な数字を入力してください。",
- digits: "数字のみを入力してください。",
- creditcard: "有効なクレジットカード番号を入力してください。",
- equalTo: "同じ値をもう一度入力してください。",
- accept: "有効な拡張子を含む値を入力してください。",
- maxlength: $.format("{0} 文字以内で入力してください。"),
- minlength: $.format("{0} 文字以上で入力してください。"),
- rangelength: $.format("{0} 文字から {1} 文字までの値を入力してください。"),
- range: $.format("{0} から {1} までの値を入力してください。"),
- max: $.format("{0} 以下の値を入力してください。"),
- min: $.format("{0} 以上の値を入力してください。")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "このフィールドは必須です。",
+ remote: "このフィールドを修正してください。",
+ email: "有効なEメールアドレスを入力してください。",
+ url: "有効なURLを入力してください。",
+ date: "有効な日付を入力してください。",
+ dateISO: "有効な日付(ISO)を入力してください。",
+ number: "有効な数字を入力してください。",
+ digits: "数字のみを入力してください。",
+ creditcard: "有効なクレジットカード番号を入力してください。",
+ equalTo: "同じ値をもう一度入力してください。",
+ extension: "有効な拡張子を含む値を入力してください。",
+ maxlength: $.validator.format( "{0} 文字以内で入力してください。" ),
+ minlength: $.validator.format( "{0} 文字以上で入力してください。" ),
+ rangelength: $.validator.format( "{0} 文字から {1} 文字までの値を入力してください。" ),
+ range: $.validator.format( "{0} から {1} までの値を入力してください。" ),
+ step: $.validator.format( "{0} の倍数を入力してください。" ),
+ max: $.validator.format( "{0} 以下の値を入力してください。" ),
+ min: $.validator.format( "{0} 以上の値を入力してください。" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ka.js b/js/lib/jquery/plugins/validate/localization/messages_ka.js
index 319363e4df3..a4d79ff9745 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ka.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ka.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: KA (Georgian; ქართული)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "ამ ველის შევსება აუცილებელია.",
- remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",
- email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",
- url: "გთხოვთ მიუთითოთ კორექტული URL.",
- date: "გთხოვთ მიუთითოთ კორექტული თარიღი.",
- dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",
- number: "გთხოვთ მიუთითოთ ციფრი.",
- digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.",
- creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",
- equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",
- accept: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",
- maxlength: $.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."),
- minlength: $.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."),
- rangelength: $.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."),
- range: $.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."),
- max: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."),
- min: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "ამ ველის შევსება აუცილებელია.",
+ remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",
+ email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",
+ url: "გთხოვთ მიუთითოთ კორექტული URL.",
+ date: "გთხოვთ მიუთითოთ კორექტული თარიღი.",
+ dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",
+ number: "გთხოვთ მიუთითოთ ციფრი.",
+ digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.",
+ creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",
+ equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",
+ extension: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",
+ maxlength: $.validator.format( "დასაშვებია არაუმეტეს {0} სიმბოლო." ),
+ minlength: $.validator.format( "აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო." ),
+ rangelength: $.validator.format( "ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე." ),
+ range: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე." ),
+ max: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს." ),
+ min: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_kk.js b/js/lib/jquery/plugins/validate/localization/messages_kk.js
index dd9276fb5c1..79e3ea828e3 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_kk.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_kk.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: KK (Kazakh; қазақ тілі)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Бұл өрісті міндетті түрде толтырыңыз.",
- remote: "Дұрыс мағына енгізуіңізді сұраймыз.",
- email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.",
- url: "Нақты URL-ды енгізуіңізді сұраймыз.",
- date: "Нақты URL-ды енгізуіңізді сұраймыз.",
- dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",
- number: "Күнді енгізуіңізді сұраймыз.",
- digits: "Тек қана сандарды енгізуіңізді сұраймыз.",
- creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",
- equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.",
- accept: "Файлдың кеңейтуін дұрыс таңдаңыз.",
- maxlength: $.format("Ұзындығы {0} символдан көр болмасын."),
- minlength: $.format("Ұзындығы {0} символдан аз болмасын."),
- rangelength: $.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."),
- range: $.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."),
- max: $.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."),
- min: $.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Бұл өрісті міндетті түрде толтырыңыз.",
+ remote: "Дұрыс мағына енгізуіңізді сұраймыз.",
+ email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.",
+ url: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ date: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",
+ number: "Күнді енгізуіңізді сұраймыз.",
+ digits: "Тек қана сандарды енгізуіңізді сұраймыз.",
+ creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",
+ equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.",
+ extension: "Файлдың кеңейтуін дұрыс таңдаңыз.",
+ maxlength: $.validator.format( "Ұзындығы {0} символдан көр болмасын." ),
+ minlength: $.validator.format( "Ұзындығы {0} символдан аз болмасын." ),
+ rangelength: $.validator.format( "Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз." ),
+ range: $.validator.format( "Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз." ),
+ max: $.validator.format( "{0} аз немесе тең санын енгізуіңіді сұраймыз." ),
+ min: $.validator.format( "{0} көп немесе тең санын енгізуіңізді сұраймыз." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ko.js b/js/lib/jquery/plugins/validate/localization/messages_ko.js
index 1e6bba91669..f94612cb7a2 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ko.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ko.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: KO (Korean; 한국어)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "필수 항목입니다.",
- remote: "항목을 수정하세요.",
- email: "유효하지 않은 E-Mail주소입니다.",
- url: "유효하지 않은 주소입니다.",
- date: "옳바른 날짜를 입력하세요.",
- dateISO: "옳바른 날짜(ISO)를 입력하세요.",
- number: "유효한 숫자가 아닙니다.",
- digits: "숫자만 입력 가능합니다.",
- creditcard: "신용카드번호가 바르지 않습니다.",
- equalTo: "같은값을 다시 입력하세요.",
- accept: "옳바른 확장자가 아닙니다.",
- maxlength: $.format("{0}자를 넘을 수 없습니다. "),
- minlength: $.format("{0}자 이하로 입력하세요."),
- rangelength: $.format("문자 길이를 {0} 에서 {1} 사이의로 입력하세요."),
- range: $.format("{0} 에서 {1} 값을 입력하세요."),
- max: $.format("{0} 이하의 값을 입력하세요."),
- min: $.format("{0} 이상의 값을 입력하세요.")
- });
-}(jQuery));
+$.extend( $.validator.messages, {
+ required: "필수 항목입니다.",
+ remote: "항목을 수정하세요.",
+ email: "유효하지 않은 E-Mail주소입니다.",
+ url: "유효하지 않은 URL입니다.",
+ date: "올바른 날짜를 입력하세요.",
+ dateISO: "올바른 날짜(ISO)를 입력하세요.",
+ number: "유효한 숫자가 아닙니다.",
+ digits: "숫자만 입력 가능합니다.",
+ creditcard: "신용카드 번호가 바르지 않습니다.",
+ equalTo: "같은 값을 다시 입력하세요.",
+ extension: "올바른 확장자가 아닙니다.",
+ maxlength: $.validator.format( "{0}자를 넘을 수 없습니다. " ),
+ minlength: $.validator.format( "{0}자 이상 입력하세요." ),
+ rangelength: $.validator.format( "문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요." ),
+ range: $.validator.format( "{0} 에서 {1} 사이의 값을 입력하세요." ),
+ max: $.validator.format( "{0} 이하의 값을 입력하세요." ),
+ min: $.validator.format( "{0} 이상의 값을 입력하세요." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_lt.js b/js/lib/jquery/plugins/validate/localization/messages_lt.js
index 856aaeb8b1a..4dea0b1101f 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_lt.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_lt.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: LT (Lithuanian; lietuvių kalba)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Šis laukas yra privalomas.",
- remote: "Prašau pataisyti šį lauką.",
- email: "Prašau įvesti teisingą elektroninio pašto adresą.",
- url: "Prašau įvesti teisingą URL.",
- date: "Prašau įvesti teisingą datą.",
- dateISO: "Prašau įvesti teisingą datą (ISO).",
- number: "Prašau įvesti teisingą skaičių.",
- digits: "Prašau naudoti tik skaitmenis.",
- creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
- equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.",
- accept: "Prašau įvesti reikšmę su teisingu plėtiniu.",
- maxlength: $.format("Prašau įvesti ne daugiau kaip {0} simbolių."),
- minlength: $.format("Prašau įvesti bent {0} simbolius."),
- rangelength: $.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."),
- range: $.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."),
- max: $.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."),
- min: $.format("Prašau įvesti reikšmę didesnę arba lygią {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Šis laukas yra privalomas.",
+ remote: "Prašau pataisyti šį lauką.",
+ email: "Prašau įvesti teisingą elektroninio pašto adresą.",
+ url: "Prašau įvesti teisingą URL.",
+ date: "Prašau įvesti teisingą datą.",
+ dateISO: "Prašau įvesti teisingą datą (ISO).",
+ number: "Prašau įvesti teisingą skaičių.",
+ digits: "Prašau naudoti tik skaitmenis.",
+ creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
+ equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.",
+ extension: "Prašau įvesti reikšmę su teisingu plėtiniu.",
+ maxlength: $.validator.format( "Prašau įvesti ne daugiau kaip {0} simbolių." ),
+ minlength: $.validator.format( "Prašau įvesti bent {0} simbolius." ),
+ rangelength: $.validator.format( "Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių." ),
+ range: $.validator.format( "Prašau įvesti reikšmę intervale nuo {0} iki {1}." ),
+ max: $.validator.format( "Prašau įvesti reikšmę mažesnę arba lygią {0}." ),
+ min: $.validator.format( "Prašau įvesti reikšmę didesnę arba lygią {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_lv.js b/js/lib/jquery/plugins/validate/localization/messages_lv.js
index 959a9759c2e..692e3cbcb78 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_lv.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_lv.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: LV (Latvian; latviešu valoda)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Šis lauks ir obligāts.",
- remote: "Lūdzu, pārbaudiet šo lauku.",
- email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
- url: "Lūdzu, ievadiet derīgu URL adresi.",
- date: "Lūdzu, ievadiet derīgu datumu.",
- dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
- number: "Lūdzu, ievadiet derīgu numuru.",
- digits: "Lūdzu, ievadiet tikai ciparus.",
- creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
- equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
- accept: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",
- maxlength: $.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."),
- minlength: $.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."),
- rangelength: $.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."),
- range: $.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."),
- max: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."),
- min: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Šis lauks ir obligāts.",
+ remote: "Lūdzu, pārbaudiet šo lauku.",
+ email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
+ url: "Lūdzu, ievadiet derīgu URL adresi.",
+ date: "Lūdzu, ievadiet derīgu datumu.",
+ dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
+ number: "Lūdzu, ievadiet derīgu numuru.",
+ digits: "Lūdzu, ievadiet tikai ciparus.",
+ creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
+ equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
+ extension: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",
+ maxlength: $.validator.format( "Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes." ),
+ minlength: $.validator.format( "Lūdzu, ievadiet vismaz {0} rakstzīmes." ),
+ rangelength: $.validator.format( "Lūdzu ievadiet {0} līdz {1} rakstzīmes." ),
+ range: $.validator.format( "Lūdzu, ievadiet skaitli no {0} līdz {1}." ),
+ max: $.validator.format( "Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}." ),
+ min: $.validator.format( "Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_mk.js b/js/lib/jquery/plugins/validate/localization/messages_mk.js
new file mode 100644
index 00000000000..3013c0399ef
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_mk.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: MK (Macedonian; македонски јазик)
+ */
+$.extend( $.validator.messages, {
+ required: "Полето е задолжително.",
+ remote: "Поправете го ова поле.",
+ email: "Внесете правилна e-mail адреса.",
+ url: "Внесете правилен URL.",
+ date: "Внесете правилен датум.",
+ dateISO: "Внесете правилен датум (ISO).",
+ number: "Внесете правилен број.",
+ digits: "Внесете само бројки.",
+ creditcard: "Внесете правилен број на кредитната картичка.",
+ equalTo: "Внесете ја истата вредност повторно.",
+ extension: "Внесете вредност со соодветна екстензија.",
+ maxlength: $.validator.format( "Внесете максимално {0} знаци." ),
+ minlength: $.validator.format( "Внесете барем {0} знаци." ),
+ rangelength: $.validator.format( "Внесете вредност со должина помеѓу {0} и {1} знаци." ),
+ range: $.validator.format( "Внесете вредност помеѓу {0} и {1}." ),
+ max: $.validator.format( "Внесете вредност помала или еднаква на {0}." ),
+ min: $.validator.format( "Внесете вредност поголема или еднаква на {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_my.js b/js/lib/jquery/plugins/validate/localization/messages_my.js
index 95fe7270f73..9b8313b6f4c 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_my.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_my.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: MY (Malay; Melayu)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Medan ini diperlukan.",
- remote: "Sila betulkan medan ini.",
- email: "Sila masukkan alamat emel yang betul.",
- url: "Sila masukkan URL yang betul.",
- date: "Sila masukkan tarikh yang betul.",
- dateISO: "Sila masukkan tarikh(ISO) yang betul.",
- number: "Sila masukkan nombor yang betul.",
- digits: "Sila masukkan nilai digit sahaja.",
- creditcard: "Sila masukkan nombor kredit kad yang betul.",
- equalTo: "Sila masukkan nilai yang sama semula.",
- accept: "Sila masukkan nilai yang telah diterima.",
- maxlength: $.validator.format("Sila masukkan nilai tidak lebih dari {0} aksara."),
- minlength: $.validator.format("Sila masukkan nilai sekurang-kurangnya {0} aksara."),
- rangelength: $.validator.format("Sila masukkan panjang nilai antara {0} dan {1} aksara."),
- range: $.validator.format("Sila masukkan nilai antara {0} dan {1} aksara."),
- max: $.validator.format("Sila masukkan nilai yang kurang atau sama dengan {0}."),
- min: $.validator.format("Sila masukkan nilai yang lebih atau sama dengan {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Medan ini diperlukan.",
+ remote: "Sila betulkan medan ini.",
+ email: "Sila masukkan alamat emel yang betul.",
+ url: "Sila masukkan URL yang betul.",
+ date: "Sila masukkan tarikh yang betul.",
+ dateISO: "Sila masukkan tarikh(ISO) yang betul.",
+ number: "Sila masukkan nombor yang betul.",
+ digits: "Sila masukkan nilai digit sahaja.",
+ creditcard: "Sila masukkan nombor kredit kad yang betul.",
+ equalTo: "Sila masukkan nilai yang sama semula.",
+ extension: "Sila masukkan nilai yang telah diterima.",
+ maxlength: $.validator.format( "Sila masukkan tidak lebih dari {0} aksara." ),
+ minlength: $.validator.format( "Sila masukkan sekurang-kurangnya {0} aksara." ),
+ rangelength: $.validator.format( "Sila masukkan antara {0} dan {1} panjang aksara." ),
+ range: $.validator.format( "Sila masukkan nilai antara {0} dan {1} aksara." ),
+ max: $.validator.format( "Sila masukkan nilai yang kurang atau sama dengan {0}." ),
+ min: $.validator.format( "Sila masukkan nilai yang lebih atau sama dengan {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_nl.js b/js/lib/jquery/plugins/validate/localization/messages_nl.js
index 39f335d7a4d..c688ea24930 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_nl.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_nl.js
@@ -1,35 +1,46 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: NL (Dutch; Nederlands, Vlaams)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Dit is een verplicht veld.",
- remote: "Controleer dit veld.",
- email: "Vul hier een geldig e-mailadres in.",
- url: "Vul hier een geldige URL in.",
- date: "Vul hier een geldige datum in.",
- dateISO: "Vul hier een geldige datum in (ISO-formaat).",
- number: "Vul hier een geldig getal in.",
- digits: "Vul hier alleen getallen in.",
- creditcard: "Vul hier een geldig creditcardnummer in.",
- equalTo: "Vul hier dezelfde waarde in.",
- accept: "Vul hier een waarde in met een geldige extensie.",
- maxlength: $.validator.format("Vul hier maximaal {0} tekens in."),
- minlength: $.validator.format("Vul hier minimaal {0} tekens in."),
- rangelength: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
- range: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
- max: $.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
- min: $.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}."),
+$.extend( $.validator.messages, {
+ required: "Dit is een verplicht veld.",
+ remote: "Controleer dit veld.",
+ email: "Vul hier een geldig e-mailadres in.",
+ url: "Vul hier een geldige URL in.",
+ date: "Vul hier een geldige datum in.",
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
+ number: "Vul hier een geldig getal in.",
+ digits: "Vul hier alleen getallen in.",
+ creditcard: "Vul hier een geldig creditcardnummer in.",
+ equalTo: "Vul hier dezelfde waarde in.",
+ extension: "Vul hier een waarde in met een geldige extensie.",
+ maxlength: $.validator.format( "Vul hier maximaal {0} tekens in." ),
+ minlength: $.validator.format( "Vul hier minimaal {0} tekens in." ),
+ rangelength: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1} tekens." ),
+ range: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1}." ),
+ max: $.validator.format( "Vul hier een waarde in kleiner dan of gelijk aan {0}." ),
+ min: $.validator.format( "Vul hier een waarde in groter dan of gelijk aan {0}." ),
+ step: $.validator.format( "Vul hier een veelvoud van {0} in." ),
- // for validations in additional-methods.js
- iban: "Vul hier een geldig IBAN in.",
- dateNL: "Vul hier een geldige datum in.",
- phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
- mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
- postalcodeNL: "Vul hier een geldige postcode in.",
- bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
- giroaccountNL: "Vul hier een geldig gironummer in.",
- bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in."
- });
-}(jQuery));
\ No newline at end of file
+ // For validations in additional-methods.js
+ iban: "Vul hier een geldig IBAN in.",
+ dateNL: "Vul hier een geldige datum in.",
+ phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
+ mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
+ postalcodeNL: "Vul hier een geldige postcode in.",
+ bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
+ giroaccountNL: "Vul hier een geldig gironummer in.",
+ bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_no.js b/js/lib/jquery/plugins/validate/localization/messages_no.js
index 9ba6d2f5b5d..d6d7be08935 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_no.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_no.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: NO (Norwegian; Norsk)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Dette feltet er obligatorisk.",
- maxlength: $.validator.format("Maksimalt {0} tegn."),
- minlength: $.validator.format("Minimum {0} tegn."),
- rangelength: $.validator.format("Angi minimum {0} og maksimum {1} tegn."),
- email: "Oppgi en gyldig epostadresse.",
- url: "Angi en gyldig URL.",
- date: "Angi en gyldig dato.",
- dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
- dateSE: "Angi en gyldig dato.",
- number: "Angi et gyldig nummer.",
- numberSE: "Angi et gyldig nummer.",
- digits: "Skriv kun tall.",
- equalTo: "Skriv samme verdi igjen.",
- range: $.validator.format("Angi en verdi mellom {0} og {1}."),
- max: $.validator.format("Angi en verdi som er mindre eller lik {0}."),
- min: $.validator.format("Angi en verdi som er større eller lik {0}."),
- creditcard: "Angi et gyldig kredittkortnummer."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Angi en verdi.",
+ remote: "Ugyldig verdi.",
+ email: "Angi en gyldig epostadresse.",
+ url: "Angi en gyldig URL.",
+ date: "Angi en gyldig dato.",
+ dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ number: "Angi et gyldig tall.",
+ digits: "Skriv kun tall.",
+ equalTo: "Skriv samme verdi igjen.",
+ maxlength: $.validator.format( "Maksimalt {0} tegn." ),
+ minlength: $.validator.format( "Minimum {0} tegn." ),
+ rangelength: $.validator.format( "Angi minimum {0} og maksimum {1} tegn." ),
+ range: $.validator.format( "Angi en verdi mellom {0} og {1}." ),
+ max: $.validator.format( "Angi en verdi som er mindre eller lik {0}." ),
+ min: $.validator.format( "Angi en verdi som er større eller lik {0}." ),
+ step: $.validator.format( "Angi en verdi ganger {0}." ),
+ creditcard: "Angi et gyldig kredittkortnummer."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_pl.js b/js/lib/jquery/plugins/validate/localization/messages_pl.js
index fcf2f6df867..15647970acd 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_pl.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_pl.js
@@ -1,25 +1,38 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: PL (Polish; język polski, polszczyzna)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "To pole jest wymagane.",
- remote: "Proszę o wypełnienie tego pola.",
- email: "Proszę o podanie prawidłowego adresu email.",
- url: "Proszę o podanie prawidłowego URL.",
- date: "Proszę o podanie prawidłowej daty.",
- dateISO: "Proszę o podanie prawidłowej daty (ISO).",
- number: "Proszę o podanie prawidłowej liczby.",
- digits: "Proszę o podanie samych cyfr.",
- creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
- equalTo: "Proszę o podanie tej samej wartości ponownie.",
- accept: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
- maxlength: $.validator.format("Proszę o podanie nie więcej niż {0} znaków."),
- minlength: $.validator.format("Proszę o podanie przynajmniej {0} znaków."),
- rangelength: $.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."),
- range: $.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."),
- max: $.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."),
- min: $.validator.format("Proszę o podanie wartości większej bądź równej {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "To pole jest wymagane.",
+ remote: "Proszę o wypełnienie tego pola.",
+ email: "Proszę o podanie prawidłowego adresu email.",
+ url: "Proszę o podanie prawidłowego URL.",
+ date: "Proszę o podanie prawidłowej daty.",
+ dateISO: "Proszę o podanie prawidłowej daty (ISO).",
+ number: "Proszę o podanie prawidłowej liczby.",
+ digits: "Proszę o podanie samych cyfr.",
+ creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
+ equalTo: "Proszę o podanie tej samej wartości ponownie.",
+ extension: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
+ nipPL: "Proszę o podanie prawidłowego numeru NIP.",
+ phonePL: "Proszę o podanie prawidłowego numeru telefonu.",
+ maxlength: $.validator.format( "Proszę o podanie nie więcej niż {0} znaków." ),
+ minlength: $.validator.format( "Proszę o podanie przynajmniej {0} znaków." ),
+ rangelength: $.validator.format( "Proszę o podanie wartości o długości od {0} do {1} znaków." ),
+ range: $.validator.format( "Proszę o podanie wartości z przedziału od {0} do {1}." ),
+ max: $.validator.format( "Proszę o podanie wartości mniejszej bądź równej {0}." ),
+ min: $.validator.format( "Proszę o podanie wartości większej bądź równej {0}." ),
+ pattern: $.validator.format( "Pole zawiera niedozwolone znaki." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_pt_BR.js b/js/lib/jquery/plugins/validate/localization/messages_pt_BR.js
index dd9434802c3..8e7137cf5d9 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_pt_BR.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_pt_BR.js
@@ -1,26 +1,91 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: PT (Portuguese; português)
* Region: BR (Brazil)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Este campo é requerido.",
- remote: "Por favor, corrija este campo.",
- email: "Por favor, forneça um endereço eletrônico válido.",
- url: "Por favor, forneça uma URL válida.",
- date: "Por favor, forneça uma data válida.",
- dateISO: "Por favor, forneça uma data válida (ISO).",
- number: "Por favor, forneça um número válido.",
- digits: "Por favor, forneça somente dígitos.",
- creditcard: "Por favor, forneça um cartão de crédito válido.",
- equalTo: "Por favor, forneça o mesmo valor novamente.",
- accept: "Por favor, forneça um valor com uma extensão válida.",
- maxlength: $.validator.format("Por favor, forneça não mais que {0} caracteres."),
- minlength: $.validator.format("Por favor, forneça ao menos {0} caracteres."),
- rangelength: $.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."),
- range: $.validator.format("Por favor, forneça um valor entre {0} e {1}."),
- max: $.validator.format("Por favor, forneça um valor menor ou igual a {0}."),
- min: $.validator.format("Por favor, forneça um valor maior ou igual a {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+
+ // Core
+ required: "Este campo é requerido.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, forneça um endereço de email válido.",
+ url: "Por favor, forneça uma URL válida.",
+ date: "Por favor, forneça uma data válida.",
+ dateISO: "Por favor, forneça uma data válida (ISO).",
+ number: "Por favor, forneça um número válido.",
+ digits: "Por favor, forneça somente dígitos.",
+ creditcard: "Por favor, forneça um cartão de crédito válido.",
+ equalTo: "Por favor, forneça o mesmo valor novamente.",
+ maxlength: $.validator.format( "Por favor, forneça não mais que {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, forneça ao menos {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, forneça um valor entre {0} e {1} caracteres de comprimento." ),
+ range: $.validator.format( "Por favor, forneça um valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, forneça um valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, forneça um valor maior ou igual a {0}." ),
+ step: $.validator.format( "Por favor, forneça um valor múltiplo de {0}." ),
+
+ // Metodos Adicionais
+ maxWords: $.validator.format( "Por favor, forneça com {0} palavras ou menos." ),
+ minWords: $.validator.format( "Por favor, forneça pelo menos {0} palavras." ),
+ rangeWords: $.validator.format( "Por favor, forneça entre {0} e {1} palavras." ),
+ accept: "Por favor, forneça um tipo válido.",
+ alphanumeric: "Por favor, forneça somente com letras, números e sublinhados.",
+ bankaccountNL: "Por favor, forneça com um número de conta bancária válida.",
+ bankorgiroaccountNL: "Por favor, forneça um banco válido ou número de conta.",
+ bic: "Por favor, forneça um código BIC válido.",
+ cifES: "Por favor, forneça um código CIF válido.",
+ creditcardtypes: "Por favor, forneça um número de cartão de crédito válido.",
+ currency: "Por favor, forneça uma moeda válida.",
+ dateFA: "Por favor, forneça uma data correta.",
+ dateITA: "Por favor, forneça uma data correta.",
+ dateNL: "Por favor, forneça uma data correta.",
+ extension: "Por favor, forneça um valor com uma extensão válida.",
+ giroaccountNL: "Por favor, forneça um número de conta corrente válido.",
+ iban: "Por favor, forneça um código IBAN válido.",
+ integer: "Por favor, forneça um número não decimal.",
+ ipv4: "Por favor, forneça um IPv4 válido.",
+ ipv6: "Por favor, forneça um IPv6 válido.",
+ lettersonly: "Por favor, forneça apenas com letras.",
+ letterswithbasicpunc: "Por favor, forneça apenas letras ou pontuações.",
+ mobileNL: "Por favor, forneceça um número válido de telefone.",
+ mobileUK: "Por favor, forneceça um número válido de telefone.",
+ nieES: "Por favor, forneça um NIE válido.",
+ nifES: "Por favor, forneça um NIF válido.",
+ nowhitespace: "Por favor, não utilize espaços em branco.",
+ pattern: "O formato fornecido é inválido.",
+ phoneNL: "Por favor, forneça um número de telefone válido.",
+ phoneUK: "Por favor, forneça um número de telefone válido.",
+ phoneUS: "Por favor, forneça um número de telefone válido.",
+ phonesUK: "Por favor, forneça um número de telefone válido.",
+ postalCodeCA: "Por favor, forneça um número de código postal válido.",
+ postalcodeIT: "Por favor, forneça um número de código postal válido.",
+ postalcodeNL: "Por favor, forneça um número de código postal válido.",
+ postcodeUK: "Por favor, forneça um número de código postal válido.",
+ postalcodeBR: "Por favor, forneça um CEP válido.",
+ require_from_group: $.validator.format( "Por favor, forneça pelo menos {0} destes campos." ),
+ skip_or_fill_minimum: $.validator.format( "Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles." ),
+ stateUS: "Por favor, forneça um estado válido.",
+ strippedminlength: $.validator.format( "Por favor, forneça pelo menos {0} caracteres." ),
+ time: "Por favor, forneça um horário válido, no intervado de 00:00 a 23:59.",
+ time12h: "Por favor, forneça um horário válido, no intervado de 01:00 a 12:59 am/pm.",
+ url2: "Por favor, forneça uma URL válida.",
+ vinUS: "O número de identificação de veículo informado (VIN) é inválido.",
+ zipcodeUS: "Por favor, forneça um código postal americano válido.",
+ ziprange: "O código postal deve estar entre 902xx-xxxx e 905xx-xxxx.",
+ cpfBR: "Por favor, forneça um CPF válido.",
+ nisBR: "Por favor, forneça um NIS/PIS válido.",
+ cnhBR: "Por favor, forneça um CNH válido.",
+ cnpjBR: "Por favor, forneça um CNPJ válido."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_pt_PT.js b/js/lib/jquery/plugins/validate/localization/messages_pt_PT.js
index 41b239e3345..d3b3ae57946 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_pt_PT.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_pt_PT.js
@@ -1,26 +1,39 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: PT (Portuguese; português)
* Region: PT (Portugal)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Campo de preenchimento obrigatório.",
- remote: "Por favor, corrija este campo.",
- email: "Por favor, introduza um endereço eletrónico válido.",
- url: "Por favor, introduza um URL válido.",
- date: "Por favor, introduza uma data válida.",
- dateISO: "Por favor, introduza uma data válida (ISO).",
- number: "Por favor, introduza um número válido.",
- digits: "Por favor, introduza apenas dígitos.",
- creditcard: "Por favor, introduza um número de cartão de crédito válido.",
- equalTo: "Por favor, introduza de novo o mesmo valor.",
- accept: "Por favor, introduza um ficheiro com uma extensão válida.",
- maxlength: $.validator.format("Por favor, não introduza mais do que {0} caracteres."),
- minlength: $.validator.format("Por favor, introduza pelo menos {0} caracteres."),
- rangelength: $.validator.format("Por favor, introduza entre {0} e {1} caracteres."),
- range: $.validator.format("Por favor, introduza um valor entre {0} e {1}."),
- max: $.validator.format("Por favor, introduza um valor menor ou igual a {0}."),
- min: $.validator.format("Por favor, introduza um valor maior ou igual a {0}.")
- });
-}(jQuery));
+$.extend( $.validator.messages, {
+ required: "Campo de preenchimento obrigatório.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, introduza um endereço eletrónico válido.",
+ url: "Por favor, introduza um URL válido.",
+ date: "Por favor, introduza uma data válida.",
+ dateISO: "Por favor, introduza uma data válida (ISO).",
+ number: "Por favor, introduza um número válido.",
+ digits: "Por favor, introduza apenas dígitos.",
+ creditcard: "Por favor, introduza um número de cartão de crédito válido.",
+ equalTo: "Por favor, introduza de novo o mesmo valor.",
+ extension: "Por favor, introduza um ficheiro com uma extensão válida.",
+ maxlength: $.validator.format( "Por favor, não introduza mais do que {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, introduza pelo menos {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, introduza entre {0} e {1} caracteres." ),
+ range: $.validator.format( "Por favor, introduza um valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, introduza um valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, introduza um valor maior ou igual a {0}." ),
+ nifES: "Por favor, introduza um NIF válido.",
+ nieES: "Por favor, introduza um NIE válido.",
+ cifES: "Por favor, introduza um CIF válido."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ro.js b/js/lib/jquery/plugins/validate/localization/messages_ro.js
index 6286f80f767..ad4f9cdcb02 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ro.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ro.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: RO (Romanian, limba română)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Acest câmp este obligatoriu.",
- remote: "Te rugăm să completezi acest câmp.",
- email: "Te rugăm să introduci o adresă de email validă",
- url: "Te rugăm sa introduci o adresă URL validă.",
- date: "Te rugăm să introduci o dată corectă.",
- dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
- number: "Te rugăm să introduci un număr întreg valid.",
- digits: "Te rugăm să introduci doar cifre.",
- creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
- equalTo: "Te rugăm să reintroduci valoarea.",
- accept: "Te rugăm să introduci o valoare cu o extensie validă.",
- maxlength: $.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."),
- minlength: $.validator.format("Te rugăm să introduci cel puțin {0} caractere."),
- rangelength: $.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."),
- range: $.validator.format("Te rugăm să introduci o valoare între {0} și {1}."),
- max: $.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."),
- min: $.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Acest câmp este obligatoriu.",
+ remote: "Te rugăm să completezi acest câmp.",
+ email: "Te rugăm să introduci o adresă de email validă.",
+ url: "Te rugăm sa introduci o adresă URL validă.",
+ date: "Te rugăm să introduci o dată corectă.",
+ dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
+ number: "Te rugăm să introduci un număr întreg valid.",
+ digits: "Te rugăm să introduci doar cifre.",
+ creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
+ equalTo: "Te rugăm să reintroduci valoarea.",
+ extension: "Te rugăm să introduci o valoare cu o extensie validă.",
+ maxlength: $.validator.format( "Te rugăm să nu introduci mai mult de {0} caractere." ),
+ minlength: $.validator.format( "Te rugăm să introduci cel puțin {0} caractere." ),
+ rangelength: $.validator.format( "Te rugăm să introduci o valoare între {0} și {1} caractere." ),
+ range: $.validator.format( "Te rugăm să introduci o valoare între {0} și {1}." ),
+ max: $.validator.format( "Te rugăm să introduci o valoare egal sau mai mică decât {0}." ),
+ min: $.validator.format( "Te rugăm să introduci o valoare egal sau mai mare decât {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ru.js b/js/lib/jquery/plugins/validate/localization/messages_ru.js
index 46dc78168e3..9f600510d1f 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_ru.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_ru.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: RU (Russian; русский язык)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Это поле необходимо заполнить.",
- remote: "Пожалуйста, введите правильное значение.",
- email: "Пожалуйста, введите корректный адрес электронной почты.",
- url: "Пожалуйста, введите корректный URL.",
- date: "Пожалуйста, введите корректную дату.",
- dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
- number: "Пожалуйста, введите число.",
- digits: "Пожалуйста, вводите только цифры.",
- creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
- equalTo: "Пожалуйста, введите такое же значение ещё раз.",
- accept: "Пожалуйста, выберите файл с правильным расширением.",
- maxlength: $.validator.format("Пожалуйста, введите не больше {0} символов."),
- minlength: $.validator.format("Пожалуйста, введите не меньше {0} символов."),
- rangelength: $.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."),
- range: $.validator.format("Пожалуйста, введите число от {0} до {1}."),
- max: $.validator.format("Пожалуйста, введите число, меньшее или равное {0}."),
- min: $.validator.format("Пожалуйста, введите число, большее или равное {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Это поле необходимо заполнить.",
+ remote: "Пожалуйста, введите правильное значение.",
+ email: "Пожалуйста, введите корректный адрес электронной почты.",
+ url: "Пожалуйста, введите корректный URL.",
+ date: "Пожалуйста, введите корректную дату.",
+ dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
+ number: "Пожалуйста, введите число.",
+ digits: "Пожалуйста, вводите только цифры.",
+ creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
+ equalTo: "Пожалуйста, введите такое же значение ещё раз.",
+ extension: "Пожалуйста, выберите файл с правильным расширением.",
+ maxlength: $.validator.format( "Пожалуйста, введите не больше {0} символов." ),
+ minlength: $.validator.format( "Пожалуйста, введите не меньше {0} символов." ),
+ rangelength: $.validator.format( "Пожалуйста, введите значение длиной от {0} до {1} символов." ),
+ range: $.validator.format( "Пожалуйста, введите число от {0} до {1}." ),
+ max: $.validator.format( "Пожалуйста, введите число, меньшее или равное {0}." ),
+ min: $.validator.format( "Пожалуйста, введите число, большее или равное {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sd.js b/js/lib/jquery/plugins/validate/localization/messages_sd.js
new file mode 100644
index 00000000000..25741679fb1
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_sd.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SD (Sindhi; سنڌي)
+ */
+$.extend( $.validator.messages, {
+ required: "هنن جاين جي ضرورت آهي",
+ remote: "هنن جاين جي ضرورت آهي",
+ email: "لکيل اي ميل غلط آهي",
+ url: "لکيل ايڊريس غلط آهي",
+ date: "لکيل تاريخ غلط آهي",
+ dateISO: "جي معيار جي مطابق نه آهي (ISO) لکيل تاريخ",
+ number: "لکيل انگ صحيح ناهي",
+ digits: "رڳو انگ داخل ڪري سگهجي ٿو",
+ creditcard: "لکيل ڪارڊ نمبر صحيح نه آهي",
+ equalTo: "داخل ٿيل ڀيٽ صحيح نه آهي",
+ extension: "لکيل غلط آهي",
+ maxlength: $.validator.format( "وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي" ),
+ minlength: $.validator.format( "گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي" ),
+ rangelength: $.validator.format( "داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي" ),
+ range: $.validator.format( "داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي" ),
+ max: $.validator.format( "وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي" ),
+ min: $.validator.format( "گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_si.js b/js/lib/jquery/plugins/validate/localization/messages_si.js
index 0c280e80db9..8d45b74adfc 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_si.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_si.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: SI (Slovenian)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "To polje je obvezno.",
- remote: "Vpis v tem polju ni v pravi obliki.",
- email: "Prosimo, vnesite pravi email naslov.",
- url: "Prosimo, vnesite pravi URL.",
- date: "Prosimo, vnesite pravi datum.",
- dateISO: "Prosimo, vnesite pravi datum (ISO).",
- number: "Prosimo, vnesite pravo številko.",
- digits: "Prosimo, vnesite samo številke.",
- creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
- equalTo: "Prosimo, ponovno vnesite enako vsebino.",
- accept: "Prosimo, vnesite vsebino z pravo končnico.",
- maxlength: $.validator.format("Prosimo, da ne vnašate več kot {0} znakov."),
- minlength: $.validator.format("Prosimo, vnesite vsaj {0} znakov."),
- rangelength: $.validator.format("Prosimo, vnesite od {0} do {1} znakov."),
- range: $.validator.format("Prosimo, vnesite vrednost med {0} in {1}."),
- max: $.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."),
- min: $.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.")
- });
-}(jQuery));
+$.extend( $.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Vpis v tem polju ni v pravi obliki.",
+ email: "Prosimo, vnesite pravi email naslov.",
+ url: "Prosimo, vnesite pravi URL.",
+ date: "Prosimo, vnesite pravi datum.",
+ dateISO: "Prosimo, vnesite pravi datum (ISO).",
+ number: "Prosimo, vnesite pravo številko.",
+ digits: "Prosimo, vnesite samo številke.",
+ creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
+ equalTo: "Prosimo, ponovno vnesite enako vsebino.",
+ extension: "Prosimo, vnesite vsebino z pravo končnico.",
+ maxlength: $.validator.format( "Prosimo, da ne vnašate več kot {0} znakov." ),
+ minlength: $.validator.format( "Prosimo, vnesite vsaj {0} znakov." ),
+ rangelength: $.validator.format( "Prosimo, vnesite od {0} do {1} znakov." ),
+ range: $.validator.format( "Prosimo, vnesite vrednost med {0} in {1}." ),
+ max: $.validator.format( "Prosimo, vnesite vrednost manjšo ali enako {0}." ),
+ min: $.validator.format( "Prosimo, vnesite vrednost večjo ali enako {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sk.js b/js/lib/jquery/plugins/validate/localization/messages_sk.js
index bc6340abfcd..0f9becf59fb 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_sk.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_sk.js
@@ -1,22 +1,33 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: SK (Slovak; slovenčina, slovenský jazyk)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Povinné zadať.",
- maxlength: $.validator.format("Maximálne {0} znakov."),
- minlength: $.validator.format("Minimálne {0} znakov."),
- rangelength: $.validator.format("Minimálne {0} a Maximálne {0} znakov."),
- email: "E-mailová adresa musí byť platná.",
- url: "URL musí byť platný.",
- date: "Musí byť dátum.",
- number: "Musí byť číslo.",
- digits: "Môže obsahovať iba číslice.",
- equalTo: "Dva hodnoty sa musia rovnať.",
- range: $.validator.format("Musí byť medzi {0} a {1}."),
- max: $.validator.format("Nemôže byť viac ako{0}."),
- min: $.validator.format("Nemôže byť menej ako{0}."),
- creditcard: "Číslo platobnej karty musí byť platné."
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Povinné zadať.",
+ maxlength: $.validator.format( "Maximálne {0} znakov." ),
+ minlength: $.validator.format( "Minimálne {0} znakov." ),
+ rangelength: $.validator.format( "Minimálne {0} a maximálne {1} znakov." ),
+ email: "E-mailová adresa musí byť platná.",
+ url: "URL musí byť platná.",
+ date: "Musí byť dátum.",
+ number: "Musí byť číslo.",
+ digits: "Môže obsahovať iba číslice.",
+ equalTo: "Dve hodnoty sa musia rovnať.",
+ range: $.validator.format( "Musí byť medzi {0} a {1}." ),
+ max: $.validator.format( "Nemôže byť viac ako {0}." ),
+ min: $.validator.format( "Nemôže byť menej ako {0}." ),
+ creditcard: "Číslo platobnej karty musí byť platné.",
+ step: $.validator.format( "Musí byť násobkom čísla {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sl.js b/js/lib/jquery/plugins/validate/localization/messages_sl.js
index fa53d6d721c..9902b44828e 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_sl.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_sl.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Language: SL (Slovenian; slovenski jezik)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "To polje je obvezno.",
- remote: "Prosimo popravite to polje.",
- email: "Prosimo vnesite veljaven email naslov.",
- url: "Prosimo vnesite veljaven URL naslov.",
- date: "Prosimo vnesite veljaven datum.",
- dateISO: "Prosimo vnesite veljaven ISO datum.",
- number: "Prosimo vnesite veljavno število.",
- digits: "Prosimo vnesite samo števila.",
- creditcard: "Prosimo vnesite veljavno številko kreditne kartice.",
- equalTo: "Prosimo ponovno vnesite vrednost.",
- accept: "Prosimo vnesite vrednost z veljavno končnico.",
- maxlength: $.validator.format("Prosimo vnesite največ {0} znakov."),
- minlength: $.validator.format("Prosimo vnesite najmanj {0} znakov."),
- rangelength: $.validator.format("Prosimo vnesite najmanj {0} in največ {1} znakov."),
- range: $.validator.format("Prosimo vnesite vrednost med {0} in {1}."),
- max: $.validator.format("Prosimo vnesite vrednost manjše ali enako {0}."),
- min: $.validator.format("Prosimo vnesite vrednost večje ali enako {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Prosimo popravite to polje.",
+ email: "Prosimo vnesite veljaven email naslov.",
+ url: "Prosimo vnesite veljaven URL naslov.",
+ date: "Prosimo vnesite veljaven datum.",
+ dateISO: "Prosimo vnesite veljaven ISO datum.",
+ number: "Prosimo vnesite veljavno število.",
+ digits: "Prosimo vnesite samo števila.",
+ creditcard: "Prosimo vnesite veljavno številko kreditne kartice.",
+ equalTo: "Prosimo ponovno vnesite vrednost.",
+ extension: "Prosimo vnesite vrednost z veljavno končnico.",
+ maxlength: $.validator.format( "Prosimo vnesite največ {0} znakov." ),
+ minlength: $.validator.format( "Prosimo vnesite najmanj {0} znakov." ),
+ rangelength: $.validator.format( "Prosimo vnesite najmanj {0} in največ {1} znakov." ),
+ range: $.validator.format( "Prosimo vnesite vrednost med {0} in {1}." ),
+ max: $.validator.format( "Prosimo vnesite vrednost manjše ali enako {0}." ),
+ min: $.validator.format( "Prosimo vnesite vrednost večje ali enako {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sr.js b/js/lib/jquery/plugins/validate/localization/messages_sr.js
index 73b5ec7ae1a..f6c5143c06e 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_sr.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_sr.js
@@ -1,25 +1,36 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: SR (Serbian; српски језик)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Поље је обавезно.",
- remote: "Средите ово поље.",
- email: "Унесите исправну и-мејл адресу",
- url: "Унесите исправан URL.",
- date: "Унесите исправан датум.",
- dateISO: "Унесите исправан датум (ISO).",
- number: "Унесите исправан број.",
- digits: "Унесите само цифе.",
- creditcard: "Унесите исправан број кредитне картице.",
- equalTo: "Унесите исту вредност поново.",
- accept: "Унесите вредност са одговарајућом екстензијом.",
- maxlength: $.validator.format("Унесите мање од {0}карактера."),
- minlength: $.validator.format("Унесите барем {0} карактера."),
- rangelength: $.validator.format("Унесите вредност дугачку између {0} и {1} карактера."),
- range: $.validator.format("Унесите вредност између {0} и {1}."),
- max: $.validator.format("Унесите вредност мању или једнаку {0}."),
- min: $.validator.format("Унесите вредност већу или једнаку {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Поље је обавезно.",
+ remote: "Средите ово поље.",
+ email: "Унесите исправну и-мејл адресу.",
+ url: "Унесите исправан URL.",
+ date: "Унесите исправан датум.",
+ dateISO: "Унесите исправан датум (ISO).",
+ number: "Унесите исправан број.",
+ digits: "Унесите само цифе.",
+ creditcard: "Унесите исправан број кредитне картице.",
+ equalTo: "Унесите исту вредност поново.",
+ extension: "Унесите вредност са одговарајућом екстензијом.",
+ maxlength: $.validator.format( "Унесите мање од {0} карактера." ),
+ minlength: $.validator.format( "Унесите барем {0} карактера." ),
+ rangelength: $.validator.format( "Унесите вредност дугачку између {0} и {1} карактера." ),
+ range: $.validator.format( "Унесите вредност између {0} и {1}." ),
+ max: $.validator.format( "Унесите вредност мању или једнаку {0}." ),
+ min: $.validator.format( "Унесите вредност већу или једнаку {0}." ),
+ step: $.validator.format( "Унесите вредност која је умножак броја {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sr_lat.js b/js/lib/jquery/plugins/validate/localization/messages_sr_lat.js
new file mode 100644
index 00000000000..c58f17825b2
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_sr_lat.js
@@ -0,0 +1,36 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SR (Serbian - Latin alphabet; srpski jezik - latinica)
+ */
+$.extend( $.validator.messages, {
+ required: "Polje je obavezno.",
+ remote: "Sredite ovo polje.",
+ email: "Unesite ispravnu e-mail adresu.",
+ url: "Unesite ispravan URL.",
+ date: "Unesite ispravan datum.",
+ dateISO: "Unesite ispravan datum (ISO).",
+ number: "Unesite ispravan broj.",
+ digits: "Unesite samo cifre.",
+ creditcard: "Unesite ispravan broj kreditne kartice.",
+ equalTo: "Unesite istu vrednost ponovo.",
+ extension: "Unesite vrednost sa odgovarajućom ekstenzijom.",
+ maxlength: $.validator.format( "Unesite manje od {0} karaktera." ),
+ minlength: $.validator.format( "Unesite barem {0} karaktera." ),
+ rangelength: $.validator.format( "Unesite vrednost dugačku između {0} i {1} karaktera." ),
+ range: $.validator.format( "Unesite vrednost između {0} i {1}." ),
+ max: $.validator.format( "Unesite vrednost manju ili jednaku {0}." ),
+ min: $.validator.format( "Unesite vrednost veću ili jednaku {0}." ),
+ step: $.validator.format( "Unesite vrednost koja je umnožak broja {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_sv.js b/js/lib/jquery/plugins/validate/localization/messages_sv.js
index 26db0913a3e..c19e8ca0216 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_sv.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_sv.js
@@ -1,23 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: SV (Swedish; Svenska)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Detta fält är obligatoriskt.",
- maxlength: $.validator.format("Du får ange högst {0} tecken."),
- minlength: $.validator.format("Du måste ange minst {0} tecken."),
- rangelength: $.validator.format("Ange minst {0} och max {1} tecken."),
- email: "Ange en korrekt e-postadress.",
- url: "Ange en korrekt URL.",
- date: "Ange ett korrekt datum.",
- dateISO: "Ange ett korrekt datum (ÅÅÅÅ-MM-DD).",
- number: "Ange ett korrekt nummer.",
- digits: "Ange endast siffror.",
- equalTo: "Ange samma värde igen.",
- range: $.validator.format("Ange ett värde mellan {0} och {1}."),
- max: $.validator.format("Ange ett värde som är mindre eller lika med {0}."),
- min: $.validator.format("Ange ett värde som är större eller lika med {0}."),
- creditcard: "Ange ett korrekt kreditkortsnummer."
- });
-}(jQuery));
+$.extend( $.validator.messages, {
+ required: "Detta fält är obligatoriskt.",
+ remote: "Var snäll och åtgärda detta fält.",
+ maxlength: $.validator.format( "Du får ange högst {0} tecken." ),
+ minlength: $.validator.format( "Du måste ange minst {0} tecken." ),
+ rangelength: $.validator.format( "Ange minst {0} och max {1} tecken." ),
+ email: "Ange en korrekt e-postadress.",
+ url: "Ange en korrekt URL.",
+ date: "Ange ett korrekt datum.",
+ dateISO: "Ange ett korrekt datum (ÅÅÅÅ-MM-DD).",
+ number: "Ange ett korrekt nummer.",
+ digits: "Ange endast siffror.",
+ equalTo: "Ange samma värde igen.",
+ range: $.validator.format( "Ange ett värde mellan {0} och {1}." ),
+ max: $.validator.format( "Ange ett värde som är mindre eller lika med {0}." ),
+ min: $.validator.format( "Ange ett värde som är större eller lika med {0}." ),
+ creditcard: "Ange ett korrekt kreditkortsnummer.",
+ pattern: "Ogiltigt format."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_th.js b/js/lib/jquery/plugins/validate/localization/messages_th.js
index f3b02355674..0ca954d3a70 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_th.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_th.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: TH (Thai; ไทย)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "โปรดระบุ",
- remote: "โปรดแก้ไขให้ถูกต้อง",
- email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",
- url: "โปรดระบุ URL ที่ถูกต้อง",
- date: "โปรดระบุวันที่ ที่ถูกต้อง",
- dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",
- number: "โปรดระบุทศนิยมที่ถูกต้อง",
- digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง",
- creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",
- equalTo: "โปรดระบุค่าเดิมอีกครั้ง",
- accept: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",
- maxlength: $.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"),
- minlength: $.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"),
- rangelength: $.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"),
- range: $.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"),
- max: $.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"),
- min: $.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "โปรดระบุ",
+ remote: "โปรดแก้ไขให้ถูกต้อง",
+ email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",
+ url: "โปรดระบุ URL ที่ถูกต้อง",
+ date: "โปรดระบุวันที่ ที่ถูกต้อง",
+ dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",
+ number: "โปรดระบุทศนิยมที่ถูกต้อง",
+ digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง",
+ creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",
+ equalTo: "โปรดระบุค่าเดิมอีกครั้ง",
+ extension: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",
+ maxlength: $.validator.format( "โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ" ),
+ minlength: $.validator.format( "โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ" ),
+ rangelength: $.validator.format( "โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ" ),
+ range: $.validator.format( "โปรดระบุค่าระหว่าง {0} และ {1}" ),
+ max: $.validator.format( "โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}" ),
+ min: $.validator.format( "โปรดระบุค่ามากกว่าหรือเท่ากับ {0}" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_tj.js b/js/lib/jquery/plugins/validate/localization/messages_tj.js
new file mode 100644
index 00000000000..45c7dfd52f2
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_tj.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TJ (Tajikistan; Забони тоҷикӣ)
+ */
+$.extend( $.validator.messages, {
+ required: "Ворид кардани ин филд маҷбури аст.",
+ remote: "Илтимос, маълумоти саҳеҳ ворид кунед.",
+ email: "Илтимос, почтаи электронии саҳеҳ ворид кунед.",
+ url: "Илтимос, URL адреси саҳеҳ ворид кунед.",
+ date: "Илтимос, таърихи саҳеҳ ворид кунед.",
+ dateISO: "Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",
+ number: "Илтимос, рақамҳои саҳеҳ ворид кунед.",
+ digits: "Илтимос, танҳо рақам ворид кунед.",
+ creditcard: "Илтимос, кредит карди саҳеҳ ворид кунед.",
+ equalTo: "Илтимос, миқдори баробар ворид кунед.",
+ extension: "Илтимос, қофияи файлро дуруст интихоб кунед.",
+ maxlength: $.validator.format( "Илтимос, бештар аз {0} рамз ворид накунед." ),
+ minlength: $.validator.format( "Илтимос, камтар аз {0} рамз ворид накунед." ),
+ rangelength: $.validator.format( "Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед." ),
+ range: $.validator.format( "Илтимос, аз {0} то {1} рақам зиёд ворид кунед." ),
+ max: $.validator.format( "Илтимос, бештар аз {0} рақам ворид накунед." ),
+ min: $.validator.format( "Илтимос, камтар аз {0} рақам ворид накунед." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_tr.js b/js/lib/jquery/plugins/validate/localization/messages_tr.js
index 1c412180a21..6c32948ee1a 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_tr.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_tr.js
@@ -1,25 +1,37 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: TR (Turkish; Türkçe)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Bu alanın doldurulması zorunludur.",
- remote: "Lütfen bu alanı düzeltin.",
- email: "Lütfen geçerli bir e-posta adresi giriniz.",
- url: "Lütfen geçerli bir web adresi (URL) giriniz.",
- date: "Lütfen geçerli bir tarih giriniz.",
- dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)",
- number: "Lütfen geçerli bir sayı giriniz.",
- digits: "Lütfen sadece sayısal karakterler giriniz.",
- creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
- equalTo: "Lütfen aynı değeri tekrar giriniz.",
- accept: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
- maxlength: $.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),
- minlength: $.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),
- rangelength: $.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),
- range: $.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),
- max: $.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),
- min: $.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Bu alanın doldurulması zorunludur.",
+ remote: "Lütfen bu alanı düzeltin.",
+ email: "Lütfen geçerli bir e-posta adresi giriniz.",
+ url: "Lütfen geçerli bir web adresi (URL) giriniz.",
+ date: "Lütfen geçerli bir tarih giriniz.",
+ dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında).",
+ number: "Lütfen geçerli bir sayı giriniz.",
+ digits: "Lütfen sadece sayısal karakterler giriniz.",
+ creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
+ equalTo: "Lütfen aynı değeri tekrar giriniz.",
+ extension: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
+ phone: "Lütfen geçerli bir telefon numarası giriniz.",
+ maxlength: $.validator.format( "Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz." ),
+ minlength: $.validator.format( "Lütfen en az {0} karakter uzunluğunda bir değer giriniz." ),
+ rangelength: $.validator.format( "Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz." ),
+ range: $.validator.format( "Lütfen {0} ile {1} arasında bir değer giriniz." ),
+ max: $.validator.format( "Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz." ),
+ min: $.validator.format( "Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz." ),
+ require_from_group: $.validator.format( "Lütfen bu alanların en az {0} tanesini doldurunuz." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_uk.js b/js/lib/jquery/plugins/validate/localization/messages_uk.js
index cdea494b1d7..9531a957180 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_uk.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_uk.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: UK (Ukrainian; українська мова)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Це поле необхідно заповнити.",
- remote: "Будь ласка, введіть правильне значення.",
- email: "Будь ласка, введіть коректну адресу електронної пошти.",
- url: "Будь ласка, введіть коректний URL.",
- date: "Будь ласка, введіть коректну дату.",
- dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
- number: "Будь ласка, введіть число.",
- digits: "Вводите потрібно лише цифри.",
- creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
- equalTo: "Будь ласка, введіть таке ж значення ще раз.",
- accept: "Будь ласка, виберіть файл з правильним розширенням.",
- maxlength: $.validator.format("Будь ласка, введіть не більше {0} символів."),
- minlength: $.validator.format("Будь ласка, введіть не менше {0} символів."),
- rangelength: $.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."),
- range: $.validator.format("Будь ласка, введіть число від {0} до {1}."),
- max: $.validator.format("Будь ласка, введіть число, менше або рівно {0}."),
- min: $.validator.format("Будь ласка, введіть число, більше або рівно {0}.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Це поле необхідно заповнити.",
+ remote: "Будь ласка, введіть правильне значення.",
+ email: "Будь ласка, введіть коректну адресу електронної пошти.",
+ url: "Будь ласка, введіть коректний URL.",
+ date: "Будь ласка, введіть коректну дату.",
+ dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
+ number: "Будь ласка, введіть число.",
+ digits: "Вводите потрібно лише цифри.",
+ creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
+ equalTo: "Будь ласка, введіть таке ж значення ще раз.",
+ extension: "Будь ласка, виберіть файл з правильним розширенням.",
+ maxlength: $.validator.format( "Будь ласка, введіть не більше {0} символів." ),
+ minlength: $.validator.format( "Будь ласка, введіть не менше {0} символів." ),
+ rangelength: $.validator.format( "Будь ласка, введіть значення довжиною від {0} до {1} символів." ),
+ range: $.validator.format( "Будь ласка, введіть число від {0} до {1}." ),
+ max: $.validator.format( "Будь ласка, введіть число, менше або рівно {0}." ),
+ min: $.validator.format( "Будь ласка, введіть число, більше або рівно {0}." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_ur.js b/js/lib/jquery/plugins/validate/localization/messages_ur.js
new file mode 100644
index 00000000000..1327da075c8
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/messages_ur.js
@@ -0,0 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: UR (Urdu; اردو)
+ */
+$.extend( $.validator.messages, {
+ required: "ان معلومات کا اندراج ضروری ہے",
+ remote: "ان معلومات کا اندراج ضروری ہے",
+ email: "درج کی ہوئی ای میل درست نہیں ہے",
+ url: "درج کیا گیا پتہ درست نہیں ہے",
+ date: "درج کی گئی تاریخ درست نہیں ہے",
+ dateISO: "معیار کے مطابق نہیں ہے (ISO) درج کی گئی تاریخ",
+ number: "درج کیےگئے ہندسے درست نہیں ہیں",
+ digits: "صرف ہندسے اندراج کئے جاسکتے ہیں",
+ creditcard: "درج کیا گیا کارڈ نمبر درست نہیں ہے",
+ equalTo: "اندراج کا موازنہ درست نہیں ہے",
+ extension: "اندراج درست نہیں ہے",
+ maxlength: $.validator.format( "زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں" ),
+ minlength: $.validator.format( "کم سے کم {0} کا اندراج کرنا ضروری ہے" ),
+ rangelength: $.validator.format( "اندراج کا {0} اور {1}کے درمیان ہونا ضروری ہے" ),
+ range: $.validator.format( "اندراج کا {0} اور {1} کے درمیان ہونا ضروری ہے" ),
+ max: $.validator.format( "زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں" ),
+ min: $.validator.format( "کم سے کم {0} کا اندراج کرنا ضروری ہے" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_vi.js b/js/lib/jquery/plugins/validate/localization/messages_vi.js
index fd5f2b5d5e1..ae415453dc5 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_vi.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_vi.js
@@ -1,25 +1,35 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: VI (Vietnamese; Tiếng Việt)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "Hãy nhập.",
- remote: "Hãy sửa cho đúng.",
- email: "Hãy nhập email.",
- url: "Hãy nhập URL.",
- date: "Hãy nhập ngày.",
- dateISO: "Hãy nhập ngày (ISO).",
- number: "Hãy nhập số.",
- digits: "Hãy nhập chữ số.",
- creditcard: "Hãy nhập số thẻ tín dụng.",
- equalTo: "Hãy nhập thêm lần nữa.",
- accept: "Phần mở rộng không đúng.",
- maxlength: $.format("Hãy nhập từ {0} kí tự trở xuống."),
- minlength: $.format("Hãy nhập từ {0} kí tự trở lên."),
- rangelength: $.format("Hãy nhập từ {0} đến {1} kí tự."),
- range: $.format("Hãy nhập từ {0} đến {1}."),
- max: $.format("Hãy nhập từ {0} trở xuống."),
- min: $.format("Hãy nhập từ {1} trở lên.")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "Hãy nhập.",
+ remote: "Hãy sửa cho đúng.",
+ email: "Hãy nhập email.",
+ url: "Hãy nhập URL.",
+ date: "Hãy nhập ngày.",
+ dateISO: "Hãy nhập ngày (ISO).",
+ number: "Hãy nhập số.",
+ digits: "Hãy nhập chữ số.",
+ creditcard: "Hãy nhập số thẻ tín dụng.",
+ equalTo: "Hãy nhập thêm lần nữa.",
+ extension: "Phần mở rộng không đúng.",
+ maxlength: $.validator.format( "Hãy nhập từ {0} kí tự trở xuống." ),
+ minlength: $.validator.format( "Hãy nhập từ {0} kí tự trở lên." ),
+ rangelength: $.validator.format( "Hãy nhập từ {0} đến {1} kí tự." ),
+ range: $.validator.format( "Hãy nhập từ {0} đến {1}." ),
+ max: $.validator.format( "Hãy nhập từ {0} trở xuống." ),
+ min: $.validator.format( "Hãy nhập từ {0} trở lên." )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_zh.js b/js/lib/jquery/plugins/validate/localization/messages_zh.js
index 2c4d5c30843..afc74ab0666 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_zh.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_zh.js
@@ -1,25 +1,36 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "必选字段",
- remote: "请修正该字段",
- email: "请输入正确格式的电子邮件",
- url: "请输入合法的网址",
- date: "请输入合法的日期",
- dateISO: "请输入合法的日期 (ISO).",
- number: "请输入合法的数字",
- digits: "只能输入整数",
- creditcard: "请输入合法的信用卡号",
- equalTo: "请再次输入相同的值",
- accept: "请输入拥有合法后缀名的字符串",
- maxlength: $.validator.format("请输入一个长度最多是 {0} 的字符串"),
- minlength: $.validator.format("请输入一个长度最少是 {0} 的字符串"),
- rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
- range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
- max: $.validator.format("请输入一个最大为 {0} 的值"),
- min: $.validator.format("请输入一个最小为 {0} 的值")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "这是必填字段",
+ remote: "请修正此字段",
+ email: "请输入有效的电子邮件地址",
+ url: "请输入有效的网址",
+ date: "请输入有效的日期",
+ dateISO: "请输入有效的日期 (YYYY-MM-DD)",
+ number: "请输入有效的数字",
+ digits: "只能输入数字",
+ creditcard: "请输入有效的信用卡号码",
+ equalTo: "你的输入不相同",
+ extension: "请输入有效的后缀",
+ maxlength: $.validator.format( "最多可以输入 {0} 个字符" ),
+ minlength: $.validator.format( "最少要输入 {0} 个字符" ),
+ rangelength: $.validator.format( "请输入长度在 {0} 到 {1} 之间的字符串" ),
+ range: $.validator.format( "请输入范围在 {0} 到 {1} 之间的数值" ),
+ step: $.validator.format( "请输入 {0} 的整数倍值" ),
+ max: $.validator.format( "请输入不大于 {0} 的数值" ),
+ min: $.validator.format( "请输入不小于 {0} 的数值" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/messages_zh_TW.js b/js/lib/jquery/plugins/validate/localization/messages_zh_TW.js
index ec0a2ffbc55..991201471b7 100644
--- a/js/lib/jquery/plugins/validate/localization/messages_zh_TW.js
+++ b/js/lib/jquery/plugins/validate/localization/messages_zh_TW.js
@@ -1,26 +1,37 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Translated default messages for the jQuery validation plugin.
* Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)
* Region: TW (Taiwan)
*/
-(function ($) {
- $.extend($.validator.messages, {
- required: "必填",
- remote: "請修正此欄位",
- email: "請輸入正確的電子信箱",
- url: "請輸入合法的URL",
- date: "請輸入合法的日期",
- dateISO: "請輸入合法的日期 (ISO).",
- number: "請輸入數字",
- digits: "請輸入整數",
- creditcard: "請輸入合法的信用卡號碼",
- equalTo: "請重複輸入一次",
- accept: "請輸入有效的後缀字串",
- maxlength: $.validator.format("請輸入長度不大於{0} 的字串"),
- minlength: $.validator.format("請輸入長度不小於 {0} 的字串"),
- rangelength: $.validator.format("請輸入長度介於 {0} 和 {1} 之間的字串"),
- range: $.validator.format("請輸入介於 {0} 和 {1} 之間的數值"),
- max: $.validator.format("請輸入不大於 {0} 的數值"),
- min: $.validator.format("請輸入不小於 {0} 的數值")
- });
-}(jQuery));
\ No newline at end of file
+$.extend( $.validator.messages, {
+ required: "必須填寫",
+ remote: "請修正此欄位",
+ email: "請輸入有效的電子郵件",
+ url: "請輸入有效的網址",
+ date: "請輸入有效的日期",
+ dateISO: "請輸入有效的日期 (YYYY-MM-DD)",
+ number: "請輸入正確的數值",
+ digits: "只可輸入數字",
+ creditcard: "請輸入有效的信用卡號碼",
+ equalTo: "請重複輸入一次",
+ extension: "請輸入有效的後綴",
+ maxlength: $.validator.format( "最多 {0} 個字" ),
+ minlength: $.validator.format( "最少 {0} 個字" ),
+ rangelength: $.validator.format( "請輸入長度為 {0} 至 {1} 之間的字串" ),
+ range: $.validator.format( "請輸入 {0} 至 {1} 之間的數值" ),
+ step: $.validator.format( "請輸入 {0} 的整數倍值" ),
+ max: $.validator.format( "請輸入不大於 {0} 的數值" ),
+ min: $.validator.format( "請輸入不小於 {0} 的數值" )
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_de.js b/js/lib/jquery/plugins/validate/localization/methods_de.js
index 3e8ac8437e0..da10e46984f 100644
--- a/js/lib/jquery/plugins/validate/localization/methods_de.js
+++ b/js/lib/jquery/plugins/validate/localization/methods_de.js
@@ -1,12 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Localized default methods for the jQuery validation plugin.
* Locale: DE
*/
-jQuery.extend(jQuery.validator.methods, {
- date: function(value, element) {
- return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test( value );
},
- number: function(value, element) {
- return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
}
-});
\ No newline at end of file
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_es_CL.js b/js/lib/jquery/plugins/validate/localization/methods_es_CL.js
new file mode 100644
index 00000000000..fc8971e951e
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/methods_es_CL.js
@@ -0,0 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: ES_CL
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
+ }
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_fi.js b/js/lib/jquery/plugins/validate/localization/methods_fi.js
new file mode 100644
index 00000000000..bb7e95eac08
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/methods_fi.js
@@ -0,0 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: FI
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d{1,2}\.\d{1,2}\.\d{4}$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+)(?:,\d+)?$/.test( value );
+ }
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_it.js b/js/lib/jquery/plugins/validate/localization/methods_it.js
new file mode 100644
index 00000000000..b0ad79e5019
--- /dev/null
+++ b/js/lib/jquery/plugins/validate/localization/methods_it.js
@@ -0,0 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: IT
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
+ }
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_nl.js b/js/lib/jquery/plugins/validate/localization/methods_nl.js
index 450041b14e9..e83f337ff88 100644
--- a/js/lib/jquery/plugins/validate/localization/methods_nl.js
+++ b/js/lib/jquery/plugins/validate/localization/methods_nl.js
@@ -1,9 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Localized default methods for the jQuery validation plugin.
* Locale: NL
*/
-jQuery.extend(jQuery.validator.methods, {
- date: function(value, element) {
- return this.optional(element) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test(value);
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
}
-});
\ No newline at end of file
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/js/lib/jquery/plugins/validate/localization/methods_pt.js b/js/lib/jquery/plugins/validate/localization/methods_pt.js
index 21879d3bb66..a74b65fd4c2 100644
--- a/js/lib/jquery/plugins/validate/localization/methods_pt.js
+++ b/js/lib/jquery/plugins/validate/localization/methods_pt.js
@@ -1,9 +1,21 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
/*
* Localized default methods for the jQuery validation plugin.
* Locale: PT_BR
*/
-jQuery.extend(jQuery.validator.methods, {
- date: function(value, element) {
- return this.optional(element) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(value);
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test( value );
}
-});
\ No newline at end of file
+} );
+return $;
+}));
\ No newline at end of file