webshims-rails 1.14.6 → 1.15.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +145 -139
  4. data/vendor/assets/javascripts/webshims/shims/canvas-blob.js +97 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +13 -15
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +29 -28
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +2 -1
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +22 -10
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +22 -10
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +28 -43
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +41 -44
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2 -1
  13. data/vendor/assets/javascripts/webshims/shims/combos/2.js +40 -42
  14. data/vendor/assets/javascripts/webshims/shims/combos/21.js +98 -71
  15. data/vendor/assets/javascripts/webshims/shims/combos/22.js +9 -9
  16. data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -1
  17. data/vendor/assets/javascripts/webshims/shims/combos/25.js +141 -51
  18. data/vendor/assets/javascripts/webshims/shims/combos/27.js +66 -12
  19. data/vendor/assets/javascripts/webshims/shims/combos/28.js +1 -2
  20. data/vendor/assets/javascripts/webshims/shims/combos/3.js +27 -41
  21. data/vendor/assets/javascripts/webshims/shims/combos/30.js +27 -41
  22. data/vendor/assets/javascripts/webshims/shims/combos/31.js +27 -41
  23. data/vendor/assets/javascripts/webshims/shims/combos/34.js +36 -36
  24. data/vendor/assets/javascripts/webshims/shims/combos/4.js +27 -27
  25. data/vendor/assets/javascripts/webshims/shims/combos/5.js +2 -1
  26. data/vendor/assets/javascripts/webshims/shims/combos/6.js +2 -1
  27. data/vendor/assets/javascripts/webshims/shims/combos/7.js +40 -42
  28. data/vendor/assets/javascripts/webshims/shims/combos/8.js +40 -42
  29. data/vendor/assets/javascripts/webshims/shims/combos/9.js +29 -28
  30. data/vendor/assets/javascripts/webshims/shims/combos/98.js +4 -2
  31. data/vendor/assets/javascripts/webshims/shims/combos/99.js +4 -2
  32. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +27 -27
  33. data/vendor/assets/javascripts/webshims/shims/es6.js +23 -29
  34. data/vendor/assets/javascripts/webshims/shims/{filereader.js → filereader-xhr.js} +66 -12
  35. data/vendor/assets/javascripts/webshims/shims/form-core.js +0 -14
  36. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +2 -1
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1 -2
  38. data/vendor/assets/javascripts/webshims/shims/form-validation.js +18 -5
  39. data/vendor/assets/javascripts/webshims/shims/form-validators.js +15 -14
  40. data/vendor/assets/javascripts/webshims/shims/geolocation.js +41 -50
  41. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +4 -4
  42. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +2 -1
  43. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +4 -2
  44. data/vendor/assets/javascripts/webshims/shims/mediacapture-picker.js +42 -0
  45. data/vendor/assets/javascripts/webshims/shims/mediacapture.js +159 -0
  46. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +13 -1
  47. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +48 -12
  48. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +20 -8
  49. data/vendor/assets/javascripts/webshims/shims/{combos/26.js → moxie/js/moxie-html4.js} +2121 -1257
  50. data/vendor/assets/javascripts/webshims/shims/moxie/js/{moxie.js → moxie-swf.js} +1125 -1741
  51. data/vendor/assets/javascripts/webshims/shims/sticky.js +585 -0
  52. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +20 -0
  53. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +23 -0
  54. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +74 -34
  55. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +78 -31
  56. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +78 -31
  57. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/track-ui.js +214 -111
  59. data/vendor/assets/javascripts/webshims/shims/track.js +9 -9
  60. data/vendor/assets/javascripts/webshims/shims/usermedia-core.js +27 -0
  61. data/vendor/assets/javascripts/webshims/shims/usermedia-shim.js +34 -37
  62. metadata +9 -8
  63. data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -1262
  64. data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.min.xap +0 -0
@@ -64,11 +64,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
64
64
  webshims.assumeARIA = true;
65
65
 
66
66
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
67
- webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
68
- }
69
-
70
- if('debug' in webshims){
71
- webshims.error('Use webshims.setOptions("debug", true||false||"noCombo"); to debug flag');
67
+ webshims.error("IE browser modes are busted in IE10+. Make sure to run IE in edge mode (X-UA-Compatible). Please test your HTML/CSS/JS with a real IE version or at least IETester or similar tools. ");
72
68
  }
73
69
 
74
70
  if (!webshims.cfg.no$Switch) {
@@ -681,33 +677,37 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
681
677
  }
682
678
  },
683
679
  handler: (function(){
680
+ var evt;
684
681
  var trigger = function(){
685
- $(document).triggerHandler('updateshadowdom');
682
+ $(document).triggerHandler('updateshadowdom', [evt]);
686
683
  };
687
- return function(e){
688
- clearTimeout(resizeTimer);
689
- resizeTimer = setTimeout(function(){
690
- if(e.type == 'resize'){
691
- var width = $window.width();
692
- var height = $window.width();
684
+ var timed = function(){
685
+ if(evt && evt.type == 'resize'){
686
+ var width = $window.width();
687
+ var height = $window.width();
693
688
 
694
- if(height == lastHeight && width == lastWidth){
695
- return;
696
- }
697
- lastHeight = height;
698
- lastWidth = width;
699
-
700
- docObserve.height = docObserve.getHeight();
701
- docObserve.width = docObserve.getWidth();
689
+ if(height == lastHeight && width == lastWidth){
690
+ return;
702
691
  }
692
+ lastHeight = height;
693
+ lastWidth = width;
694
+ }
703
695
 
704
- if(window.requestAnimationFrame){
705
- requestAnimationFrame(trigger);
706
- } else {
707
- setTimeout(trigger, 0);
708
- }
709
-
710
- }, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
696
+ if(evt && evt.type != 'docresize'){
697
+ docObserve.height = docObserve.getHeight();
698
+ docObserve.width = docObserve.getWidth();
699
+ }
700
+
701
+ if(window.requestAnimationFrame){
702
+ requestAnimationFrame(trigger);
703
+ } else {
704
+ setTimeout(trigger, 0);
705
+ }
706
+ };
707
+ return function(e){
708
+ clearTimeout(resizeTimer);
709
+ evt = e;
710
+ resizeTimer = setTimeout(timed, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
711
711
  };
712
712
  })(),
713
713
  _create: function(){
@@ -1532,20 +1532,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1532
1532
  }
1533
1533
  });
1534
1534
 
1535
- $(function(){
1536
- var fileReaderReady = ('FileReader' in window && 'FormData' in window);
1537
- if(!fileReaderReady){
1538
- webshims.addReady(function(context){
1539
- if(!fileReaderReady && !modules.filereader.loaded && !modules.moxie.loaded){
1540
- if(context.querySelector('input.ws-filereader')){
1541
- webshims.reTest(['filereader', 'moxie']);
1542
- fileReaderReady = true;
1543
- }
1544
- }
1545
- });
1546
- }
1547
- });
1548
-
1549
1535
  if(options.addValidators && options.fastValidators){
1550
1536
  webshims.reTest(['form-validators', 'form-validation']);
1551
1537
  }
@@ -1653,7 +1639,6 @@ var isPlaceholderOptionSelected = function(select){
1653
1639
  };
1654
1640
 
1655
1641
  var emptyJ = $([]);
1656
- //TODO: cache + perftest
1657
1642
  var getGroupElements = function(elem){
1658
1643
  elem = $(elem);
1659
1644
  var name, form;
@@ -1723,7 +1708,7 @@ var validityRules = {
1723
1708
  $.each({tooShort: ['minLength', -1], tooLong: ['maxLength', 1]}, function(name, props){
1724
1709
  validityRules[name] = function(input, val, cache){
1725
1710
  //defaultValue is not the same as dirty flag, but very similiar
1726
- if(cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
1711
+ if(!val || cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
1727
1712
 
1728
1713
  cacheType(cache, input[0]);
1729
1714
 
@@ -287,11 +287,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
287
287
  webshims.assumeARIA = true;
288
288
 
289
289
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
290
- webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
291
- }
292
-
293
- if('debug' in webshims){
294
- webshims.error('Use webshims.setOptions("debug", true||false||"noCombo"); to debug flag');
290
+ webshims.error("IE browser modes are busted in IE10+. Make sure to run IE in edge mode (X-UA-Compatible). Please test your HTML/CSS/JS with a real IE version or at least IETester or similar tools. ");
295
291
  }
296
292
 
297
293
  if (!webshims.cfg.no$Switch) {
@@ -904,33 +900,37 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
904
900
  }
905
901
  },
906
902
  handler: (function(){
903
+ var evt;
907
904
  var trigger = function(){
908
- $(document).triggerHandler('updateshadowdom');
905
+ $(document).triggerHandler('updateshadowdom', [evt]);
909
906
  };
910
- return function(e){
911
- clearTimeout(resizeTimer);
912
- resizeTimer = setTimeout(function(){
913
- if(e.type == 'resize'){
914
- var width = $window.width();
915
- var height = $window.width();
907
+ var timed = function(){
908
+ if(evt && evt.type == 'resize'){
909
+ var width = $window.width();
910
+ var height = $window.width();
916
911
 
917
- if(height == lastHeight && width == lastWidth){
918
- return;
919
- }
920
- lastHeight = height;
921
- lastWidth = width;
922
-
923
- docObserve.height = docObserve.getHeight();
924
- docObserve.width = docObserve.getWidth();
912
+ if(height == lastHeight && width == lastWidth){
913
+ return;
925
914
  }
915
+ lastHeight = height;
916
+ lastWidth = width;
917
+ }
926
918
 
927
- if(window.requestAnimationFrame){
928
- requestAnimationFrame(trigger);
929
- } else {
930
- setTimeout(trigger, 0);
931
- }
932
-
933
- }, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
919
+ if(evt && evt.type != 'docresize'){
920
+ docObserve.height = docObserve.getHeight();
921
+ docObserve.width = docObserve.getWidth();
922
+ }
923
+
924
+ if(window.requestAnimationFrame){
925
+ requestAnimationFrame(trigger);
926
+ } else {
927
+ setTimeout(trigger, 0);
928
+ }
929
+ };
930
+ return function(e){
931
+ clearTimeout(resizeTimer);
932
+ evt = e;
933
+ resizeTimer = setTimeout(timed, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
934
934
  };
935
935
  })(),
936
936
  _create: function(){
@@ -1755,20 +1755,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1755
1755
  }
1756
1756
  });
1757
1757
 
1758
- $(function(){
1759
- var fileReaderReady = ('FileReader' in window && 'FormData' in window);
1760
- if(!fileReaderReady){
1761
- webshims.addReady(function(context){
1762
- if(!fileReaderReady && !modules.filereader.loaded && !modules.moxie.loaded){
1763
- if(context.querySelector('input.ws-filereader')){
1764
- webshims.reTest(['filereader', 'moxie']);
1765
- fileReaderReady = true;
1766
- }
1767
- }
1768
- });
1769
- }
1770
- });
1771
-
1772
1758
  if(options.addValidators && options.fastValidators){
1773
1759
  webshims.reTest(['form-validators', 'form-validation']);
1774
1760
  }
@@ -1876,7 +1862,6 @@ var isPlaceholderOptionSelected = function(select){
1876
1862
  };
1877
1863
 
1878
1864
  var emptyJ = $([]);
1879
- //TODO: cache + perftest
1880
1865
  var getGroupElements = function(elem){
1881
1866
  elem = $(elem);
1882
1867
  var name, form;
@@ -1946,7 +1931,7 @@ var validityRules = {
1946
1931
  $.each({tooShort: ['minLength', -1], tooLong: ['maxLength', 1]}, function(name, props){
1947
1932
  validityRules[name] = function(input, val, cache){
1948
1933
  //defaultValue is not the same as dirty flag, but very similiar
1949
- if(cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
1934
+ if(!val || cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
1950
1935
 
1951
1936
  cacheType(cache, input[0]);
1952
1937
 
@@ -3253,9 +3238,16 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3253
3238
  })();
3254
3239
  }
3255
3240
 
3241
+ if(window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype){
3242
+ CanvasRenderingContext2D.prototype.wsImageComplete = function(cb){
3243
+ cb.call(this, this);
3244
+ };
3245
+ }
3246
+
3256
3247
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
3257
3248
  var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
3258
3249
  var mediaelement = webshims.mediaelement;
3250
+ var allowYtLoading = false;
3259
3251
 
3260
3252
  mediaelement.parseRtmp = function(data){
3261
3253
  var src = data.src.split('://');
@@ -3351,7 +3343,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3351
3343
  return function(){
3352
3344
  if(loaded || !hasYt){return;}
3353
3345
  loaded = true;
3354
- webshims.loader.loadScript("https://www.youtube.com/player_api");
3346
+ if(allowYtLoading){
3347
+ webshims.loader.loadScript("https://www.youtube.com/player_api");
3348
+ }
3355
3349
  $(function(){
3356
3350
  webshims._polyfill(["mediaelement-yt"]);
3357
3351
  });
@@ -3537,6 +3531,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3537
3531
  }
3538
3532
  });
3539
3533
  if(!requested && hasYt && !mediaelement.createSWF){
3534
+ allowYtLoading = true;
3540
3535
  loadYt();
3541
3536
  }
3542
3537
  };
@@ -3701,6 +3696,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3701
3696
  .add(insertedElement.filter('video, audio'))
3702
3697
  .each(function(){
3703
3698
  if(!mediaelement.canNativePlaySrces(this)){
3699
+ allowYtLoading = true;
3704
3700
  loadThird();
3705
3701
  handleMedia = true;
3706
3702
  return false;
@@ -3723,6 +3719,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3723
3719
  mediaelement.loadDebugger();
3724
3720
  });
3725
3721
  }
3722
+
3726
3723
  //set native implementation ready, before swf api is retested
3727
3724
  if(hasNative){
3728
3725
  webshims.isReady('mediaelement-core', true);
@@ -2430,7 +2430,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2430
2430
 
2431
2431
  (function(){
2432
2432
  var picker = {};
2433
- var assumeVirtualKeyBoard = (window.Modernizr && (Modernizr.touchevents || Modernizr.touch)) || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
2433
+ var modern = window.Modernizr;
2434
+ var assumeVirtualKeyBoard = (modern && (modern.touchevents || modern.touch)) || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
2434
2435
  webshims.inlinePopover = {
2435
2436
  _create: function(){
2436
2437
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -287,11 +287,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
287
287
  webshims.assumeARIA = true;
288
288
 
289
289
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
290
- webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
291
- }
292
-
293
- if('debug' in webshims){
294
- webshims.error('Use webshims.setOptions("debug", true||false||"noCombo"); to debug flag');
290
+ webshims.error("IE browser modes are busted in IE10+. Make sure to run IE in edge mode (X-UA-Compatible). Please test your HTML/CSS/JS with a real IE version or at least IETester or similar tools. ");
295
291
  }
296
292
 
297
293
  if (!webshims.cfg.no$Switch) {
@@ -904,33 +900,37 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
904
900
  }
905
901
  },
906
902
  handler: (function(){
903
+ var evt;
907
904
  var trigger = function(){
908
- $(document).triggerHandler('updateshadowdom');
905
+ $(document).triggerHandler('updateshadowdom', [evt]);
909
906
  };
910
- return function(e){
911
- clearTimeout(resizeTimer);
912
- resizeTimer = setTimeout(function(){
913
- if(e.type == 'resize'){
914
- var width = $window.width();
915
- var height = $window.width();
907
+ var timed = function(){
908
+ if(evt && evt.type == 'resize'){
909
+ var width = $window.width();
910
+ var height = $window.width();
916
911
 
917
- if(height == lastHeight && width == lastWidth){
918
- return;
919
- }
920
- lastHeight = height;
921
- lastWidth = width;
922
-
923
- docObserve.height = docObserve.getHeight();
924
- docObserve.width = docObserve.getWidth();
912
+ if(height == lastHeight && width == lastWidth){
913
+ return;
925
914
  }
915
+ lastHeight = height;
916
+ lastWidth = width;
917
+ }
926
918
 
927
- if(window.requestAnimationFrame){
928
- requestAnimationFrame(trigger);
929
- } else {
930
- setTimeout(trigger, 0);
931
- }
932
-
933
- }, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
919
+ if(evt && evt.type != 'docresize'){
920
+ docObserve.height = docObserve.getHeight();
921
+ docObserve.width = docObserve.getWidth();
922
+ }
923
+
924
+ if(window.requestAnimationFrame){
925
+ requestAnimationFrame(trigger);
926
+ } else {
927
+ setTimeout(trigger, 0);
928
+ }
929
+ };
930
+ return function(e){
931
+ clearTimeout(resizeTimer);
932
+ evt = e;
933
+ resizeTimer = setTimeout(timed, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
934
934
  };
935
935
  })(),
936
936
  _create: function(){
@@ -1755,20 +1755,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1755
1755
  }
1756
1756
  });
1757
1757
 
1758
- $(function(){
1759
- var fileReaderReady = ('FileReader' in window && 'FormData' in window);
1760
- if(!fileReaderReady){
1761
- webshims.addReady(function(context){
1762
- if(!fileReaderReady && !modules.filereader.loaded && !modules.moxie.loaded){
1763
- if(context.querySelector('input.ws-filereader')){
1764
- webshims.reTest(['filereader', 'moxie']);
1765
- fileReaderReady = true;
1766
- }
1767
- }
1768
- });
1769
- }
1770
- });
1771
-
1772
1758
  if(options.addValidators && options.fastValidators){
1773
1759
  webshims.reTest(['form-validators', 'form-validation']);
1774
1760
  }
@@ -2134,9 +2120,16 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2134
2120
  })();
2135
2121
  }
2136
2122
 
2123
+ if(window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype){
2124
+ CanvasRenderingContext2D.prototype.wsImageComplete = function(cb){
2125
+ cb.call(this, this);
2126
+ };
2127
+ }
2128
+
2137
2129
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2138
2130
  var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
2139
2131
  var mediaelement = webshims.mediaelement;
2132
+ var allowYtLoading = false;
2140
2133
 
2141
2134
  mediaelement.parseRtmp = function(data){
2142
2135
  var src = data.src.split('://');
@@ -2232,7 +2225,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2232
2225
  return function(){
2233
2226
  if(loaded || !hasYt){return;}
2234
2227
  loaded = true;
2235
- webshims.loader.loadScript("https://www.youtube.com/player_api");
2228
+ if(allowYtLoading){
2229
+ webshims.loader.loadScript("https://www.youtube.com/player_api");
2230
+ }
2236
2231
  $(function(){
2237
2232
  webshims._polyfill(["mediaelement-yt"]);
2238
2233
  });
@@ -2418,6 +2413,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2418
2413
  }
2419
2414
  });
2420
2415
  if(!requested && hasYt && !mediaelement.createSWF){
2416
+ allowYtLoading = true;
2421
2417
  loadYt();
2422
2418
  }
2423
2419
  };
@@ -2582,6 +2578,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2582
2578
  .add(insertedElement.filter('video, audio'))
2583
2579
  .each(function(){
2584
2580
  if(!mediaelement.canNativePlaySrces(this)){
2581
+ allowYtLoading = true;
2585
2582
  loadThird();
2586
2583
  handleMedia = true;
2587
2584
  return false;
@@ -2604,6 +2601,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2604
2601
  mediaelement.loadDebugger();
2605
2602
  });
2606
2603
  }
2604
+
2607
2605
  //set native implementation ready, before swf api is retested
2608
2606
  if(hasNative){
2609
2607
  webshims.isReady('mediaelement-core', true);
@@ -92,52 +92,46 @@
92
92
  }
93
93
  return;
94
94
  }
95
- createAjax = function(){
96
- $.ajax({
97
- url: 'http://freegeoip.net/json/',
98
- dataType: 'jsonp',
99
- cache: true,
100
- jsonp: 'callback',
101
- success: function(data){
102
- locationAPIs--;
103
- if(!data){return;}
104
- pos = pos || {
105
- coords: {
106
- latitude: data.latitude,
107
- longitude: data.longitude,
108
- altitude: null,
109
- accuracy: 43000,
110
- altitudeAccuracy: null,
111
- heading: parseInt('NaN', 10),
112
- velocity: null
113
- },
114
- //extension similiar to FF implementation
115
- address: {
116
- city: data.city,
117
- country: data.country_name,
118
- countryCode: data.country_code,
119
- county: "",
120
- postalCode: data.zipcode,
121
- premises: "",
122
- region: data.region_name,
123
- street: "",
124
- streetNumber: ""
125
- }
126
- };
127
- endCallback();
128
- },
129
- error: function(){
130
- locationAPIs--;
131
- endCallback();
132
- }
133
- });
134
- };
135
- if($.ajax){
136
- createAjax();
137
- } else {
138
- webshims.ready('jajax', createAjax);
139
- webshims.loader.loadList(['jajax']);
140
- }
95
+
96
+ $.ajax({
97
+ url: 'http://freegeoip.net/json/',
98
+ dataType: 'jsonp',
99
+ cache: true,
100
+ jsonp: 'callback',
101
+ success: function(data){
102
+ locationAPIs--;
103
+ if(!data){return;}
104
+ pos = pos || {
105
+ coords: {
106
+ latitude: data.latitude,
107
+ longitude: data.longitude,
108
+ altitude: null,
109
+ accuracy: 43000,
110
+ altitudeAccuracy: null,
111
+ heading: parseInt('NaN', 10),
112
+ velocity: null
113
+ },
114
+ //extension similiar to FF implementation
115
+ address: {
116
+ city: data.city,
117
+ country: data.country_name,
118
+ countryCode: data.country_code,
119
+ county: "",
120
+ postalCode: data.zipcode,
121
+ premises: "",
122
+ region: data.region_name,
123
+ street: "",
124
+ streetNumber: ""
125
+ }
126
+ };
127
+ endCallback();
128
+ },
129
+ error: function(){
130
+ locationAPIs--;
131
+ endCallback();
132
+ }
133
+ });
134
+
141
135
  clearTimeout(googleTimer);
142
136
  if (!window.google || !window.google.loader) {
143
137
  googleTimer = setTimeout(function(){
@@ -179,10 +173,7 @@
179
173
  };
180
174
  return api;
181
175
  })());
182
-
183
- webshims.ready('WINDOWLOAD', function(){
184
- webshims.loader.loadList(['jajax']);
185
- });
176
+
186
177
  webshims.isReady('geolocation', true);
187
178
  })(webshims.$);
188
179
  ;webshims.register('details', function($, webshims, window, doc, undefined, options){
@@ -459,12 +450,13 @@
459
450
  };
460
451
 
461
452
 
462
- mediaelement.jarisEvent = {};
453
+ mediaelement.jarisEvent = mediaelement.jarisEvent || {};
463
454
  var localConnectionTimer;
464
455
  var onEvent = {
465
456
  onPlayPause: function(jaris, data, override){
466
457
  var playing, type;
467
458
  var idled = data.paused || data.ended;
459
+
468
460
  if(override == null){
469
461
  try {
470
462
  playing = data.api.api_get("isPlaying");
@@ -478,12 +470,15 @@
478
470
  type = data.paused ? 'pause' : 'play';
479
471
  data._ppFlag = true;
480
472
  trigger(data._elem, type);
473
+
474
+ }
475
+ if(!data.paused || playing == idled || playing == null){
481
476
  if(data.readyState < 3){
482
477
  setReadyState(3, data);
483
478
  }
484
- if(!data.paused){
485
- trigger(data._elem, 'playing');
486
- }
479
+ }
480
+ if(!data.paused){
481
+ trigger(data._elem, 'playing');
487
482
  }
488
483
  },
489
484
  onSeek: function(jaris, data){
@@ -1235,11 +1230,11 @@
1235
1230
  options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
1236
1231
  clearTimeout(data.flashBlock);
1237
1232
 
1238
- swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
1233
+ swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "11.3", false, vars, params, attrs, function(swfData){
1239
1234
  if(swfData.success){
1240
1235
  var fBlocker = function(){
1241
- if((!swfData.ref.parentNode && box[0].parentNode) || swfData.ref.style.display == "none"){
1242
- box.addClass('flashblocker-assumed');
1236
+ if((!swfData.ref.parentNode) || swfData.ref.style.display == "none"){
1237
+
1243
1238
  $(elem).trigger('flashblocker');
1244
1239
  webshims.warn("flashblocker assumed");
1245
1240
  }
@@ -1473,8 +1468,19 @@
1473
1468
  webshim.error('canvas.drawImage feature is needed. In IE8 flashvanvas pro can be used');
1474
1469
  }
1475
1470
 
1471
+ CanvasRenderingContext2D.prototype.wsImageComplete = function(cb){
1472
+ if(this._wsIsLoading){
1473
+ if(!this._wsLoadingCbs){
1474
+ this._wsLoadingCbs = [];
1475
+ }
1476
+ this._wsLoadingCbs.push(cb);
1477
+ } else {
1478
+ cb.call(this, this);
1479
+ }
1480
+ };
1481
+
1476
1482
  CanvasRenderingContext2D.prototype.drawImage = function(elem){
1477
- var data, img, args, imgData;
1483
+ var data, img, args, imgData, hadCachedImg;
1478
1484
  var context = this;
1479
1485
 
1480
1486
  if(isVideo[elem.nodeName] && (data = webshims.data(elem, 'mediaelement')) && data.isActive == 'third' && data.api.api_image){
@@ -1492,18 +1498,39 @@
1492
1498
  }
1493
1499
 
1494
1500
  args = slice.call(arguments, 1);
1495
- img = new Image();
1501
+
1502
+ if(options.canvasSync && data.canvasImg){
1503
+ args.unshift(data.canvasImg);
1504
+ _drawImage.apply(context, args);
1505
+ args = slice.call(arguments, 1);
1506
+ hadCachedImg = true;
1507
+ }
1508
+
1509
+ img = document.createElement('img');
1496
1510
 
1497
1511
  //todo find a performant sync way
1498
1512
  img.onload = function(){
1499
1513
  args.unshift(this);
1500
- _drawImage.apply(context, args);
1501
1514
  img.onload = null;
1515
+
1516
+ if(options.canvasSync){
1517
+ data.canvasImg = img;
1518
+ if(hadCachedImg && options.noDoubbleDraw){
1519
+ return;
1520
+ }
1521
+ }
1522
+ _drawImage.apply(context, args);
1523
+ context._wsIsLoading = false;
1524
+ if(context._wsLoadingCbs && context._wsLoadingCbs.length){
1525
+ while(context._wsLoadingCbs.length){
1526
+ context._wsLoadingCbs.shift().call(context, context);
1527
+ }
1528
+ }
1502
1529
  };
1503
1530
 
1504
1531
  img.src = 'data:image/jpeg;base64,'+imgData;
1505
-
1506
- if(img.complete){
1532
+ this._wsIsLoading = true;
1533
+ if(img.complete && img.onload){
1507
1534
  img.onload();
1508
1535
  }
1509
1536
  return;
@@ -1737,8 +1764,12 @@
1737
1764
  var lastCue = this.cues[this.cues.length-1];
1738
1765
  if(lastCue && lastCue.startTime > cue.startTime){
1739
1766
  webshims.error("cue startTime higher than previous cue's startTime");
1767
+ return;
1740
1768
  }
1741
1769
  }
1770
+ if(cue.startTime >= cue.endTime ){
1771
+ webshim.error('startTime >= endTime of cue: '+ cue.text);
1772
+ }
1742
1773
  if(cue.track && cue.track.removeCue){
1743
1774
  cue.track.removeCue(cue);
1744
1775
  }
@@ -1830,6 +1861,7 @@
1830
1861
  for(i = 0, len = added.length; i < len; i++){
1831
1862
  $([trackList]).triggerHandler($.Event({type: 'addtrack', track: added[i]}));
1832
1863
  }
1864
+ //todo: remove
1833
1865
  if(baseData.scriptedTextTracks || removed.length){
1834
1866
  $(this).triggerHandler('updatetrackdisplay');
1835
1867
  }
@@ -1846,7 +1878,7 @@
1846
1878
  setTimeout(function(){
1847
1879
  $(track).closest('audio, video').triggerHandler('updatetrackdisplay');
1848
1880
  trackData.isTriggering = false;
1849
- }, 1);
1881
+ }, 9);
1850
1882
  }
1851
1883
  };
1852
1884
  var isDefaultTrack = (function(){
@@ -2039,15 +2071,10 @@
2039
2071
  error: error
2040
2072
  });
2041
2073
  };
2042
- if($.ajax && $.ajaxSettings.xhr){
2043
- if(isDisabled){
2044
- setTimeout(createAjax, loadingTracks * 2);
2045
- } else {
2046
- createAjax();
2047
- }
2074
+ if(isDisabled){
2075
+ setTimeout(createAjax, loadingTracks * 2);
2048
2076
  } else {
2049
- webshims.ready('jajax', createAjax);
2050
- webshims.loader.loadList(['jajax']);
2077
+ createAjax();
2051
2078
  }
2052
2079
  } catch(er){
2053
2080
  error();