webshims-rails 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/custom-validity.js +261 -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 -1
  6. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +24 -24
  7. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/README +82 -82
  8. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +35 -34
  9. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +79 -82
  10. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +45 -44
  11. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +43 -42
  12. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +28 -27
  13. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +4 -4
  14. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +57 -59
  15. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +64 -66
  16. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +53 -54
  17. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +64 -66
  18. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +72 -73
  19. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +42 -46
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +52 -50
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +55 -59
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +66 -64
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +80 -82
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +60 -59
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +79 -81
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +101 -104
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +94 -95
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +26 -29
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +33 -36
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +51 -54
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +27 -28
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +27 -28
  33. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +39 -38
  34. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +65 -68
  35. data/vendor/assets/javascripts/webshims/minified/shims/details.js +4 -4
  36. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +23 -22
  37. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +19 -22
  38. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +14 -14
  39. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +9 -9
  40. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +18 -19
  41. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +45 -43
  42. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +33 -33
  43. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +34 -34
  44. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +12 -12
  45. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +23 -0
  46. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +1 -1
  47. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +26 -30
  48. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +3 -3
  49. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +689 -686
  50. data/vendor/assets/javascripts/webshims/minified/shims/swf/JarisFLVPlayer.swf +0 -0
  51. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +9 -9
  52. data/vendor/assets/javascripts/webshims/minified/shims/track.js +21 -21
  53. data/vendor/assets/javascripts/webshims/polyfiller.js +1191 -1175
  54. data/vendor/assets/javascripts/webshims/shims/combos/1.js +1754 -1714
  55. data/vendor/assets/javascripts/webshims/shims/combos/10.js +3247 -3320
  56. data/vendor/assets/javascripts/webshims/shims/combos/11.js +1633 -1588
  57. data/vendor/assets/javascripts/webshims/shims/combos/12.js +1636 -1591
  58. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1100 -1058
  59. data/vendor/assets/javascripts/webshims/shims/combos/14.js +476 -476
  60. data/vendor/assets/javascripts/webshims/shims/combos/15.js +316 -314
  61. data/vendor/assets/javascripts/webshims/shims/combos/16.js +2094 -2104
  62. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2258 -2267
  63. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1380 -1364
  64. data/vendor/assets/javascripts/webshims/shims/combos/19.js +2239 -2247
  65. data/vendor/assets/javascripts/webshims/shims/combos/2.js +2339 -2294
  66. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1493 -1606
  67. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1733 -1635
  68. data/vendor/assets/javascripts/webshims/shims/combos/22.js +2295 -2408
  69. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2269 -2168
  70. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2775 -2780
  71. data/vendor/assets/javascripts/webshims/shims/combos/25.js +1505 -1456
  72. data/vendor/assets/javascripts/webshims/shims/combos/26.js +2111 -2115
  73. data/vendor/assets/javascripts/webshims/shims/combos/27.js +3264 -3331
  74. data/vendor/assets/javascripts/webshims/shims/combos/3.js +3020 -2970
  75. data/vendor/assets/javascripts/webshims/shims/combos/4.js +770 -822
  76. data/vendor/assets/javascripts/webshims/shims/combos/5.js +1025 -1077
  77. data/vendor/assets/javascripts/webshims/shims/combos/59.js +1706 -1753
  78. data/vendor/assets/javascripts/webshims/shims/combos/6.js +444 -433
  79. data/vendor/assets/javascripts/webshims/shims/combos/7.js +699 -688
  80. data/vendor/assets/javascripts/webshims/shims/combos/8.js +1488 -1445
  81. data/vendor/assets/javascripts/webshims/shims/combos/9.js +2445 -2518
  82. data/vendor/assets/javascripts/webshims/shims/details.js +148 -146
  83. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +952 -912
  84. data/vendor/assets/javascripts/webshims/shims/es5.js +802 -802
  85. data/vendor/assets/javascripts/webshims/shims/excanvas.js +924 -924
  86. data/vendor/assets/javascripts/webshims/shims/form-core.js +606 -659
  87. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +681 -676
  88. data/vendor/assets/javascripts/webshims/shims/form-message.js +164 -163
  89. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +255 -255
  90. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +383 -383
  91. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +61 -50
  92. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1569 -1472
  93. data/vendor/assets/javascripts/webshims/shims/geolocation.js +168 -168
  94. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ar.js +32 -32
  95. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ch-ZN.js +32 -32
  96. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-de.txt +33 -33
  97. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-el.js +32 -32
  98. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-en.txt +34 -34
  99. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-es.js +31 -31
  100. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-fr.js +32 -32
  101. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-he.js +32 -32
  102. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hi.js +32 -32
  103. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hu.js +32 -32
  104. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-it.js +32 -32
  105. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ja.js +32 -32
  106. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-nl.js +32 -32
  107. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-pt-PT.js +32 -32
  108. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ru.js +31 -31
  109. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-sv.js +32 -32
  110. data/vendor/assets/javascripts/webshims/shims/json-storage.js +308 -308
  111. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +536 -533
  112. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +861 -0
  113. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +98 -98
  114. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +957 -1073
  115. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +543 -543
  116. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +689 -686
  117. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  118. data/vendor/assets/javascripts/webshims/shims/track-ui.js +9 -8
  119. data/vendor/assets/javascripts/webshims/shims/track.js +17 -11
  120. metadata +6 -6
  121. data/vendor/assets/javascripts/webshims/minified/shims/form-native-fix.js +0 -7
  122. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/README +0 -62
  123. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/README +0 -82
  124. data/vendor/assets/javascripts/webshims/shims/form-native-fix.js +0 -261
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "0.4.3"
4
- WEBSHIMS_VERSION = "1.9.2"
3
+ VERSION = "0.4.4"
4
+ WEBSHIMS_VERSION = "1.9.3"
5
5
  end
6
6
  end
@@ -1,261 +1,261 @@
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('.form-ui-invalid, .form-ui-valid')){
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 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);