webshims-rails 1.10.9 → 1.10.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +8 -9
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +24 -14
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +61 -20
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +54 -16
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +9 -13
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +8 -12
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +10 -7
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +40 -11
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +49 -24
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +128 -19
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +131 -22
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +133 -40
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +31 -18
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +132 -39
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +116 -22
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +9 -13
  19. data/vendor/assets/javascripts/webshims/shims/combos/24.js +48 -13
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +133 -40
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +7 -4
  22. data/vendor/assets/javascripts/webshims/shims/combos/27.js +1 -1
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +121 -24
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +4 -6
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +30 -6
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +30 -6
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -5
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +15 -5
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +128 -19
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +128 -19
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +39 -19
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +39 -19
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +61 -20
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +7 -4
  35. data/vendor/assets/javascripts/webshims/shims/es5.js +3 -3
  36. data/vendor/assets/javascripts/webshims/shims/form-core.js +15 -1
  37. data/vendor/assets/javascripts/webshims/shims/form-message.js +8 -1
  38. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +74 -3
  39. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +53 -15
  40. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +10 -5
  41. data/vendor/assets/javascripts/webshims/shims/form-validation.js +48 -13
  42. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +14 -2
  43. data/vendor/assets/javascripts/webshims/shims/geolocation.js +2 -2
  44. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +2 -2
  45. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-ZN.js +2 -2
  46. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.txt +2 -2
  47. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +2 -2
  48. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.txt +2 -2
  49. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +2 -2
  50. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +2 -2
  51. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +2 -2
  52. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +2 -2
  53. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +2 -2
  54. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +2 -2
  55. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +2 -2
  56. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +7 -4
  57. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +2 -2
  58. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +106 -0
  59. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +2 -2
  60. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +2 -2
  61. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +2 -2
  62. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +8 -12
  63. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +114 -20
  64. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +132 -17
  65. data/vendor/assets/javascripts/webshims/shims/range-ui.js +1 -1
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +38 -3
  67. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +42 -13
  68. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  69. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -6
  71. metadata +3 -2
@@ -707,11 +707,11 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
707
707
  }
708
708
 
709
709
  if(opts){
710
- o.options = jQuery.extend(true, {}, o.options || {}, opts);
710
+ o.options = $.extend(true, {}, o.options || {}, opts);
711
711
  opts = o.options;
712
712
  }
713
713
 
714
- if(o._create && jQuery.isFunction(o._create)){
714
+ if(o._create && $.isFunction(o._create)){
715
715
  o._create(opts);
716
716
  }
717
717
  return o;
@@ -797,7 +797,7 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
797
797
  };
798
798
 
799
799
  }
800
- })(jQuery, jQuery.webshims);
800
+ })(webshims.$, webshims);
801
801
 
802
802
 
803
803
 
@@ -815,14 +815,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
815
815
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
816
816
  }
817
817
 
818
- if(webshims.cfg.extendNative == 1){
818
+ if(webshims.cfg.extendNative === 1){
819
819
  webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
820
820
  }
821
821
 
822
822
  if (!webshims.cfg.no$Switch) {
823
823
  var switch$ = function(){
824
824
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
825
- webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
825
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly. Or set webshims.cfg.no$Switch to 'true'.");
826
826
  if (window.$) {
827
827
  window.$ = webshims.$;
828
828
  }
@@ -1364,6 +1364,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1364
1364
  setInterval(this.test, 600);
1365
1365
  $(this.test);
1366
1366
  webshims.ready('WINDOWLOAD', this.test);
1367
+ $(document).on('updatelayout', this.handler);
1367
1368
  $(window).bind('resize', this.handler);
1368
1369
  (function(){
1369
1370
  var oldAnimate = $.fn.animate;
@@ -1411,7 +1412,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1411
1412
 
1412
1413
  $(nativeElem).on('remove', function(e){
1413
1414
  if (!e.originalEvent) {
1414
- $(shadowElem).remove();
1415
+ setTimeout(function(){
1416
+ $(shadowElem).remove();
1417
+ }, 4);
1415
1418
  }
1416
1419
  });
1417
1420
 
@@ -1889,10 +1892,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1889
1892
  }
1890
1893
  });
1891
1894
 
1892
- })(jQuery, document);
1895
+ })(webshims.$, document);
1893
1896
 
1894
- (function($, Modernizr, webshims){
1897
+ (function(Modernizr, webshims){
1895
1898
  "use strict";
1899
+ var $ = webshims.$;
1896
1900
  var hasNative = Modernizr.audio && Modernizr.video;
1897
1901
  var supportsLoop = false;
1898
1902
  var bugs = webshims.bugs;
@@ -1996,6 +2000,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1996
2000
  hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
1997
2001
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
1998
2002
  var mediaelement = webshims.mediaelement;
2003
+
1999
2004
  mediaelement.parseRtmp = function(data){
2000
2005
  var src = data.src.split('://');
2001
2006
  var paths = src[1].split('/');
@@ -2165,7 +2170,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2165
2170
  var src = getSrcObj(mediaElem, nodeName);
2166
2171
 
2167
2172
  if(!src.src){
2168
-
2169
2173
  $('source', mediaElem).each(function(){
2170
2174
  src = getSrcObj(this, nodeName);
2171
2175
  if(src.src){srces.push(src);}
@@ -2180,18 +2184,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2180
2184
  srces = [srces];
2181
2185
  }
2182
2186
  srces.forEach(function(src){
2183
- var source = document.createElement('source');
2184
2187
  if(typeof src == 'string'){
2185
2188
  src = {src: src};
2186
2189
  }
2187
- source.setAttribute('src', src.src);
2188
- if(src.type){
2189
- source.setAttribute('type', src.type);
2190
- }
2191
- if(src.media){
2192
- source.setAttribute('media', src.media);
2193
- }
2194
- mediaElem.append(source);
2190
+ mediaElem.append($(document.createElement('source')).attr(src));
2195
2191
  });
2196
2192
 
2197
2193
  }
@@ -2339,6 +2335,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2339
2335
 
2340
2336
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
2341
2337
  data = data || webshims.data(elem, 'mediaelement');
2338
+ if(mediaelement.sortMedia){
2339
+ _srces.sort(mediaelement.sortMedia);
2340
+ }
2342
2341
  stepSources(elem, data, options.preferFlash || undefined, _srces);
2343
2342
  };
2344
2343
  mediaelement.selectSource = selectSource;
@@ -2513,7 +2512,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2513
2512
  }
2514
2513
  webshims.ready('track', loadTrackUi);
2515
2514
  });
2516
- })(jQuery, Modernizr, webshims);
2515
+ })(Modernizr, webshims);
2517
2516
  webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
2518
2517
  "use strict";
2519
2518
 
@@ -2954,20 +2953,84 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2954
2953
  };
2955
2954
  })();
2956
2955
 
2956
+
2957
+ var transformDimension = (function(){
2958
+ var dimCache = {};
2959
+ var getRealDims = function(data){
2960
+ var ret, poster, img;
2961
+ if(dimCache[data.currentSrc]){
2962
+ ret = dimCache[data.currentSrc];
2963
+ } else if(data.videoHeight && data.videoWidth){
2964
+ dimCache[data.currentSrc] = {
2965
+ width: data.videoWidth,
2966
+ height: data.videoHeight
2967
+ };
2968
+ ret = dimCache[data.currentSrc];
2969
+ } else if((poster = $.attr(data._elem, 'poster'))){
2970
+ ret = dimCache[poster];
2971
+ if(!ret){
2972
+ img = document.createElement('img');
2973
+ img.onload = function(){
2974
+ dimCache[poster] = {
2975
+ width: this.width,
2976
+ height: this.height
2977
+ };
2978
+
2979
+ if(dimCache[poster].height && dimCache[poster].width){
2980
+ setElementDimension(data, $.prop(data._elem, 'controls'));
2981
+ } else {
2982
+ delete dimCache[poster];
2983
+ }
2984
+ };
2985
+ img.src = poster;
2986
+ if(img.complete){
2987
+ img.onload();
2988
+ }
2989
+ }
2990
+ }
2991
+ return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
2992
+ };
2993
+ return function(data){
2994
+ var realDims, ratio;
2995
+ var ret = data.elemDimensions;
2996
+
2997
+ if(ret.width == 'auto' || ret.height == 'auto'){
2998
+ ret = $.extend({}, data.elemDimensions);
2999
+ realDims = getRealDims(data);
3000
+ ratio = realDims.width / realDims.height;
3001
+
3002
+ if(ret.width == 'auto' && ret.height == 'auto'){
3003
+ ret = realDims;
3004
+ } else if(ret.width == 'auto'){
3005
+ data.shadowElem.css({height: ret.height});
3006
+ ret.width = data.shadowElem.height() * ratio;
3007
+ } else {
3008
+ data.shadowElem.css({width: ret.width});
3009
+ ret.height = data.shadowElem.width() / ratio;
3010
+ }
3011
+ }
3012
+ return ret;
3013
+ };
3014
+ })();
2957
3015
  var setElementDimension = function(data, hasControls){
2958
- var cAttr;
3016
+ var dims;
2959
3017
  var elem = data._elem;
2960
3018
  var box = data.shadowElem;
2961
-
2962
3019
  $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
2963
- if(data._elemNodeName == 'audio' && !hasControls){
2964
- box.css({width: 0, height: 0});
2965
- } else {
2966
-
2967
- box.css({
2968
- width: elem.style.width || ((cAttr = $(elem).attr('width')) && cAttr+'px') || $(elem).width(),
2969
- height: elem.style.height|| ((cAttr = $(elem).attr('height')) && cAttr+'px') || $(elem).height()
2970
- });
3020
+
3021
+ if(data.isActive == 'third'){
3022
+ if(data._elemNodeName == 'audio' && !hasControls){
3023
+ box.css({width: 0, height: 0});
3024
+ } else {
3025
+ data.elemDimensions = {
3026
+ width: elem.style.width || $.attr(elem, 'width') || $(elem).width(),
3027
+ height: elem.style.height || $.attr(elem, 'height') || $(elem).height()
3028
+ };
3029
+ dims = transformDimension(data);
3030
+ dims.minWidth = elem.style.minWidth;
3031
+ dims.minHeight = elem.style.minHeight;
3032
+ box.css(dims);
3033
+ }
2971
3034
  }
2972
3035
  };
2973
3036
 
@@ -2995,6 +3058,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2995
3058
  replaceVar = function(val){
2996
3059
  return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
2997
3060
  };
3061
+
3062
+ if('matchMedia' in window){
3063
+ var allowMediaSorting = false;
3064
+ try {
3065
+ allowMediaSorting = window.matchMedia('only all').matches;
3066
+ } catch(er){}
3067
+ if(allowMediaSorting){
3068
+ mediaelement.sortMedia = function(src1, src2){
3069
+ try {
3070
+ src1 = !src1.media || matchMedia( src1.media ).matches;
3071
+ src2 = !src2.media || matchMedia( src2.media ).matches;
3072
+ } catch(er){
3073
+ return 0;
3074
+ }
3075
+ return src1 == src2 ?
3076
+ 0 :
3077
+ src1 ? -1
3078
+ : 1;
3079
+ };
3080
+ }
3081
+ }
2998
3082
 
2999
3083
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
3000
3084
  if(!hasFlash){
@@ -3046,7 +3130,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3046
3130
  $(elem).data('attrs')
3047
3131
  );
3048
3132
  var setDimension = function(){
3049
- setElementDimension(data, $.prop(elem, 'controls'));
3133
+ if(data.isActive == 'third'){
3134
+ setElementDimension(data, $.prop(elem, 'controls'));
3135
+ }
3050
3136
  };
3051
3137
 
3052
3138
  var box;
@@ -3112,7 +3198,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3112
3198
  }
3113
3199
  }));
3114
3200
 
3115
- setElementDimension(data, hasControls);
3201
+
3116
3202
 
3117
3203
  box.insertBefore(elem);
3118
3204
 
@@ -3128,17 +3214,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3128
3214
 
3129
3215
  mediaelement.setActive(elem, 'third', data);
3130
3216
 
3217
+ setElementDimension(data, hasControls);
3218
+
3131
3219
  $(elem)
3132
- .on({'updatemediaelementdimensions': setDimension})
3133
- .onWSOff('updateshadowdom', setDimension)
3134
- .on('remove', function(e){
3135
- if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
3136
- delete mediaelement.jarisEvent[data.id];
3137
- clearTimeout(localConnectionTimer);
3138
- clearTimeout(data.flashBlock);
3220
+ .on({
3221
+ 'updatemediaelementdimensions loadedmetadata emptied': setDimension,
3222
+ 'remove': function(e){
3223
+ if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
3224
+ delete mediaelement.jarisEvent[data.id];
3225
+ clearTimeout(localConnectionTimer);
3226
+ clearTimeout(data.flashBlock);
3227
+ }
3139
3228
  }
3140
- box.remove();
3141
3229
  })
3230
+ .onWSOff('updateshadowdom', setDimension)
3142
3231
  ;
3143
3232
  }
3144
3233
 
@@ -3444,6 +3533,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3444
3533
  limitedTo: ['', 'auto', 'metadata', 'none']
3445
3534
  });
3446
3535
 
3536
+ webshims.reflectProperties('source', ['type', 'media']);
3537
+
3447
3538
 
3448
3539
  ['autoplay', 'controls'].forEach(function(name){
3449
3540
  webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
@@ -3479,6 +3570,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3479
3570
  }
3480
3571
 
3481
3572
  }, 'prop');
3573
+ } else if(!('media' in document.createElement('source'))){
3574
+ webshims.reflectProperties('source', ['media']);
3482
3575
  }
3483
3576
 
3484
3577
  });
@@ -7,7 +7,7 @@
7
7
  },
8
8
  id = 0
9
9
  ;
10
- var geoOpts = $.webshims.cfg.geolocation || {};
10
+ var geoOpts = webshims.cfg.geolocation || {};
11
11
  navigator.geolocation = (function(){
12
12
  var pos;
13
13
  var api = {
@@ -165,7 +165,7 @@
165
165
  })();
166
166
 
167
167
  webshims.isReady('geolocation', true);
168
- })(jQuery);
168
+ })(webshims.$);
169
169
 
170
170
  webshims.register('details', function($, webshims, window, doc, undefined, options){
171
171
  var isInterActiveSummary = function(summary){
@@ -756,20 +756,84 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
756
756
  };
757
757
  })();
758
758
 
759
+
760
+ var transformDimension = (function(){
761
+ var dimCache = {};
762
+ var getRealDims = function(data){
763
+ var ret, poster, img;
764
+ if(dimCache[data.currentSrc]){
765
+ ret = dimCache[data.currentSrc];
766
+ } else if(data.videoHeight && data.videoWidth){
767
+ dimCache[data.currentSrc] = {
768
+ width: data.videoWidth,
769
+ height: data.videoHeight
770
+ };
771
+ ret = dimCache[data.currentSrc];
772
+ } else if((poster = $.attr(data._elem, 'poster'))){
773
+ ret = dimCache[poster];
774
+ if(!ret){
775
+ img = document.createElement('img');
776
+ img.onload = function(){
777
+ dimCache[poster] = {
778
+ width: this.width,
779
+ height: this.height
780
+ };
781
+
782
+ if(dimCache[poster].height && dimCache[poster].width){
783
+ setElementDimension(data, $.prop(data._elem, 'controls'));
784
+ } else {
785
+ delete dimCache[poster];
786
+ }
787
+ };
788
+ img.src = poster;
789
+ if(img.complete){
790
+ img.onload();
791
+ }
792
+ }
793
+ }
794
+ return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
795
+ };
796
+ return function(data){
797
+ var realDims, ratio;
798
+ var ret = data.elemDimensions;
799
+
800
+ if(ret.width == 'auto' || ret.height == 'auto'){
801
+ ret = $.extend({}, data.elemDimensions);
802
+ realDims = getRealDims(data);
803
+ ratio = realDims.width / realDims.height;
804
+
805
+ if(ret.width == 'auto' && ret.height == 'auto'){
806
+ ret = realDims;
807
+ } else if(ret.width == 'auto'){
808
+ data.shadowElem.css({height: ret.height});
809
+ ret.width = data.shadowElem.height() * ratio;
810
+ } else {
811
+ data.shadowElem.css({width: ret.width});
812
+ ret.height = data.shadowElem.width() / ratio;
813
+ }
814
+ }
815
+ return ret;
816
+ };
817
+ })();
759
818
  var setElementDimension = function(data, hasControls){
760
- var cAttr;
819
+ var dims;
761
820
  var elem = data._elem;
762
821
  var box = data.shadowElem;
763
-
764
822
  $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
765
- if(data._elemNodeName == 'audio' && !hasControls){
766
- box.css({width: 0, height: 0});
767
- } else {
768
-
769
- box.css({
770
- width: elem.style.width || ((cAttr = $(elem).attr('width')) && cAttr+'px') || $(elem).width(),
771
- height: elem.style.height|| ((cAttr = $(elem).attr('height')) && cAttr+'px') || $(elem).height()
772
- });
823
+
824
+ if(data.isActive == 'third'){
825
+ if(data._elemNodeName == 'audio' && !hasControls){
826
+ box.css({width: 0, height: 0});
827
+ } else {
828
+ data.elemDimensions = {
829
+ width: elem.style.width || $.attr(elem, 'width') || $(elem).width(),
830
+ height: elem.style.height || $.attr(elem, 'height') || $(elem).height()
831
+ };
832
+ dims = transformDimension(data);
833
+ dims.minWidth = elem.style.minWidth;
834
+ dims.minHeight = elem.style.minHeight;
835
+ box.css(dims);
836
+ }
773
837
  }
774
838
  };
775
839
 
@@ -797,6 +861,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
797
861
  replaceVar = function(val){
798
862
  return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
799
863
  };
864
+
865
+ if('matchMedia' in window){
866
+ var allowMediaSorting = false;
867
+ try {
868
+ allowMediaSorting = window.matchMedia('only all').matches;
869
+ } catch(er){}
870
+ if(allowMediaSorting){
871
+ mediaelement.sortMedia = function(src1, src2){
872
+ try {
873
+ src1 = !src1.media || matchMedia( src1.media ).matches;
874
+ src2 = !src2.media || matchMedia( src2.media ).matches;
875
+ } catch(er){
876
+ return 0;
877
+ }
878
+ return src1 == src2 ?
879
+ 0 :
880
+ src1 ? -1
881
+ : 1;
882
+ };
883
+ }
884
+ }
800
885
 
801
886
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
802
887
  if(!hasFlash){
@@ -848,7 +933,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
848
933
  $(elem).data('attrs')
849
934
  );
850
935
  var setDimension = function(){
851
- setElementDimension(data, $.prop(elem, 'controls'));
936
+ if(data.isActive == 'third'){
937
+ setElementDimension(data, $.prop(elem, 'controls'));
938
+ }
852
939
  };
853
940
 
854
941
  var box;
@@ -914,7 +1001,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
914
1001
  }
915
1002
  }));
916
1003
 
917
- setElementDimension(data, hasControls);
1004
+
918
1005
 
919
1006
  box.insertBefore(elem);
920
1007
 
@@ -930,17 +1017,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
930
1017
 
931
1018
  mediaelement.setActive(elem, 'third', data);
932
1019
 
1020
+ setElementDimension(data, hasControls);
1021
+
933
1022
  $(elem)
934
- .on({'updatemediaelementdimensions': setDimension})
935
- .onWSOff('updateshadowdom', setDimension)
936
- .on('remove', function(e){
937
- if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
938
- delete mediaelement.jarisEvent[data.id];
939
- clearTimeout(localConnectionTimer);
940
- clearTimeout(data.flashBlock);
1023
+ .on({
1024
+ 'updatemediaelementdimensions loadedmetadata emptied': setDimension,
1025
+ 'remove': function(e){
1026
+ if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
1027
+ delete mediaelement.jarisEvent[data.id];
1028
+ clearTimeout(localConnectionTimer);
1029
+ clearTimeout(data.flashBlock);
1030
+ }
941
1031
  }
942
- box.remove();
943
1032
  })
1033
+ .onWSOff('updateshadowdom', setDimension)
944
1034
  ;
945
1035
  }
946
1036
 
@@ -1246,6 +1336,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1246
1336
  limitedTo: ['', 'auto', 'metadata', 'none']
1247
1337
  });
1248
1338
 
1339
+ webshims.reflectProperties('source', ['type', 'media']);
1340
+
1249
1341
 
1250
1342
  ['autoplay', 'controls'].forEach(function(name){
1251
1343
  webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
@@ -1281,6 +1373,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1281
1373
  }
1282
1374
 
1283
1375
  }, 'prop');
1376
+ } else if(!('media' in document.createElement('source'))){
1377
+ webshims.reflectProperties('source', ['media']);
1284
1378
  }
1285
1379
 
1286
1380
  });