| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810 |
- (function($) {
- $.fn.bootstrapValidator.i18n.id = $.extend($.fn.bootstrapValidator.i18n.id || {}, {
- 'default': 'Please enter a valid identification number',
- countryNotSupported: 'The country code %s is not supported',
- country: 'Please enter a valid %s identification number',
- countries: {
- BA: 'Bosnia and Herzegovina',
- BG: 'Bulgarian',
- BR: 'Brazilian',
- CH: 'Swiss',
- CL: 'Chilean',
- CZ: 'Czech',
- DK: 'Danish',
- EE: 'Estonian',
- ES: 'Spanish',
- FI: 'Finnish',
- HR: 'Croatian',
- IE: 'Irish',
- IS: 'Iceland',
- LT: 'Lithuanian',
- LV: 'Latvian',
- ME: 'Montenegro',
- MK: 'Macedonian',
- NL: 'Dutch',
- RO: 'Romanian',
- RS: 'Serbian',
- SE: 'Swedish',
- SI: 'Slovenian',
- SK: 'Slovak',
- SM: 'San Marino',
- ZA: 'South African'
- },
- getMessage: function(options) {
- if (options.country) {
- var country = options.country.toLowerCase(),
- method = ['_', country].join('');
- if ($.fn.bootstrapValidator.validators.id[method] == undefined) {
- return $.fn.bootstrapValidator.helpers.format(this.countryNotSupported, country);
- }
- country = country.toUpperCase();
- if (this.countries[country]) {
- return $.fn.bootstrapValidator.helpers.format(this.country, this.countries[country]);
- }
- }
- return this['default'];
- }
- });
- $.fn.bootstrapValidator.validators.id = {
- html5Attributes: {
- message: 'message',
- country: 'country'
- },
- /**
- * Validate identification number in different countries
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number
- * @param {BootstrapValidator} validator The validator plugin instance
- * @param {jQuery} $field Field element
- * @param {Object} options Consist of key:
- * - message: The invalid message
- * - country: The ISO 3166-1 country code
- * @returns {Boolean}
- */
- validate: function(validator, $field, options) {
- var value = $field.val();
- if (value == '') {
- return true;
- }
- var country = options.country || value.substr(0, 2),
- method = ['_', country.toLowerCase()].join('');
- if (this[method] && 'function' == typeof this[method]) {
- return this[method](value);
- }
- return false;
- },
- /**
- * Validate Unique Master Citizen Number which uses in
- * - Bosnia and Herzegovina (country code: BA)
- * - Macedonia (MK)
- * - Montenegro (ME)
- * - Serbia (RS)
- * - Slovenia (SI)
- *
- * @see http://en.wikipedia.org/wiki/Unique_Master_Citizen_Number
- * @param {String} value The ID
- * @param {String} countryCode The ISO country code, can be BA, MK, ME, RS, SI
- * @returns {Boolean}
- */
- _validateJMBG: function(value, countryCode) {
- if (!/^\d{13}$/.test(value)) {
- return false;
- }
- var day = parseInt(value.substr(0, 2), 10),
- month = parseInt(value.substr(2, 2), 10),
- year = parseInt(value.substr(4, 3), 10),
- rr = parseInt(value.substr(7, 2), 10),
- k = parseInt(value.substr(12, 1), 10);
- // Validate date of birth
- // FIXME: Validate the year of birth
- if (day > 31 || month > 12) {
- return false;
- }
- // Validate checksum
- var sum = 0;
- for (var i = 0; i < 6; i++) {
- sum += (7 - i) * (parseInt(value.charAt(i)) + parseInt(value.charAt(i + 6)));
- }
- sum = 11 - sum % 11;
- if (sum == 10 || sum == 11) {
- sum = 0;
- }
- if (sum != k) {
- return false;
- }
- // Validate political region
- // rr is the political region of birth, which can be in ranges:
- // 10-19: Bosnia and Herzegovina
- // 20-29: Montenegro
- // 30-39: Croatia (not used anymore)
- // 41-49: Macedonia
- // 50-59: Slovenia (only 50 is used)
- // 70-79: Central Serbia
- // 80-89: Serbian province of Vojvodina
- // 90-99: Kosovo
- switch (countryCode.toUpperCase()) {
- case 'BA':
- return (10 <= rr && rr <= 19);
- case 'MK':
- return (41 <= rr && rr <= 49);
- case 'ME':
- return (20 <= rr && rr <= 29);
- case 'RS':
- return (70 <= rr && rr <= 99);
- case 'SI':
- return (50 <= rr && rr <= 59);
- default:
- return true;
- }
- },
- _ba: function(value) {
- return this._validateJMBG(value, 'BA');
- },
- _mk: function(value) {
- return this._validateJMBG(value, 'MK');
- },
- _me: function(value) {
- return this._validateJMBG(value, 'ME');
- },
- _rs: function(value) {
- return this._validateJMBG(value, 'RS');
- },
- /**
- * Examples: 0101006500006
- */
- _si: function(value) {
- return this._validateJMBG(value, 'SI');
- },
- /**
- * Validate Bulgarian national identification number (EGN)
- * Examples:
- * - Valid: 7523169263, 8032056031, 803205 603 1, 8001010008, 7501020018, 7552010005, 7542011030
- * - Invalid: 8019010008
- *
- * @see http://en.wikipedia.org/wiki/Uniform_civil_number
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _bg: function(value) {
- if (!/^\d{10}$/.test(value) && !/^\d{6}\s\d{3}\s\d{1}$/.test(value)) {
- return false;
- }
- value = value.replace(/\s/g, '');
- // Check the birth date
- var year = parseInt(value.substr(0, 2), 10) + 1900,
- month = parseInt(value.substr(2, 2), 10),
- day = parseInt(value.substr(4, 2), 10);
- if (month > 40) {
- year += 100;
- month -= 40;
- } else if (month > 20) {
- year -= 100;
- month -= 20;
- }
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- var sum = 0,
- weight = [2, 4, 8, 5, 10, 9, 7, 3, 6];
- for (var i = 0; i < 9; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = (sum % 11) % 10;
- return (sum == value.substr(9, 1));
- },
- /**
- * Validate Brazilian national identification number (CPF)
- * Examples:
- * - Valid: 39053344705, 390.533.447-05, 111.444.777-35
- * - Invalid: 231.002.999-00
- *
- * @see http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _br: function(value) {
- if (/^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(value)) {
- return false;
- }
- if (!/^\d{11}$/.test(value) && !/^\d{3}\.\d{3}\.\d{3}-\d{2}$/.test(value)) {
- return false;
- }
- value = value.replace(/\./g, '').replace(/-/g, '');
- var d1 = 0;
- for (var i = 0; i < 9; i++) {
- d1 += (10 - i) * parseInt(value.charAt(i));
- }
- d1 = 11 - d1 % 11;
- if (d1 == 10 || d1 == 11) {
- d1 = 0;
- }
- if (d1 != value.charAt(9)) {
- return false;
- }
- var d2 = 0;
- for (i = 0; i < 10; i++) {
- d2 += (11 - i) * parseInt(value.charAt(i));
- }
- d2 = 11 - d2 % 11;
- if (d2 == 10 || d2 == 11) {
- d2 = 0;
- }
- return (d2 == value.charAt(10));
- },
- /**
- * Validate Swiss Social Security Number (AHV-Nr/No AVS)
- * Examples:
- * - Valid: 756.1234.5678.95, 7561234567895
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#Switzerland
- * @see http://www.bsv.admin.ch/themen/ahv/00011/02185/index.html?lang=de
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _ch: function(value) {
- if (!/^756[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{2}$/.test(value)) {
- return false;
- }
- value = value.replace(/\D/g, '').substr(3);
- var length = value.length,
- sum = 0,
- weight = (length == 8) ? [3, 1] : [1, 3];
- for (var i = 0; i < length - 1; i++) {
- sum += parseInt(value.charAt(i)) * weight[i % 2];
- }
- sum = 10 - sum % 10;
- return (sum == value.charAt(length - 1));
- },
- /**
- * Validate Chilean national identification number (RUN/RUT)
- * Examples:
- * - Valid: 76086428-5, 22060449-7, 12531909-2
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#Chile
- * @see https://palena.sii.cl/cvc/dte/ee_empresas_emisoras.html for samples
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _cl: function(value) {
- if (!/^\d{7,8}[-]{0,1}[0-9K]$/.test(value)) {
- return false;
- }
- value = value.replace(/\D/g, '');
- while (value.length < 9) {
- value = '0' + value;
- }
- var sum = 0,
- weight = [3, 2, 7, 6, 5, 4, 3, 2];
- for (var i = 0; i < 8; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = 11 - sum % 11;
- if (sum == 11) {
- sum = 0;
- } else if (sum == 10) {
- sum = 'K';
- }
- return sum == value.charAt(8);
- },
- /**
- * Validate Czech national identification number (RC)
- * Examples:
- * - Valid: 7103192745, 991231123
- * - Invalid: 1103492745, 590312123
- *
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _cz: function(value) {
- if (!/^\d{9,10}$/.test(value)) {
- return false;
- }
- var year = 1900 + parseInt(value.substr(0, 2)),
- month = parseInt(value.substr(2, 2)) % 50 % 20,
- day = parseInt(value.substr(4, 2));
- if (value.length == 9) {
- if (year >= 1980) {
- year -= 100;
- }
- if (year > 1953) {
- return false;
- }
- } else if (year < 1954) {
- year += 100;
- }
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- // Check that the birth date is not in the future
- if (value.length == 10) {
- var check = parseInt(value.substr(0, 9), 10) % 11;
- if (year < 1985) {
- check = check % 10;
- }
- return (check == value.substr(9, 1));
- }
- return true;
- },
- /**
- * Validate Danish Personal Identification number (CPR)
- * Examples:
- * - Valid: 2110625629, 211062-5629
- * - Invalid: 511062-5629
- *
- * @see https://en.wikipedia.org/wiki/Personal_identification_number_(Denmark)
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _dk: function(value) {
- if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(value)) {
- return false;
- }
- value = value.replace(/-/g, '');
- var day = parseInt(value.substr(0, 2), 10),
- month = parseInt(value.substr(2, 2), 10),
- year = parseInt(value.substr(4, 2), 10);
- switch (true) {
- case ('5678'.indexOf(value.charAt(6)) != -1 && year >= 58):
- year += 1800;
- break;
- case ('0123'.indexOf(value.charAt(6)) != -1):
- case ('49'.indexOf(value.charAt(6)) != -1 && year >= 37):
- year += 1900;
- break;
- default:
- year += 2000;
- break;
- }
- return $.fn.bootstrapValidator.helpers.date(year, month, day);
- },
- /**
- * Validate Estonian Personal Identification Code (isikukood)
- * Examples:
- * - Valid: 37605030299
- *
- * @see http://et.wikipedia.org/wiki/Isikukood
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _ee: function(value) {
- // Use the same format as Lithuanian Personal Code
- return this._lt(value);
- },
- /**
- * Validate Spanish personal identity code (DNI)
- * Support i) DNI (for Spanish citizens) and ii) NIE (for foreign people)
- *
- * Examples:
- * - Valid: i) 54362315K, 54362315-K; ii) X2482300W, X-2482300W, X-2482300-W
- * - Invalid: i) 54362315Z; ii) X-2482300A
- *
- * @see https://en.wikipedia.org/wiki/National_identification_number#Spain
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _es: function(value) {
- if (!/^[0-9A-Z]{8}[-]{0,1}[0-9A-Z]$/.test(value) // DNI
- && !/^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-Z]$/.test(value)) { // NIE
- return false;
- }
- value = value.replace(/-/g, '');
- var index = 'XYZ'.indexOf(value.charAt(0));
- if (index != -1) {
- // It is NIE number
- value = index + value.substr(1) + '';
- }
- var check = parseInt(value.substr(0, 8), 10);
- check = 'TRWAGMYFPDXBNJZSQVHLCKE'[check % 23];
- return (check == value.substr(8, 1));
- },
- /**
- * Validate Finnish Personal Identity Code (HETU)
- * Examples:
- * - Valid: 311280-888Y, 131052-308T
- * - Invalid: 131052-308U, 310252-308Y
- *
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _fi: function(value) {
- if (!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(value)) {
- return false;
- }
- var day = parseInt(value.substr(0, 2), 10),
- month = parseInt(value.substr(2, 2), 10),
- year = parseInt(value.substr(4, 2), 10),
- centuries = {
- '+': 1800,
- '-': 1900,
- 'A': 2000
- };
- year = centuries[value.charAt(6)] + year;
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- var individual = parseInt(value.substr(7, 3));
- if (individual < 2) {
- return false;
- }
- var n = value.substr(0, 6) + value.substr(7, 3) + '';
- n = parseInt(n);
- return '0123456789ABCDEFHJKLMNPRSTUVWXY'.charAt(n % 31) == value.charAt(10);
- },
- /**
- * Validate Croatian personal identification number (OIB)
- * Examples:
- * - Valid: 33392005961
- * - Invalid: 33392005962
- *
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _hr: function(value) {
- if (!/^[0-9]{11}$/.test(value)) {
- return false;
- }
- return $.fn.bootstrapValidator.helpers.mod_11_10(value);
- },
- /**
- * Validate Irish Personal Public Service Number (PPS)
- * Examples:
- * - Valid: 6433435F, 6433435FT, 6433435FW, 6433435OA, 6433435IH, 1234567TW, 1234567FA
- * - Invalid: 6433435E, 6433435VH
- *
- * @see https://en.wikipedia.org/wiki/Personal_Public_Service_Number
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _ie: function(value) {
- if (!/^\d{7}[A-W][AHWTX]?$/.test(value)) {
- return false;
- }
- var getCheckDigit = function(value) {
- while (value.length < 7) {
- value = '0' + value;
- }
- var alphabet = 'WABCDEFGHIJKLMNOPQRSTUV',
- sum = 0;
- for (var i = 0; i < 7; i++) {
- sum += parseInt(value.charAt(i)) * (8 - i);
- }
- sum += 9 * alphabet.indexOf(value.substr(7));
- return alphabet[sum % 23];
- };
- // 2013 format
- if (value.length == 9 && ('A' == value.charAt(8) || 'H' == value.charAt(8))) {
- return value.charAt(7) == getCheckDigit(value.substr(0, 7) + value.substr(8) + '');
- }
- // The old format
- else {
- return value.charAt(7) == getCheckDigit(value.substr(0, 7));
- }
- },
- /**
- * Validate Iceland national identification number (Kennitala)
- * Examples:
- * - Valid: 120174-3399, 1201743399, 0902862349
- *
- * @see http://en.wikipedia.org/wiki/Kennitala
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _is: function(value) {
- if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(value)) {
- return false;
- }
- value = value.replace(/-/g, '');
- var day = parseInt(value.substr(0, 2), 10),
- month = parseInt(value.substr(2, 2), 10),
- year = parseInt(value.substr(4, 2), 10),
- century = parseInt(value.charAt(9));
- year = (century == 9) ? (1900 + year) : ((20 + century) * 100 + year);
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day, true)) {
- return false;
- }
- // Validate the check digit
- var sum = 0,
- weight = [3, 2, 7, 6, 5, 4, 3, 2];
- for (var i = 0; i < 8; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = 11 - sum % 11;
- return (sum == value.charAt(8));
- },
- /**
- * Validate Lithuanian Personal Code (Asmens kodas)
- * Examples:
- * - Valid: 38703181745
- * - Invalid: 38703181746, 78703181745, 38703421745
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#Lithuania
- * @see http://www.adomas.org/midi2007/pcode.html
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _lt: function(value) {
- if (!/^[0-9]{11}$/.test(value)) {
- return false;
- }
- var gender = parseInt(value.charAt(0)),
- year = parseInt(value.substr(1, 2), 10),
- month = parseInt(value.substr(3, 2), 10),
- day = parseInt(value.substr(5, 2), 10),
- century = (gender % 2 == 0) ? (17 + gender / 2) : (17 + (gender + 1) / 2);
- year = century * 100 + year;
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day, true)) {
- return false;
- }
- // Validate the check digit
- var sum = 0,
- weight = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1];
- for (var i = 0; i < 10; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = sum % 11;
- if (sum != 10) {
- return sum == value.charAt(10);
- }
- // Re-calculate the check digit
- sum = 0;
- weight = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3];
- for (i = 0; i < 10; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = sum % 11;
- if (sum == 10) {
- sum = 0;
- }
- return (sum == value.charAt(10));
- },
- /**
- * Validate Latvian Personal Code (Personas kods)
- * Examples:
- * - Valid: 161175-19997, 16117519997
- * - Invalid: 161375-19997
- *
- * @see http://laacz.lv/2006/11/25/pk-parbaudes-algoritms/
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _lv: function(value) {
- if (!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(value)) {
- return false;
- }
- value = value.replace(/\D/g, '');
- // Check birth date
- var day = parseInt(value.substr(0, 2)),
- month = parseInt(value.substr(2, 2)),
- year = parseInt(value.substr(4, 2));
- year = year + 1800 + parseInt(value.charAt(6)) * 100;
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day, true)) {
- return false;
- }
- // Check personal code
- var sum = 0,
- weight = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9];
- for (var i = 0; i < 10; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = (sum + 1) % 11 % 10;
- return (sum == value.charAt(10));
- },
- /**
- * Validate Dutch national identification number (BSN)
- * Examples:
- * - Valid: 111222333, 941331490, 9413.31.490
- * - Invalid: 111252333
- *
- * @see https://nl.wikipedia.org/wiki/Burgerservicenummer
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _nl: function(value) {
- while (value.length < 9) {
- value = '0' + value;
- }
- if (!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(value)) {
- return false;
- }
- value = value.replace(/\./g, '');
- if (parseInt(value, 10) == 0) {
- return false;
- }
- var sum = 0,
- length = value.length;
- for (var i = 0; i < length - 1; i++) {
- sum += (9 - i) * parseInt(value.charAt(i));
- }
- sum = sum % 11;
- if (sum == 10) {
- sum = 0;
- }
- return (sum == value.charAt(length - 1));
- },
- /**
- * Validate Romanian numerical personal code (CNP)
- * Examples:
- * - Valid: 1630615123457, 1800101221144
- * - Invalid: 8800101221144, 1632215123457, 1630615123458
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#Romania
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _ro: function(value) {
- if (!/^[0-9]{13}$/.test(value)) {
- return false;
- }
- var gender = parseInt(value.charAt(0));
- if (gender == 0 || gender == 7 || gender == 8) {
- return false;
- }
- // Determine the date of birth
- var year = parseInt(value.substr(1, 2), 10),
- month = parseInt(value.substr(3, 2), 10),
- day = parseInt(value.substr(5, 2), 10),
- // The year of date is determined base on the gender
- centuries = {
- '1': 1900, // Male born between 1900 and 1999
- '2': 1900, // Female born between 1900 and 1999
- '3': 1800, // Male born between 1800 and 1899
- '4': 1800, // Female born between 1800 and 1899
- '5': 2000, // Male born after 2000
- '6': 2000 // Female born after 2000
- };
- if (day > 31 && month > 12) {
- return false;
- }
- if (gender != 9) {
- year = centuries[gender + ''] + year;
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- }
- // Validate the check digit
- var sum = 0,
- weight = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9],
- length = value.length;
- for (var i = 0; i < length - 1; i++) {
- sum += parseInt(value.charAt(i)) * weight[i];
- }
- sum = sum % 11;
- if (sum == 10) {
- sum = 1;
- }
- return (sum == value.charAt(length - 1));
- },
- /**
- * Validate Swedish personal identity number (personnummer)
- * Examples:
- * - Valid: 8112289874, 811228-9874, 811228+9874
- * - Invalid: 811228-9873
- *
- * @see http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _se: function(value) {
- if (!/^[0-9]{10}$/.test(value) && !/^[0-9]{6}[-|+][0-9]{4}$/.test(value)) {
- return false;
- }
- value = value.replace(/[^0-9]/g, '');
- var year = parseInt(value.substr(0, 2)) + 1900,
- month = parseInt(value.substr(2, 2)),
- day = parseInt(value.substr(4, 2));
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- // Validate the last check digit
- return $.fn.bootstrapValidator.helpers.luhn(value);
- },
- /**
- * Validate Slovak national identifier number (RC)
- * Examples:
- * - Valid: 7103192745, 991231123
- * - Invalid: 7103192746, 1103492745
- *
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _sk: function(value) {
- // Slovakia uses the same format as Czech Republic
- return this._cz(value);
- },
- /**
- * Validate San Marino citizen number
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#San_Marino
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _sm: function(value) {
- return /^\d{5}$/.test(value);
- },
- /**
- * Validate South African ID
- * Example:
- * - Valid: 8001015009087
- * - Invalid: 8001015009287, 8001015009086
- *
- * @see http://en.wikipedia.org/wiki/National_identification_number#South_Africa
- * @param {String} value The ID
- * @returns {Boolean}
- */
- _za: function(value) {
- if (!/^[0-9]{10}[0|1][8|9][0-9]$/.test(value)) {
- return false;
- }
- var year = parseInt(value.substr(0, 2)),
- currentYear = new Date().getFullYear() % 100,
- month = parseInt(value.substr(2, 2)),
- day = parseInt(value.substr(4, 2));
- year = (year >= currentYear) ? (year + 1900) : (year + 2000);
- if (!$.fn.bootstrapValidator.helpers.date(year, month, day)) {
- return false;
- }
- // Validate the last check digit
- return $.fn.bootstrapValidator.helpers.luhn(value);
- }
- };
- }(window.jQuery));
|