webshims-rails 0.4.7 → 1.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +15 -0
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/custom-validity.js +1 -1
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
  5. data/vendor/assets/javascripts/webshims/polyfiller.js +197 -166
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +1711 -1609
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +2575 -2253
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +2452 -1476
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +1405 -1159
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1316 -963
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +1862 -179
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +4327 -287
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +3887 -586
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2911 -2159
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +3425 -1730
  16. data/vendor/assets/javascripts/webshims/shims/combos/19.js +2854 -1203
  17. data/vendor/assets/javascripts/webshims/shims/combos/2.js +3351 -2130
  18. data/vendor/assets/javascripts/webshims/shims/combos/20.js +2426 -581
  19. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1915 -1574
  20. data/vendor/assets/javascripts/webshims/shims/combos/22.js +864 -2275
  21. data/vendor/assets/javascripts/webshims/shims/combos/23.js +609 -1811
  22. data/vendor/assets/javascripts/webshims/shims/combos/3.js +1655 -2736
  23. data/vendor/assets/javascripts/webshims/shims/combos/4.js +1037 -603
  24. data/vendor/assets/javascripts/webshims/shims/combos/5.js +3100 -773
  25. data/vendor/assets/javascripts/webshims/shims/combos/6.js +3631 -840
  26. data/vendor/assets/javascripts/webshims/shims/combos/7.js +3596 -1354
  27. data/vendor/assets/javascripts/webshims/shims/combos/8.js +1731 -188
  28. data/vendor/assets/javascripts/webshims/shims/combos/9.js +3243 -1431
  29. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +107 -18
  30. data/vendor/assets/javascripts/webshims/shims/es5.js +1 -0
  31. data/vendor/assets/javascripts/webshims/shims/form-core.js +553 -464
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +160 -154
  33. data/vendor/assets/javascripts/webshims/shims/form-message.js +73 -49
  34. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +18 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +161 -36
  36. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +2130 -813
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +206 -58
  38. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ar.js → formcfg-ar.js} +30 -0
  39. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ch-ZN.js → formcfg-ch-ZN.js} +31 -0
  40. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-de.txt → formcfg-de.txt} +50 -11
  41. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-el.js → formcfg-el.js} +31 -0
  42. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-en.txt → formcfg-en.txt} +44 -11
  43. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-es.js → formcfg-es.js} +31 -0
  44. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-fr.js → formcfg-fr.js} +31 -0
  45. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-he.js → formcfg-he.js} +31 -0
  46. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-hi.js → formcfg-hi.js} +31 -0
  47. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-hu.js → formcfg-hu.js} +31 -0
  48. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-it.js → formcfg-it.js} +31 -0
  49. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ja.js → formcfg-ja.js} +31 -0
  50. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-nl.js → formcfg-nl.js} +31 -0
  51. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-pt-PT.js → formcfg-pt-PT.js} +31 -0
  52. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ru.js → formcfg-ru.js} +31 -0
  53. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-sv.js → formcfg-sv.js} +32 -0
  54. data/vendor/assets/javascripts/webshims/shims/json-storage.js +16 -10
  55. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +155 -122
  56. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +76 -41
  57. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +8 -16
  58. data/vendor/assets/javascripts/webshims/shims/range-ui.js +388 -0
  59. data/vendor/assets/javascripts/webshims/shims/styles/config.rb +12 -0
  60. data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
  61. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1186 -0
  62. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +868 -548
  63. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/swfmini.js +497 -0
  66. data/vendor/assets/javascripts/webshims/shims/track-ui.js +3 -0
  67. data/vendor/assets/javascripts/webshims/shims/track.js +29 -29
  68. metadata +26 -125
  69. data/vendor/assets/javascripts/webshims/minified/extras/custom-validity.js +0 -1
  70. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +0 -1
  71. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +0 -1
  72. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +0 -1
  73. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/canvas2png.js +0 -1
  74. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.js +0 -1
  75. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.swf +0 -0
  76. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/proxy.php +0 -73
  77. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/save.php +0 -49
  78. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/canvas2png.js +0 -1
  79. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  81. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flashcanvas.js +0 -1
  82. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/proxy.php +0 -73
  83. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/save.php +0 -49
  84. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +0 -1
  85. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +0 -1
  86. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +0 -1
  87. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +0 -1
  88. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +0 -1
  89. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +0 -1
  90. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +0 -1
  91. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +0 -1
  92. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +0 -1
  93. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +0 -1
  94. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +0 -1
  95. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +0 -1
  96. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +0 -1
  97. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +0 -1
  98. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +0 -1
  99. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +0 -1
  100. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +0 -1
  101. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +0 -1
  102. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +0 -1
  103. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +0 -1
  104. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +0 -1
  105. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +0 -1
  106. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +0 -1
  107. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +0 -1
  108. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +0 -1
  109. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +0 -1
  110. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +0 -1
  111. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +0 -1
  112. data/vendor/assets/javascripts/webshims/minified/shims/details.js +0 -1
  113. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +0 -1
  114. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +0 -1
  115. data/vendor/assets/javascripts/webshims/minified/shims/excanvas.js +0 -1
  116. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +0 -1
  117. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +0 -1
  118. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +0 -1
  119. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +0 -1
  120. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +0 -1
  121. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +0 -1
  122. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +0 -1
  123. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +0 -1
  124. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ar.js +0 -1
  125. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ch-ZN.js +0 -1
  126. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +0 -33
  127. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-el.js +0 -1
  128. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +0 -34
  129. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-es.js +0 -1
  130. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-fr.js +0 -1
  131. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-he.js +0 -1
  132. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hi.js +0 -1
  133. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hu.js +0 -1
  134. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-it.js +0 -1
  135. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ja.js +0 -1
  136. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-nl.js +0 -1
  137. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-pt-PT.js +0 -1
  138. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ru.js +0 -1
  139. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +0 -1
  140. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +0 -1
  141. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/license.txt +0 -1
  142. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  143. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +0 -87
  144. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +0 -1
  145. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +0 -1
  146. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +0 -1
  147. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +0 -1
  148. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +0 -1
  149. data/vendor/assets/javascripts/webshims/minified/shims/styles/details-arrows.png +0 -0
  150. data/vendor/assets/javascripts/webshims/minified/shims/styles/forms.png +0 -0
  151. data/vendor/assets/javascripts/webshims/minified/shims/styles/polyfill-loader.gif +0 -0
  152. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +0 -1
  153. data/vendor/assets/javascripts/webshims/minified/shims/swf/JarisFLVPlayer.swf +0 -0
  154. data/vendor/assets/javascripts/webshims/minified/shims/swf/jwwebshims.swf +0 -0
  155. data/vendor/assets/javascripts/webshims/minified/shims/swf/localStorage.swf +0 -0
  156. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +0 -1
  157. data/vendor/assets/javascripts/webshims/minified/shims/track.js +0 -1
  158. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/README +0 -62
  159. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/README +0 -82
  160. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2872
  161. data/vendor/assets/javascripts/webshims/shims/combos/25.js +0 -2376
  162. data/vendor/assets/javascripts/webshims/shims/combos/26.js +0 -3009
  163. data/vendor/assets/javascripts/webshims/shims/combos/27.js +0 -4150
  164. data/vendor/assets/javascripts/webshims/shims/combos/59.js +0 -1747
  165. data/vendor/assets/javascripts/webshims/shims/jwplayer/license.txt +0 -1
  166. data/vendor/assets/javascripts/webshims/shims/jwplayer/player.swf +0 -0
  167. data/vendor/assets/javascripts/webshims/shims/jwplayer/readme.html +0 -87
  168. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +0 -972
@@ -2,9 +2,9 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
2
2
  "use strict";
3
3
 
4
4
  var mediaelement = webshims.mediaelement;
5
- var swfobject = window.swfobject;
5
+ var swfmini = window.swfmini;
6
6
  var hasNative = Modernizr.audio && Modernizr.video;
7
- var hasFlash = swfobject.hasFlashPlayerVersion('9.0.115');
7
+ var hasFlash = swfmini.hasFlashPlayerVersion('9.0.115');
8
8
  var loadedSwf = 0;
9
9
  var getProps = {
10
10
  paused: true,
@@ -366,11 +366,6 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
366
366
  var hidevents = hideEvtArray.map(function(evt){
367
367
  return evt +'.webshimspolyfill';
368
368
  }).join(' ');
369
- var opposite = {
370
- 'html5': 'third',
371
- 'third': 'html5'
372
- };
373
-
374
369
 
375
370
  var hidePlayerEvents = function(event){
376
371
  var data = webshims.data(event.target, 'mediaelement');
@@ -378,14 +373,8 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
378
373
  var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
379
374
  if( isNativeHTML5 == (data.activating == 'third') ){
380
375
  event.stopImmediatePropagation();
381
- if(stopEvents[event.type]){
382
- if(data.isActive != data.activating){
383
- $(event.target).pause();
384
- } else {
385
- data.isActive = opposite[data.isActive];
386
- $(event.target).pause();
387
- data.isActive = opposite[data.isActive];
388
- }
376
+ if(stopEvents[event.type] && data.isActive != data.activating){
377
+ $(event.target).pause();
389
378
  }
390
379
  }
391
380
  };
@@ -462,6 +451,31 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
462
451
  }
463
452
  };
464
453
 
454
+ var bufferSrc = (function(){
455
+ var preloads = {
456
+ '': 1,
457
+ 'auto': 1
458
+ };
459
+ return function(elem){
460
+ var preload = $.attr(elem, 'preload');
461
+ if(preload == null || preload == 'none' || $.prop(elem, 'autoplay')){
462
+ return false;
463
+ }
464
+ preload = $.prop(elem, 'preload');
465
+ return !!(preloads[preload] || (preload == 'metadata' && $(elem).is('.preload-in-doubt, video:not([poster])')));
466
+ };
467
+ })();
468
+
469
+ var regs = {
470
+ A: /&/g,
471
+ a: /&/g,
472
+ e: /\=/g,
473
+ q: /\?/g
474
+ },
475
+ replaceVar = function(val){
476
+ return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
477
+ };
478
+
465
479
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
466
480
  if(!hasFlash){
467
481
  setTimeout(function(){
@@ -475,17 +489,23 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
475
489
  } else {
476
490
  loadedSwf++;
477
491
  }
492
+ if(!data){
493
+ data = webshims.data(elem, 'mediaelement');
494
+ }
495
+
496
+ if($.attr(elem, 'height') || $.attr(elem, 'width')){
497
+ webshims.warn("width or height content attributes used. Webshims only uses CSS (computed styles or inline styles) to detect size of a video/audio");
498
+ }
499
+
478
500
  var isRtmp = canPlaySrc.type == 'audio/rtmp' || canPlaySrc.type == 'video/rtmp';
479
501
  var vars = $.extend({}, options.vars, {
480
- poster: $.attr(elem, 'poster') && $.prop(elem, 'poster') || '',
481
- source: canPlaySrc.streamId || canPlaySrc.srcProp,
482
- server: canPlaySrc.server || ''
502
+ poster: replaceVar($.attr(elem, 'poster') && $.prop(elem, 'poster') || ''),
503
+ source: replaceVar(canPlaySrc.streamId || canPlaySrc.srcProp),
504
+ server: replaceVar(canPlaySrc.server || '')
483
505
  });
484
506
  var elemVars = $(elem).data('vars') || {};
485
507
 
486
- if(!data){
487
- data = webshims.data(elem, 'mediaelement');
488
- }
508
+
489
509
 
490
510
  var hasControls = $.prop(elem, 'controls');
491
511
  var elemId = 'jarisplayer-'+ webshims.getID(elem);
@@ -505,6 +525,10 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
505
525
  },
506
526
  $(elem).data('attrs')
507
527
  );
528
+ var setDimension = function(){
529
+ setElementDimension(data, $.prop(elem, 'controls'));
530
+ };
531
+
508
532
  var box;
509
533
 
510
534
  if(data && data.swfCreated){
@@ -519,10 +543,6 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
519
543
  box = data.shadowElem;
520
544
  resetSwfProps(data);
521
545
  } else {
522
- var setDimensions = function(){
523
- setElementDimension(data, $.prop(elem, 'controls'));
524
- };
525
-
526
546
  box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
527
547
  .css({
528
548
  position: 'relative',
@@ -582,19 +602,25 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
582
602
  webshims.addShadowDom(elem, box);
583
603
  addMediaToStopEvents(elem);
584
604
  mediaelement.setActive(elem, 'third', data);
585
- $(document).on('updateshadowdom', setDimensions);
586
- $(elem).on('updatemediaelementdimensions', setDimensions);
605
+ $(elem).on('updatemediaelementdimensions', setDimension);
606
+ $(document).on('updateshadowdom', setDimension);
587
607
  }
588
608
 
589
609
  if(!mediaelement.jarisEvent[data.id]){
590
610
  mediaelement.jarisEvent[data.id] = function(jaris){
591
611
  if(jaris.type == 'ready'){
612
+ var onReady = function(){
613
+ if(data.api){
614
+ if(bufferSrc(elem)){
615
+ data.api.api_preload();
616
+ }
617
+ onEvent.ready(jaris, data);
618
+ }
619
+ };
592
620
  if(data.api){
593
- onEvent[jaris.type](jaris, data);
621
+ onReady();
594
622
  } else {
595
- setTimeout(function(){
596
- onEvent[jaris.type](jaris, data);
597
- }, 9);
623
+ setTimeout(onReady, 9);
598
624
  }
599
625
  } else {
600
626
  data.currentTime = jaris.position;
@@ -639,7 +665,8 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
639
665
  }
640
666
  options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
641
667
  clearTimeout(data.flashBlock);
642
- swfobject.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.0", false, vars, params, attrs, function(swfData){
668
+
669
+ swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
643
670
 
644
671
  if(swfData.success){
645
672
 
@@ -807,15 +834,22 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
807
834
  $(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
808
835
 
809
836
  if(data){
810
- webshims.warn("changing controls currently not fully supported with jaris player");
811
837
  if(nodeName == 'audio'){
812
838
  setElementDimension(data, boolProp);
813
839
  }
814
-
815
840
  queueSwfMethod(this, 'api_controls', [boolProp], data);
816
841
  }
817
842
  });
818
843
 
844
+ webshims.onNodeNamesPropertyModify(nodeName, 'preload', function(val){
845
+ var data = getSwfDataFromElem(this);
846
+
847
+
848
+ if(data && bufferSrc(this)){
849
+ queueSwfMethod(this, 'api_preload', [], data);
850
+ }
851
+ });
852
+
819
853
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
820
854
  });
821
855
 
@@ -825,6 +859,7 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
825
859
  object: 1,
826
860
  OBJECT: 1
827
861
  };
862
+
828
863
  $.cleanData = function(elems){
829
864
  var i, len, prop;
830
865
  if(elems && (len = elems.length) && loadedSwf){
@@ -837,13 +872,6 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
837
872
  elems[i].api_pause();
838
873
  } catch(er){}
839
874
  }
840
- try {
841
- for (prop in elems[i]) {
842
- if (typeof elems[i][prop] == "function") {
843
- elems[i][prop] = null;
844
- }
845
- }
846
- } catch(er){}
847
875
  }
848
876
  }
849
877
 
@@ -862,6 +890,13 @@ jQuery.webshims.register('mediaelement-jaris', function($, webshims, window, doc
862
890
  });
863
891
  });
864
892
 
893
+ webshims.defineNodeNamesProperty(['audio', 'video'], 'preload', {
894
+ reflect: true,
895
+ propType: 'enumarated',
896
+ defaultValue: '',
897
+ limitedTo: ['', 'auto', 'metadata', 'none']
898
+ });
899
+
865
900
 
866
901
  ['autoplay', 'controls'].forEach(function(name){
867
902
  webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
@@ -158,10 +158,6 @@ var addMediaToStopEvents = $.noop;
158
158
  var hidevents = hideEvtArray.map(function(evt){
159
159
  return evt +'.webshimspolyfill';
160
160
  }).join(' ');
161
- var opposite = {
162
- 'html5': 'third',
163
- 'third': 'html5'
164
- };
165
161
 
166
162
  var hidePlayerEvents = function(event){
167
163
  var data = webshims.data(event.target, 'mediaelement');
@@ -169,14 +165,8 @@ var addMediaToStopEvents = $.noop;
169
165
  var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
170
166
  if( isNativeHTML5 == (data.activating == 'third') ){
171
167
  event.stopImmediatePropagation();
172
- if(stopEvents[event.type]){
173
- if(data.isActive != data.activating){
174
- $(event.target).pause();
175
- } else {
176
- data.isActive = opposite[data.isActive];
177
- $(event.target).pause();
178
- data.isActive = opposite[data.isActive];
179
- }
168
+ if(stopEvents[event.type] && data.isActive != data.activating){
169
+ $(event.target).pause();
180
170
  }
181
171
  }
182
172
  };
@@ -310,6 +300,8 @@ var addYtAPI = function(mediaElm, elemId, data, ytID){
310
300
  data._ytAPI = new YT.Player(elemId, {
311
301
  height: '100%',
312
302
  width: '100%',
303
+ allowfullscreen: 'allowfullscreen',
304
+ webkitallowfullscreen: 'allowfullscreen',
313
305
  playerVars: {
314
306
  allowfullscreen: true,
315
307
  fs: 1,
@@ -406,10 +398,10 @@ mediaelement.createSWF = function(mediaElem, src, data){
406
398
  overflow: 'hidden'
407
399
  })
408
400
  ;
409
- var setDimensions = function(){
401
+ var setDimension = function(){
410
402
  setElementDimension(data);
411
403
  };
412
-
404
+
413
405
 
414
406
 
415
407
  data = webshims.data(mediaElem, 'mediaelement', webshims.objectCreate(playerStateObj, {
@@ -453,8 +445,8 @@ mediaelement.createSWF = function(mediaElem, src, data){
453
445
  addMediaToStopEvents(mediaElem);
454
446
 
455
447
  addYtAPI(mediaElem, elemId, data, ytID);
456
- $(document).on('updateshadowdom', setDimensions);
457
- $(mediaElem).on('updatemediaelementdimensions', setDimensions);
448
+ $(mediaElem).on('updatemediaelementdimensions', setDimension);
449
+ $(document).on('updateshadowdom', setDimension);
458
450
  };
459
451
 
460
452
  (function(){
@@ -0,0 +1,388 @@
1
+ (function($){
2
+
3
+ var id = 0;
4
+ var isNumber = function(string){
5
+ return (typeof string == 'number' || (string && string == string * 1));
6
+ };
7
+ var retDefault = function(val, def){
8
+ if(!(typeof val == 'number' || (val && val == val * 1))){
9
+ return def;
10
+ }
11
+ return val * 1;
12
+ };
13
+ var createOpts = ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex'];
14
+ var rangeProto = {
15
+ _create: function(){
16
+ var i;
17
+
18
+
19
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min" /><span class="ws-range-rail"><span class="ws-range-thumb" /></span>');
20
+ this.trail = $('.ws-range-rail', this.element);
21
+ this.range = $('.ws-range-min', this.element);
22
+ this.thumb = $('.ws-range-thumb', this.trail);
23
+
24
+ this.updateMetrics();
25
+
26
+ this.orig = this.options.orig;
27
+
28
+ for(i = 0; i < createOpts.length; i++){
29
+ this[createOpts[i]](this.options[createOpts[i]]);
30
+ }
31
+ this.value = this._value;
32
+ this.value(this.options.value);
33
+ this.initDataList();
34
+ this.element.data('rangeUi', this);
35
+ this.addBindings();
36
+ this._init = true;
37
+ },
38
+ value: $.noop,
39
+ _value: function(val, _noNormalize, animate){
40
+ var left, posDif;
41
+ var o = this.options;
42
+ var oVal = val;
43
+ var thumbStyle = {};
44
+ var rangeStyle = {};
45
+ if(!_noNormalize && parseFloat(val, 10) != val){
46
+ val = o.min + ((o.max - o.min) / 2);
47
+ }
48
+
49
+ if(!_noNormalize){
50
+ val = this.normalizeVal(val);
51
+ }
52
+ left = 100 * ((val - o.min) / (o.max - o.min));
53
+
54
+ this.options.value = val;
55
+ this.thumb.stop();
56
+ this.range.stop();
57
+
58
+ rangeStyle[this.dirs.width] = left+'%';
59
+ if(this.vertical){
60
+ left = Math.abs(left - 100);
61
+ }
62
+ thumbStyle[this.dirs.left] = left+'%';
63
+
64
+
65
+ if(!animate){
66
+ this.thumb.css(thumbStyle);
67
+ this.range.css(rangeStyle);
68
+ } else {
69
+ if(typeof animate != 'object'){
70
+ animate = {};
71
+ } else {
72
+ animate = $.extend({}, animate);
73
+ }
74
+ if(!animate.duration){
75
+ posDif = Math.abs(left - parseInt(this.thumb[0].style[this.dirs.left] || 50, 10));
76
+ animate.duration = Math.max(Math.min(999, posDif * 5), 99);
77
+ }
78
+ this.thumb.animate(thumbStyle, animate);
79
+ this.range.animate(rangeStyle, animate);
80
+ }
81
+ if(this.orig && (oVal != val || (!this._init && this.orig.value != val)) ){
82
+ this.options._change(val);
83
+ }
84
+ this.element.attr({
85
+ 'aria-valuenow': this.options.value,
86
+ 'aria-valuetext': this.options.textValue ? this.options.textValue(this.options.value) : this.options.options[this.options.value] || this.options.value
87
+ });
88
+ },
89
+ initDataList: function(){
90
+ if(this.orig){
91
+ var listTimer;
92
+ var that = this;
93
+ var updateList = function(){
94
+ $(that.orig)
95
+ .jProp('list')
96
+ .off('updateDatalist', updateList)
97
+ .on('updateDatalist', updateList)
98
+ ;
99
+ clearTimeout(listTimer);
100
+ listTimer = setTimeout(function(){
101
+ if(that.list){
102
+ that.list();
103
+ }
104
+ }, 9);
105
+
106
+ };
107
+
108
+ $(this.orig).on('listdatalistchange', updateList);
109
+ this.list();
110
+ }
111
+ },
112
+ list: function(opts){
113
+ var o = this.options;
114
+ var min = o.min;
115
+ var max = o.max;
116
+ var trail = this.trail;
117
+ var that = this;
118
+
119
+ this.element.attr({'aria-valuetext': o.options[o.value] || o.value});
120
+ $('.ws-range-ticks', trail).remove();
121
+
122
+
123
+ $(this.orig).jProp('list').find('option').each(function(){
124
+ o.options[$.prop(this, 'value')] = $.prop(this, 'label');
125
+ });
126
+
127
+ $.each(o.options, function(val, label){
128
+ if(!isNumber(val) || val < min || val > max){return;}
129
+ var left = 100 * ((val - min) / (max - min));
130
+ var title = o.showLabels ? ' title="'+ label +'"' : '';
131
+ if(that.vertical){
132
+ left = Math.abs(left - 100);
133
+ }
134
+ trail.append('<span class="ws-range-ticks"'+ title +' style="'+(that.dirs.left)+': '+left+'%;" />');
135
+ });
136
+ },
137
+ readonly: function(val){
138
+ val = !!val;
139
+ this.options.readonly = val;
140
+ this.element.attr('aria-readonly', ''+val);
141
+ },
142
+ disabled: function(val){
143
+ val = !!val;
144
+ this.options.disabled = val;
145
+ if(val){
146
+ this.element.attr({tabindex: -1, 'aria-disabled': 'true'});
147
+ } else {
148
+ this.element.attr({tabindex: this.options.tabindex, 'aria-disabled': 'false'});
149
+ }
150
+ },
151
+ tabindex: function(val){
152
+ this.options.tabindex = val;
153
+ if(!this.options.disabled){
154
+ this.element.attr({tabindex: val});
155
+ }
156
+ },
157
+ title: function(val){
158
+ this.element.prop('title', val);
159
+ },
160
+ min: function(val){
161
+ this.options.min = retDefault(val, 0);
162
+ this.value(this.options.value, true);
163
+ },
164
+ max: function(val){
165
+ this.options.max = retDefault(val, 100);
166
+ this.value(this.options.value, true);
167
+ },
168
+ step: function(val){
169
+ this.options.step = val == 'any' ? 'any' : retDefault(val, 1);
170
+ this.value(this.options.value);
171
+ },
172
+
173
+ normalizeVal: function(val){
174
+ var valModStep, alignValue, step;
175
+ var o = this.options;
176
+
177
+ if(val <= o.min){
178
+ val = o.min;
179
+ } else if(val >= o.max) {
180
+ val = o.max;
181
+ } else if(o.step != 'any'){
182
+ step = o.step;
183
+ valModStep = (val - o.min) % step;
184
+ alignValue = val - valModStep;
185
+
186
+ if ( Math.abs(valModStep) * 2 >= step ) {
187
+ alignValue += ( valModStep > 0 ) ? step : ( -step );
188
+ }
189
+ val = alignValue.toFixed(5) * 1;
190
+ }
191
+ return val;
192
+ },
193
+ doStep: function(factor, animate){
194
+ var step = retDefault(this.options.step, 1);
195
+ if(this.options.step == 'any'){
196
+ step = Math.min(step, (this.options.max - this.options.min) / 10);
197
+ }
198
+ this.value( this.options.value + (step * factor), false, animate );
199
+
200
+ },
201
+
202
+ getStepedValueFromPos: function(pos){
203
+ var val, valModStep, alignValue, step;
204
+
205
+ if(pos <= 0){
206
+ val = this.options[this.dirs.min];
207
+ } else if(pos > 100) {
208
+ val = this.options[this.dirs.max];
209
+ } else {
210
+ if(this.vertical){
211
+ pos = Math.abs(pos - 100);
212
+ }
213
+ val = ((this.options.max - this.options.min) * (pos / 100)) + this.options.min;
214
+ step = this.options.step;
215
+ if(step != 'any'){
216
+ valModStep = (val - this.options.min) % step;
217
+ alignValue = val - valModStep;
218
+
219
+ if ( Math.abs(valModStep) * 2 >= step ) {
220
+ alignValue += ( valModStep > 0 ) ? step : ( -step );
221
+ }
222
+ val = ((alignValue).toFixed(5)) * 1;
223
+
224
+ }
225
+ }
226
+
227
+ return val;
228
+ },
229
+ addBindings: function(){
230
+ var leftOffset, widgetUnits, hasFocus;
231
+ var that = this;
232
+ var o = this.options;
233
+
234
+ var eventTimer = (function(){
235
+ var events = {};
236
+ return {
237
+ init: function(name, curVal, fn){
238
+ if(!events[name]){
239
+ events[name] = {fn: fn};
240
+ if(that.orig){
241
+ $(that.orig).on(name, function(){
242
+ events[name].val = $.prop(that.orig, 'value');
243
+ });
244
+ }
245
+
246
+ }
247
+ events[name].val = curVal;
248
+ },
249
+ call: function(name, val){
250
+ if(events[name].val != val){
251
+ clearTimeout(events[name].timer);
252
+ events[name].val = val;
253
+ events[name].timer = setTimeout(function(){
254
+ events[name].fn(val, that);
255
+ }, 0);
256
+ }
257
+ }
258
+ };
259
+ })();
260
+
261
+ var setValueFromPos = function(e, animate){
262
+
263
+ var val = that.getStepedValueFromPos((e[that.dirs.mouse] - leftOffset) * widgetUnits);
264
+ if(val != o.value){
265
+ that.value(val, false, animate);
266
+ eventTimer.call('input', val);
267
+ }
268
+ };
269
+
270
+ var remove = function(e){
271
+ if(e && e.type == 'mouseup'){
272
+ eventTimer.call('input', o.value);
273
+ eventTimer.call('change', o.value);
274
+ }
275
+ that.element.removeClass('ws-active');
276
+ $(document).off('mousemove', setValueFromPos).off('mouseup', remove);
277
+ };
278
+ var add = function(e){
279
+ e.preventDefault();
280
+ $(document).off('mousemove', setValueFromPos).off('mouseup', remove);
281
+ if(!o.readonly && !o.disabled){
282
+ leftOffset = that.element.focus().addClass('ws-active').offset();
283
+ widgetUnits = that.element[that.dirs.width]();
284
+ if(!widgetUnits || !leftOffset){return;}
285
+ leftOffset = leftOffset[that.dirs.pos];
286
+ widgetUnits = 100 / (widgetUnits - ((that.thumb[that.dirs.outerWidth]() || 2) / 2));
287
+ setValueFromPos(e, o.animate);
288
+ $(document)
289
+ .on({
290
+ mouseup: remove,
291
+ mousemove: setValueFromPos
292
+ })
293
+ ;
294
+ e.stopPropagation();
295
+ }
296
+ };
297
+ var elementEvts = {
298
+ mousedown: add,
299
+ focus: function(e){
300
+ if(!o.disabled){
301
+ eventTimer.init('input', o.value);
302
+ eventTimer.init('change', o.value);
303
+ that.element.addClass('ws-focus');
304
+ }
305
+ hasFocus = true;
306
+ },
307
+ blur: function(e){
308
+ that.element.removeClass('ws-focus ws-active');
309
+ hasFocus = false;
310
+ eventTimer.init('input', o.value);
311
+ eventTimer.call('change', o.value);
312
+ },
313
+ keyup: function(){
314
+ that.element.removeClass('ws-active');
315
+ eventTimer.call('input', o.value);
316
+ eventTimer.call('change', o.value);
317
+ },
318
+
319
+ keydown: function(e){
320
+ var step = true;
321
+ var code = e.keyCode;
322
+ if(!o.readonly && !o.disabled){
323
+ if (code == 39 || code == 38) {
324
+ that.doStep(1);
325
+ } else if (code == 37 || code == 40) {
326
+ that.doStep(-1);
327
+ } else if (code == 33) {
328
+ that.doStep(10, o.animate);
329
+ } else if (code == 34) {
330
+ that.doStep(-10, o.animate);
331
+ } else if (code == 36) {
332
+ that.value(that.options.max, false, o.animate);
333
+ } else if (code == 35) {
334
+ that.value(that.options.min, false, o.animate);
335
+ } else {
336
+ step = false;
337
+ }
338
+ if (step) {
339
+ that.element.addClass('ws-active');
340
+ eventTimer.call('input', o.value);
341
+ e.preventDefault();
342
+ }
343
+ }
344
+ }
345
+ };
346
+
347
+ eventTimer.init('input', o.value, this.options.input);
348
+ eventTimer.init('change', o.value, this.options.change);
349
+
350
+ elementEvts[$.fn.mwheelIntent ? 'mwheelIntent' : 'mousewheel'] = function(e, delta){
351
+ if(delta && hasFocus && !o.readonly && !o.disabled){
352
+ that.doStep(delta);
353
+ e.preventDefault();
354
+ eventTimer.call('input', o.value);
355
+ }
356
+ };
357
+ this.element.on(elementEvts);
358
+ this.thumb.on({
359
+ mousedown: add
360
+ });
361
+ },
362
+ updateMetrics: function(){
363
+ var width = this.element.innerWidth();
364
+ this.vertical = (width && this.element.innerHeight() - width > 10);
365
+
366
+ this.dirs = this.vertical ?
367
+ {mouse: 'pageY', pos: 'top', min: 'max', max: 'min', left: 'top', width: 'height', outerWidth: 'outerHeight'} :
368
+ {mouse: 'pageX', pos: 'left', min: 'min', max: 'max', left: 'left', width: 'width', outerWidth: 'outerWidth'}
369
+ ;
370
+ this.element
371
+ [this.vertical ? 'addClass' : 'removeClass']('vertical-range')
372
+ [this.vertical ? 'addClass' : 'removeClass']('horizontal-range')
373
+ ;
374
+ }
375
+ };
376
+
377
+ $.fn.rangeUI = function(opts){
378
+ opts = $.extend({readonly: false, disabled: false, tabindex: 0, min: 0, step: 1, max: 100, value: 50, input: $.noop, change: $.noop, _change: $.noop, showLabels: true, options: {}}, opts);
379
+ return this.each(function(){
380
+ $.webshims.objectCreate(rangeProto, {
381
+ element: {
382
+ value: $(this)
383
+ }
384
+ }, opts);
385
+ });
386
+ };
387
+ jQuery.webshims.isReady('range-ui', true);
388
+ })(jQuery);