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
@@ -8,7 +8,7 @@ var swfmini = function() {
8
8
 
9
9
  var UNDEF = "undefined",
10
10
  OBJECT = "object",
11
- webshims = jQuery.webshims || window.webshims,
11
+ webshims = window.webshims,
12
12
  SHOCKWAVE_FLASH = "Shockwave Flash",
13
13
  SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
14
14
  FLASH_MIME_TYPE = "application/x-shockwave-flash",
@@ -496,8 +496,9 @@ var swfmini = function() {
496
496
  };
497
497
  }();
498
498
 
499
- (function($, Modernizr, webshims){
499
+ (function(Modernizr, webshims){
500
500
  "use strict";
501
+ var $ = webshims.$;
501
502
  var hasNative = Modernizr.audio && Modernizr.video;
502
503
  var supportsLoop = false;
503
504
  var bugs = webshims.bugs;
@@ -601,6 +602,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
601
602
  hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
602
603
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
603
604
  var mediaelement = webshims.mediaelement;
605
+
604
606
  mediaelement.parseRtmp = function(data){
605
607
  var src = data.src.split('://');
606
608
  var paths = src[1].split('/');
@@ -770,7 +772,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
770
772
  var src = getSrcObj(mediaElem, nodeName);
771
773
 
772
774
  if(!src.src){
773
-
774
775
  $('source', mediaElem).each(function(){
775
776
  src = getSrcObj(this, nodeName);
776
777
  if(src.src){srces.push(src);}
@@ -785,18 +786,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
785
786
  srces = [srces];
786
787
  }
787
788
  srces.forEach(function(src){
788
- var source = document.createElement('source');
789
789
  if(typeof src == 'string'){
790
790
  src = {src: src};
791
791
  }
792
- source.setAttribute('src', src.src);
793
- if(src.type){
794
- source.setAttribute('type', src.type);
795
- }
796
- if(src.media){
797
- source.setAttribute('media', src.media);
798
- }
799
- mediaElem.append(source);
792
+ mediaElem.append($(document.createElement('source')).attr(src));
800
793
  });
801
794
 
802
795
  }
@@ -944,6 +937,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
944
937
 
945
938
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
946
939
  data = data || webshims.data(elem, 'mediaelement');
940
+ if(mediaelement.sortMedia){
941
+ _srces.sort(mediaelement.sortMedia);
942
+ }
947
943
  stepSources(elem, data, options.preferFlash || undefined, _srces);
948
944
  };
949
945
  mediaelement.selectSource = selectSource;
@@ -1118,4 +1114,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1118
1114
  }
1119
1115
  webshims.ready('track', loadTrackUi);
1120
1116
  });
1121
- })(jQuery, Modernizr, webshims);
1117
+ })(Modernizr, webshims);
@@ -80,7 +80,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
80
80
  if(!e.target){return;}
81
81
  elem = $(e.target).getNativeElement()[0];
82
82
  shadowElem = $(elem).getShadowElement();
83
- if(elem.type == 'submit' || !$.prop(elem, 'willValidate') || (e.type == 'change' && !changeTypes[(shadowType = shadowElem.prop('type'))])){return;}
83
+ if(elem.type == 'submit' || !$.prop(elem, 'willValidate') || (e.type == 'change' && (shadowType = shadowElem.prop('type')) && !changeTypes[shadowType])){return;}
84
84
  timer = $.data(elem, 'webshimsswitchvalidityclass');
85
85
  var switchClass = function(){
86
86
  if(!shadowType){
@@ -155,7 +155,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
155
155
  }
156
156
  };
157
157
 
158
- $(document.body)
158
+ $(document.body || 'html')
159
159
  .on(options.validityUIEvents || 'focusout change refreshvalidityui invalid', switchValidityClass)
160
160
  .on('reset resetvalui', function(e){
161
161
  var elems = $(e.target);
@@ -187,18 +187,44 @@ webshims.register('form-validation', function($, webshims, window, document, und
187
187
  'width'
188
188
  ;
189
189
  var hasTransition = ('transitionDelay' in document.documentElement.style);
190
+ var resetPos = {display: 'inline-block', left: 0, top: 0, marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0};
191
+
190
192
  setRoot();
191
193
  webshims.ready('DOM', setRoot);
192
194
 
193
- webshims.getRelOffset = function(posElem, relElem){
195
+
196
+ webshims.getRelOffset = function(posElem, relElem, opts){
197
+ var offset, bodyOffset, dirs;
194
198
  posElem = $(posElem);
195
- var offset = $(relElem).offset();
196
- var bodyOffset;
197
- $.swap($(posElem)[0], {visibility: 'hidden', display: 'inline-block', left: 0, top: 0}, function(){
198
- bodyOffset = posElem.offset();
199
+ $.swap($(posElem)[0], resetPos, function(){
200
+ if($.position && opts && $.position.getScrollInfo){
201
+ if(!opts.of){
202
+ opts.of = relElem;
203
+ }
204
+
205
+ opts.using = function(calced, data){
206
+ posElem.attr({'data-horizontal': data.horizontal, 'data-vertical': data.vertical});
207
+ offset = calced;
208
+ };
209
+ posElem.attr({
210
+ 'data-horizontal': '',
211
+ 'data-vertical': '',
212
+ 'data-my': opts.my || 'center',
213
+ 'data-at': opts.at || 'center'
214
+ });
215
+ posElem.position(opts);
216
+
217
+ } else {
218
+ offset = $(relElem).offset();
219
+ bodyOffset = posElem.offset();
220
+ offset.top -= bodyOffset.top;
221
+ offset.left -= bodyOffset.left;
222
+
223
+ offset.top += relElem.outerHeight();
224
+ }
225
+
199
226
  });
200
- offset.top -= bodyOffset.top;
201
- offset.left -= bodyOffset.left;
227
+
202
228
  return offset;
203
229
  };
204
230
 
@@ -249,9 +275,10 @@ webshims.register('form-validation', function($, webshims, window, document, und
249
275
  },
250
276
  prepareFor: function(element, visual){
251
277
  var onBlur;
252
- var opts = $.extend({}, this.options, $(element.prop('form') || []).data('wspopover') || {}, element.data('wspopover'));
253
278
  var that = this;
254
279
  var css = {};
280
+ var opts = $.extend(true, {}, this.options, $(element.prop('form') || []).data('wspopover') || {}, element.data('wspopover'));
281
+ this.lastOpts = opts;
255
282
  this.lastElement = $(element).getShadowFocusElement();
256
283
  if(!this.prepared || !this.options.prepareFor){
257
284
  if(opts.appendTo == 'element'){
@@ -297,6 +324,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
297
324
  $(document).off(this.eventns);
298
325
  this.element.off('transitionend'+this.eventns);
299
326
  this.stopBlur = false;
327
+ this.lastOpts = false;
300
328
  $.each(this.timers, function(timerName, val){
301
329
  clearTimeout(val);
302
330
  });
@@ -324,9 +352,9 @@ webshims.register('form-validation', function($, webshims, window, document, und
324
352
  that.timers.forcehide = setTimeout(forceHide, hasTransition ? 600 : 40);
325
353
  },
326
354
  position: function(element){
327
- var offset = webshims.getRelOffset(this.element.css({marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0}).removeAttr('hidden'), element);
328
- offset.top += element.outerHeight();
329
- this.element.css({marginTop: '', marginLeft: '', marginRight: '', marginBottom: ''}).css(offset);
355
+ var offset = webshims.getRelOffset(this.element.removeAttr('hidden'), element, (this.lastOpts || this.options).position);
356
+
357
+ this.element.css(offset);
330
358
  }
331
359
  });
332
360
 
@@ -334,6 +362,12 @@ webshims.register('form-validation', function($, webshims, window, document, und
334
362
 
335
363
  /* some extra validation UI */
336
364
  webshims.validityAlert = (function(){
365
+
366
+ options.messagePopover.position = $.extend({}, {
367
+ at: 'left bottom',
368
+ my: 'left top',
369
+ collision: 'none'
370
+ }, options.messagePopover.position || {});
337
371
 
338
372
  var focusTimer = false;
339
373
 
@@ -565,6 +599,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
565
599
  },
566
600
  submit: function(e){
567
601
  if(options.iVal.sel && $(e.target).is(options.iVal.sel) && $.prop(e.target, 'noValidate') && !$(e.target).checkValidity()){
602
+ e.stopImmediatePropagation();
568
603
  return false;
569
604
  }
570
605
  }
@@ -8,7 +8,7 @@ var swfmini = function() {
8
8
 
9
9
  var UNDEF = "undefined",
10
10
  OBJECT = "object",
11
- webshims = jQuery.webshims || window.webshims,
11
+ webshims = window.webshims,
12
12
  SHOCKWAVE_FLASH = "Shockwave Flash",
13
13
  SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
14
14
  FLASH_MIME_TYPE = "application/x-shockwave-flash",
@@ -1205,11 +1205,11 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
1205
1205
  }
1206
1206
 
1207
1207
  if(opts){
1208
- o.options = jQuery.extend(true, {}, o.options || {}, opts);
1208
+ o.options = $.extend(true, {}, o.options || {}, opts);
1209
1209
  opts = o.options;
1210
1210
  }
1211
1211
 
1212
- if(o._create && jQuery.isFunction(o._create)){
1212
+ if(o._create && $.isFunction(o._create)){
1213
1213
  o._create(opts);
1214
1214
  }
1215
1215
  return o;
@@ -1295,7 +1295,7 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
1295
1295
  };
1296
1296
 
1297
1297
  }
1298
- })(jQuery, jQuery.webshims);
1298
+ })(webshims.$, webshims);
1299
1299
 
1300
1300
 
1301
1301
 
@@ -1313,14 +1313,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1313
1313
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
1314
1314
  }
1315
1315
 
1316
- if(webshims.cfg.extendNative == 1){
1316
+ if(webshims.cfg.extendNative === 1){
1317
1317
  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");
1318
1318
  }
1319
1319
 
1320
1320
  if (!webshims.cfg.no$Switch) {
1321
1321
  var switch$ = function(){
1322
1322
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
1323
- 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..");
1323
+ 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'.");
1324
1324
  if (window.$) {
1325
1325
  window.$ = webshims.$;
1326
1326
  }
@@ -1862,6 +1862,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1862
1862
  setInterval(this.test, 600);
1863
1863
  $(this.test);
1864
1864
  webshims.ready('WINDOWLOAD', this.test);
1865
+ $(document).on('updatelayout', this.handler);
1865
1866
  $(window).bind('resize', this.handler);
1866
1867
  (function(){
1867
1868
  var oldAnimate = $.fn.animate;
@@ -1909,7 +1910,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1909
1910
 
1910
1911
  $(nativeElem).on('remove', function(e){
1911
1912
  if (!e.originalEvent) {
1912
- $(shadowElem).remove();
1913
+ setTimeout(function(){
1914
+ $(shadowElem).remove();
1915
+ }, 4);
1913
1916
  }
1914
1917
  });
1915
1918
 
@@ -2387,7 +2390,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2387
2390
  }
2388
2391
  });
2389
2392
 
2390
- })(jQuery, document);
2393
+ })(webshims.$, document);
2391
2394
 
2392
2395
  webshims.register('filereader', function( $, webshims ){
2393
2396
  "use strict";
@@ -2776,8 +2779,9 @@ webshims.register('filereader', function( $, webshims ){
2776
2779
  });
2777
2780
  });
2778
2781
 
2779
- (function($, Modernizr, webshims){
2782
+ (function(Modernizr, webshims){
2780
2783
  "use strict";
2784
+ var $ = webshims.$;
2781
2785
  var hasNative = Modernizr.audio && Modernizr.video;
2782
2786
  var supportsLoop = false;
2783
2787
  var bugs = webshims.bugs;
@@ -2881,6 +2885,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2881
2885
  hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
2882
2886
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2883
2887
  var mediaelement = webshims.mediaelement;
2888
+
2884
2889
  mediaelement.parseRtmp = function(data){
2885
2890
  var src = data.src.split('://');
2886
2891
  var paths = src[1].split('/');
@@ -3050,7 +3055,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3050
3055
  var src = getSrcObj(mediaElem, nodeName);
3051
3056
 
3052
3057
  if(!src.src){
3053
-
3054
3058
  $('source', mediaElem).each(function(){
3055
3059
  src = getSrcObj(this, nodeName);
3056
3060
  if(src.src){srces.push(src);}
@@ -3065,18 +3069,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3065
3069
  srces = [srces];
3066
3070
  }
3067
3071
  srces.forEach(function(src){
3068
- var source = document.createElement('source');
3069
3072
  if(typeof src == 'string'){
3070
3073
  src = {src: src};
3071
3074
  }
3072
- source.setAttribute('src', src.src);
3073
- if(src.type){
3074
- source.setAttribute('type', src.type);
3075
- }
3076
- if(src.media){
3077
- source.setAttribute('media', src.media);
3078
- }
3079
- mediaElem.append(source);
3075
+ mediaElem.append($(document.createElement('source')).attr(src));
3080
3076
  });
3081
3077
 
3082
3078
  }
@@ -3224,6 +3220,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3224
3220
 
3225
3221
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
3226
3222
  data = data || webshims.data(elem, 'mediaelement');
3223
+ if(mediaelement.sortMedia){
3224
+ _srces.sort(mediaelement.sortMedia);
3225
+ }
3227
3226
  stepSources(elem, data, options.preferFlash || undefined, _srces);
3228
3227
  };
3229
3228
  mediaelement.selectSource = selectSource;
@@ -3398,7 +3397,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3398
3397
  }
3399
3398
  webshims.ready('track', loadTrackUi);
3400
3399
  });
3401
- })(jQuery, Modernizr, webshims);
3400
+ })(Modernizr, webshims);
3402
3401
  webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3403
3402
  "use strict";
3404
3403
 
@@ -3839,20 +3838,84 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3839
3838
  };
3840
3839
  })();
3841
3840
 
3841
+
3842
+ var transformDimension = (function(){
3843
+ var dimCache = {};
3844
+ var getRealDims = function(data){
3845
+ var ret, poster, img;
3846
+ if(dimCache[data.currentSrc]){
3847
+ ret = dimCache[data.currentSrc];
3848
+ } else if(data.videoHeight && data.videoWidth){
3849
+ dimCache[data.currentSrc] = {
3850
+ width: data.videoWidth,
3851
+ height: data.videoHeight
3852
+ };
3853
+ ret = dimCache[data.currentSrc];
3854
+ } else if((poster = $.attr(data._elem, 'poster'))){
3855
+ ret = dimCache[poster];
3856
+ if(!ret){
3857
+ img = document.createElement('img');
3858
+ img.onload = function(){
3859
+ dimCache[poster] = {
3860
+ width: this.width,
3861
+ height: this.height
3862
+ };
3863
+
3864
+ if(dimCache[poster].height && dimCache[poster].width){
3865
+ setElementDimension(data, $.prop(data._elem, 'controls'));
3866
+ } else {
3867
+ delete dimCache[poster];
3868
+ }
3869
+ };
3870
+ img.src = poster;
3871
+ if(img.complete){
3872
+ img.onload();
3873
+ }
3874
+ }
3875
+ }
3876
+ return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
3877
+ };
3878
+ return function(data){
3879
+ var realDims, ratio;
3880
+ var ret = data.elemDimensions;
3881
+
3882
+ if(ret.width == 'auto' || ret.height == 'auto'){
3883
+ ret = $.extend({}, data.elemDimensions);
3884
+ realDims = getRealDims(data);
3885
+ ratio = realDims.width / realDims.height;
3886
+
3887
+ if(ret.width == 'auto' && ret.height == 'auto'){
3888
+ ret = realDims;
3889
+ } else if(ret.width == 'auto'){
3890
+ data.shadowElem.css({height: ret.height});
3891
+ ret.width = data.shadowElem.height() * ratio;
3892
+ } else {
3893
+ data.shadowElem.css({width: ret.width});
3894
+ ret.height = data.shadowElem.width() / ratio;
3895
+ }
3896
+ }
3897
+ return ret;
3898
+ };
3899
+ })();
3842
3900
  var setElementDimension = function(data, hasControls){
3843
- var cAttr;
3901
+ var dims;
3844
3902
  var elem = data._elem;
3845
3903
  var box = data.shadowElem;
3846
-
3847
3904
  $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
3848
- if(data._elemNodeName == 'audio' && !hasControls){
3849
- box.css({width: 0, height: 0});
3850
- } else {
3851
-
3852
- box.css({
3853
- width: elem.style.width || ((cAttr = $(elem).attr('width')) && cAttr+'px') || $(elem).width(),
3854
- height: elem.style.height|| ((cAttr = $(elem).attr('height')) && cAttr+'px') || $(elem).height()
3855
- });
3905
+
3906
+ if(data.isActive == 'third'){
3907
+ if(data._elemNodeName == 'audio' && !hasControls){
3908
+ box.css({width: 0, height: 0});
3909
+ } else {
3910
+ data.elemDimensions = {
3911
+ width: elem.style.width || $.attr(elem, 'width') || $(elem).width(),
3912
+ height: elem.style.height || $.attr(elem, 'height') || $(elem).height()
3913
+ };
3914
+ dims = transformDimension(data);
3915
+ dims.minWidth = elem.style.minWidth;
3916
+ dims.minHeight = elem.style.minHeight;
3917
+ box.css(dims);
3918
+ }
3856
3919
  }
3857
3920
  };
3858
3921
 
@@ -3880,6 +3943,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3880
3943
  replaceVar = function(val){
3881
3944
  return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
3882
3945
  };
3946
+
3947
+ if('matchMedia' in window){
3948
+ var allowMediaSorting = false;
3949
+ try {
3950
+ allowMediaSorting = window.matchMedia('only all').matches;
3951
+ } catch(er){}
3952
+ if(allowMediaSorting){
3953
+ mediaelement.sortMedia = function(src1, src2){
3954
+ try {
3955
+ src1 = !src1.media || matchMedia( src1.media ).matches;
3956
+ src2 = !src2.media || matchMedia( src2.media ).matches;
3957
+ } catch(er){
3958
+ return 0;
3959
+ }
3960
+ return src1 == src2 ?
3961
+ 0 :
3962
+ src1 ? -1
3963
+ : 1;
3964
+ };
3965
+ }
3966
+ }
3883
3967
 
3884
3968
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
3885
3969
  if(!hasFlash){
@@ -3931,7 +4015,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3931
4015
  $(elem).data('attrs')
3932
4016
  );
3933
4017
  var setDimension = function(){
3934
- setElementDimension(data, $.prop(elem, 'controls'));
4018
+ if(data.isActive == 'third'){
4019
+ setElementDimension(data, $.prop(elem, 'controls'));
4020
+ }
3935
4021
  };
3936
4022
 
3937
4023
  var box;
@@ -3997,7 +4083,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3997
4083
  }
3998
4084
  }));
3999
4085
 
4000
- setElementDimension(data, hasControls);
4086
+
4001
4087
 
4002
4088
  box.insertBefore(elem);
4003
4089
 
@@ -4013,17 +4099,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
4013
4099
 
4014
4100
  mediaelement.setActive(elem, 'third', data);
4015
4101
 
4102
+ setElementDimension(data, hasControls);
4103
+
4016
4104
  $(elem)
4017
- .on({'updatemediaelementdimensions': setDimension})
4018
- .onWSOff('updateshadowdom', setDimension)
4019
- .on('remove', function(e){
4020
- if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
4021
- delete mediaelement.jarisEvent[data.id];
4022
- clearTimeout(localConnectionTimer);
4023
- clearTimeout(data.flashBlock);
4105
+ .on({
4106
+ 'updatemediaelementdimensions loadedmetadata emptied': setDimension,
4107
+ 'remove': function(e){
4108
+ if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
4109
+ delete mediaelement.jarisEvent[data.id];
4110
+ clearTimeout(localConnectionTimer);
4111
+ clearTimeout(data.flashBlock);
4112
+ }
4024
4113
  }
4025
- box.remove();
4026
4114
  })
4115
+ .onWSOff('updateshadowdom', setDimension)
4027
4116
  ;
4028
4117
  }
4029
4118
 
@@ -4329,6 +4418,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
4329
4418
  limitedTo: ['', 'auto', 'metadata', 'none']
4330
4419
  });
4331
4420
 
4421
+ webshims.reflectProperties('source', ['type', 'media']);
4422
+
4332
4423
 
4333
4424
  ['autoplay', 'controls'].forEach(function(name){
4334
4425
  webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
@@ -4364,6 +4455,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
4364
4455
  }
4365
4456
 
4366
4457
  }, 'prop');
4458
+ } else if(!('media' in document.createElement('source'))){
4459
+ webshims.reflectProperties('source', ['media']);
4367
4460
  }
4368
4461
 
4369
4462
  });