webshims-rails 1.10.6 → 1.10.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +14 -7
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +153 -155
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +168 -136
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +116 -44
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +100 -95
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +100 -95
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +51 -91
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +129 -232
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +228 -326
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +116 -44
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +116 -44
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +210 -214
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +204 -246
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +210 -214
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +59 -28
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +100 -95
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +210 -214
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +51 -91
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +110 -119
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +6 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +126 -156
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +126 -155
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +104 -151
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +73 -96
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +116 -44
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +116 -44
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +226 -250
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +226 -250
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +168 -136
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +51 -91
  35. data/vendor/assets/javascripts/webshims/shims/form-core.js +53 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-message.js +22 -5
  37. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +87 -30
  38. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +2 -76
  39. data/vendor/assets/javascripts/webshims/shims/form-validation.js +2 -2
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +18 -8
  42. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +100 -95
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +59 -28
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +9 -2
  45. data/vendor/assets/javascripts/webshims/shims/range-ui.js +29 -14
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +21 -7
  47. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -15
  48. data/vendor/assets/javascripts/webshims/shims/track-ui.js +6 -0
  49. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjdlMzZkNjM4YTFjNWVmNWZiNmQ1ZWQ4M2YyOGIyYTljMzMwZjU2Mg==
4
+ NWI2OGRjYmRhYTU5ZDRhOWZmM2Y3ODlmNzkwYzA0Y2FmOGQ4NWNjOQ==
5
5
  data.tar.gz: !binary |-
6
- OWIxZDJmNjQ0ZTcyYzY5Mjg0NWQxZjg1NGVkOTY1Yzg0ODM4ZmQwMQ==
6
+ ZTRlODMwMTM0YzNmMzA2YmZlYTIwNDllZWQ2YTgxZWNmYTQ2MjBhMw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MGQ4ZjgyMjJhNjNkNzg2ZDk4ZmRhYTg1YmQ4ZmUzYWYxZTI4YmNmYmVlNzQz
10
- MTgxZjI3MDRiNWJmNjk1NjhjYWRiOWI2YzNjMTg2ZjQ3ODdiNWNlMjNlMmRh
11
- M2IyYzNlZTQ2MWZmZDlmNzc5N2M1NWYwZWJkYzVmMWY4YWFlM2I=
9
+ YWE1M2U1YmE0YTlhNGRhMDdmM2Y0NWY3MDNiNjljM2YwNzk5NzYyYzUwM2Q3
10
+ NGQ4NjE2YzNiZDg2NGIyOTdjMTJlMDFlZDQxYzY1ZDAxZjhkYWM5OGI5ZjIz
11
+ NWQ0ZGY4MDcyMjc2ZGViNjI2NDNkMDE5ODVlYTBiNjlkNzM0ZDc=
12
12
  data.tar.gz: !binary |-
13
- NGRmZGY2ZGI2YTk3ZTY5ZjlhYWExMDU2MzVhMGVkOTlkZTExNTY4MmVhM2Yy
14
- YzVkYmMwMTI4ZjY2MTc1MDBmMDE2ZTg4NzRiNTM4ZDVlYTAzZDMxYzczYzM2
15
- NTFhOTllMjQ4Yjc2MDk4ZDAwMDg4ZjM5ZmFiNmI4Y2NjYjJhMDI=
13
+ YjgyM2U1YzYwMTljNTAxMTE3OGZmNWNjMzg0MjdmYzZjYTMxMTQ2ZjI1NDAx
14
+ NGY1NjQ1ZTY1ZDJjOGQ1ODM4NTEzZWQ4NmE5MTY1NmI4MTY2ZThlNGYxZDRi
15
+ YjM1NjgxNzcxMzkzMmE5MzkyNDBmZWVmMzE3OGVlN2JjMDNlZmU=
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.10.6"
4
- WEBSHIMS_VERSION = "1.10.6"
3
+ VERSION = "1.10.9"
4
+ WEBSHIMS_VERSION = "1.10.9"
5
5
  end
6
6
  end
@@ -30,12 +30,12 @@
30
30
  }
31
31
 
32
32
  var webshims = {
33
- version: '1.10.6',
33
+ version: '1.10.9',
34
34
  cfg: {
35
35
  useImportantStyles: true,
36
36
  //addCacheBuster: false,
37
37
  waitReady: true,
38
- extendNative: true,
38
+ extendNative: 1,
39
39
  loadStyles: true,
40
40
  disableShivMethods: true,
41
41
  wspopover: {appendTo: 'body', hideOnBlur: true},
@@ -513,7 +513,7 @@
513
513
  };
514
514
 
515
515
  loadedSrcs.push(src);
516
- if(window.require){
516
+ if(window.require && window.define && window.define.amd){
517
517
  require([src], complete);
518
518
  } else if (window.sssl) {
519
519
  sssl(src, complete);
@@ -939,6 +939,7 @@
939
939
  //<forms
940
940
  (function(){
941
941
  var formExtend, formOptions, formExtras;
942
+ var fShim = 'form-shim-extend';
942
943
  var modernizrInputAttrs = Modernizr.input;
943
944
  var modernizrInputTypes = Modernizr.inputtypes;
944
945
  var formvalidation = 'formvalidation';
@@ -967,7 +968,7 @@
967
968
  bugs.bustedValidity = bustedValidity = !modernizrInputAttrs.list || window.opera || Modernizr.formattribute === false || !Modernizr.fieldsetdisabled || !('value' in document.createElement('progress')) || !('value' in document.createElement('output')) || !($('<input type="date" value="1488-12-11" />')[0].validity || {valid: true}).valid || !('required' in select) || (select.validity || {}).valid;
968
969
  }
969
970
 
970
- formExtend = Modernizr[formvalidation] && !bustedValidity ? 'form-native-extend' : 'form-shim-extend';
971
+ formExtend = Modernizr[formvalidation] && !bustedValidity ? 'form-native-extend' : fShim;
971
972
 
972
973
  }
973
974
  initialFormTest.run = true;
@@ -1023,7 +1024,7 @@
1023
1024
  c: [6, 5]
1024
1025
  });
1025
1026
 
1026
- addPolyfill('form-shim-extend', {
1027
+ addPolyfill(fShim, {
1027
1028
  f: 'forms',
1028
1029
  test: function(){
1029
1030
  return Modernizr[formvalidation] && !bustedValidity;
@@ -1046,7 +1047,7 @@
1046
1047
  options: formOptions,
1047
1048
  c: [24]
1048
1049
  };
1049
- addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
1050
+ addModule('form-validation', $.extend({d: ['form-message', 'form-core']}, formExtras));
1050
1051
 
1051
1052
  addModule('form-validators', $.extend({}, formExtras));
1052
1053
 
@@ -1069,6 +1070,7 @@
1069
1070
  return false;
1070
1071
  }
1071
1072
  });
1073
+
1072
1074
  return ret;
1073
1075
  },
1074
1076
  methodNames: ['stepUp', 'stepDown'],
@@ -1090,8 +1092,13 @@
1090
1092
  addPolyfill('form-number-date-ui', {
1091
1093
  f: 'forms-ext',
1092
1094
  test: function(){
1095
+ var o = this.options;
1093
1096
  initialFormTest();
1094
- return !this.options.replaceUI && modules[fNuAPI].test();
1097
+ //input widgets on old on old androids can't be trusted
1098
+ if(fShim == formExtend && (/Android/i).test(navigator.userAgent)){
1099
+ o.replaceUI = true;
1100
+ }
1101
+ return !o.replaceUI && modules[fNuAPI].test();
1095
1102
  },
1096
1103
  d: ['forms', DOMSUPPORT, fNuAPI, 'range-ui'],
1097
1104
  options: {
@@ -2412,4 +2412,5 @@ webshims.register('color-picker', function($, webshims, window, document, undefi
2412
2412
  if(options && options._types && $.inArray('color', options._types) == -1){
2413
2413
  webshims.error('[type="color"] used without adding it to the types config.');
2414
2414
  }
2415
+ document.createElement('img').src = webshims.cfg.basePath +'jpicker/images/Maps.png';
2415
2416
  });
@@ -573,12 +573,13 @@ webshims.register('form-core', function($, webshims, window, document, undefined
573
573
  $.expr[":"][name] = $.expr.filters[name+"-element"];
574
574
  });
575
575
 
576
-
577
- $.expr[":"].focus = function( elem ) {
576
+ var pseudoFocus = $.expr[":"].focus;
577
+ $.expr[":"].focus = function(){
578
578
  try {
579
- var doc = elem.ownerDocument;
580
- return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus());
581
- } catch(e){}
579
+ return pseudoFocus.apply(this, arguments);
580
+ } catch(e){
581
+ webshims.error(e);
582
+ }
582
583
  return false;
583
584
  };
584
585
 
@@ -593,7 +594,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
593
594
  });
594
595
  };
595
596
 
596
-
597
+ var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
597
598
  webshims.wsPopover = {
598
599
  id: 0,
599
600
  _create: function(){
@@ -601,7 +602,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
601
602
  this.id = webshims.wsPopover.id++;
602
603
  this.eventns = '.wsoverlay' + this.id;
603
604
  this.timers = {};
604
- this.element = $('<div class="ws-popover" tabindex="-1"><div class="ws-po-outerbox"><div class="ws-po-arrow"><div class="ws-po-arrowbox" /></div><div class="ws-po-box" /></div></div>');
605
+ this.element = $('<div class="ws-popover'+transClass+'" tabindex="-1"><div class="ws-po-outerbox"><div class="ws-po-arrow"><div class="ws-po-arrowbox" /></div><div class="ws-po-box" /></div></div>');
605
606
  this.contentElement = $('.ws-po-box', this.element);
606
607
  this.lastElement = $([]);
607
608
  this.bindElement();
@@ -640,47 +641,6 @@ webshims.register('form-core', function($, webshims, window, document, undefined
640
641
  };
641
642
 
642
643
 
643
- /* extension, but also used to fix native implementation workaround/bugfixes */
644
- (function(){
645
- var firstEvent,
646
- invalids = [],
647
- stopSubmitTimer,
648
- form
649
- ;
650
-
651
- $(document).on('invalid', function(e){
652
- if(e.wrongWebkitInvalid){return;}
653
- var jElm = $(e.target);
654
-
655
-
656
- if(!firstEvent){
657
- //trigger firstinvalid
658
- firstEvent = $.Event('firstinvalid');
659
- firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
660
- var firstSystemInvalid = $.Event('firstinvalidsystem');
661
- $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
662
- jElm.trigger(firstEvent);
663
- }
664
-
665
- //if firstinvalid was prevented all invalids will be also prevented
666
- if( firstEvent && firstEvent.isDefaultPrevented() ){
667
- e.preventDefault();
668
- }
669
- invalids.push(e.target);
670
- e.extraData = 'fix';
671
- clearTimeout(stopSubmitTimer);
672
- stopSubmitTimer = setTimeout(function(){
673
- var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
674
- //reset firstinvalid
675
- firstEvent = false;
676
- invalids = [];
677
- $(e.target).trigger(lastEvent, lastEvent);
678
- }, 9);
679
- jElm = null;
680
- });
681
- })();
682
-
683
-
684
644
  webshims.getContentValidationMessage = function(elem, validity, key){
685
645
  var message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || '';
686
646
  if(key && message[key]){
@@ -714,19 +674,13 @@ webshims.register('form-core', function($, webshims, window, document, undefined
714
674
  };
715
675
 
716
676
 
717
- webshims.ready('forms', function(){
718
- $(document).on('focusin.lazyloadvalidation', function(e){
719
- if('form' in e.target && $(e.target).is(':invalid')){
720
- lazyLoad();
721
- }
722
- });
677
+ $(document).on('focusin.lazyloadvalidation', function(e){
678
+ if('form' in e.target && $(e.target).is(':invalid')){
679
+ lazyLoad();
680
+ }
723
681
  });
724
682
  webshims.ready('WINDOWLOAD', lazyLoad);
725
- if(options.overrideMessages){
726
- options.customMessages = true;
727
- webshims.reTest('form-message');
728
- webshims.error('overrideMessages is deprecated. use customMessages instead.');
729
- }
683
+
730
684
  if(options.replaceValidationUI){
731
685
  webshims.ready('DOM forms', function(){
732
686
  $(document).on('firstinvalid', function(e){
@@ -737,8 +691,47 @@ webshims.register('form-core', function($, webshims, window, document, undefined
737
691
  });
738
692
  });
739
693
  }
740
- });
694
+
695
+ /* extension, but also used to fix native implementation workaround/bugfixes */
696
+ (function(){
697
+ var firstEvent,
698
+ invalids = [],
699
+ stopSubmitTimer,
700
+ form
701
+ ;
702
+
703
+ $(document).on('invalid', function(e){
704
+ if(e.wrongWebkitInvalid){return;}
705
+ var jElm = $(e.target);
706
+
707
+
708
+ if(!firstEvent){
709
+ //trigger firstinvalid
710
+ firstEvent = $.Event('firstinvalid');
711
+ firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
712
+ var firstSystemInvalid = $.Event('firstinvalidsystem');
713
+ $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
714
+ jElm.trigger(firstEvent);
715
+ }
741
716
 
717
+ //if firstinvalid was prevented all invalids will be also prevented
718
+ if( firstEvent && firstEvent.isDefaultPrevented() ){
719
+ e.preventDefault();
720
+ }
721
+ invalids.push(e.target);
722
+ e.extraData = 'fix';
723
+ clearTimeout(stopSubmitTimer);
724
+ stopSubmitTimer = setTimeout(function(){
725
+ var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
726
+ //reset firstinvalid
727
+ firstEvent = false;
728
+ invalids = [];
729
+ $(e.target).trigger(lastEvent, lastEvent);
730
+ }, 9);
731
+ jElm = null;
732
+ });
733
+ })();
734
+ });
742
735
 
743
736
  (function($, Modernizr, webshims){
744
737
  "use strict";
@@ -774,52 +767,55 @@ webshims.register('form-core', function($, webshims, window, document, undefined
774
767
  });
775
768
  webshims.loader.loadList(['mediaelement-native-fix']);
776
769
  }
777
- }
778
-
779
- if(hasNative && !options.preferFlash){
780
- var noSwitch = {
781
- 1: 1,
782
- 2: 1
783
- };
784
- var switchOptions = function(e){
785
- var media;
786
- var parent;
787
- if(!options.preferFlash &&
770
+
771
+ if(!options.preferFlash){
772
+ var noSwitch = {
773
+ 1: 1,
774
+ 2: 1
775
+ };
776
+ var switchOptions = function(e){
777
+ var media, error, parent;
778
+ if(!options.preferFlash &&
788
779
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
789
- (media = $(e.target).closest('audio, video')) && !noSwitch[media.prop('error')]
780
+ (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
790
781
  ){
791
- $(function(){
792
- if(hasSwf && !options.preferFlash){
793
- loadSwf();
794
- webshims.ready('WINDOWLOAD '+swfType, function(){
795
- setTimeout(function(){
796
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
797
- options.preferFlash = true;
798
- document.removeEventListener('error', switchOptions, true);
799
- $('audio, video').each(function(){
800
- webshims.mediaelement.selectSource(this);
801
- });
802
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
803
- }
804
- }, 9);
805
- });
806
- } else{
807
- document.removeEventListener('error', switchOptions, true);
782
+ if(error == null){
783
+ webshims.warn("There was an unspecified error on a mediaelement");
784
+ return;
785
+
808
786
  }
809
- });
810
- }
811
- };
812
- document.addEventListener('error', switchOptions, true);
813
- $('audio, video').each(function(){
814
- var error = $.prop(this, 'error');
815
- if(error && !noSwitch[error]){
816
- switchOptions({target: this});
817
- return false;
818
- }
819
- });
787
+ $(function(){
788
+ if(hasSwf && !options.preferFlash){
789
+ loadSwf();
790
+ webshims.ready('WINDOWLOAD '+swfType, function(){
791
+ setTimeout(function(){
792
+ if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
793
+ options.preferFlash = true;
794
+ document.removeEventListener('error', switchOptions, true);
795
+ $('audio, video').each(function(){
796
+ webshims.mediaelement.selectSource(this);
797
+ });
798
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
799
+ }
800
+ }, 9);
801
+ });
802
+ } else{
803
+ document.removeEventListener('error', switchOptions, true);
804
+ }
805
+ });
806
+ }
807
+ };
808
+ document.addEventListener('error', switchOptions, true);
809
+ $('audio, video').each(function(){
810
+ var error = $.prop(this, 'error');
811
+ if(error && !noSwitch[error]){
812
+ switchOptions({target: this});
813
+ return false;
814
+ }
815
+ });
816
+ }
820
817
  }
821
818
 
822
-
823
819
  if(Modernizr.track && !bugs.track){
824
820
  (function(){
825
821
 
@@ -1200,63 +1196,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1200
1196
 
1201
1197
  });
1202
1198
 
1203
- webshims.ready('dom-support', function(){
1204
- if(!supportsLoop){
1205
- webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
1206
- }
1207
-
1208
- ['audio', 'video'].forEach(function(nodeName){
1209
- var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
1210
- prop: {
1211
- value: function(){
1212
- var data = webshims.data(this, 'mediaelement');
1213
- selectSource(this, data);
1214
- if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1215
- supLoad.prop._supvalue.apply(this, arguments);
1216
- }
1217
- }
1218
- }
1219
- });
1220
- nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
1221
- prop: {
1222
- value: function(type){
1223
- var ret = '';
1224
- if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
1225
- ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
1226
- if(ret == 'no'){
1227
- ret = '';
1228
- }
1229
- }
1230
- if(!ret && hasSwf){
1231
- type = $.trim((type || '').split(';')[0]);
1232
- if(mediaelement.swfMimeTypes.indexOf(type) != -1){
1233
- ret = 'maybe';
1234
- }
1235
- }
1236
- return ret;
1237
- }
1238
- }
1239
- });
1240
- });
1241
- webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1242
- set: function(){
1243
- var elem = this;
1244
- var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1245
- clearTimeout(baseData.loadTimer);
1246
- baseData.loadTimer = setTimeout(function(){
1247
- selectSource(elem);
1248
- elem = null;
1249
- }, 9);
1250
- }
1251
- });
1252
- });
1253
-
1199
+ var handleMedia = false;
1254
1200
  var initMediaElements = function(){
1255
1201
  var testFixMedia = function(){
1256
1202
  if(webshims.implement(this, 'mediaelement')){
1257
1203
  selectSource(this);
1258
1204
 
1259
- if(hasNative){
1205
+ //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
1206
+ if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
1260
1207
  var bufferTimer;
1261
1208
  var lastBuffered;
1262
1209
  var elem = this;
@@ -1285,7 +1232,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1285
1232
  lastBuffered = getBufferedString();
1286
1233
  }
1287
1234
  clearTimeout(bufferTimer);
1288
- bufferTimer = setTimeout(testBuffer, 999);
1235
+ bufferTimer = setTimeout(testBuffer, 400);
1289
1236
  },
1290
1237
  'emptied stalled mediaerror abort suspend': function(e){
1291
1238
  if(e.type == 'emptied'){
@@ -1302,11 +1249,62 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1302
1249
  }
1303
1250
 
1304
1251
  };
1305
- var handleMedia = false;
1252
+
1306
1253
 
1307
1254
 
1308
1255
  webshims.ready('dom-support', function(){
1309
1256
  handleMedia = true;
1257
+
1258
+ if(!supportsLoop){
1259
+ webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
1260
+ }
1261
+
1262
+ ['audio', 'video'].forEach(function(nodeName){
1263
+ var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
1264
+ prop: {
1265
+ value: function(){
1266
+ var data = webshims.data(this, 'mediaelement');
1267
+ selectSource(this, data);
1268
+ if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1269
+ supLoad.prop._supvalue.apply(this, arguments);
1270
+ }
1271
+ }
1272
+ }
1273
+ });
1274
+ nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
1275
+ prop: {
1276
+ value: function(type){
1277
+ var ret = '';
1278
+ if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
1279
+ ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
1280
+ if(ret == 'no'){
1281
+ ret = '';
1282
+ }
1283
+ }
1284
+ if(!ret && hasSwf){
1285
+ type = $.trim((type || '').split(';')[0]);
1286
+ if(mediaelement.swfMimeTypes.indexOf(type) != -1){
1287
+ ret = 'maybe';
1288
+ }
1289
+ }
1290
+ return ret;
1291
+ }
1292
+ }
1293
+ });
1294
+ });
1295
+ webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1296
+ set: function(){
1297
+ var elem = this;
1298
+ var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1299
+ clearTimeout(baseData.loadTimer);
1300
+ baseData.loadTimer = setTimeout(function(){
1301
+ selectSource(elem);
1302
+ elem = null;
1303
+ }, 9);
1304
+ }
1305
+ });
1306
+
1307
+
1310
1308
  webshims.addReady(function(context, insertedElement){
1311
1309
  var media = $('video, audio', context)
1312
1310
  .add(insertedElement.filter('video, audio'))