webshims-rails 1.12.5 → 1.12.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
  23. data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
  24. data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
  25. data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
  26. data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
  48. data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
  49. data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
  50. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
  51. data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
  53. data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
  55. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
  56. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
  63. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
  72. metadata +12 -5
  73. data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
  74. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -221,7 +221,65 @@ var swfmini = function() {
221
221
  }();
222
222
 
223
223
  webshims.isReady('swfmini', true);
224
- ;//DOM-Extension helper
224
+ ;
225
+ //this might was already extended by ES5 shim feature
226
+ (function($){
227
+ "use strict";
228
+ var webshims = window.webshims;
229
+ if(webshims.defineProperties){return;}
230
+ var defineProperty = 'defineProperty';
231
+ var has = Object.prototype.hasOwnProperty;
232
+ var descProps = ['configurable', 'enumerable', 'writable'];
233
+ var extendUndefined = function(prop){
234
+ for(var i = 0; i < 3; i++){
235
+ if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
236
+ prop[descProps[i]] = true;
237
+ }
238
+ }
239
+ };
240
+
241
+ var extendProps = function(props){
242
+ if(props){
243
+ for(var i in props){
244
+ if(has.call(props, i)){
245
+ extendUndefined(props[i]);
246
+ }
247
+ }
248
+ }
249
+ };
250
+
251
+ if(Object.create){
252
+ webshims.objectCreate = function(proto, props, opts){
253
+ extendProps(props);
254
+ var o = Object.create(proto, props);
255
+ if(opts){
256
+ o.options = $.extend(true, {}, o.options || {}, opts);
257
+ opts = o.options;
258
+ }
259
+ if(o._create && $.isFunction(o._create)){
260
+ o._create(opts);
261
+ }
262
+ return o;
263
+ };
264
+ }
265
+
266
+ if(Object[defineProperty]){
267
+ webshims[defineProperty] = function(obj, prop, desc){
268
+ extendUndefined(desc);
269
+ return Object[defineProperty](obj, prop, desc);
270
+ };
271
+ }
272
+ if(Object.defineProperties){
273
+ webshims.defineProperties = function(obj, props){
274
+ extendProps(props);
275
+ return Object.defineProperties(obj, props);
276
+ };
277
+ }
278
+ webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
279
+
280
+ webshims.getPrototypeOf = Object.getPrototypeOf;
281
+ })(window.webshims.$);
282
+ //DOM-Extension helper
225
283
  webshims.register('dom-extend', function($, webshims, window, document, undefined){
226
284
  "use strict";
227
285
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
@@ -856,6 +914,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
856
914
  this.width = docObserve.getWidth();
857
915
  setInterval(this.test, 999);
858
916
  $(this.test);
917
+ if($.support.boxSizing == null){
918
+ $(function(){
919
+ if($.support.boxSizing){
920
+ docObserve.handler({type: 'boxsizing'});
921
+ }
922
+ });
923
+ }
859
924
  webshims.ready('WINDOWLOAD', this.test);
860
925
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
861
926
  $(window).on('resize', this.handler);
@@ -867,13 +932,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
867
932
  webshims.docObserve = function(){
868
933
  webshims.ready('DOM', function(){
869
934
  docObserve.start();
870
- if($.support.boxSizing == null){
871
- $(function(){
872
- if($.support.boxSizing){
873
- docObserve.handler({type: 'boxsizing'});
874
- }
875
- });
876
- }
935
+
877
936
  });
878
937
  };
879
938
  return function(nativeElem, shadowElem, opts){
@@ -1404,27 +1463,27 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1404
1463
  /*
1405
1464
  * Selectors for all browsers
1406
1465
  */
1407
- var rElementsGroup = /^(?:form|fieldset)$/i;
1408
- var hasInvalid = function(elem){
1409
- var ret = false;
1410
- $(elem).jProp('elements').each(function(){
1411
- if(!rElementsGroup.test(this.nodeName || '')){
1412
- ret = $(this).is(':invalid');
1413
- if(ret){
1414
- return false;
1415
- }
1416
- }
1417
-
1418
- });
1419
- return ret;
1420
- };
1421
1466
 
1422
1467
  var extendSels = function(){
1423
1468
  var matches, matchesOverride;
1424
1469
  var exp = $.expr[":"];
1470
+ var rElementsGroup = /^(?:form|fieldset)$/i;
1471
+ var hasInvalid = function(elem){
1472
+ var ret = false;
1473
+ $(elem).jProp('elements').each(function(){
1474
+ if(!rElementsGroup.test(this.nodeName || '')){
1475
+ ret = exp.invalid(this);
1476
+ if(ret){
1477
+ return false;
1478
+ }
1479
+ }
1480
+
1481
+ });
1482
+ return ret;
1483
+ };
1425
1484
  $.extend(exp, {
1426
1485
  "valid-element": function(elem){
1427
- return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
1486
+ return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) : !!($.prop(elem, 'willValidate') && isValid(elem));
1428
1487
  },
1429
1488
  "invalid-element": function(elem){
1430
1489
  return rElementsGroup.test(elem.nodeName || '') ? hasInvalid(elem) : !!($.prop(elem, 'willValidate') && !isValid(elem));
@@ -1479,27 +1538,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1479
1538
  };
1480
1539
  }
1481
1540
  };
1541
+ var formExtras = {
1542
+ noAutoCallback: true,
1543
+ options: options
1544
+ };
1545
+ var addModule = webshims.loader.addModule;
1546
+ var lazyLoadProxy = function(obj, fn, args){
1547
+ lazyLoad();
1548
+ webshims.ready('form-validation', function(){
1549
+ obj[fn].apply(obj, args);
1550
+ });
1551
+ };
1552
+
1553
+ var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1554
+ var poCFG = webshims.cfg.wspopover;
1555
+
1556
+ addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
1557
+
1558
+ addModule('form-validators', $.extend({}, formExtras));
1482
1559
 
1483
1560
  if($.expr.filters){
1484
1561
  extendSels();
1485
1562
  } else {
1486
1563
  webshims.ready('sizzle', extendSels);
1487
1564
  }
1488
-
1489
-
1565
+
1490
1566
  webshims.triggerInlineForm = function(elem, event){
1491
1567
  $(elem).trigger(event);
1492
1568
  };
1493
1569
 
1494
- var lazyLoadProxy = function(obj, fn, args){
1495
- lazyLoad();
1496
- webshims.ready('form-validation', function(){
1497
- obj[fn].apply(obj, args);
1498
- });
1499
- };
1500
-
1501
- var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1502
- var poCFG = webshims.cfg.wspopover;
1570
+
1503
1571
  if(!poCFG.position && poCFG.position !== false){
1504
1572
  poCFG.position = {
1505
1573
  at: 'left bottom',
@@ -1621,13 +1689,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1621
1689
 
1622
1690
  webshims.ready('WINDOWLOAD', lazyLoad);
1623
1691
 
1624
- if(modules['form-number-date-ui'].loaded && modules['form-number-date-api'].test()){
1692
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
1625
1693
  webshims.isReady('form-number-date-ui', true);
1626
1694
  }
1627
1695
  });
1628
1696
  ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
1629
1697
  "use strict";
1630
- var doc = document;
1631
1698
  var lazyLoad = function(name){
1632
1699
  if(!name || typeof name != 'string'){
1633
1700
  name = 'DOM';
@@ -1922,7 +1989,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1922
1989
  initializeDatalist();
1923
1990
  })();
1924
1991
 
1925
- });;(function(Modernizr, webshims){
1992
+ });
1993
+ ;(function(Modernizr, webshims){
1926
1994
  "use strict";
1927
1995
  var hasNative = Modernizr.audio && Modernizr.video;
1928
1996
  var supportsLoop = false;
@@ -1939,7 +2007,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1939
2007
 
1940
2008
  var wsCfg = webshims.cfg;
1941
2009
  var options = wsCfg.mediaelement;
1942
- var hasFullTrackSupport;
1943
2010
  var hasSwf;
1944
2011
  if(!options){
1945
2012
  webshims.error("mediaelement wasn't implemented but loaded");
@@ -1981,11 +2048,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1981
2048
  }
1982
2049
  })();
1983
2050
  }
1984
- hasFullTrackSupport = Modernizr.track && !bugs.track;
1985
2051
 
1986
2052
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
1987
2053
  hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
1988
- $('html').addClass(hasSwf ? 'swf' : 'no-swf');
1989
2054
  var mediaelement = webshims.mediaelement;
1990
2055
 
1991
2056
  mediaelement.parseRtmp = function(data){
@@ -2364,6 +2429,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2364
2429
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
2365
2430
  supLoad.prop._supvalue.apply(this, arguments);
2366
2431
  }
2432
+ if(!loadTrackUi.loaded && $('track', this).length){
2433
+ loadTrackUi();
2434
+ }
2367
2435
  $(this).triggerHandler('wsmediareload');
2368
2436
  }
2369
2437
  }
@@ -2434,13 +2502,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2434
2502
  }
2435
2503
  };
2436
2504
 
2437
- if(hasFullTrackSupport){
2438
- webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
2439
- get: function(){
2440
- return this._shimActiveCues || this.activeCues;
2441
- }
2442
- });
2443
- }
2505
+
2444
2506
  //set native implementation ready, before swf api is retested
2445
2507
  if(hasNative){
2446
2508
  webshims.isReady('mediaelement-core', true);
@@ -2,7 +2,9 @@
2
2
  // vim: ts=4 sts=4 sw=4 expandtab
3
3
 
4
4
  (function () {
5
-
5
+ setTimeout(function(){
6
+ webshims.isReady('es5', true);
7
+ });
6
8
  /**
7
9
  * Brings an environment as close to ECMAScript 5 compliance
8
10
  * as is possible with the facilities of erstwhile engines.
@@ -1441,10 +1443,69 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
1441
1443
  };
1442
1444
 
1443
1445
  }
1446
+ webshims.isReady('es5', true);
1444
1447
  })(webshims.$, webshims);
1445
1448
 
1446
1449
 
1447
- ;//DOM-Extension helper
1450
+ ;
1451
+ //this might was already extended by ES5 shim feature
1452
+ (function($){
1453
+ "use strict";
1454
+ var webshims = window.webshims;
1455
+ if(webshims.defineProperties){return;}
1456
+ var defineProperty = 'defineProperty';
1457
+ var has = Object.prototype.hasOwnProperty;
1458
+ var descProps = ['configurable', 'enumerable', 'writable'];
1459
+ var extendUndefined = function(prop){
1460
+ for(var i = 0; i < 3; i++){
1461
+ if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
1462
+ prop[descProps[i]] = true;
1463
+ }
1464
+ }
1465
+ };
1466
+
1467
+ var extendProps = function(props){
1468
+ if(props){
1469
+ for(var i in props){
1470
+ if(has.call(props, i)){
1471
+ extendUndefined(props[i]);
1472
+ }
1473
+ }
1474
+ }
1475
+ };
1476
+
1477
+ if(Object.create){
1478
+ webshims.objectCreate = function(proto, props, opts){
1479
+ extendProps(props);
1480
+ var o = Object.create(proto, props);
1481
+ if(opts){
1482
+ o.options = $.extend(true, {}, o.options || {}, opts);
1483
+ opts = o.options;
1484
+ }
1485
+ if(o._create && $.isFunction(o._create)){
1486
+ o._create(opts);
1487
+ }
1488
+ return o;
1489
+ };
1490
+ }
1491
+
1492
+ if(Object[defineProperty]){
1493
+ webshims[defineProperty] = function(obj, prop, desc){
1494
+ extendUndefined(desc);
1495
+ return Object[defineProperty](obj, prop, desc);
1496
+ };
1497
+ }
1498
+ if(Object.defineProperties){
1499
+ webshims.defineProperties = function(obj, props){
1500
+ extendProps(props);
1501
+ return Object.defineProperties(obj, props);
1502
+ };
1503
+ }
1504
+ webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
1505
+
1506
+ webshims.getPrototypeOf = Object.getPrototypeOf;
1507
+ })(window.webshims.$);
1508
+ //DOM-Extension helper
1448
1509
  webshims.register('dom-extend', function($, webshims, window, document, undefined){
1449
1510
  "use strict";
1450
1511
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
@@ -2079,6 +2140,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2079
2140
  this.width = docObserve.getWidth();
2080
2141
  setInterval(this.test, 999);
2081
2142
  $(this.test);
2143
+ if($.support.boxSizing == null){
2144
+ $(function(){
2145
+ if($.support.boxSizing){
2146
+ docObserve.handler({type: 'boxsizing'});
2147
+ }
2148
+ });
2149
+ }
2082
2150
  webshims.ready('WINDOWLOAD', this.test);
2083
2151
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
2084
2152
  $(window).on('resize', this.handler);
@@ -2090,13 +2158,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2090
2158
  webshims.docObserve = function(){
2091
2159
  webshims.ready('DOM', function(){
2092
2160
  docObserve.start();
2093
- if($.support.boxSizing == null){
2094
- $(function(){
2095
- if($.support.boxSizing){
2096
- docObserve.handler({type: 'boxsizing'});
2097
- }
2098
- });
2099
- }
2161
+
2100
2162
  });
2101
2163
  };
2102
2164
  return function(nativeElem, shadowElem, opts){
@@ -2593,7 +2655,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2593
2655
 
2594
2656
  var wsCfg = webshims.cfg;
2595
2657
  var options = wsCfg.mediaelement;
2596
- var hasFullTrackSupport;
2597
2658
  var hasSwf;
2598
2659
  if(!options){
2599
2660
  webshims.error("mediaelement wasn't implemented but loaded");
@@ -2635,11 +2696,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2635
2696
  }
2636
2697
  })();
2637
2698
  }
2638
- hasFullTrackSupport = Modernizr.track && !bugs.track;
2639
2699
 
2640
2700
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2641
2701
  hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
2642
- $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2643
2702
  var mediaelement = webshims.mediaelement;
2644
2703
 
2645
2704
  mediaelement.parseRtmp = function(data){
@@ -3018,6 +3077,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3018
3077
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
3019
3078
  supLoad.prop._supvalue.apply(this, arguments);
3020
3079
  }
3080
+ if(!loadTrackUi.loaded && $('track', this).length){
3081
+ loadTrackUi();
3082
+ }
3021
3083
  $(this).triggerHandler('wsmediareload');
3022
3084
  }
3023
3085
  }
@@ -3088,13 +3150,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3088
3150
  }
3089
3151
  };
3090
3152
 
3091
- if(hasFullTrackSupport){
3092
- webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
3093
- get: function(){
3094
- return this._shimActiveCues || this.activeCues;
3095
- }
3096
- });
3097
- }
3153
+
3098
3154
  //set native implementation ready, before swf api is retested
3099
3155
  if(hasNative){
3100
3156
  webshims.isReady('mediaelement-core', true);
@@ -3864,7 +3920,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3864
3920
  box.insertBefore(elem);
3865
3921
 
3866
3922
  if(hasNative){
3867
- $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted')});
3923
+ $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
3868
3924
  }
3869
3925
 
3870
3926
  webshims.addShadowDom(elem, box);
@@ -3902,6 +3958,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3902
3958
  if(jaris.type == 'ready'){
3903
3959
  var onReady = function(){
3904
3960
  if(data.api){
3961
+ if(!data.paused){
3962
+ data.api.api_play();
3963
+ }
3905
3964
  if(bufferSrc(elem)){
3906
3965
  data.api.api_preload();
3907
3966
  }
@@ -1,5 +1,9 @@
1
1
  (function($){
2
- if(navigator.geolocation){return;}
2
+ var webshims = window.webshims;
3
+
4
+ setTimeout(function(){
5
+ webshims.isReady('geolocation', true);
6
+ });
3
7
  var domWrite = function(){
4
8
  setTimeout(function(){
5
9
  throw('document.write is overwritten by geolocation shim. This method is incompatible with this plugin');
@@ -8,7 +12,10 @@
8
12
  id = 0
9
13
  ;
10
14
  var geoOpts = webshims.cfg.geolocation || {};
11
- navigator.geolocation = (function(){
15
+ if(!navigator.geolocation){
16
+ navigator.geolocation = {};
17
+ }
18
+ $.extend(navigator.geolocation, (function(){
12
19
  var pos;
13
20
  var api = {
14
21
  getCurrentPosition: function(success, error, opts){
@@ -171,7 +178,7 @@
171
178
  return id;
172
179
  };
173
180
  return api;
174
- })();
181
+ })());
175
182
 
176
183
  webshims.ready('WINDOWLOAD', function(){
177
184
  webshims.loader.loadList(['jajax']);
@@ -1083,7 +1090,7 @@
1083
1090
  box.insertBefore(elem);
1084
1091
 
1085
1092
  if(hasNative){
1086
- $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted')});
1093
+ $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
1087
1094
  }
1088
1095
 
1089
1096
  webshims.addShadowDom(elem, box);
@@ -1121,6 +1128,9 @@
1121
1128
  if(jaris.type == 'ready'){
1122
1129
  var onReady = function(){
1123
1130
  if(data.api){
1131
+ if(!data.paused){
1132
+ data.api.api_play();
1133
+ }
1124
1134
  if(bufferSrc(elem)){
1125
1135
  data.api.api_preload();
1126
1136
  }
@@ -1595,12 +1605,8 @@
1595
1605
  "use strict";
1596
1606
  var mediaelement = webshims.mediaelement;
1597
1607
  var id = new Date().getTime();
1598
- var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
1599
1608
  //descriptions are not really shown, but they are inserted into the dom
1600
1609
  var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
1601
- var notImplemented = function(){
1602
- webshims.error('not implemented yet');
1603
- };
1604
1610
  var dummyTrack = $('<track />');
1605
1611
  var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
1606
1612
  var createEventTarget = function(obj){
@@ -1702,9 +1708,7 @@
1702
1708
  };
1703
1709
  var copyProps = ['kind', 'label', 'srclang'];
1704
1710
  var copyName = {srclang: 'language'};
1705
-
1706
- var owns = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
1707
-
1711
+
1708
1712
  var updateMediaTrackList = function(baseData, trackList){
1709
1713
  var removed = [];
1710
1714
  var added = [];
@@ -1807,60 +1811,44 @@
1807
1811
  };
1808
1812
  })();
1809
1813
  var emptyDiv = $('<div />')[0];
1814
+
1810
1815
  function VTTCue(startTime, endTime, text){
1811
1816
  if(arguments.length != 3){
1812
1817
  webshims.error("wrong arguments.length for VTTCue.constructor");
1813
1818
  }
1814
-
1819
+
1815
1820
  this.startTime = startTime;
1816
1821
  this.endTime = endTime;
1817
1822
  this.text = text;
1818
-
1819
-
1820
- createEventTarget(this);
1821
- }
1822
-
1823
- VTTCue.prototype = {
1824
-
1825
- onenter: null,
1826
- onexit: null,
1827
- pauseOnExit: false,
1828
- getCueAsHTML: function(){
1823
+ this.onenter = null;
1824
+ this.onexit = null;
1825
+ this.pauseOnExit = false;
1826
+ this.track = null;
1827
+ this.id = null;
1828
+ this.getCueAsHTML = (function(){
1829
1829
  var lastText = "";
1830
1830
  var parsedText = "";
1831
- var fragment = document.createDocumentFragment();
1832
- var fn;
1833
- if(!owns(this, 'getCueAsHTML')){
1834
- fn = this.getCueAsHTML = function(){
1835
- var i, len;
1836
- if(lastText != this.text){
1837
- lastText = this.text;
1838
- parsedText = mediaelement.parseCueTextToHTML(lastText);
1839
- emptyDiv.innerHTML = parsedText;
1840
-
1841
- for(i = 0, len = emptyDiv.childNodes.length; i < len; i++){
1842
- fragment.appendChild(emptyDiv.childNodes[i].cloneNode(true));
1843
- }
1831
+ var fragment;
1832
+
1833
+ return function(){
1834
+ var i, len;
1835
+ if(!fragment){
1836
+ fragment = document.createDocumentFragment();
1837
+ }
1838
+ if(lastText != this.text){
1839
+ lastText = this.text;
1840
+ parsedText = mediaelement.parseCueTextToHTML(lastText);
1841
+ emptyDiv.innerHTML = parsedText;
1842
+
1843
+ for(i = 0, len = emptyDiv.childNodes.length; i < len; i++){
1844
+ fragment.appendChild(emptyDiv.childNodes[i].cloneNode(true));
1844
1845
  }
1845
- return fragment.cloneNode(true);
1846
- };
1847
-
1848
- }
1849
- return fn ? fn.apply(this, arguments) : fragment.cloneNode(true);
1850
- },
1851
- track: null,
1852
-
1853
-
1854
- id: ''
1855
- //todo-->
1856
- // ,
1857
- // snapToLines: true,
1858
- // line: 'auto',
1859
- // size: 100,
1860
- // position: 50,
1861
- // vertical: '',
1862
- // align: 'middle'
1863
- };
1846
+ }
1847
+ return fragment.cloneNode(true);
1848
+ };
1849
+
1850
+ })();
1851
+ }
1864
1852
 
1865
1853
  window.VTTCue = VTTCue;
1866
1854
  window.TextTrackCue = function(){
@@ -1911,14 +1899,15 @@
1911
1899
  })();
1912
1900
 
1913
1901
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
1914
- var loadEvents = 'play playing updatetrackdisplay';
1902
+ var loadEvents = 'play playing';
1915
1903
  var obj = trackData.track;
1916
1904
  var load = function(){
1917
1905
  var error, ajax, createAjax;
1918
-
1919
1906
  var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
1907
+
1920
1908
  if(src){
1921
- $(mediaelem).off(loadEvents, load);
1909
+ $(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
1910
+
1922
1911
  if(!trackData.readyState){
1923
1912
  error = function(){
1924
1913
  trackData.readyState = 3;
@@ -1952,7 +1941,7 @@
1952
1941
  error: error
1953
1942
  });
1954
1943
  };
1955
- if($.ajax){
1944
+ if($.ajax && $.ajaxSettings.xhr){
1956
1945
  createAjax();
1957
1946
  } else {
1958
1947
  webshims.ready('jajax', createAjax);
@@ -1970,11 +1959,15 @@
1970
1959
  obj._shimActiveCues = null;
1971
1960
  obj.activeCues = null;
1972
1961
  obj.cues = null;
1973
- $(mediaelem).off(loadEvents, load);
1962
+
1974
1963
  $(mediaelem).on(loadEvents, load);
1975
1964
  if(_default){
1976
1965
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
1977
- load();
1966
+ webshims.ready('WINDOWLOAD', load);
1967
+ } else {
1968
+ webshims.ready('WINDOWLOAD', function(){
1969
+ $(mediaelem).on('updatetrackdisplay', load);
1970
+ });
1978
1971
  }
1979
1972
  };
1980
1973
 
@@ -2003,7 +1996,6 @@
2003
1996
 
2004
1997
 
2005
1998
  if(track.nodeName){
2006
-
2007
1999
  if(supportTrackMod){
2008
2000
  copyProps.forEach(function(copyProp){
2009
2001
  webshims.defineProperty(obj, copyName[copyProp] || copyProp, {
@@ -2038,8 +2030,8 @@
2038
2030
 
2039
2031
  return obj;
2040
2032
  };
2041
-
2042
-
2033
+
2034
+
2043
2035
  /*
2044
2036
  taken from:
2045
2037
  Captionator 0.5.1 [CaptionCrunch]
@@ -2056,7 +2048,7 @@ modified for webshims
2056
2048
  var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
2057
2049
  var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
2058
2050
  var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
2059
-
2051
+
2060
2052
  return function(subtitleElement,objectCount){
2061
2053
 
2062
2054
  var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id, specialCueData;
@@ -2072,33 +2064,33 @@ modified for webshims
2072
2064
  } else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
2073
2065
  return null; // At this stage, we don't want to do anything with these.
2074
2066
  }
2075
-
2067
+
2076
2068
  subtitleParts = subtitleElement.split(/\n/g);
2077
-
2069
+
2078
2070
  // Trim off any blank lines (logically, should only be max. one, but loop to be sure)
2079
2071
  while (!subtitleParts[0].replace(/\s+/ig,"").length && subtitleParts.length > 0) {
2080
2072
  subtitleParts.shift();
2081
2073
  }
2082
-
2074
+
2083
2075
  if (subtitleParts[0].match(/^\s*[a-z0-9-\_]+\s*$/ig)) {
2084
2076
  // The identifier becomes the cue ID (when *we* load the cues from file. Programatically created cues can have an ID of whatever.)
2085
2077
  id = String(subtitleParts.shift().replace(/\s*/ig,""));
2086
2078
  }
2087
-
2079
+
2088
2080
  for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
2089
2081
  var timestamp = subtitleParts[subtitlePartIndex];
2090
-
2082
+
2091
2083
  if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
2092
-
2084
+
2093
2085
  // WebVTT
2094
-
2086
+
2095
2087
  timeData = timestampMatch.slice(1);
2096
-
2088
+
2097
2089
  timeIn = parseInt((timeData[0]||0) * 60 * 60,10) + // Hours
2098
2090
  parseInt((timeData[1]||0) * 60,10) + // Minutes
2099
2091
  parseInt((timeData[2]||0),10) + // Seconds
2100
2092
  parseFloat("0." + (timeData[3]||0)); // MS
2101
-
2093
+
2102
2094
  timeOut = parseInt((timeData[4]||0) * 60 * 60,10) + // Hours
2103
2095
  parseInt((timeData[5]||0) * 60,10) + // Minutes
2104
2096
  parseInt((timeData[6]||0),10) + // Seconds
@@ -2109,7 +2101,7 @@ modified for webshims
2109
2101
  }
2110
2102
  */
2111
2103
  }
2112
-
2104
+
2113
2105
  // We've got the timestamp - return all the other unmatched lines as the raw subtitle data
2114
2106
  subtitleParts = subtitleParts.slice(0,subtitlePartIndex).concat(subtitleParts.slice(subtitlePartIndex+1));
2115
2107
  break;
@@ -2128,7 +2120,7 @@ modified for webshims
2128
2120
  previous[current.split(":")[0]] = current.split(":")[1];
2129
2121
  return previous;
2130
2122
  },{});
2131
-
2123
+
2132
2124
  // Loop through cue settings, replace defaults with cue specific settings if they exist
2133
2125
  compositeCueSettings =
2134
2126
  cueSettings
@@ -2139,7 +2131,7 @@ modified for webshims
2139
2131
  previous[current.split(":")[0]] = current.split(":")[1];
2140
2132
  return previous;
2141
2133
  },compositeCueSettings);
2142
-
2134
+
2143
2135
  // Turn back into string like the VTTCue constructor expects
2144
2136
  cueSettings = "";
2145
2137
  for (var key in compositeCueSettings) {
@@ -2158,18 +2150,18 @@ modified for webshims
2158
2150
  return tmpCue;
2159
2151
  };
2160
2152
  })();
2161
-
2153
+
2162
2154
  mediaelement.parseCaptions = function(captionData, track, complete) {
2163
2155
 
2164
2156
  var cue, lazyProcess, regWevVTT, startDate, isWEBVTT;
2165
2157
 
2166
2158
  mediaelement.createCueList();
2167
2159
  if (captionData) {
2168
-
2160
+
2169
2161
  regWevVTT = /^WEBVTT(\s*FILE)?/ig;
2170
-
2162
+
2171
2163
  lazyProcess = function(i, len){
2172
-
2164
+
2173
2165
  for(; i < len; i++){
2174
2166
  cue = captionData[i];
2175
2167
  if(regWevVTT.test(cue)){
@@ -2191,7 +2183,7 @@ modified for webshims
2191
2183
  startDate = new Date().getTime();
2192
2184
  lazyProcess(i, len);
2193
2185
  }, 90);
2194
-
2186
+
2195
2187
  break;
2196
2188
  }
2197
2189
  }
@@ -2202,9 +2194,9 @@ modified for webshims
2202
2194
  complete(track.cues);
2203
2195
  }
2204
2196
  };
2205
-
2197
+
2206
2198
  captionData = captionData.replace(/\r\n/g,"\n");
2207
-
2199
+
2208
2200
  setTimeout(function(){
2209
2201
  captionData = captionData.replace(/\r/g,"\n");
2210
2202
  setTimeout(function(){
@@ -2213,12 +2205,12 @@ modified for webshims
2213
2205
  lazyProcess(0, captionData.length);
2214
2206
  }, 9);
2215
2207
  }, 9);
2216
-
2208
+
2217
2209
  } else {
2218
2210
  webshims.error("Required parameter captionData not supplied.");
2219
2211
  }
2220
2212
  };
2221
-
2213
+
2222
2214
 
2223
2215
  mediaelement.createTrackList = function(mediaelem, baseData){
2224
2216
  baseData = baseData || webshims.data(mediaelem, 'mediaelementBase') || webshims.data(mediaelem, 'mediaelementBase', {});
@@ -2440,8 +2432,9 @@ modified for webshims
2440
2432
  if(Modernizr.track){
2441
2433
  var shimedTextTracks = $.prop(this, 'textTracks');
2442
2434
  var origTextTracks = this.textTracks;
2435
+
2443
2436
  if(shimedTextTracks.length != origTextTracks.length){
2444
- webshims.error("textTracks couldn't be copied");
2437
+ webshims.warn("textTracks couldn't be copied");
2445
2438
  }
2446
2439
 
2447
2440
  $('track', this).each(hideNativeTracks);