webshims-rails 1.10.11 → 1.11.1

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