webshims-rails 1.11.2 → 1.11.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +6 -14
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +3 -4
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +20 -8
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +43 -2
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +3 -0
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +12 -4
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +12 -4
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +40 -2
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +48 -6
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +60 -10
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +3 -0
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +3 -0
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +115 -17
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +60 -10
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +115 -17
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +63 -11
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +12 -4
  19. data/vendor/assets/javascripts/webshims/shims/combos/24.js +3 -5
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +115 -17
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +40 -2
  22. data/vendor/assets/javascripts/webshims/shims/combos/3.js +48 -6
  23. data/vendor/assets/javascripts/webshims/shims/combos/30.js +48 -6
  24. data/vendor/assets/javascripts/webshims/shims/combos/31.js +48 -6
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +40 -2
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +3 -0
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +3 -0
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +60 -10
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +60 -10
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +43 -2
  31. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +40 -2
  32. data/vendor/assets/javascripts/webshims/shims/form-core.js +8 -4
  33. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +3 -0
  34. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +3 -5
  35. data/vendor/assets/javascripts/webshims/shims/form-validation.js +137 -0
  36. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -4
  37. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +63 -11
  38. metadata +6 -6
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NjVkNmUzNDI2Nzc2YzQ2YzEyZmU2OGU4YzNkMDhkODVkYjRiZDgzZQ==
5
- data.tar.gz: !binary |-
6
- NWRiNWEzN2FlYTVlOWFmNGEwNzI3NzNkMTk3MWYyMzZkZGMxNDJmNQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ODdjNWY5MWQ2ZGI3NmQ5OTZjYzUzZGQ0ZmMwMzE3ZjE2MmU4MWYwN2E0OGM4
10
- ZDllYWE5YWI5ZTNmYzY1YzI4ZjBkZDFmMjI0ZWE5MjU2NGNhY2Q2MTI0YTYx
11
- MzU0MTlhZWE1YTM3NmI4M2UwOTgwOTAyOTg1OGQwMDFhNzg2MjU=
12
- data.tar.gz: !binary |-
13
- YmExN2NjMmFjNTFlNzVkMDgxMWJhNGZmZjg0ZTNiY2QxYjA1ZTJhY2M3NjQx
14
- MjIyODI4YTEyMzM3M2QxYjJiZjJkNGE5MDkwZDFhMWFhY2QyMDNhYzQ1ODdm
15
- MTVlZGQ1MTc1OTMxODdlYWJlZGVkYzU5MWFhZDg2ZmUxZDgzYTA=
2
+ SHA1:
3
+ metadata.gz: bd71d4a931e677f0ccdfbe32415634a08db05ace
4
+ data.tar.gz: 1eac083125384b526e9d8624f53a3504b489cbdd
5
+ SHA512:
6
+ metadata.gz: abef891b0184f6acdf4ae7d31e60d1a709c5bef44e0b74ed23334adc9f173d70ef2ea26fe9d86d29d2f3c09e107e4868902e538df661649e7086a97b9cdfbaa2
7
+ data.tar.gz: c06603fb300e0f60ea8a147dfbe28887819eafb68f74848f25956b85c397057f94faef9b664bd13717dc9547f5bee760cb510cf9ff997e9bf0795c66195c65a2
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.11.2"
4
- WEBSHIMS_VERSION = "1.11.2"
3
+ VERSION = "1.11.3"
4
+ WEBSHIMS_VERSION = "1.11.3"
5
5
  end
6
6
  end
@@ -27,7 +27,7 @@
27
27
 
28
28
 
29
29
  var webshims = {
30
- version: '1.11.2',
30
+ version: '1.11.3',
31
31
  cfg: {
32
32
 
33
33
  //addCacheBuster: false,
@@ -1010,7 +1010,7 @@
1010
1010
  // ,fieldWrapper: undefined
1011
1011
  // ,fx: 'slide'
1012
1012
  },
1013
- availableLangs: ['ar', 'ch-ZN', 'el', 'es', 'fr', 'he', 'hi', 'hu', 'it', 'ja', 'lt', 'nl', 'pl', 'pt-PT', 'ru', 'sv'] //en and de are directly implemented in core
1013
+ availableLangs: ['ar', 'ch-ZN', 'cs', 'el', 'es', 'fr', 'he', 'hi', 'hu', 'it', 'ja', 'lt', 'nl', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sv'] //en and de are directly implemented in core
1014
1014
  // ,customMessages: false,
1015
1015
  // overridePlaceholder: false, // might be good for IE10
1016
1016
  // replaceValidationUI: false
@@ -1176,7 +1176,6 @@
1176
1176
  noAutoCallback: true,
1177
1177
  options: {
1178
1178
  preferFlash: false,
1179
- player: 'jaris',
1180
1179
  vars: {},
1181
1180
  params: {},
1182
1181
  attrs: {},
@@ -1191,7 +1190,7 @@
1191
1190
 
1192
1191
  addPolyfill('mediaelement-jaris', {
1193
1192
  f: 'mediaelement',
1194
- d: ['swfmini', DOMSUPPORT],
1193
+ d: ['mediaelement-core', 'swfmini', DOMSUPPORT],
1195
1194
  test: function(){
1196
1195
  if(!Modernizr.audio || !Modernizr.video || webshims.mediaelement.loadSwf){
1197
1196
  return false;
@@ -498,17 +498,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
498
498
  /*
499
499
  * Selectors for all browsers
500
500
  */
501
+ var rElementsGroup = /^(?:form|fieldset)$/i;
501
502
  var hasInvalid = function(elem){
502
503
  var ret = false;
503
504
  $(elem).jProp('elements').each(function(){
504
- ret = $(this).is(':invalid');
505
- if(ret){
506
- return false;
505
+ if(!rElementsGroup.test(elem.nodeName || '')){
506
+ ret = $(this).is(':invalid');
507
+ if(ret){
508
+ return false;
509
+ }
507
510
  }
511
+
508
512
  });
509
513
  return ret;
510
514
  };
511
- var rElementsGroup = /^(?:form)$/i;///^(?:form|fieldset)$/i
515
+
512
516
  $.extend($.expr[":"], {
513
517
  "valid-element": function(elem){
514
518
  return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
@@ -801,7 +805,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
801
805
  src.server = tmp;
802
806
  }
803
807
 
804
- tmp = elem.attr('type');
808
+ tmp = elem.attr('type') || elem.attr('data-type');
805
809
  if(tmp){
806
810
  src.type = tmp;
807
811
  src.container = $.trim(tmp.split(';')[0]);
@@ -825,6 +829,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
825
829
  }
826
830
  }
827
831
  }
832
+
833
+ if(!src.container){
834
+ $(elem).attr('data-wsrecheckmimetype', '');
835
+ }
836
+
828
837
  tmp = elem.attr('media');
829
838
  if(tmp){
830
839
  src.media = tmp;
@@ -1058,15 +1067,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1058
1067
 
1059
1068
  var handleThird = (function(){
1060
1069
  var requested;
1070
+ var readyType = hasSwf ? swfType : 'mediaelement-yt';
1061
1071
  return function( mediaElem, ret, data ){
1072
+ //readd to ready
1062
1073
 
1063
- webshims.ready(hasSwf ? swfType : 'mediaelement-yt', function(){
1064
- if(mediaelement.createSWF){
1074
+
1075
+ webshims.ready(readyType, function(){
1076
+ if(mediaelement.createSWF && $(mediaElem).parent()[0]){
1065
1077
  mediaelement.createSWF( mediaElem, ret, data );
1066
1078
  } else if(!requested) {
1067
1079
  requested = true;
1068
1080
  loadThird();
1069
- //readd to ready
1081
+
1070
1082
  handleThird( mediaElem, ret, data );
1071
1083
  }
1072
1084
  });
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3
3
  "use strict";
4
4
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
5
5
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
6
+ var has = Object.prototype.hasOwnProperty;
6
7
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
8
 
8
9
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
75
76
  //proxying attribute
76
77
  var olds = {};
77
78
  var havePolyfill = {};
79
+ var hasPolyfillMethod = {};
78
80
  var extendedProps = {};
79
81
  var extendQ = {};
80
82
  var modifyProps = {};
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
180
182
  };
181
183
  });
182
184
 
185
+ //add support for $('video').trigger('play') in case extendNative is set to false
186
+ if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
187
+ (function(oldTrigger){
188
+ $.event.trigger = function(event, data, elem, onlyHandlers){
189
+
190
+ if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
191
+ return oldTrigger.apply(this, arguments);
192
+ }
193
+ var ret, isOrig, origName;
194
+ var origFn = elem[event];
195
+ var polyfilledFn = $.prop(elem, event);
196
+ var changeFn = polyfilledFn && origFn != polyfilledFn;
197
+ if(changeFn){
198
+ origName = '__ws'+event;
199
+ isOrig = (event in elem) && has.call(elem, event);
200
+ elem[event] = polyfilledFn;
201
+ elem[origName] = origFn;
202
+ }
203
+
204
+ ret = oldTrigger.apply(this, arguments);
205
+ if (changeFn) {
206
+ if(isOrig){
207
+ elem[event] = origFn;
208
+ } else {
209
+ delete elem[event];
210
+ }
211
+ delete elem[origName];
212
+ }
213
+
214
+ return ret;
215
+ };
216
+ })($.event.trigger);
217
+ }
183
218
 
184
219
  ['removeAttr', 'prop', 'attr'].forEach(function(type){
185
220
  olds[type] = $[type];
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
264
299
  }
265
300
  var oldDesc = extendedProps[nodeName][prop][type];
266
301
  var getSup = function(propType, descriptor, oDesc){
302
+ var origProp;
267
303
  if(descriptor && descriptor[propType]){
268
304
  return descriptor[propType];
269
305
  }
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
280
316
  };
281
317
  }
282
318
  if(type == 'prop' && propType == 'value' && desc.value.apply){
319
+ origProp = '__ws'+prop;
320
+ hasPolyfillMethod[prop] = true;
283
321
  return function(value){
284
- var sup = olds[type](this, prop);
322
+ var sup = this[origProp] || olds[type](this, prop);
285
323
  if(sup && sup.apply){
286
324
  sup = sup.apply(this, arguments);
287
325
  }
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
319
357
 
320
358
  var extendNativeValue = (function(){
321
359
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
322
- var has = Object.prototype.hasOwnProperty;
360
+
323
361
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
324
362
  var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
325
363
  return function(nodeName, prop, desc){
@@ -1924,6 +1962,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1924
1962
  if(!langCfg['datetime-local']){
1925
1963
  langCfg['datetime-local'] = {};
1926
1964
  }
1965
+ if(!langCfg.time){
1966
+ langCfg.time = {};
1967
+ }
1927
1968
  if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
1928
1969
  langCfg['datetime-local'].currentText = langCfg.time.currentText;
1929
1970
  }
@@ -823,6 +823,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
823
823
  if(!langCfg['datetime-local']){
824
824
  langCfg['datetime-local'] = {};
825
825
  }
826
+ if(!langCfg.time){
827
+ langCfg.time = {};
828
+ }
826
829
  if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
827
830
  langCfg['datetime-local'].currentText = langCfg.time.currentText;
828
831
  }
@@ -588,7 +588,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
588
588
  src.server = tmp;
589
589
  }
590
590
 
591
- tmp = elem.attr('type');
591
+ tmp = elem.attr('type') || elem.attr('data-type');
592
592
  if(tmp){
593
593
  src.type = tmp;
594
594
  src.container = $.trim(tmp.split(';')[0]);
@@ -612,6 +612,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
612
612
  }
613
613
  }
614
614
  }
615
+
616
+ if(!src.container){
617
+ $(elem).attr('data-wsrecheckmimetype', '');
618
+ }
619
+
615
620
  tmp = elem.attr('media');
616
621
  if(tmp){
617
622
  src.media = tmp;
@@ -845,15 +850,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
845
850
 
846
851
  var handleThird = (function(){
847
852
  var requested;
853
+ var readyType = hasSwf ? swfType : 'mediaelement-yt';
848
854
  return function( mediaElem, ret, data ){
855
+ //readd to ready
849
856
 
850
- webshims.ready(hasSwf ? swfType : 'mediaelement-yt', function(){
851
- if(mediaelement.createSWF){
857
+
858
+ webshims.ready(readyType, function(){
859
+ if(mediaelement.createSWF && $(mediaElem).parent()[0]){
852
860
  mediaelement.createSWF( mediaElem, ret, data );
853
861
  } else if(!requested) {
854
862
  requested = true;
855
863
  loadThird();
856
- //readd to ready
864
+
857
865
  handleThird( mediaElem, ret, data );
858
866
  }
859
867
  });
@@ -136,7 +136,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
136
136
  src.server = tmp;
137
137
  }
138
138
 
139
- tmp = elem.attr('type');
139
+ tmp = elem.attr('type') || elem.attr('data-type');
140
140
  if(tmp){
141
141
  src.type = tmp;
142
142
  src.container = $.trim(tmp.split(';')[0]);
@@ -160,6 +160,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
160
160
  }
161
161
  }
162
162
  }
163
+
164
+ if(!src.container){
165
+ $(elem).attr('data-wsrecheckmimetype', '');
166
+ }
167
+
163
168
  tmp = elem.attr('media');
164
169
  if(tmp){
165
170
  src.media = tmp;
@@ -393,15 +398,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
393
398
 
394
399
  var handleThird = (function(){
395
400
  var requested;
401
+ var readyType = hasSwf ? swfType : 'mediaelement-yt';
396
402
  return function( mediaElem, ret, data ){
403
+ //readd to ready
397
404
 
398
- webshims.ready(hasSwf ? swfType : 'mediaelement-yt', function(){
399
- if(mediaelement.createSWF){
405
+
406
+ webshims.ready(readyType, function(){
407
+ if(mediaelement.createSWF && $(mediaElem).parent()[0]){
400
408
  mediaelement.createSWF( mediaElem, ret, data );
401
409
  } else if(!requested) {
402
410
  requested = true;
403
411
  loadThird();
404
- //readd to ready
412
+
405
413
  handleThird( mediaElem, ret, data );
406
414
  }
407
415
  });
@@ -806,6 +806,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
806
806
  "use strict";
807
807
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
808
808
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
809
+ var has = Object.prototype.hasOwnProperty;
809
810
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
810
811
 
811
812
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
@@ -878,6 +879,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
878
879
  //proxying attribute
879
880
  var olds = {};
880
881
  var havePolyfill = {};
882
+ var hasPolyfillMethod = {};
881
883
  var extendedProps = {};
882
884
  var extendQ = {};
883
885
  var modifyProps = {};
@@ -983,6 +985,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
983
985
  };
984
986
  });
985
987
 
988
+ //add support for $('video').trigger('play') in case extendNative is set to false
989
+ if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
990
+ (function(oldTrigger){
991
+ $.event.trigger = function(event, data, elem, onlyHandlers){
992
+
993
+ if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
994
+ return oldTrigger.apply(this, arguments);
995
+ }
996
+ var ret, isOrig, origName;
997
+ var origFn = elem[event];
998
+ var polyfilledFn = $.prop(elem, event);
999
+ var changeFn = polyfilledFn && origFn != polyfilledFn;
1000
+ if(changeFn){
1001
+ origName = '__ws'+event;
1002
+ isOrig = (event in elem) && has.call(elem, event);
1003
+ elem[event] = polyfilledFn;
1004
+ elem[origName] = origFn;
1005
+ }
1006
+
1007
+ ret = oldTrigger.apply(this, arguments);
1008
+ if (changeFn) {
1009
+ if(isOrig){
1010
+ elem[event] = origFn;
1011
+ } else {
1012
+ delete elem[event];
1013
+ }
1014
+ delete elem[origName];
1015
+ }
1016
+
1017
+ return ret;
1018
+ };
1019
+ })($.event.trigger);
1020
+ }
986
1021
 
987
1022
  ['removeAttr', 'prop', 'attr'].forEach(function(type){
988
1023
  olds[type] = $[type];
@@ -1067,6 +1102,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1067
1102
  }
1068
1103
  var oldDesc = extendedProps[nodeName][prop][type];
1069
1104
  var getSup = function(propType, descriptor, oDesc){
1105
+ var origProp;
1070
1106
  if(descriptor && descriptor[propType]){
1071
1107
  return descriptor[propType];
1072
1108
  }
@@ -1083,8 +1119,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1083
1119
  };
1084
1120
  }
1085
1121
  if(type == 'prop' && propType == 'value' && desc.value.apply){
1122
+ origProp = '__ws'+prop;
1123
+ hasPolyfillMethod[prop] = true;
1086
1124
  return function(value){
1087
- var sup = olds[type](this, prop);
1125
+ var sup = this[origProp] || olds[type](this, prop);
1088
1126
  if(sup && sup.apply){
1089
1127
  sup = sup.apply(this, arguments);
1090
1128
  }
@@ -1122,7 +1160,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1122
1160
 
1123
1161
  var extendNativeValue = (function(){
1124
1162
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
1125
- var has = Object.prototype.hasOwnProperty;
1163
+
1126
1164
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
1127
1165
  var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
1128
1166
  return function(nodeName, prop, desc){
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3
3
  "use strict";
4
4
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
5
5
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
6
+ var has = Object.prototype.hasOwnProperty;
6
7
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
8
 
8
9
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
75
76
  //proxying attribute
76
77
  var olds = {};
77
78
  var havePolyfill = {};
79
+ var hasPolyfillMethod = {};
78
80
  var extendedProps = {};
79
81
  var extendQ = {};
80
82
  var modifyProps = {};
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
180
182
  };
181
183
  });
182
184
 
185
+ //add support for $('video').trigger('play') in case extendNative is set to false
186
+ if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
187
+ (function(oldTrigger){
188
+ $.event.trigger = function(event, data, elem, onlyHandlers){
189
+
190
+ if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
191
+ return oldTrigger.apply(this, arguments);
192
+ }
193
+ var ret, isOrig, origName;
194
+ var origFn = elem[event];
195
+ var polyfilledFn = $.prop(elem, event);
196
+ var changeFn = polyfilledFn && origFn != polyfilledFn;
197
+ if(changeFn){
198
+ origName = '__ws'+event;
199
+ isOrig = (event in elem) && has.call(elem, event);
200
+ elem[event] = polyfilledFn;
201
+ elem[origName] = origFn;
202
+ }
203
+
204
+ ret = oldTrigger.apply(this, arguments);
205
+ if (changeFn) {
206
+ if(isOrig){
207
+ elem[event] = origFn;
208
+ } else {
209
+ delete elem[event];
210
+ }
211
+ delete elem[origName];
212
+ }
213
+
214
+ return ret;
215
+ };
216
+ })($.event.trigger);
217
+ }
183
218
 
184
219
  ['removeAttr', 'prop', 'attr'].forEach(function(type){
185
220
  olds[type] = $[type];
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
264
299
  }
265
300
  var oldDesc = extendedProps[nodeName][prop][type];
266
301
  var getSup = function(propType, descriptor, oDesc){
302
+ var origProp;
267
303
  if(descriptor && descriptor[propType]){
268
304
  return descriptor[propType];
269
305
  }
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
280
316
  };
281
317
  }
282
318
  if(type == 'prop' && propType == 'value' && desc.value.apply){
319
+ origProp = '__ws'+prop;
320
+ hasPolyfillMethod[prop] = true;
283
321
  return function(value){
284
- var sup = olds[type](this, prop);
322
+ var sup = this[origProp] || olds[type](this, prop);
285
323
  if(sup && sup.apply){
286
324
  sup = sup.apply(this, arguments);
287
325
  }
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
319
357
 
320
358
  var extendNativeValue = (function(){
321
359
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
322
- var has = Object.prototype.hasOwnProperty;
360
+
323
361
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
324
362
  var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
325
363
  return function(nodeName, prop, desc){
@@ -1147,17 +1185,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1147
1185
  /*
1148
1186
  * Selectors for all browsers
1149
1187
  */
1188
+ var rElementsGroup = /^(?:form|fieldset)$/i;
1150
1189
  var hasInvalid = function(elem){
1151
1190
  var ret = false;
1152
1191
  $(elem).jProp('elements').each(function(){
1153
- ret = $(this).is(':invalid');
1154
- if(ret){
1155
- return false;
1192
+ if(!rElementsGroup.test(elem.nodeName || '')){
1193
+ ret = $(this).is(':invalid');
1194
+ if(ret){
1195
+ return false;
1196
+ }
1156
1197
  }
1198
+
1157
1199
  });
1158
1200
  return ret;
1159
1201
  };
1160
- var rElementsGroup = /^(?:form)$/i;///^(?:form|fieldset)$/i
1202
+
1161
1203
  $.extend($.expr[":"], {
1162
1204
  "valid-element": function(elem){
1163
1205
  return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
@@ -455,6 +455,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
455
455
  "use strict";
456
456
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
457
457
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
458
+ var has = Object.prototype.hasOwnProperty;
458
459
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
459
460
 
460
461
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
@@ -527,6 +528,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
527
528
  //proxying attribute
528
529
  var olds = {};
529
530
  var havePolyfill = {};
531
+ var hasPolyfillMethod = {};
530
532
  var extendedProps = {};
531
533
  var extendQ = {};
532
534
  var modifyProps = {};
@@ -632,6 +634,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
632
634
  };
633
635
  });
634
636
 
637
+ //add support for $('video').trigger('play') in case extendNative is set to false
638
+ if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
639
+ (function(oldTrigger){
640
+ $.event.trigger = function(event, data, elem, onlyHandlers){
641
+
642
+ if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
643
+ return oldTrigger.apply(this, arguments);
644
+ }
645
+ var ret, isOrig, origName;
646
+ var origFn = elem[event];
647
+ var polyfilledFn = $.prop(elem, event);
648
+ var changeFn = polyfilledFn && origFn != polyfilledFn;
649
+ if(changeFn){
650
+ origName = '__ws'+event;
651
+ isOrig = (event in elem) && has.call(elem, event);
652
+ elem[event] = polyfilledFn;
653
+ elem[origName] = origFn;
654
+ }
655
+
656
+ ret = oldTrigger.apply(this, arguments);
657
+ if (changeFn) {
658
+ if(isOrig){
659
+ elem[event] = origFn;
660
+ } else {
661
+ delete elem[event];
662
+ }
663
+ delete elem[origName];
664
+ }
665
+
666
+ return ret;
667
+ };
668
+ })($.event.trigger);
669
+ }
635
670
 
636
671
  ['removeAttr', 'prop', 'attr'].forEach(function(type){
637
672
  olds[type] = $[type];
@@ -716,6 +751,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
716
751
  }
717
752
  var oldDesc = extendedProps[nodeName][prop][type];
718
753
  var getSup = function(propType, descriptor, oDesc){
754
+ var origProp;
719
755
  if(descriptor && descriptor[propType]){
720
756
  return descriptor[propType];
721
757
  }
@@ -732,8 +768,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
732
768
  };
733
769
  }
734
770
  if(type == 'prop' && propType == 'value' && desc.value.apply){
771
+ origProp = '__ws'+prop;
772
+ hasPolyfillMethod[prop] = true;
735
773
  return function(value){
736
- var sup = olds[type](this, prop);
774
+ var sup = this[origProp] || olds[type](this, prop);
737
775
  if(sup && sup.apply){
738
776
  sup = sup.apply(this, arguments);
739
777
  }
@@ -771,7 +809,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
771
809
 
772
810
  var extendNativeValue = (function(){
773
811
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
774
- var has = Object.prototype.hasOwnProperty;
812
+
775
813
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
776
814
  var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
777
815
  return function(nodeName, prop, desc){
@@ -1599,17 +1637,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1599
1637
  /*
1600
1638
  * Selectors for all browsers
1601
1639
  */
1640
+ var rElementsGroup = /^(?:form|fieldset)$/i;
1602
1641
  var hasInvalid = function(elem){
1603
1642
  var ret = false;
1604
1643
  $(elem).jProp('elements').each(function(){
1605
- ret = $(this).is(':invalid');
1606
- if(ret){
1607
- return false;
1644
+ if(!rElementsGroup.test(elem.nodeName || '')){
1645
+ ret = $(this).is(':invalid');
1646
+ if(ret){
1647
+ return false;
1648
+ }
1608
1649
  }
1650
+
1609
1651
  });
1610
1652
  return ret;
1611
1653
  };
1612
- var rElementsGroup = /^(?:form)$/i;///^(?:form|fieldset)$/i
1654
+
1613
1655
  $.extend($.expr[":"], {
1614
1656
  "valid-element": function(elem){
1615
1657
  return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
@@ -3170,7 +3212,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3170
3212
  src.server = tmp;
3171
3213
  }
3172
3214
 
3173
- tmp = elem.attr('type');
3215
+ tmp = elem.attr('type') || elem.attr('data-type');
3174
3216
  if(tmp){
3175
3217
  src.type = tmp;
3176
3218
  src.container = $.trim(tmp.split(';')[0]);
@@ -3194,6 +3236,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3194
3236
  }
3195
3237
  }
3196
3238
  }
3239
+
3240
+ if(!src.container){
3241
+ $(elem).attr('data-wsrecheckmimetype', '');
3242
+ }
3243
+
3197
3244
  tmp = elem.attr('media');
3198
3245
  if(tmp){
3199
3246
  src.media = tmp;
@@ -3427,15 +3474,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3427
3474
 
3428
3475
  var handleThird = (function(){
3429
3476
  var requested;
3477
+ var readyType = hasSwf ? swfType : 'mediaelement-yt';
3430
3478
  return function( mediaElem, ret, data ){
3479
+ //readd to ready
3431
3480
 
3432
- webshims.ready(hasSwf ? swfType : 'mediaelement-yt', function(){
3433
- if(mediaelement.createSWF){
3481
+
3482
+ webshims.ready(readyType, function(){
3483
+ if(mediaelement.createSWF && $(mediaElem).parent()[0]){
3434
3484
  mediaelement.createSWF( mediaElem, ret, data );
3435
3485
  } else if(!requested) {
3436
3486
  requested = true;
3437
3487
  loadThird();
3438
- //readd to ready
3488
+
3439
3489
  handleThird( mediaElem, ret, data );
3440
3490
  }
3441
3491
  });