bootstrap_validator-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README.md +4 -0
  4. data/lib/bootstrap_validator-rails.rb +5 -0
  5. data/lib/bootstrap_validator-rails/engine.rb +6 -0
  6. data/vendor/javascripts/bootstrapValidator.js +1803 -0
  7. data/vendor/javascripts/language/de_DE.js +326 -0
  8. data/vendor/javascripts/language/en_US.js +327 -0
  9. data/vendor/javascripts/language/es_CL.js +326 -0
  10. data/vendor/javascripts/language/hu_HU.js +326 -0
  11. data/vendor/javascripts/language/vi_VN.js +322 -0
  12. data/vendor/javascripts/language/zh_CN.js +326 -0
  13. data/vendor/javascripts/language/zh_TW.js +326 -0
  14. data/vendor/javascripts/validator/base64.js +25 -0
  15. data/vendor/javascripts/validator/between.js +66 -0
  16. data/vendor/javascripts/validator/callback.js +40 -0
  17. data/vendor/javascripts/validator/choice.js +68 -0
  18. data/vendor/javascripts/validator/creditCard.js +103 -0
  19. data/vendor/javascripts/validator/cusip.js +55 -0
  20. data/vendor/javascripts/validator/cvv.js +116 -0
  21. data/vendor/javascripts/validator/date.js +118 -0
  22. data/vendor/javascripts/validator/different.js +41 -0
  23. data/vendor/javascripts/validator/digits.js +24 -0
  24. data/vendor/javascripts/validator/ean.js +40 -0
  25. data/vendor/javascripts/validator/emailAddress.js +31 -0
  26. data/vendor/javascripts/validator/file.js +69 -0
  27. data/vendor/javascripts/validator/greaterThan.js +61 -0
  28. data/vendor/javascripts/validator/grid.js +37 -0
  29. data/vendor/javascripts/validator/hex.js +25 -0
  30. data/vendor/javascripts/validator/hexColor.js +28 -0
  31. data/vendor/javascripts/validator/iban.js +246 -0
  32. data/vendor/javascripts/validator/id.js +815 -0
  33. data/vendor/javascripts/validator/identical.js +40 -0
  34. data/vendor/javascripts/validator/imei.js +44 -0
  35. data/vendor/javascripts/validator/integer.js +28 -0
  36. data/vendor/javascripts/validator/ip.js +48 -0
  37. data/vendor/javascripts/validator/isbn.js +86 -0
  38. data/vendor/javascripts/validator/isin.js +59 -0
  39. data/vendor/javascripts/validator/ismn.js +59 -0
  40. data/vendor/javascripts/validator/issn.js +46 -0
  41. data/vendor/javascripts/validator/lessThan.js +61 -0
  42. data/vendor/javascripts/validator/mac.js +25 -0
  43. data/vendor/javascripts/validator/notEmpty.js +32 -0
  44. data/vendor/javascripts/validator/numeric.js +39 -0
  45. data/vendor/javascripts/validator/phone.js +84 -0
  46. data/vendor/javascripts/validator/regexp.js +42 -0
  47. data/vendor/javascripts/validator/remote.js +70 -0
  48. data/vendor/javascripts/validator/rtn.js +38 -0
  49. data/vendor/javascripts/validator/sedol.js +40 -0
  50. data/vendor/javascripts/validator/siren.js +28 -0
  51. data/vendor/javascripts/validator/siret.js +38 -0
  52. data/vendor/javascripts/validator/step.js +64 -0
  53. data/vendor/javascripts/validator/stringCase.js +36 -0
  54. data/vendor/javascripts/validator/stringLength.js +81 -0
  55. data/vendor/javascripts/validator/uri.js +101 -0
  56. data/vendor/javascripts/validator/uuid.js +46 -0
  57. data/vendor/javascripts/validator/vat.js +1220 -0
  58. data/vendor/javascripts/validator/vin.js +49 -0
  59. data/vendor/javascripts/validator/zipCode.js +162 -0
  60. data/vendor/stylesheets/bootstrapValidator.css +21 -0
  61. metadata +130 -0
@@ -0,0 +1,40 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.identical = $.extend($.fn.bootstrapValidator.i18n.identical || {}, {
3
+ 'default': 'Please enter the same value'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.identical = {
7
+ html5Attributes: {
8
+ message: 'message',
9
+ field: 'field'
10
+ },
11
+
12
+ /**
13
+ * Check if input value equals to value of particular one
14
+ *
15
+ * @param {BootstrapValidator} validator The validator plugin instance
16
+ * @param {jQuery} $field Field element
17
+ * @param {Object} options Consists of the following key:
18
+ * - field: The name of field that will be used to compare with current one
19
+ * @returns {Boolean}
20
+ */
21
+ validate: function(validator, $field, options) {
22
+ var value = $field.val();
23
+ if (value === '') {
24
+ return true;
25
+ }
26
+
27
+ var compareWith = validator.getFieldElements(options.field);
28
+ if (compareWith === null) {
29
+ return true;
30
+ }
31
+
32
+ if (value === compareWith.val()) {
33
+ validator.updateStatus(options.field, validator.STATUS_VALID, 'identical');
34
+ return true;
35
+ } else {
36
+ return false;
37
+ }
38
+ }
39
+ };
40
+ }(window.jQuery));
@@ -0,0 +1,44 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.imei = $.extend($.fn.bootstrapValidator.i18n.imei || {}, {
3
+ 'default': 'Please enter a valid IMEI number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.imei = {
7
+ /**
8
+ * Validate IMEI (International Mobile Station Equipment Identity)
9
+ * Examples:
10
+ * - Valid: 35-209900-176148-1, 35-209900-176148-23, 3568680000414120, 490154203237518
11
+ * - Invalid: 490154203237517
12
+ *
13
+ * @see http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity
14
+ * @param {BootstrapValidator} validator The validator plugin instance
15
+ * @param {jQuery} $field Field element
16
+ * @param {Object} options Can consist of the following keys:
17
+ * - message: The invalid message
18
+ * @returns {Boolean}
19
+ */
20
+ validate: function(validator, $field, options) {
21
+ var value = $field.val();
22
+ if (value === '') {
23
+ return true;
24
+ }
25
+
26
+ switch (true) {
27
+ case /^\d{15}$/.test(value):
28
+ case /^\d{2}-\d{6}-\d{6}-\d{1}$/.test(value):
29
+ case /^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(value):
30
+ value = value.replace(/[^0-9]/g, '');
31
+ return $.fn.bootstrapValidator.helpers.luhn(value);
32
+
33
+ case /^\d{14}$/.test(value):
34
+ case /^\d{16}$/.test(value):
35
+ case /^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(value):
36
+ case /^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(value):
37
+ return true;
38
+
39
+ default:
40
+ return false;
41
+ }
42
+ }
43
+ };
44
+ }(window.jQuery));
@@ -0,0 +1,28 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.integer = $.extend($.fn.bootstrapValidator.i18n.integer || {}, {
3
+ 'default': 'Please enter a valid number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.integer = {
7
+ enableByHtml5: function($field) {
8
+ return ('number' === $field.attr('type')) && ($field.attr('step') === undefined || $field.attr('step') % 1 === 0);
9
+ },
10
+
11
+ /**
12
+ * Return true if the input value is an integer
13
+ *
14
+ * @param {BootstrapValidator} validator The validator plugin instance
15
+ * @param {jQuery} $field Field element
16
+ * @param {Object} options Can consist of the following key:
17
+ * - message: The invalid message
18
+ * @returns {Boolean}
19
+ */
20
+ validate: function(validator, $field, options) {
21
+ var value = $field.val();
22
+ if (value === '') {
23
+ return true;
24
+ }
25
+ return /^(?:-?(?:0|[1-9][0-9]*))$/.test(value);
26
+ }
27
+ };
28
+ }(window.jQuery));
@@ -0,0 +1,48 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.ip = $.extend($.fn.bootstrapValidator.i18n.ip || {}, {
3
+ 'default': 'Please enter a valid IP address',
4
+ ipv4: 'Please enter a valid IPv4 address',
5
+ ipv6: 'Please enter a valid IPv6 address'
6
+ });
7
+
8
+ $.fn.bootstrapValidator.validators.ip = {
9
+ html5Attributes: {
10
+ message: 'message',
11
+ ipv4: 'ipv4',
12
+ ipv6: 'ipv6'
13
+ },
14
+
15
+ /**
16
+ * Return true if the input value is a IP address.
17
+ *
18
+ * @param {BootstrapValidator} validator The validator plugin instance
19
+ * @param {jQuery} $field Field element
20
+ * @param {Object} options Can consist of the following keys:
21
+ * - ipv4: Enable IPv4 validator, default to true
22
+ * - ipv6: Enable IPv6 validator, default to true
23
+ * - message: The invalid message
24
+ * @returns {Boolean|Object}
25
+ */
26
+ validate: function(validator, $field, options) {
27
+ var value = $field.val();
28
+ if (value === '') {
29
+ return true;
30
+ }
31
+ options = $.extend({}, { ipv4: true, ipv6: true }, options);
32
+
33
+ if (options.ipv4) {
34
+ return {
35
+ valid: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(value),
36
+ message: options.message || $.fn.bootstrapValidator.i18n.ip.ipv4
37
+ };
38
+ } else if (options.ipv6) {
39
+ return {
40
+ valid: /^\s*((([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}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(value),
41
+ message: options.message || $.fn.bootstrapValidator.i18n.ip.ipv6
42
+ };
43
+ }
44
+
45
+ return false;
46
+ }
47
+ };
48
+ }(window.jQuery));
@@ -0,0 +1,86 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.isbn = $.extend($.fn.bootstrapValidator.i18n.isbn || {}, {
3
+ 'default': 'Please enter a valid ISBN number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.isbn = {
7
+ /**
8
+ * Return true if the input value is a valid ISBN 10 or ISBN 13 number
9
+ * Examples:
10
+ * - Valid:
11
+ * ISBN 10: 99921-58-10-7, 9971-5-0210-0, 960-425-059-0, 80-902734-1-6, 85-359-0277-5, 1-84356-028-3, 0-684-84328-5, 0-8044-2957-X, 0-85131-041-9, 0-943396-04-2, 0-9752298-0-X
12
+ * ISBN 13: 978-0-306-40615-7
13
+ * - Invalid:
14
+ * ISBN 10: 99921-58-10-6
15
+ * ISBN 13: 978-0-306-40615-6
16
+ *
17
+ * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number
18
+ * @param {BootstrapValidator} validator The validator plugin instance
19
+ * @param {jQuery} $field Field element
20
+ * @param {Object} [options] Can consist of the following keys:
21
+ * - message: The invalid message
22
+ * @returns {Boolean}
23
+ */
24
+ validate: function(validator, $field, options) {
25
+ var value = $field.val();
26
+ if (value === '') {
27
+ return true;
28
+ }
29
+
30
+ // http://en.wikipedia.org/wiki/International_Standard_Book_Number#Overview
31
+ // Groups are separated by a hyphen or a space
32
+ var type;
33
+ switch (true) {
34
+ case /^\d{9}[\dX]$/.test(value):
35
+ case (value.length === 13 && /^(\d+)-(\d+)-(\d+)-([\dX])$/.test(value)):
36
+ case (value.length === 13 && /^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(value)):
37
+ type = 'ISBN10';
38
+ break;
39
+ case /^(978|979)\d{9}[\dX]$/.test(value):
40
+ case (value.length === 17 && /^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(value)):
41
+ case (value.length === 17 && /^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(value)):
42
+ type = 'ISBN13';
43
+ break;
44
+ default:
45
+ return false;
46
+ }
47
+
48
+ // Replace all special characters except digits and X
49
+ value = value.replace(/[^0-9X]/gi, '');
50
+ var chars = value.split(''),
51
+ length = chars.length,
52
+ sum = 0,
53
+ i,
54
+ checksum;
55
+
56
+ switch (type) {
57
+ case 'ISBN10':
58
+ sum = 0;
59
+ for (i = 0; i < length - 1; i++) {
60
+ sum += parseInt(chars[i], 10) * (10 - i);
61
+ }
62
+ checksum = 11 - (sum % 11);
63
+ if (checksum === 11) {
64
+ checksum = 0;
65
+ } else if (checksum === 10) {
66
+ checksum = 'X';
67
+ }
68
+ return (checksum + '' === chars[length - 1]);
69
+
70
+ case 'ISBN13':
71
+ sum = 0;
72
+ for (i = 0; i < length - 1; i++) {
73
+ sum += ((i % 2 === 0) ? parseInt(chars[i], 10) : (parseInt(chars[i], 10) * 3));
74
+ }
75
+ checksum = 10 - (sum % 10);
76
+ if (checksum === 10) {
77
+ checksum = '0';
78
+ }
79
+ return (checksum + '' === chars[length - 1]);
80
+
81
+ default:
82
+ return false;
83
+ }
84
+ }
85
+ };
86
+ }(window.jQuery));
@@ -0,0 +1,59 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.isin = $.extend($.fn.bootstrapValidator.i18n.isin || {}, {
3
+ 'default': 'Please enter a valid ISIN number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.isin = {
7
+ // Available country codes
8
+ // See http://isin.net/country-codes/
9
+ COUNTRY_CODES: 'AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW',
10
+
11
+ /**
12
+ * Validate an ISIN (International Securities Identification Number)
13
+ * Examples:
14
+ * - Valid: US0378331005, AU0000XVGZA3, GB0002634946
15
+ * - Invalid: US0378331004, AA0000XVGZA3
16
+ *
17
+ * @see http://en.wikipedia.org/wiki/International_Securities_Identifying_Number
18
+ * @param {BootstrapValidator} validator The validator plugin instance
19
+ * @param {jQuery} $field Field element
20
+ * @param {Object} options Can consist of the following keys:
21
+ * - message: The invalid message
22
+ * @returns {Boolean}
23
+ */
24
+ validate: function(validator, $field, options) {
25
+ var value = $field.val();
26
+ if (value === '') {
27
+ return true;
28
+ }
29
+
30
+ value = value.toUpperCase();
31
+ var regex = new RegExp('^(' + this.COUNTRY_CODES + ')[0-9A-Z]{10}$');
32
+ if (!regex.test(value)) {
33
+ return false;
34
+ }
35
+
36
+ var converted = '',
37
+ length = value.length;
38
+ // Convert letters to number
39
+ for (var i = 0; i < length - 1; i++) {
40
+ var c = value.charCodeAt(i);
41
+ converted += ((c > 57) ? (c - 55).toString() : value.charAt(i));
42
+ }
43
+
44
+ var digits = '',
45
+ n = converted.length,
46
+ group = (n % 2 !== 0) ? 0 : 1;
47
+ for (i = 0; i < n; i++) {
48
+ digits += (parseInt(converted[i], 10) * ((i % 2) === group ? 2 : 1) + '');
49
+ }
50
+
51
+ var sum = 0;
52
+ for (i = 0; i < digits.length; i++) {
53
+ sum += parseInt(digits.charAt(i), 10);
54
+ }
55
+ sum = (10 - (sum % 10)) % 10;
56
+ return sum + '' === value.charAt(length - 1);
57
+ }
58
+ };
59
+ }(window.jQuery));
@@ -0,0 +1,59 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.ismn = $.extend($.fn.bootstrapValidator.i18n.ismn || {}, {
3
+ 'default': 'Please enter a valid ISMN number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.ismn = {
7
+ /**
8
+ * Validate ISMN (International Standard Music Number)
9
+ * Examples:
10
+ * - Valid: M230671187, 979-0-0601-1561-5, 979 0 3452 4680 5, 9790060115615
11
+ * - Invalid: 9790060115614
12
+ *
13
+ * @see http://en.wikipedia.org/wiki/International_Standard_Music_Number
14
+ * @param {BootstrapValidator} validator The validator plugin instance
15
+ * @param {jQuery} $field Field element
16
+ * @param {Object} options Can consist of the following keys:
17
+ * - message: The invalid message
18
+ * @returns {Boolean}
19
+ */
20
+ validate: function(validator, $field, options) {
21
+ var value = $field.val();
22
+ if (value === '') {
23
+ return true;
24
+ }
25
+
26
+ // Groups are separated by a hyphen or a space
27
+ var type;
28
+ switch (true) {
29
+ case /^M\d{9}$/.test(value):
30
+ case /^M-\d{4}-\d{4}-\d{1}$/.test(value):
31
+ case /^M\s\d{4}\s\d{4}\s\d{1}$/.test(value):
32
+ type = 'ISMN10';
33
+ break;
34
+ case /^9790\d{9}$/.test(value):
35
+ case /^979-0-\d{4}-\d{4}-\d{1}$/.test(value):
36
+ case /^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(value):
37
+ type = 'ISMN13';
38
+ break;
39
+ default:
40
+ return false;
41
+ }
42
+
43
+ if ('ISMN10' === type) {
44
+ value = '9790' + value.substr(1);
45
+ }
46
+
47
+ // Replace all special characters except digits
48
+ value = value.replace(/[^0-9]/gi, '');
49
+ var length = value.length,
50
+ sum = 0,
51
+ weight = [1, 3];
52
+ for (var i = 0; i < length - 1; i++) {
53
+ sum += parseInt(value.charAt(i), 10) * weight[i % 2];
54
+ }
55
+ sum = 10 - sum % 10;
56
+ return (sum + '' === value.charAt(length - 1));
57
+ }
58
+ };
59
+ }(window.jQuery));
@@ -0,0 +1,46 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.issn = $.extend($.fn.bootstrapValidator.i18n.issn || {}, {
3
+ 'default': 'Please enter a valid ISSN number'
4
+ });
5
+
6
+ $.fn.bootstrapValidator.validators.issn = {
7
+ /**
8
+ * Validate ISSN (International Standard Serial Number)
9
+ * Examples:
10
+ * - Valid: 0378-5955, 0024-9319, 0032-1478
11
+ * - Invalid: 0032-147X
12
+ *
13
+ * @see http://en.wikipedia.org/wiki/International_Standard_Serial_Number
14
+ * @param {BootstrapValidator} validator The validator plugin instance
15
+ * @param {jQuery} $field Field element
16
+ * @param {Object} options Can consist of the following keys:
17
+ * - message: The invalid message
18
+ * @returns {Boolean}
19
+ */
20
+ validate: function(validator, $field, options) {
21
+ var value = $field.val();
22
+ if (value === '') {
23
+ return true;
24
+ }
25
+
26
+ // Groups are separated by a hyphen or a space
27
+ if (!/^\d{4}\-\d{3}[\dX]$/.test(value)) {
28
+ return false;
29
+ }
30
+
31
+ // Replace all special characters except digits and X
32
+ value = value.replace(/[^0-9X]/gi, '');
33
+ var chars = value.split(''),
34
+ length = chars.length,
35
+ sum = 0;
36
+
37
+ if (chars[7] === 'X') {
38
+ chars[7] = 10;
39
+ }
40
+ for (var i = 0; i < length; i++) {
41
+ sum += parseInt(chars[i], 10) * (8 - i);
42
+ }
43
+ return (sum % 11 === 0);
44
+ }
45
+ };
46
+ }(window.jQuery));
@@ -0,0 +1,61 @@
1
+ (function($) {
2
+ $.fn.bootstrapValidator.i18n.lessThan = $.extend($.fn.bootstrapValidator.i18n.lessThan || {}, {
3
+ 'default': 'Please enter a value less than or equal to %s',
4
+ notInclusive: 'Please enter a value less than %s'
5
+ });
6
+
7
+ $.fn.bootstrapValidator.validators.lessThan = {
8
+ html5Attributes: {
9
+ message: 'message',
10
+ value: 'value',
11
+ inclusive: 'inclusive'
12
+ },
13
+
14
+ enableByHtml5: function($field) {
15
+ var max = $field.attr('max');
16
+ if (max) {
17
+ return {
18
+ value: max
19
+ };
20
+ }
21
+
22
+ return false;
23
+ },
24
+
25
+ /**
26
+ * Return true if the input value is less than or equal to given number
27
+ *
28
+ * @param {BootstrapValidator} validator The validator plugin instance
29
+ * @param {jQuery} $field Field element
30
+ * @param {Object} options Can consist of the following keys:
31
+ * - value: The number used to compare to. It can be
32
+ * - A number
33
+ * - Name of field which its value defines the number
34
+ * - Name of callback function that returns the number
35
+ * - A callback function that returns the number
36
+ *
37
+ * - inclusive [optional]: Can be true or false. Default is true
38
+ * - message: The invalid message
39
+ * @returns {Boolean|Object}
40
+ */
41
+ validate: function(validator, $field, options) {
42
+ var value = $field.val();
43
+ if (value === '') {
44
+ return true;
45
+ }
46
+
47
+ var compareTo = $.isNumeric(options.value) ? options.value : validator.getDynamicOption($field, options.value);
48
+
49
+ value = parseFloat(value);
50
+ return (options.inclusive === true || options.inclusive === undefined)
51
+ ? {
52
+ valid: value <= compareTo,
53
+ message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.lessThan['default'], compareTo)
54
+ }
55
+ : {
56
+ valid: value < compareTo,
57
+ message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.lessThan.notInclusive, compareTo)
58
+ };
59
+ }
60
+ };
61
+ }(window.jQuery));