webshims-rails 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
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);