webshims-rails 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/custom-validity.js +253 -261
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +534 -534
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +60 -60
  5. data/vendor/assets/javascripts/webshims/minified/extras/custom-validity.js +1 -10
  6. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +1 -20
  7. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +1 -2
  8. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +1 -30
  9. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/canvas2png.js +1 -42
  10. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.js +1 -28
  11. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/proxy.php +0 -0
  13. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/save.php +0 -0
  14. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/canvas2png.js +1 -42
  15. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  16. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  17. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flashcanvas.js +1 -31
  18. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/proxy.php +0 -0
  19. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/save.php +0 -0
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +1 -38
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +1 -80
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +1 -45
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +1 -44
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +1 -28
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +1 -19
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +1 -10
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +1 -58
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +1 -66
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +1 -62
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +1 -64
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +1 -73
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +1 -42
  33. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +1 -54
  34. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +1 -57
  35. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +1 -70
  36. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +1 -80
  37. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +1 -60
  38. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +1 -79
  39. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +1 -101
  40. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +1 -95
  41. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +1 -27
  42. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +1 -34
  43. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +1 -56
  44. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +1 -33
  45. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +1 -40
  46. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +1 -39
  47. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +1 -65
  48. data/vendor/assets/javascripts/webshims/minified/shims/details.js +1 -5
  49. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +1 -23
  50. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +1 -15
  51. data/vendor/assets/javascripts/webshims/minified/shims/excanvas.js +1 -21
  52. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +1 -19
  53. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +1 -22
  54. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +1 -8
  55. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +1 -7
  56. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +1 -10
  57. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +1 -23
  58. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +1 -46
  59. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +1 -5
  60. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ar.js +1 -7
  61. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ch-ZN.js +1 -3
  62. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +33 -33
  63. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-el.js +1 -7
  64. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +34 -34
  65. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-es.js +1 -3
  66. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-fr.js +1 -3
  67. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-he.js +1 -6
  68. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hi.js +1 -6
  69. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hu.js +1 -3
  70. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-it.js +1 -3
  71. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ja.js +1 -4
  72. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-nl.js +1 -3
  73. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-pt-PT.js +1 -3
  74. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ru.js +1 -8
  75. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +1 -3
  76. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +1 -14
  77. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/license.txt +0 -0
  78. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  79. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +0 -0
  80. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +1 -16
  81. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +1 -23
  82. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +1 -3
  83. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +1 -26
  84. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +1 -14
  85. data/vendor/assets/javascripts/webshims/minified/shims/range-ui.js +1 -0
  86. data/vendor/assets/javascripts/webshims/minified/shims/styles/details-arrows.png +0 -0
  87. data/vendor/assets/javascripts/webshims/minified/shims/styles/forms.png +0 -0
  88. data/vendor/assets/javascripts/webshims/minified/shims/styles/polyfill-loader.gif +0 -0
  89. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +1 -689
  90. data/vendor/assets/javascripts/webshims/minified/shims/swf/JarisFLVPlayer.swf +0 -0
  91. data/vendor/assets/javascripts/webshims/minified/shims/swf/jwwebshims.swf +0 -0
  92. data/vendor/assets/javascripts/webshims/minified/shims/swf/localStorage.swf +0 -0
  93. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +1 -9
  94. data/vendor/assets/javascripts/webshims/minified/shims/track.js +1 -21
  95. data/vendor/assets/javascripts/webshims/polyfiller.js +1188 -1191
  96. data/vendor/assets/javascripts/webshims/{minified/shims → shims}/FlashCanvas/README +0 -0
  97. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
  98. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
  99. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  100. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
  101. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
  102. data/vendor/assets/javascripts/webshims/{minified/shims → shims}/FlashCanvasPro/README +82 -82
  103. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
  104. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  105. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  106. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
  107. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
  108. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
  109. data/vendor/assets/javascripts/webshims/shims/combos/1.js +1752 -1754
  110. data/vendor/assets/javascripts/webshims/shims/combos/10.js +3311 -3247
  111. data/vendor/assets/javascripts/webshims/shims/combos/11.js +1631 -1633
  112. data/vendor/assets/javascripts/webshims/shims/combos/12.js +1697 -1636
  113. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1098 -1100
  114. data/vendor/assets/javascripts/webshims/shims/combos/14.js +477 -476
  115. data/vendor/assets/javascripts/webshims/shims/combos/15.js +317 -316
  116. data/vendor/assets/javascripts/webshims/shims/combos/16.js +2155 -2095
  117. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2320 -2259
  118. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1326 -1322
  119. data/vendor/assets/javascripts/webshims/shims/combos/19.js +2238 -2239
  120. data/vendor/assets/javascripts/webshims/shims/combos/2.js +2341 -2339
  121. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1558 -1493
  122. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1734 -1733
  123. data/vendor/assets/javascripts/webshims/shims/combos/22.js +2361 -2295
  124. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2332 -2269
  125. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2836 -2775
  126. data/vendor/assets/javascripts/webshims/shims/combos/25.js +1549 -1489
  127. data/vendor/assets/javascripts/webshims/shims/combos/26.js +2156 -2095
  128. data/vendor/assets/javascripts/webshims/shims/combos/27.js +3313 -3248
  129. data/vendor/assets/javascripts/webshims/shims/combos/3.js +3022 -3020
  130. data/vendor/assets/javascripts/webshims/shims/combos/4.js +771 -770
  131. data/vendor/assets/javascripts/webshims/shims/combos/5.js +1027 -1025
  132. data/vendor/assets/javascripts/webshims/shims/combos/59.js +1709 -1706
  133. data/vendor/assets/javascripts/webshims/shims/combos/6.js +387 -386
  134. data/vendor/assets/javascripts/webshims/shims/combos/7.js +643 -641
  135. data/vendor/assets/javascripts/webshims/shims/combos/8.js +1547 -1488
  136. data/vendor/assets/javascripts/webshims/shims/combos/9.js +2508 -2445
  137. data/vendor/assets/javascripts/webshims/shims/details.js +148 -148
  138. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +949 -952
  139. data/vendor/assets/javascripts/webshims/shims/es5.js +802 -802
  140. data/vendor/assets/javascripts/webshims/shims/excanvas.js +924 -924
  141. data/vendor/assets/javascripts/webshims/shims/form-core.js +606 -606
  142. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +681 -681
  143. data/vendor/assets/javascripts/webshims/shims/form-message.js +164 -164
  144. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +255 -255
  145. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +383 -383
  146. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +2 -2
  147. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1568 -1569
  148. data/vendor/assets/javascripts/webshims/shims/geolocation.js +168 -168
  149. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ar.js +32 -32
  150. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ch-ZN.js +32 -32
  151. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-de.txt +33 -33
  152. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-el.js +32 -32
  153. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-en.txt +34 -34
  154. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-es.js +31 -31
  155. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-fr.js +32 -32
  156. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-he.js +32 -32
  157. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hi.js +32 -32
  158. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hu.js +32 -32
  159. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-it.js +32 -32
  160. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ja.js +32 -32
  161. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-nl.js +32 -32
  162. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-pt-PT.js +32 -32
  163. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ru.js +31 -31
  164. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-sv.js +32 -32
  165. data/vendor/assets/javascripts/webshims/shims/json-storage.js +308 -308
  166. data/vendor/assets/javascripts/webshims/shims/jwplayer/license.txt +0 -0
  167. data/vendor/assets/javascripts/webshims/shims/jwplayer/player.swf +0 -0
  168. data/vendor/assets/javascripts/webshims/shims/jwplayer/readme.html +0 -0
  169. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +597 -536
  170. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +891 -860
  171. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +98 -98
  172. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +960 -957
  173. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +543 -543
  174. data/vendor/assets/javascripts/webshims/shims/range-ui.js +66 -0
  175. data/vendor/assets/javascripts/webshims/shims/styles/details-arrows.png +0 -0
  176. data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
  177. data/vendor/assets/javascripts/webshims/shims/styles/polyfill-loader.gif +0 -0
  178. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +697 -689
  179. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  180. data/vendor/assets/javascripts/webshims/shims/swf/jwwebshims.swf +0 -0
  181. data/vendor/assets/javascripts/webshims/shims/swf/localStorage.swf +0 -0
  182. data/vendor/assets/javascripts/webshims/shims/track-ui.js +0 -0
  183. data/vendor/assets/javascripts/webshims/shims/track.js +0 -0
  184. metadata +6 -4
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "0.4.4"
4
- WEBSHIMS_VERSION = "1.9.3"
3
+ VERSION = "0.4.5"
4
+ WEBSHIMS_VERSION = "1.9.4"
5
5
  end
6
6
  end
@@ -1,261 +1,253 @@
1
- (function($, window, document, undefined){
2
- "use strict";
3
- if(!$.webshims){
4
- var langs = navigator.browserLanguage || navigator.language || $('html').attr('lang') || '';
5
- $.webshims = {
6
- addReady: function(fn){$(function(){fn(document, $([]));});},
7
- ready: function(n, fn){fn();},
8
- activeLang: function(){return langs;}
9
- };
10
- }
11
- var webshims = $.webshims;
12
- var customValidityRules = {};
13
- var formReady = false;
14
- var blockCustom;
15
- var initTest;
16
- var onEventTest = function(e){
17
- webshims.refreshCustomValidityRules(e.target);
18
- };
19
-
20
-
21
- webshims.customErrorMessages = {};
22
- webshims.addCustomValidityRule = function(name, test, defaultMessage){
23
- customValidityRules[name] = test;
24
- if(!webshims.customErrorMessages[name]){
25
- webshims.customErrorMessages[name] = [];
26
- webshims.customErrorMessages[name][''] = defaultMessage || name;
27
- }
28
- if($.isReady && formReady){
29
- $('input, select, textarea').each(function(){
30
- testValidityRules(this);
31
- });
32
- }
33
- };
34
- webshims.refreshCustomValidityRules = function(elem){
35
- if(!elem.form || (!initTest && !$.prop(elem, 'willValidate')) ){return;}
36
- blockCustom = true;
37
- var customMismatchedRule = $.data(elem, 'customMismatchedRule');
38
- var validity = $.prop(elem, 'validity') || {};
39
- var message = '';
40
- if(customMismatchedRule || !validity.customError){
41
- var val = $(elem).val();
42
- $.each(customValidityRules, function(name, test){
43
- message = test(elem, val) || '';
44
- customMismatchedRule = name;
45
- if(message){
46
-
47
- if(typeof message != 'string'){
48
- message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || webshims.customErrorMessages[name][webshims.activeLang()] || webshims.customErrorMessages[name][''];
49
- }
50
-
51
- if(typeof message == 'object'){
52
- message = message[name] || message.customError || message.defaultMessage;
53
- }
54
- return false;
55
- }
56
- });
57
-
58
- if(message){
59
- $.data(elem, 'customMismatchedRule', customMismatchedRule);
60
- }
61
- $(elem).setCustomValidity(message);
62
- }
63
- blockCustom = false;
64
- };
65
- var testValidityRules = webshims.refreshCustomValidityRules;
66
-
67
- webshims.ready('forms', function(){
68
- formReady = true;
69
-
70
- var oldCustomValidity = $.fn.setCustomValidity || function(message){
71
- return this.each(function(){
72
- if(this.setCustomValidity){
73
- this.setCustomValidity(message);
74
- }
75
- });
76
- };
77
-
78
-
79
- $.fn.setCustomValidity = function(message){
80
- if(!blockCustom){
81
- this.data('customMismatchedRule', '');
82
- }
83
- return oldCustomValidity.apply(this, arguments);
84
- };
85
-
86
-
87
- $(document).bind('change', onEventTest);
88
-
89
- webshims.addReady(function(context, selfElement){
90
- initTest = true;
91
- $('input, select, textarea', context).add(selfElement.filter('input, select, textarea')).each(function(){
92
- testValidityRules(this);
93
- });
94
- initTest = false;
95
- });
96
- $(document).bind('refreshCustomValidityRules', onEventTest);
97
-
98
- });
99
-
100
- })(jQuery, window, document);
101
-
102
- /*
103
- * adds support for HTML5 constraint validation
104
- * - partial pattern: <input data-partial-pattern="RegExp" />
105
- * - creditcard-validation: <input class="creditcard-input" />
106
- * - several dependent-validation patterns (examples):
107
- * - <input type="email" id="mail" /> <input data-dependent-validation='mail' />
108
- * - <input type="date" id="start" data-dependent-validation='{"from": "end", "prop": "max"}' /> <input type="date" id="end" data-dependent-validation='{"from": "start", "prop": "min"}' />
109
- * - <input type="checkbox" id="check" /> <input data-dependent-validation='checkbox' />
110
- */
111
- (function($, window, document, undefined){
112
- "use strict";
113
- var addCustomValidityRule = $.webshims.addCustomValidityRule;
114
- addCustomValidityRule('partialPattern', function(elem, val){
115
- if(!val || !elem.getAttribute('data-partial-pattern')){return;}
116
- var pattern = $(elem).data('partial-pattern');
117
- if(!pattern){return;}
118
- return !(new RegExp('(' + pattern + ')', 'i').test(val));
119
- }, 'This format is not allowed here.');
120
-
121
- addCustomValidityRule('tooShort', function(elem, val){
122
- if(!val || !elem.getAttribute('data-minlength')){return;}
123
- return $(elem).data('minlength') > val.length;
124
- }, 'Entered value is too short.');
125
-
126
- var groupTimer = {};
127
- addCustomValidityRule('group-required', function(elem, val){
128
- var name = elem.name;
129
- if(!name || elem.type !== 'checkbox' || !$(elem).hasClass('group-required')){return;}
130
- var checkboxes = $( (elem.form && elem.form[name]) || document.getElementsByName(name));
131
- var isValid = checkboxes.filter(':checked');
132
- if(groupTimer[name]){
133
- clearTimeout(groupTimer[name]);
134
- }
135
- groupTimer[name] = setTimeout(function(){
136
- checkboxes
137
- .unbind('click.groupRequired')
138
- .bind('click.groupRequired', function(){
139
- checkboxes.filter('.group-required').each(function(){
140
- $.webshims.refreshCustomValidityRules(this);
141
- });
142
- })
143
- ;
144
- }, 9);
145
-
146
- return !(isValid[0]);
147
- }, 'Please check one of these checkboxes.');
148
-
149
- //based on jörn zaefferes validiation plugin
150
- // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
151
- // based on http://en.wikipedia.org/wiki/Luhn
152
- var dashDigit = /[^0-9-]+/;
153
- addCustomValidityRule('creditcard', function(elem, value){
154
- if(!value || !$(elem).hasClass('creditcard-input')){return;}
155
- if (!dashDigit.test(value)){
156
- return true;
157
- }
158
- var nCheck = 0,
159
- nDigit = 0,
160
- bEven = false;
161
-
162
- value = value.replace(/\D/g, "");
163
-
164
- for (n = value.length - 1; n >= 0; n--) {
165
- var cDigit = value.charAt(n);
166
- nDigit = parseInt(cDigit, 10);
167
- if (bEven && (nDigit *= 2) > 9) {
168
- nDigit -= 9;
169
- }
170
- nCheck += nDigit;
171
- bEven = !bEven;
172
- }
173
-
174
- return (nCheck % 10) !== 0;
175
- }, 'Please enter a valid credit card number');
176
-
177
- var dependentDefaults = {
178
- //"from": "IDREF || UniqueNAMEREF", //required property: element
179
- "prop": "value", //default: value||disabled (last if "from-prop" is checked)
180
- "from-prop": "value", //default: value||checked (last if element checkbox or radio)
181
- "toggle": false
182
- };
183
-
184
- var getGroupElements = function(elem) {
185
- return $(elem.form[elem.name]).filter('[type="radio"]');
186
- };
187
- $.webshims.ready('form-core', function(){
188
- if($.webshims.modules){
189
- getGroupElements = $.webshims.modules["form-core"].getGroupElements || getGroupElements;
190
- }
191
- });
192
-
193
- addCustomValidityRule('dependent', function(elem, val){
194
-
195
- if( !elem.getAttribute('data-dependent-validation') ){return;}
196
-
197
- var data = $(elem).data('dependentValidation');
198
- var specialVal;
199
- if(!data){return;}
200
- var depFn = function(e){
201
- var val = $.prop(data.masterElement, data["from-prop"]);
202
- if(specialVal){
203
- val = $.inArray(val, specialVal) !== -1;
204
- }
205
- if(data.toggle){
206
- val = !val;
207
- }
208
- $.prop( elem, data.prop, val);
209
- };
210
-
211
- if(!data._init || !data.masterElement){
212
-
213
- if(typeof data == 'string'){
214
- data = {"from": data};
215
- }
216
-
217
-
218
- data.masterElement = document.getElementById(data["from"]) || (document.getElementsByName(data["from"] || [])[0]);
219
-
220
- if (!data.masterElement || !data.masterElement.form) {return;}
221
-
222
- if(/radio|checkbox/i.test(data.masterElement.type)){
223
- if(!data["from-prop"]){
224
- data["from-prop"] = 'checked';
225
- }
226
- if(!data.prop && data["from-prop"] == 'checked'){
227
- data.prop = 'disabled';
228
- }
229
- } else if(!data["from-prop"]){
230
- data["from-prop"] = 'value';
231
- }
232
-
233
- if(data["from-prop"].indexOf('value:') === 0){
234
- specialVal = data["from-prop"].replace('value:', '').split('||');
235
- data["from-prop"] = 'value';
236
-
237
- }
238
-
239
- data = $.data(elem, 'dependentValidation', $.extend({_init: true}, dependentDefaults, data));
240
-
241
- if(data.prop !== "value" || specialVal){
242
- $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).bind('change', depFn);
243
- } else {
244
- $(data.masterElement).bind('change', function(){
245
- $.webshims.refreshCustomValidityRules(elem);
246
- if($(elem).is('.user-error, .user-success')){
247
- $(elem).trigger('refreshvalidityui');
248
- }
249
- });
250
- }
251
- }
252
-
253
- if(data.prop == "value" && !specialVal){
254
- return ($.prop(data.masterElement, 'value') != val);
255
- } else {
256
- depFn();
257
- return '';
258
- }
259
-
260
- }, 'The value of this field does not repeat the value of the other field');
261
- })(jQuery, window, document);
1
+ (function($, window, document, undefined){
2
+ "use strict";
3
+ if(!$.webshims){
4
+ var langs = navigator.browserLanguage || navigator.language || $('html').attr('lang') || '';
5
+ $.webshims = {
6
+ addReady: function(fn){$(function(){fn(document, $([]));});},
7
+ ready: function(n, fn){fn();},
8
+ activeLang: function(){return langs;}
9
+ };
10
+ }
11
+ var webshims = $.webshims;
12
+ var customValidityRules = {};
13
+ var formReady = false;
14
+ var blockCustom;
15
+ var initTest;
16
+ var onEventTest = function(e){
17
+ webshims.refreshCustomValidityRules(e.target);
18
+ };
19
+
20
+
21
+ webshims.customErrorMessages = {};
22
+ webshims.addCustomValidityRule = function(name, test, defaultMessage){
23
+ customValidityRules[name] = test;
24
+ if(!webshims.customErrorMessages[name]){
25
+ webshims.customErrorMessages[name] = [];
26
+ webshims.customErrorMessages[name][''] = defaultMessage || name;
27
+ }
28
+ if($.isReady && formReady){
29
+ $('input, select, textarea').each(function(){
30
+ testValidityRules(this);
31
+ });
32
+ }
33
+ };
34
+ webshims.refreshCustomValidityRules = function(elem){
35
+ if(!elem.form || (!initTest && !$.prop(elem, 'willValidate')) ){return;}
36
+ blockCustom = true;
37
+ var customMismatchedRule = $.data(elem, 'customMismatchedRule');
38
+ var validity = $.prop(elem, 'validity') || {};
39
+ var message = '';
40
+ if(customMismatchedRule || !validity.customError){
41
+ var val = $(elem).val();
42
+ $.each(customValidityRules, function(name, test){
43
+ message = test(elem, val) || '';
44
+ customMismatchedRule = name;
45
+ if(message){
46
+
47
+ if(typeof message != 'string'){
48
+ message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || webshims.customErrorMessages[name][webshims.activeLang()] || webshims.customErrorMessages[name][''];
49
+ }
50
+
51
+ if(typeof message == 'object'){
52
+ message = message[name] || message.customError || message.defaultMessage;
53
+ }
54
+ return false;
55
+ }
56
+ });
57
+
58
+ if(message){
59
+ $.data(elem, 'customMismatchedRule', customMismatchedRule);
60
+ }
61
+ $(elem).setCustomValidity(message);
62
+ }
63
+ blockCustom = false;
64
+ };
65
+ var testValidityRules = webshims.refreshCustomValidityRules;
66
+
67
+ webshims.ready('forms', function(){
68
+ formReady = true;
69
+
70
+ var oldCustomValidity = $.fn.setCustomValidity || function(message){
71
+ return this.each(function(){
72
+ if(this.setCustomValidity){
73
+ this.setCustomValidity(message);
74
+ }
75
+ });
76
+ };
77
+
78
+
79
+ $.fn.setCustomValidity = function(message){
80
+ if(!blockCustom){
81
+ this.data('customMismatchedRule', '');
82
+ }
83
+ return oldCustomValidity.apply(this, arguments);
84
+ };
85
+
86
+
87
+ $(document).bind('change', onEventTest);
88
+
89
+ webshims.addReady(function(context, selfElement){
90
+ initTest = true;
91
+ $('input, select, textarea', context).add(selfElement.filter('input, select, textarea')).each(function(){
92
+ testValidityRules(this);
93
+ });
94
+ initTest = false;
95
+ });
96
+ $(document).bind('refreshCustomValidityRules', onEventTest);
97
+
98
+ });
99
+
100
+ })(jQuery, window, document);
101
+
102
+ /*
103
+ * adds support for HTML5 constraint validation
104
+ * - partial pattern: <input data-partial-pattern="RegExp" />
105
+ * - creditcard-validation: <input class="creditcard-input" />
106
+ * - several dependent-validation patterns (examples):
107
+ * - <input type="email" id="mail" /> <input data-dependent-validation='mail' />
108
+ * - <input type="date" id="start" data-dependent-validation='{"from": "end", "prop": "max"}' /> <input type="date" id="end" data-dependent-validation='{"from": "start", "prop": "min"}' />
109
+ * - <input type="checkbox" id="check" /> <input data-dependent-validation='checkbox' />
110
+ */
111
+ (function($, window, document, undefined){
112
+ "use strict";
113
+ var addCustomValidityRule = $.webshims.addCustomValidityRule;
114
+ addCustomValidityRule('partialPattern', function(elem, val){
115
+ if(!val || !elem.getAttribute('data-partial-pattern')){return;}
116
+ var pattern = $(elem).data('partial-pattern');
117
+ if(!pattern){return;}
118
+ return !(new RegExp('(' + pattern + ')', 'i').test(val));
119
+ }, 'This format is not allowed here.');
120
+
121
+ addCustomValidityRule('tooShort', function(elem, val){
122
+ if(!val || !elem.getAttribute('data-minlength')){return;}
123
+ return $(elem).data('minlength') > val.length;
124
+ }, 'Entered value is too short.');
125
+
126
+ var groupTimer = {};
127
+ addCustomValidityRule('group-required', function(elem, val){
128
+ var name = elem.name;
129
+ if(!name || elem.type !== 'checkbox' || !$(elem).hasClass('group-required')){return;}
130
+ var checkboxes = $( (elem.form && elem.form[name]) || document.getElementsByName(name));
131
+ var isValid = checkboxes.filter(':checked');
132
+ if(groupTimer[name]){
133
+ clearTimeout(groupTimer[name]);
134
+ }
135
+ groupTimer[name] = setTimeout(function(){
136
+ checkboxes
137
+ .unbind('click.groupRequired')
138
+ .bind('click.groupRequired', function(){
139
+ checkboxes.filter('.group-required').each(function(){
140
+ $.webshims.refreshCustomValidityRules(this);
141
+ });
142
+ })
143
+ ;
144
+ }, 9);
145
+
146
+ return !(isValid[0]);
147
+ }, 'Please check one of these checkboxes.');
148
+
149
+ // based on https://sites.google.com/site/abapexamples/javascript/luhn-validation
150
+ addCustomValidityRule('creditcard', function(elem, value){
151
+ if(!value || !$(elem).hasClass('creditcard-input')){return;}
152
+ value = value.replace(/\-/g, "");
153
+ //if it's not numeric return true >- for invalid
154
+ if(value != value * 1){return true;}
155
+ var len = value.length;
156
+ var sum = 0;
157
+ var mul = 1;
158
+ var ca;
159
+
160
+ while (len--) {
161
+ ca = parseInt(value.charAt(len),10) * mul;
162
+ sum += ca - (ca>9)*9;// sum += ca - (-(ca>9))|9
163
+ // 1 <--> 2 toggle.
164
+ mul ^= 3; // (mul = 3 - mul);
165
+ }
166
+ return !((sum%10 === 0) && (sum > 0));
167
+ }, 'Please enter a valid credit card number');
168
+
169
+ var dependentDefaults = {
170
+ //"from": "IDREF || UniqueNAMEREF", //required property: element
171
+ "prop": "value", //default: value||disabled (last if "from-prop" is checked)
172
+ "from-prop": "value", //default: value||checked (last if element checkbox or radio)
173
+ "toggle": false
174
+ };
175
+
176
+ var getGroupElements = function(elem) {
177
+ return $(elem.form[elem.name]).filter('[type="radio"]');
178
+ };
179
+ $.webshims.ready('form-core', function(){
180
+ if($.webshims.modules){
181
+ getGroupElements = $.webshims.modules["form-core"].getGroupElements || getGroupElements;
182
+ }
183
+ });
184
+
185
+ addCustomValidityRule('dependent', function(elem, val){
186
+
187
+ if( !elem.getAttribute('data-dependent-validation') ){return;}
188
+
189
+ var data = $(elem).data('dependentValidation');
190
+ var specialVal;
191
+ if(!data){return;}
192
+ var depFn = function(e){
193
+ var val = $.prop(data.masterElement, data["from-prop"]);
194
+ if(specialVal){
195
+ val = $.inArray(val, specialVal) !== -1;
196
+ }
197
+ if(data.toggle){
198
+ val = !val;
199
+ }
200
+ $.prop( elem, data.prop, val);
201
+ };
202
+
203
+ if(!data._init || !data.masterElement){
204
+
205
+ if(typeof data == 'string'){
206
+ data = {"from": data};
207
+ }
208
+
209
+
210
+ data.masterElement = document.getElementById(data["from"]) || (document.getElementsByName(data["from"] || [])[0]);
211
+
212
+ if (!data.masterElement || !data.masterElement.form) {return;}
213
+
214
+ if(/radio|checkbox/i.test(data.masterElement.type)){
215
+ if(!data["from-prop"]){
216
+ data["from-prop"] = 'checked';
217
+ }
218
+ if(!data.prop && data["from-prop"] == 'checked'){
219
+ data.prop = 'disabled';
220
+ }
221
+ } else if(!data["from-prop"]){
222
+ data["from-prop"] = 'value';
223
+ }
224
+
225
+ if(data["from-prop"].indexOf('value:') === 0){
226
+ specialVal = data["from-prop"].replace('value:', '').split('||');
227
+ data["from-prop"] = 'value';
228
+
229
+ }
230
+
231
+ data = $.data(elem, 'dependentValidation', $.extend({_init: true}, dependentDefaults, data));
232
+
233
+ if(data.prop !== "value" || specialVal){
234
+ $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).bind('change', depFn);
235
+ } else {
236
+ $(data.masterElement).bind('change', function(){
237
+ $.webshims.refreshCustomValidityRules(elem);
238
+ if($(elem).is('.user-error, .user-success')){
239
+ $(elem).trigger('refreshvalidityui');
240
+ }
241
+ });
242
+ }
243
+ }
244
+
245
+ if(data.prop == "value" && !specialVal){
246
+ return ($.prop(data.masterElement, 'value') != val);
247
+ } else {
248
+ depFn();
249
+ return '';
250
+ }
251
+
252
+ }, 'The value of this field does not repeat the value of the other field');
253
+ })(jQuery, window, document);