webshims-rails 1.14.4 → 1.14.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Rakefile +58 -0
  4. data/lib/webshims-rails/version.rb +2 -2
  5. data/vendor/assets/javascripts/webshims/polyfiller.js +45 -26
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +18 -5
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +26 -22
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +24 -21
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +4 -0
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +4 -0
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -1
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +17 -7
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -7
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +24 -22
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +122 -97
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +20 -6
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +4 -3
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -0
  19. data/vendor/assets/javascripts/webshims/shims/combos/25.js +7 -5
  20. data/vendor/assets/javascripts/webshims/shims/combos/26.js +1 -1
  21. data/vendor/assets/javascripts/webshims/shims/combos/27.js +29 -9
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +1 -2
  23. data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1
  24. data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -6
  25. data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -6
  26. data/vendor/assets/javascripts/webshims/shims/combos/31.js +16 -6
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -1
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2 -1
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +2 -1
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +24 -22
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +24 -22
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +20 -6
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +20 -6
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +26 -22
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +0 -24
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +22 -25
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +22 -25
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +2 -1
  39. data/vendor/assets/javascripts/webshims/shims/filereader.js +1 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-core.js +14 -5
  41. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +8 -4
  42. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -1
  43. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +24 -21
  44. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1 -1
  45. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +28 -8
  46. data/vendor/assets/javascripts/webshims/shims/form-validation.js +17 -20
  47. data/vendor/assets/javascripts/webshims/shims/form-validators.js +17 -10
  48. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +3 -3
  49. data/vendor/assets/javascripts/webshims/shims/jme/base.js +0 -24
  50. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +23 -9
  51. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +21 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +13 -4
  53. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +22 -1
  54. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -0
  55. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -3
  56. data/vendor/assets/javascripts/webshims/shims/picture.js +122 -97
  57. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +470 -452
  58. data/vendor/assets/javascripts/webshims/shims/sizzle.js +35 -27
  59. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +10 -2
  60. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +1 -1
  61. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +10 -0
  62. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +4 -2
  63. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +1 -1
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +6 -24
  65. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +15 -21
  66. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +5 -19
  67. data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -2
  68. metadata +2 -3
  69. data/vendor/assets/javascripts/webshims/shims/promise.js +0 -684
@@ -772,8 +772,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
772
772
  webshims.warn(type +' already implemented for element #'+elem.id);
773
773
  return false;
774
774
  }
775
+
775
776
  data[type] = true;
776
- return true;
777
+ return !$(elem).hasClass('ws-nopolyfill');
777
778
  },
778
779
  extendUNDEFProp: function(obj, props){
779
780
  $.each(props, function(name, prop){
@@ -1462,6 +1463,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1462
1463
  };
1463
1464
  var lazyLoad = function(){
1464
1465
  var toLoad = ['form-validation'];
1466
+
1467
+ $(document).off('.lazyloadvalidation');
1468
+
1465
1469
  if(options.lazyCustomMessages){
1466
1470
  options.customMessages = true;
1467
1471
  toLoad.push('form-message');
@@ -1476,7 +1480,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1476
1480
  toLoad.push('form-validators');
1477
1481
  }
1478
1482
  webshims.reTest(toLoad);
1479
- $(document).off('.lazyloadvalidation');
1480
1483
  };
1481
1484
  /*
1482
1485
  * Selectors for all browsers
@@ -1533,11 +1536,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1533
1536
  };
1534
1537
  $.extend(exp, {
1535
1538
  "enabled": function( elem ) {
1536
- return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
1539
+ return 'disabled' in elem && elem.disabled === false && !$.find.matchesSelector(elem, 'fieldset[disabled] *');
1537
1540
  },
1538
1541
 
1539
1542
  "disabled": function( elem ) {
1540
- return elem.disabled === true || ('disabled' in elem && $(elem).is('fieldset[disabled] *'));
1543
+ return elem.disabled === true || ('disabled' in elem && $.find.matchesSelector(elem, 'fieldset[disabled] *'));
1541
1544
  }
1542
1545
  });
1543
1546
  }
@@ -1716,8 +1719,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1716
1719
  };
1717
1720
 
1718
1721
 
1719
-
1720
- $(document).on('focusin.lazyloadvalidation', function(e){
1722
+ $(document).on('focusin.lazyloadvalidation mousedown.lazyloadvalidation touchstart.lazyloadvalidation', function(e){
1721
1723
  if('form' in e.target){
1722
1724
  lazyLoad();
1723
1725
  }
@@ -1748,6 +1750,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1748
1750
  });
1749
1751
  }
1750
1752
  });
1753
+
1754
+ if(options.addValidators && options.fastValidators){
1755
+ webshims.reTest(['form-validators', 'form-validation']);
1756
+ }
1757
+
1758
+ if(document.readyState == 'complete'){
1759
+ webshims.isReady('WINDOWLOAD', true);
1760
+ }
1751
1761
  });
1752
1762
  ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
1753
1763
  "use strict";
@@ -2579,6 +2589,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2579
2589
  webshims.ready(swfType, initMediaElements);
2580
2590
  }
2581
2591
  webshims.ready('track', loadTrackUi);
2592
+
2593
+ if(document.readyState == 'complete'){
2594
+ webshims.isReady('WINDOWLOAD', true);
2595
+ }
2582
2596
  });
2583
2597
 
2584
2598
  })(webshims);
@@ -462,6 +462,7 @@
462
462
  var onEvent = {
463
463
  onPlayPause: function(jaris, data, override){
464
464
  var playing, type;
465
+ var idled = data.paused || data.ended;
465
466
  if(override == null){
466
467
  try {
467
468
  playing = data.api.api_get("isPlaying");
@@ -469,7 +470,7 @@
469
470
  } else {
470
471
  playing = override;
471
472
  }
472
- if(playing == data.paused){
473
+ if(playing == idled || playing == null){
473
474
 
474
475
  data.paused = !playing;
475
476
  type = data.paused ? 'pause' : 'play';
@@ -1546,11 +1547,11 @@
1546
1547
  var media, error, parent;
1547
1548
  if(
1548
1549
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
1549
- (media = $(e.target).closest('audio, video')) && !media.is('.nonnative-api-active')
1550
+ (media = $(e.target).closest('audio, video')) && !media.hasClass('nonnative-api-active')
1550
1551
  ){
1551
1552
  error = media.prop('error');
1552
1553
  setTimeout(function(){
1553
- if(!media.is('.nonnative-api-active')){
1554
+ if(!media.hasClass('nonnative-api-active')){
1554
1555
  if(error && switchErrors[error.code]){
1555
1556
  options.preferFlash = true;
1556
1557
  document.removeEventListener('error', switchOptions, true);
@@ -754,6 +754,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
754
754
  webshims.ready(swfType, initMediaElements);
755
755
  }
756
756
  webshims.ready('track', loadTrackUi);
757
+
758
+ if(document.readyState == 'complete'){
759
+ webshims.isReady('WINDOWLOAD', true);
760
+ }
757
761
  });
758
762
 
759
763
  })(webshims);
@@ -549,8 +549,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
549
549
  webshims.warn(type +' already implemented for element #'+elem.id);
550
550
  return false;
551
551
  }
552
+
552
553
  data[type] = true;
553
- return true;
554
+ return !$(elem).hasClass('ws-nopolyfill');
554
555
  },
555
556
  extendUNDEFProp: function(obj, props){
556
557
  $.each(props, function(name, prop){
@@ -1549,7 +1550,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1549
1550
  writeable: false,
1550
1551
  get: function(){
1551
1552
  if(this.type != 'file'){return null;}
1552
- if(!$(this).is('.ws-filereader')){
1553
+ if(!$(this).hasClass('ws-filereader')){
1553
1554
  webshim.info("please add the 'ws-filereader' class to your input[type='file'] to implement files-property");
1554
1555
  }
1555
1556
  return webshim.data(this, 'fileList') || [];
@@ -1808,6 +1809,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1808
1809
  var onEvent = {
1809
1810
  onPlayPause: function(jaris, data, override){
1810
1811
  var playing, type;
1812
+ var idled = data.paused || data.ended;
1811
1813
  if(override == null){
1812
1814
  try {
1813
1815
  playing = data.api.api_get("isPlaying");
@@ -1815,7 +1817,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1815
1817
  } else {
1816
1818
  playing = override;
1817
1819
  }
1818
- if(playing == data.paused){
1820
+ if(playing == idled || playing == null){
1819
1821
 
1820
1822
  data.paused = !playing;
1821
1823
  type = data.paused ? 'pause' : 'play';
@@ -2892,11 +2894,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2892
2894
  var media, error, parent;
2893
2895
  if(
2894
2896
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
2895
- (media = $(e.target).closest('audio, video')) && !media.is('.nonnative-api-active')
2897
+ (media = $(e.target).closest('audio, video')) && !media.hasClass('nonnative-api-active')
2896
2898
  ){
2897
2899
  error = media.prop('error');
2898
2900
  setTimeout(function(){
2899
- if(!media.is('.nonnative-api-active')){
2901
+ if(!media.hasClass('nonnative-api-active')){
2900
2902
  if(error && switchErrors[error.code]){
2901
2903
  options.preferFlash = true;
2902
2904
  document.removeEventListener('error', switchOptions, true);
@@ -7570,7 +7570,7 @@ Globally exposed namespace with the most frequently used public classes and hand
7570
7570
  writeable: false,
7571
7571
  get: function(){
7572
7572
  if(this.type != 'file'){return null;}
7573
- if(!$(this).is('.ws-filereader')){
7573
+ if(!$(this).hasClass('ws-filereader')){
7574
7574
  webshim.info("please add the 'ws-filereader' class to your input[type='file'] to implement files-property");
7575
7575
  }
7576
7576
  return webshim.data(this, 'fileList') || [];
@@ -156,18 +156,37 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
156
156
  if(!support.fieldsetdisabled || !support.fieldsetelements){
157
157
  (function(){
158
158
  if(!support.fieldsetdisabled){
159
+ var hasIsDisabled = 'isDisabled' in document.createElement('div');
159
160
  var isFieldsetGroup = {
160
161
  fieldset: 1,
161
162
  FIELDSET: 1
162
163
  };
163
164
  var disableElementsSel = 'input, textarea, select, button';
165
+
166
+ var isDisabledChild = function(elem){
167
+ if(hasIsDisabled && !elem.isDisabled){
168
+ return false;
169
+ }
170
+ return $.find.matchesSelector(elem, 'fieldset[disabled] *' );
171
+ };
172
+ var isDisabledChildFilter = hasIsDisabled ?
173
+ function(){
174
+ return this.isDisabled && $.find.matchesSelector(this, 'fieldset[disabled] *' );
175
+ } :
176
+ 'fieldset[disabled] *';
177
+ var isEnableChildFilter = hasIsDisabled ?
178
+ function(){
179
+ return !this.isDisabled && !$.find.matchesSelector(this, 'fieldset[disabled] *' );
180
+ } :
181
+ ':not(fieldset[disabled] *)';
182
+
164
183
  $.extend($.expr[":"], {
165
184
  "enabled": function( elem ) {
166
- return elem.disabled === false || (isFieldsetGroup[elem.nodeName] && webshims.contentAttr(elem, 'disabled') == null && !$(elem).is('fieldset[disabled] *')) ;
185
+ return isFieldsetGroup[elem.nodeName] ? (webshims.contentAttr(elem, 'disabled') == null && !isDisabledChild(elem)) : elem.disabled === false;
167
186
  },
168
187
 
169
188
  "disabled": function( elem ) {
170
- return elem.disabled === true || (isFieldsetGroup[elem.nodeName] && (webshims.contentAttr(elem, 'disabled') != null || $(elem).is('fieldset[disabled] *')));
189
+ return isFieldsetGroup[elem.nodeName] ? (webshims.contentAttr(elem, 'disabled') != null || isDisabledChild(elem)) : elem.disabled === true;
171
190
  }
172
191
  });
173
192
 
@@ -197,11 +216,12 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
197
216
 
198
217
  if(value){
199
218
  $(this.querySelectorAll(disableElementsSel)).each(groupControl.disable);
200
- } else if(!$(this).is('fieldset[disabled] *')){
219
+
220
+ } else if(!isDisabledChild(this)){
201
221
  var elements = $(this.querySelectorAll(disableElementsSel));
202
222
 
203
223
  if( this.querySelector('fieldset[disabled]') ){
204
- elements = elements.not('fieldset[disabled] *');
224
+ elements = elements.filter(isEnableChildFilter);
205
225
  }
206
226
 
207
227
  elements.each(groupControl.enable);
@@ -218,7 +238,8 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
218
238
  if(value){
219
239
  webshims.data(this, 'groupedisabled', false);
220
240
  desc.prop._supset.call(this, value);
221
- } else if($(this).is('fieldset[disabled] *')){
241
+
242
+ } else if(isDisabledChild(this)){
222
243
  webshims.data(this, 'groupedisabled', true);
223
244
  desc.prop._supset.call(this, true);
224
245
  } else {
@@ -242,7 +263,7 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
242
263
  webshims.addReady(function(context){
243
264
 
244
265
  $(context)
245
- .filter('fieldset[disabled], fieldset[disabled] *')
266
+ .filter(isDisabledChildFilter)
246
267
  .find(disableElementsSel)
247
268
  .each(groupControl.disable)
248
269
  ;
@@ -254,7 +275,6 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
254
275
  var isForm = {form: 1, FORM: 1};
255
276
  $.prop = function(elem, name, value){
256
277
  var ret;
257
- //TODO: cache + perftest
258
278
  if(elem && elem.nodeType == 1 && value === undefined && isForm[elem.nodeName] && elem.id){
259
279
  ret = document.getElementsByName(name);
260
280
  if(!ret || !ret.length){
@@ -896,7 +916,7 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
896
916
 
897
917
  if(elem.type == 'password' || isOver){
898
918
  data.text = createPlaceholder(elem);
899
- if(isResponsive || $(elem).is('.responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
919
+ if(isResponsive || $(elem).hasClass('responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
900
920
  data.box = data.text;
901
921
  } else {
902
922
  data.box = $('<span class="placeholder-box placeholder-box-'+ (elem.nodeName || '').toLowerCase() +' placeholder-box-'+$.css(elem, 'float')+'" />')
@@ -1569,7 +1589,7 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
1569
1589
  writeable: false,
1570
1590
  get: function(){
1571
1591
  if(this.type != 'file'){return null;}
1572
- if(!$(this).is('.ws-filereader')){
1592
+ if(!$(this).hasClass('ws-filereader')){
1573
1593
  webshim.info("please add the 'ws-filereader' class to your input[type='file'] to implement files-property");
1574
1594
  }
1575
1595
  return webshim.data(this, 'fileList') || [];
@@ -392,7 +392,7 @@ var rsubmittable = /^(?:select|textarea|input)/i;
392
392
  ;
393
393
  return function(){
394
394
  var elem = $(this).getNativeElement()[0];
395
- return !!(!elem.readOnly && !types[elem.type] && !$(elem).is(':disabled') );
395
+ return !!(!elem.readOnly && !types[elem.type] && !$.find.matchesSelector(elem, ':disabled') );
396
396
  };
397
397
  })()
398
398
  },
@@ -1149,7 +1149,6 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1149
1149
  }
1150
1150
 
1151
1151
  var nan = parseInt('NaN', 10),
1152
- doc = document,
1153
1152
  typeModels = webshims.inputTypes,
1154
1153
  isNumber = function(string){
1155
1154
  return (typeof string == 'number' || (string && string == string * 1));
@@ -241,7 +241,6 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
241
241
  }
242
242
 
243
243
  var nan = parseInt('NaN', 10),
244
- doc = document,
245
244
  typeModels = webshims.inputTypes,
246
245
  isNumber = function(string){
247
246
  return (typeof string == 'number' || (string && string == string * 1));
@@ -549,8 +549,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
549
549
  webshims.warn(type +' already implemented for element #'+elem.id);
550
550
  return false;
551
551
  }
552
+
552
553
  data[type] = true;
553
- return true;
554
+ return !$(elem).hasClass('ws-nopolyfill');
554
555
  },
555
556
  extendUNDEFProp: function(obj, props){
556
557
  $.each(props, function(name, prop){
@@ -1239,6 +1240,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1239
1240
  };
1240
1241
  var lazyLoad = function(){
1241
1242
  var toLoad = ['form-validation'];
1243
+
1244
+ $(document).off('.lazyloadvalidation');
1245
+
1242
1246
  if(options.lazyCustomMessages){
1243
1247
  options.customMessages = true;
1244
1248
  toLoad.push('form-message');
@@ -1253,7 +1257,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1253
1257
  toLoad.push('form-validators');
1254
1258
  }
1255
1259
  webshims.reTest(toLoad);
1256
- $(document).off('.lazyloadvalidation');
1257
1260
  };
1258
1261
  /*
1259
1262
  * Selectors for all browsers
@@ -1310,11 +1313,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1310
1313
  };
1311
1314
  $.extend(exp, {
1312
1315
  "enabled": function( elem ) {
1313
- return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
1316
+ return 'disabled' in elem && elem.disabled === false && !$.find.matchesSelector(elem, 'fieldset[disabled] *');
1314
1317
  },
1315
1318
 
1316
1319
  "disabled": function( elem ) {
1317
- return elem.disabled === true || ('disabled' in elem && $(elem).is('fieldset[disabled] *'));
1320
+ return elem.disabled === true || ('disabled' in elem && $.find.matchesSelector(elem, 'fieldset[disabled] *'));
1318
1321
  }
1319
1322
  });
1320
1323
  }
@@ -1493,8 +1496,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1493
1496
  };
1494
1497
 
1495
1498
 
1496
-
1497
- $(document).on('focusin.lazyloadvalidation', function(e){
1499
+ $(document).on('focusin.lazyloadvalidation mousedown.lazyloadvalidation touchstart.lazyloadvalidation', function(e){
1498
1500
  if('form' in e.target){
1499
1501
  lazyLoad();
1500
1502
  }
@@ -1525,6 +1527,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1525
1527
  });
1526
1528
  }
1527
1529
  });
1530
+
1531
+ if(options.addValidators && options.fastValidators){
1532
+ webshims.reTest(['form-validators', 'form-validation']);
1533
+ }
1534
+
1535
+ if(document.readyState == 'complete'){
1536
+ webshims.isReady('WINDOWLOAD', true);
1537
+ }
1528
1538
  });
1529
1539
  ;webshims.register('form-message', function($, webshims, window, document, undefined, options){
1530
1540
  "use strict";
@@ -549,8 +549,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
549
549
  webshims.warn(type +' already implemented for element #'+elem.id);
550
550
  return false;
551
551
  }
552
+
552
553
  data[type] = true;
553
- return true;
554
+ return !$(elem).hasClass('ws-nopolyfill');
554
555
  },
555
556
  extendUNDEFProp: function(obj, props){
556
557
  $.each(props, function(name, prop){
@@ -1239,6 +1240,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1239
1240
  };
1240
1241
  var lazyLoad = function(){
1241
1242
  var toLoad = ['form-validation'];
1243
+
1244
+ $(document).off('.lazyloadvalidation');
1245
+
1242
1246
  if(options.lazyCustomMessages){
1243
1247
  options.customMessages = true;
1244
1248
  toLoad.push('form-message');
@@ -1253,7 +1257,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1253
1257
  toLoad.push('form-validators');
1254
1258
  }
1255
1259
  webshims.reTest(toLoad);
1256
- $(document).off('.lazyloadvalidation');
1257
1260
  };
1258
1261
  /*
1259
1262
  * Selectors for all browsers
@@ -1310,11 +1313,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1310
1313
  };
1311
1314
  $.extend(exp, {
1312
1315
  "enabled": function( elem ) {
1313
- return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
1316
+ return 'disabled' in elem && elem.disabled === false && !$.find.matchesSelector(elem, 'fieldset[disabled] *');
1314
1317
  },
1315
1318
 
1316
1319
  "disabled": function( elem ) {
1317
- return elem.disabled === true || ('disabled' in elem && $(elem).is('fieldset[disabled] *'));
1320
+ return elem.disabled === true || ('disabled' in elem && $.find.matchesSelector(elem, 'fieldset[disabled] *'));
1318
1321
  }
1319
1322
  });
1320
1323
  }
@@ -1493,8 +1496,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1493
1496
  };
1494
1497
 
1495
1498
 
1496
-
1497
- $(document).on('focusin.lazyloadvalidation', function(e){
1499
+ $(document).on('focusin.lazyloadvalidation mousedown.lazyloadvalidation touchstart.lazyloadvalidation', function(e){
1498
1500
  if('form' in e.target){
1499
1501
  lazyLoad();
1500
1502
  }
@@ -1525,6 +1527,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1525
1527
  });
1526
1528
  }
1527
1529
  });
1530
+
1531
+ if(options.addValidators && options.fastValidators){
1532
+ webshims.reTest(['form-validators', 'form-validation']);
1533
+ }
1534
+
1535
+ if(document.readyState == 'complete'){
1536
+ webshims.isReady('WINDOWLOAD', true);
1537
+ }
1528
1538
  });
1529
1539
  ;webshims.register('form-message', function($, webshims, window, document, undefined, options){
1530
1540
  "use strict";
@@ -549,8 +549,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
549
549
  webshims.warn(type +' already implemented for element #'+elem.id);
550
550
  return false;
551
551
  }
552
+
552
553
  data[type] = true;
553
- return true;
554
+ return !$(elem).hasClass('ws-nopolyfill');
554
555
  },
555
556
  extendUNDEFProp: function(obj, props){
556
557
  $.each(props, function(name, prop){
@@ -1239,6 +1240,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1239
1240
  };
1240
1241
  var lazyLoad = function(){
1241
1242
  var toLoad = ['form-validation'];
1243
+
1244
+ $(document).off('.lazyloadvalidation');
1245
+
1242
1246
  if(options.lazyCustomMessages){
1243
1247
  options.customMessages = true;
1244
1248
  toLoad.push('form-message');
@@ -1253,7 +1257,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1253
1257
  toLoad.push('form-validators');
1254
1258
  }
1255
1259
  webshims.reTest(toLoad);
1256
- $(document).off('.lazyloadvalidation');
1257
1260
  };
1258
1261
  /*
1259
1262
  * Selectors for all browsers
@@ -1310,11 +1313,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1310
1313
  };
1311
1314
  $.extend(exp, {
1312
1315
  "enabled": function( elem ) {
1313
- return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
1316
+ return 'disabled' in elem && elem.disabled === false && !$.find.matchesSelector(elem, 'fieldset[disabled] *');
1314
1317
  },
1315
1318
 
1316
1319
  "disabled": function( elem ) {
1317
- return elem.disabled === true || ('disabled' in elem && $(elem).is('fieldset[disabled] *'));
1320
+ return elem.disabled === true || ('disabled' in elem && $.find.matchesSelector(elem, 'fieldset[disabled] *'));
1318
1321
  }
1319
1322
  });
1320
1323
  }
@@ -1493,8 +1496,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1493
1496
  };
1494
1497
 
1495
1498
 
1496
-
1497
- $(document).on('focusin.lazyloadvalidation', function(e){
1499
+ $(document).on('focusin.lazyloadvalidation mousedown.lazyloadvalidation touchstart.lazyloadvalidation', function(e){
1498
1500
  if('form' in e.target){
1499
1501
  lazyLoad();
1500
1502
  }
@@ -1525,6 +1527,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1525
1527
  });
1526
1528
  }
1527
1529
  });
1530
+
1531
+ if(options.addValidators && options.fastValidators){
1532
+ webshims.reTest(['form-validators', 'form-validation']);
1533
+ }
1534
+
1535
+ if(document.readyState == 'complete'){
1536
+ webshims.isReady('WINDOWLOAD', true);
1537
+ }
1528
1538
  });
1529
1539
  ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
1530
1540
  "use strict";