webshims-rails 1.10.11 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/readme.textile +14 -1
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +2 -1
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +12 -63
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +17 -7
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +17 -3
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +11 -12
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +11 -12
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -4
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +10 -59
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -71
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +17 -3
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +17 -3
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +58 -19
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +12 -67
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +58 -19
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +47 -3
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +11 -12
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +324 -79
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +63 -21
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +5 -6
  23. data/vendor/assets/javascripts/webshims/shims/combos/27.js +5 -2
  24. data/vendor/assets/javascripts/webshims/shims/combos/28.js +47 -7
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +1 -55
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +1 -55
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +1 -55
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +0 -4
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +17 -3
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +17 -3
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +12 -67
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +12 -67
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +17 -7
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +0 -4
  35. data/vendor/assets/javascripts/webshims/shims/filereader.js +5 -2
  36. data/vendor/assets/javascripts/webshims/shims/form-core.js +1 -51
  37. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +24 -15
  38. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +6 -2
  39. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -4
  40. data/vendor/assets/javascripts/webshims/shims/form-validation.js +135 -24
  41. data/vendor/assets/javascripts/webshims/shims/form-validators.js +189 -55
  42. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +4 -1
  43. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +3 -1
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +11 -12
  45. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +47 -3
  46. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +28 -8
  47. data/vendor/assets/javascripts/webshims/shims/mediagroup.js +29 -0
  48. data/vendor/assets/javascripts/webshims/shims/range-ui.js +11 -1
  49. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +17 -4
  50. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +17 -6
  51. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  52. metadata +3 -3
  53. data/vendor/assets/javascripts/webshims/shims/swf/jwwebshims.swf +0 -0
@@ -465,10 +465,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
465
465
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
466
466
  }
467
467
 
468
- if(webshims.cfg.extendNative === undefined){
469
- webshims.warn("extendNative configuration was set to false by default with this release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
470
- }
471
-
472
468
  if (!webshims.cfg.no$Switch) {
473
469
  var switch$ = function(){
474
470
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
@@ -1749,62 +1745,12 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1749
1745
 
1750
1746
 
1751
1747
  $(document).on('focusin.lazyloadvalidation', function(e){
1752
- if('form' in e.target && $(e.target).is(':invalid')){
1748
+ if('form' in e.target && (e.target.list || $(e.target).is(':invalid'))){
1753
1749
  lazyLoad();
1754
1750
  }
1755
1751
  });
1756
1752
  webshims.ready('WINDOWLOAD', lazyLoad);
1757
1753
 
1758
- if(options.replaceValidationUI){
1759
- webshims.ready('DOM forms', function(){
1760
- $(document).on('firstinvalid', function(e){
1761
- if(!e.isInvalidUIPrevented()){
1762
- e.preventDefault();
1763
- webshims.validityAlert.showFor( e.target );
1764
- }
1765
- });
1766
- });
1767
- }
1768
-
1769
- /* extension, but also used to fix native implementation workaround/bugfixes */
1770
- (function(){
1771
- var firstEvent,
1772
- invalids = [],
1773
- stopSubmitTimer,
1774
- form
1775
- ;
1776
-
1777
- $(document).on('invalid', function(e){
1778
- if(e.wrongWebkitInvalid){return;}
1779
- var jElm = $(e.target);
1780
-
1781
-
1782
- if(!firstEvent){
1783
- //trigger firstinvalid
1784
- firstEvent = $.Event('firstinvalid');
1785
- firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
1786
- var firstSystemInvalid = $.Event('firstinvalidsystem');
1787
- $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
1788
- jElm.trigger(firstEvent);
1789
- }
1790
-
1791
- //if firstinvalid was prevented all invalids will be also prevented
1792
- if( firstEvent && firstEvent.isDefaultPrevented() ){
1793
- e.preventDefault();
1794
- }
1795
- invalids.push(e.target);
1796
- e.extraData = 'fix';
1797
- clearTimeout(stopSubmitTimer);
1798
- stopSubmitTimer = setTimeout(function(){
1799
- var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
1800
- //reset firstinvalid
1801
- firstEvent = false;
1802
- invalids = [];
1803
- $(e.target).trigger(lastEvent, lastEvent);
1804
- }, 9);
1805
- jElm = null;
1806
- });
1807
- })();
1808
1754
  });
1809
1755
 
1810
1756
  webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
@@ -2094,6 +2040,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
2094
2040
  if(hasNative){
2095
2041
  var videoElem = document.createElement('video');
2096
2042
  Modernizr.videoBuffered = ('buffered' in videoElem);
2043
+ Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
2097
2044
  supportsLoop = ('loop' in videoElem);
2098
2045
 
2099
2046
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
@@ -2107,20 +2054,15 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
2107
2054
 
2108
2055
  if(!options.preferFlash){
2109
2056
  var noSwitch = {
2110
- 1: 1,
2111
- 2: 1
2057
+ 1: 1
2112
2058
  };
2113
2059
  var switchOptions = function(e){
2114
2060
  var media, error, parent;
2115
2061
  if(!options.preferFlash &&
2116
2062
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
2117
- (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
2063
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
2118
2064
  ){
2119
- if(error == null){
2120
- webshims.warn("There was an unspecified error on a mediaelement");
2121
- return;
2122
-
2123
- }
2065
+
2124
2066
  $(function(){
2125
2067
  if(hasSwf && !options.preferFlash){
2126
2068
  loadSwf();
@@ -2132,7 +2074,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
2132
2074
  $('audio, video').each(function(){
2133
2075
  webshims.mediaelement.selectSource(this);
2134
2076
  });
2135
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
2077
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
2136
2078
  }
2137
2079
  }, 9);
2138
2080
  });
@@ -2338,7 +2280,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2338
2280
  if(src.indexOf('rtmp') === 0){
2339
2281
  return nodeName+'/rtmp';
2340
2282
  }
2341
- src = src.split('?')[0].split('.');
2283
+ src = src.split('?')[0].split('#')[0].split('.');
2342
2284
  src = src[src.length - 1];
2343
2285
  var mt;
2344
2286
 
@@ -2457,7 +2399,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2457
2399
  webshims.error('mediaelementError: '+ message);
2458
2400
  setTimeout(function(){
2459
2401
  if($(elem).data('mediaerror')){
2460
- $(elem).trigger('mediaerror');
2402
+ $(elem).addClass('media-error').trigger('mediaerror');
2461
2403
  }
2462
2404
  }, 1);
2463
2405
  }
@@ -2521,6 +2463,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2521
2463
  var parent = elem.parentNode;
2522
2464
 
2523
2465
  clearTimeout(baseData.loadTimer);
2466
+ $(elem).removeClass('media-error');
2524
2467
  $.data(elem, 'mediaerror', false);
2525
2468
 
2526
2469
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
@@ -2548,7 +2491,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2548
2491
  var testFixMedia = function(){
2549
2492
  if(webshims.implement(this, 'mediaelement')){
2550
2493
  selectSource(this);
2551
-
2494
+ if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
2495
+ $.prop(this, 'muted', true);
2496
+ }
2552
2497
  //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
2553
2498
  if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
2554
2499
  var bufferTimer;
@@ -816,10 +816,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
816
816
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
817
817
  }
818
818
 
819
- if(webshims.cfg.extendNative === undefined){
820
- webshims.warn("extendNative configuration was set to false by default with this release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
821
- }
822
-
823
819
  if (!webshims.cfg.no$Switch) {
824
820
  var switch$ = function(){
825
821
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
@@ -1921,6 +1917,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1921
1917
  if(hasNative){
1922
1918
  var videoElem = document.createElement('video');
1923
1919
  Modernizr.videoBuffered = ('buffered' in videoElem);
1920
+ Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
1924
1921
  supportsLoop = ('loop' in videoElem);
1925
1922
 
1926
1923
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
@@ -1934,20 +1931,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1934
1931
 
1935
1932
  if(!options.preferFlash){
1936
1933
  var noSwitch = {
1937
- 1: 1,
1938
- 2: 1
1934
+ 1: 1
1939
1935
  };
1940
1936
  var switchOptions = function(e){
1941
1937
  var media, error, parent;
1942
1938
  if(!options.preferFlash &&
1943
1939
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
1944
- (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
1940
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
1945
1941
  ){
1946
- if(error == null){
1947
- webshims.warn("There was an unspecified error on a mediaelement");
1948
- return;
1949
-
1950
- }
1942
+
1951
1943
  $(function(){
1952
1944
  if(hasSwf && !options.preferFlash){
1953
1945
  loadSwf();
@@ -1959,7 +1951,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1959
1951
  $('audio, video').each(function(){
1960
1952
  webshims.mediaelement.selectSource(this);
1961
1953
  });
1962
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
1954
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
1963
1955
  }
1964
1956
  }, 9);
1965
1957
  });
@@ -2165,7 +2157,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2165
2157
  if(src.indexOf('rtmp') === 0){
2166
2158
  return nodeName+'/rtmp';
2167
2159
  }
2168
- src = src.split('?')[0].split('.');
2160
+ src = src.split('?')[0].split('#')[0].split('.');
2169
2161
  src = src[src.length - 1];
2170
2162
  var mt;
2171
2163
 
@@ -2284,7 +2276,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2284
2276
  webshims.error('mediaelementError: '+ message);
2285
2277
  setTimeout(function(){
2286
2278
  if($(elem).data('mediaerror')){
2287
- $(elem).trigger('mediaerror');
2279
+ $(elem).addClass('media-error').trigger('mediaerror');
2288
2280
  }
2289
2281
  }, 1);
2290
2282
  }
@@ -2348,6 +2340,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2348
2340
  var parent = elem.parentNode;
2349
2341
 
2350
2342
  clearTimeout(baseData.loadTimer);
2343
+ $(elem).removeClass('media-error');
2351
2344
  $.data(elem, 'mediaerror', false);
2352
2345
 
2353
2346
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
@@ -2375,7 +2368,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2375
2368
  var testFixMedia = function(){
2376
2369
  if(webshims.implement(this, 'mediaelement')){
2377
2370
  selectSource(this);
2378
-
2371
+ if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
2372
+ $.prop(this, 'muted', true);
2373
+ }
2379
2374
  //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
2380
2375
  if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
2381
2376
  var bufferTimer;
@@ -2599,6 +2594,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2599
2594
  networkState: 0,
2600
2595
  videoHeight: 0,
2601
2596
  videoWidth: 0,
2597
+ seeking: false,
2602
2598
  error: null,
2603
2599
  buffered: {
2604
2600
  start: function(index){
@@ -2702,7 +2698,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2702
2698
  }
2703
2699
  data.readyState = readyState;
2704
2700
  };
2705
-
2701
+ var callSeeked = function(data){
2702
+ if(data.seeking && Math.abs(data.currentTime - data._lastSeektime) < 2){
2703
+ data.seeking = false;
2704
+ $(data._elem).triggerHandler('seeked');
2705
+ }
2706
+ };
2706
2707
 
2707
2708
 
2708
2709
  mediaelement.jarisEvent = {};
@@ -2731,6 +2732,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2731
2732
  }
2732
2733
  }
2733
2734
  },
2735
+ onSeek: function(jaris, data){
2736
+ data._lastSeektime = jaris.seekTime;
2737
+
2738
+ data.seeking = true;
2739
+ $(data._elem).triggerHandler('seeking');
2740
+ clearTimeout(data._seekedTimer);
2741
+ data._seekedTimer = setTimeout(function(){
2742
+ callSeeked(data);
2743
+ data.seeking = false;
2744
+ }, 300);
2745
+ },
2746
+ onConnectionFailed: function(){
2747
+ webshims.error('media error');
2748
+ },
2734
2749
  onNotBuffering: function(jaris, data){
2735
2750
  setReadyState(3, data);
2736
2751
  },
@@ -2786,7 +2801,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2786
2801
  setReadyState(3, data);
2787
2802
  trigger(data._elem, 'playing');
2788
2803
  }
2789
-
2804
+ if(data.seeking){
2805
+ callSeeked(data);
2806
+ }
2790
2807
  trigger(data._elem, 'timeupdate');
2791
2808
  },
2792
2809
  onProgress: function(jaris, data){
@@ -2842,6 +2859,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2842
2859
 
2843
2860
  return function(jaris, data){
2844
2861
  var i = 0;
2862
+
2845
2863
  var doneFn = function(){
2846
2864
  if(i > 9){
2847
2865
  data.tryedReframeing = 0;
@@ -3001,11 +3019,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3001
3019
 
3002
3020
 
3003
3021
  var resetSwfProps = (function(){
3004
- var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'videoHeight', 'videoWidth'];
3022
+ var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
3005
3023
  var len = resetProtoProps.length;
3006
3024
  return function(data){
3007
3025
 
3008
3026
  if(!data){return;}
3027
+ clearTimeout(data._seekedTimer);
3009
3028
  var lenI = len;
3010
3029
  var networkState = data.networkState;
3011
3030
  setReadyState(0, data);
@@ -3447,6 +3466,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3447
3466
  descs[key].set = setFn;
3448
3467
  };
3449
3468
 
3469
+ createGetSetProp('seeking');
3470
+
3450
3471
  createGetSetProp('volume', function(v){
3451
3472
  var data = getSwfDataFromElem(this);
3452
3473
  if(data){
@@ -3557,8 +3578,26 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3557
3578
  });
3558
3579
 
3559
3580
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
3581
+
3582
+ if(!Modernizr.mediaDefaultMuted){
3583
+ webshims.defineNodeNameProperties(nodeName, {
3584
+ defaultMuted: {
3585
+ get: function(){
3586
+ return $.attr(this, 'muted') != null;
3587
+ },
3588
+ set: function(val){
3589
+ if(val){
3590
+ $.attr(this, 'muted', '');
3591
+ } else {
3592
+ $(this).removeAttr('muted');
3593
+ }
3594
+ }
3595
+ }
3596
+ }, 'prop');
3597
+ }
3560
3598
  });
3561
3599
 
3600
+
3562
3601
  if(hasFlash && $.cleanData){
3563
3602
  var oldClean = $.cleanData;
3564
3603
  var flashNames = {
@@ -334,6 +334,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
334
334
  networkState: 0,
335
335
  videoHeight: 0,
336
336
  videoWidth: 0,
337
+ seeking: false,
337
338
  error: null,
338
339
  buffered: {
339
340
  start: function(index){
@@ -437,7 +438,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
437
438
  }
438
439
  data.readyState = readyState;
439
440
  };
440
-
441
+ var callSeeked = function(data){
442
+ if(data.seeking && Math.abs(data.currentTime - data._lastSeektime) < 2){
443
+ data.seeking = false;
444
+ $(data._elem).triggerHandler('seeked');
445
+ }
446
+ };
441
447
 
442
448
 
443
449
  mediaelement.jarisEvent = {};
@@ -466,6 +472,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
466
472
  }
467
473
  }
468
474
  },
475
+ onSeek: function(jaris, data){
476
+ data._lastSeektime = jaris.seekTime;
477
+
478
+ data.seeking = true;
479
+ $(data._elem).triggerHandler('seeking');
480
+ clearTimeout(data._seekedTimer);
481
+ data._seekedTimer = setTimeout(function(){
482
+ callSeeked(data);
483
+ data.seeking = false;
484
+ }, 300);
485
+ },
486
+ onConnectionFailed: function(){
487
+ webshims.error('media error');
488
+ },
469
489
  onNotBuffering: function(jaris, data){
470
490
  setReadyState(3, data);
471
491
  },
@@ -521,7 +541,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
521
541
  setReadyState(3, data);
522
542
  trigger(data._elem, 'playing');
523
543
  }
524
-
544
+ if(data.seeking){
545
+ callSeeked(data);
546
+ }
525
547
  trigger(data._elem, 'timeupdate');
526
548
  },
527
549
  onProgress: function(jaris, data){
@@ -577,6 +599,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
577
599
 
578
600
  return function(jaris, data){
579
601
  var i = 0;
602
+
580
603
  var doneFn = function(){
581
604
  if(i > 9){
582
605
  data.tryedReframeing = 0;
@@ -736,11 +759,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
736
759
 
737
760
 
738
761
  var resetSwfProps = (function(){
739
- var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'videoHeight', 'videoWidth'];
762
+ var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
740
763
  var len = resetProtoProps.length;
741
764
  return function(data){
742
765
 
743
766
  if(!data){return;}
767
+ clearTimeout(data._seekedTimer);
744
768
  var lenI = len;
745
769
  var networkState = data.networkState;
746
770
  setReadyState(0, data);
@@ -1182,6 +1206,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1182
1206
  descs[key].set = setFn;
1183
1207
  };
1184
1208
 
1209
+ createGetSetProp('seeking');
1210
+
1185
1211
  createGetSetProp('volume', function(v){
1186
1212
  var data = getSwfDataFromElem(this);
1187
1213
  if(data){
@@ -1292,8 +1318,26 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1292
1318
  });
1293
1319
 
1294
1320
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
1321
+
1322
+ if(!Modernizr.mediaDefaultMuted){
1323
+ webshims.defineNodeNameProperties(nodeName, {
1324
+ defaultMuted: {
1325
+ get: function(){
1326
+ return $.attr(this, 'muted') != null;
1327
+ },
1328
+ set: function(val){
1329
+ if(val){
1330
+ $.attr(this, 'muted', '');
1331
+ } else {
1332
+ $(this).removeAttr('muted');
1333
+ }
1334
+ }
1335
+ }
1336
+ }, 'prop');
1337
+ }
1295
1338
  });
1296
1339
 
1340
+
1297
1341
  if(hasFlash && $.cleanData){
1298
1342
  var oldClean = $.cleanData;
1299
1343
  var flashNames = {