webshims-rails 1.12.3 → 1.12.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +75 -31
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +14 -14
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +83 -459
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +92 -69
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +90 -54
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +104 -494
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +66 -228
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -0
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +42 -40
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +105 -494
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +90 -54
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +90 -54
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +123 -471
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +85 -474
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +85 -205
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +103 -45
  19. data/vendor/assets/javascripts/webshims/shims/combos/22.js +41 -40
  20. data/vendor/assets/javascripts/webshims/shims/combos/23.js +63 -454
  21. data/vendor/assets/javascripts/webshims/shims/combos/24.js +52 -36
  22. data/vendor/assets/javascripts/webshims/shims/combos/25.js +123 -471
  23. data/vendor/assets/javascripts/webshims/shims/combos/26.js +2 -15
  24. data/vendor/assets/javascripts/webshims/shims/combos/27.js +38 -266
  25. data/vendor/assets/javascripts/webshims/shims/combos/28.js +20 -20
  26. data/vendor/assets/javascripts/webshims/shims/combos/3.js +24 -20
  27. data/vendor/assets/javascripts/webshims/shims/combos/30.js +24 -20
  28. data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -20
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +4 -15
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +90 -54
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +90 -54
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +87 -474
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +87 -474
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +92 -69
  35. data/vendor/assets/javascripts/webshims/shims/combos/99.js +1724 -0
  36. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +2 -15
  37. data/vendor/assets/javascripts/webshims/shims/form-core.js +19 -4
  38. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +39 -5
  39. data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -0
  40. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +69 -37
  41. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +18 -20
  42. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +34 -16
  43. data/vendor/assets/javascripts/webshims/shims/form-validation.js +12 -9
  44. data/vendor/assets/javascripts/webshims/shims/form-validators.js +21 -5
  45. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +16 -13
  46. data/vendor/assets/javascripts/webshims/shims/geolocation.js +3 -3
  47. data/vendor/assets/javascripts/webshims/shims/jajax.js +1262 -0
  48. data/vendor/assets/javascripts/webshims/shims/jme/b.js +576 -0
  49. data/vendor/assets/javascripts/webshims/shims/jme/c.js +1148 -0
  50. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +373 -0
  51. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +711 -0
  52. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  53. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +36 -0
  54. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +16 -18
  57. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +25 -188
  58. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +58 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +130 -66
  60. data/vendor/assets/javascripts/webshims/shims/range-ui.js +21 -17
  61. data/vendor/assets/javascripts/webshims/shims/sizzle.js +1634 -1613
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +5 -5
  63. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +5 -1
  64. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +13 -9
  65. data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +136 -0
  66. data/vendor/assets/javascripts/webshims/shims/swfmini.js +38 -266
  67. data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -3
  68. data/vendor/assets/javascripts/webshims/shims/track.js +41 -40
  69. metadata +13 -2
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  var swfmini = function() {
8
-
8
+ var wasRemoved = function(){webshims.error('This method was removed from swfmini');};
9
9
  var UNDEF = "undefined",
10
10
  OBJECT = "object",
11
11
  webshims = window.webshims,
@@ -19,15 +19,8 @@ var swfmini = function() {
19
19
 
20
20
  plugin = false,
21
21
  domLoadFnArr = [main],
22
- objIdArr = [],
23
- listenersArr = [],
24
- storedAltContent,
25
- storedAltContentId,
26
- storedCallbackFn,
27
- storedCallbackObj,
22
+
28
23
  isDomLoaded = false,
29
- dynamicStylesheet,
30
- dynamicStylesheetMedia,
31
24
  autoHideShow = true,
32
25
 
33
26
  /* Centralized function for browser feature detection
@@ -75,11 +68,6 @@ var swfmini = function() {
75
68
 
76
69
  function callDomLoadFunctions() {
77
70
  if (isDomLoaded) { return; }
78
- try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early
79
- var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
80
- t.parentNode.removeChild(t);
81
- }
82
- catch (e) { return; }
83
71
  isDomLoaded = true;
84
72
  var dl = domLoadFnArr.length;
85
73
  for (var i = 0; i < dl; i++) {
@@ -95,14 +83,7 @@ var swfmini = function() {
95
83
  domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
96
84
  }
97
85
  }
98
-
99
- /* Cross-browser onload
100
- - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
101
- - Will fire an event as soon as a web page including all of its assets are loaded
102
- */
103
- function addLoadEvent(fn) {
104
-
105
- }
86
+
106
87
 
107
88
  /* Main function
108
89
  - Will preferably execute onDomLoad, otherwise onload (as a fallback)
@@ -145,150 +126,13 @@ var swfmini = function() {
145
126
  })();
146
127
  }
147
128
  }
148
-
149
-
150
- function getObjectById(objectIdStr) {
151
- var r = null;
152
- var o = getElementById(objectIdStr);
153
- if (o && o.nodeName == "OBJECT") {
154
- if (typeof o.SetVariable != UNDEF) {
155
- r = o;
156
- }
157
- else {
158
- var n = o.getElementsByTagName(OBJECT)[0];
159
- if (n) {
160
- r = n;
161
- }
162
- }
163
- }
164
- return r;
165
- }
166
-
167
-
168
- /* Cross-browser dynamic SWF creation
169
- */
170
- function createSWF(attObj, parObj, id) {
171
- var r, el = getElementById(id);
172
- if (ua.wk && ua.wk < 312) { return r; }
173
- if (el) {
174
- if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
175
- attObj.id = id;
176
- }
177
- if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
178
- var att = "";
179
- for (var i in attObj) {
180
- if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
181
- if (i.toLowerCase() == "data") {
182
- parObj.movie = attObj[i];
183
- }
184
- else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
185
- att += ' class="' + attObj[i] + '"';
186
- }
187
- else if (i.toLowerCase() != "classid") {
188
- att += ' ' + i + '="' + attObj[i] + '"';
189
- }
190
- }
191
- }
192
- var par = "";
193
- for (var j in parObj) {
194
- if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
195
- par += '<param name="' + j + '" value="' + parObj[j] + '" />';
196
- }
197
- }
198
- el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
199
- objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
200
- r = getElementById(attObj.id);
201
- }
202
- else { // well-behaving browsers
203
- var o = createElement(OBJECT);
204
- o.setAttribute("type", FLASH_MIME_TYPE);
205
- for (var m in attObj) {
206
- if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
207
- if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
208
- o.setAttribute("class", attObj[m]);
209
- }
210
- else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
211
- o.setAttribute(m, attObj[m]);
212
- }
213
- }
214
- }
215
- for (var n in parObj) {
216
- if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
217
- createObjParam(o, n, parObj[n]);
218
- }
219
- }
220
- el.parentNode.replaceChild(o, el);
221
- r = o;
222
- }
223
- }
224
- return r;
225
- }
226
-
227
- function createObjParam(el, pName, pValue) {
228
- var p = createElement("param");
229
- p.setAttribute("name", pName);
230
- p.setAttribute("value", pValue);
231
- el.appendChild(p);
232
- }
233
-
234
- /* Cross-browser SWF removal
235
- - Especially needed to safely and completely remove a SWF in Internet Explorer
236
- */
237
- function removeSWF(id) {
238
- var obj = getElementById(id);
239
- if (obj && obj.nodeName == "OBJECT") {
240
- if (ua.ie && ua.win) {
241
- obj.style.display = "none";
242
- (function(){
243
- if (obj.readyState == 4) {
244
- removeObjectInIE(id);
245
- }
246
- else {
247
- setTimeout(arguments.callee, 10);
248
- }
249
- })();
250
- }
251
- else {
252
- obj.parentNode.removeChild(obj);
253
- }
254
- }
255
- }
256
-
257
- function removeObjectInIE(id) {
258
- var obj = getElementById(id);
259
- if (obj) {
260
- for (var i in obj) {
261
- if (typeof obj[i] == "function") {
262
- obj[i] = null;
263
- }
264
- }
265
- obj.parentNode.removeChild(obj);
266
- }
267
- }
268
-
269
- /* Functions to optimize JavaScript compression
270
- */
271
- function getElementById(id) {
272
- var el = null;
273
- try {
274
- el = doc.getElementById(id);
275
- }
276
- catch (e) {}
277
- return el;
278
- }
129
+
279
130
 
280
131
  function createElement(el) {
281
132
  return doc.createElement(el);
282
133
  }
283
134
 
284
- /* Updated attachEvent function for Internet Explorer
285
- - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
286
- */
287
- function addListener(target, eventType, fn) {
288
- target.attachEvent(eventType, fn);
289
- listenersArr[listenersArr.length] = [target, eventType, fn];
290
- }
291
-
135
+
292
136
  /* Flash Player and SWF content version matching
293
137
  */
294
138
  function hasPlayerVersion(rv) {
@@ -300,107 +144,43 @@ var swfmini = function() {
300
144
  }
301
145
 
302
146
 
303
-
304
- function setVisibility(id, isVisible) {
305
- if (!autoHideShow) { return; }
306
- var elem;
307
- var v = isVisible ? "visible" : "hidden";
308
- if (isDomLoaded && (elem && getElementById(id))) {
309
- getElementById(id).style.visibility = v;
310
- }
311
- }
312
147
 
313
- /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
314
- */
315
- var cleanup = function() {
316
- if (ua.ie && ua.win && window.attachEvent) {
317
- window.attachEvent("onunload", function() {
318
- // remove listeners to avoid memory leaks
319
- var ll = listenersArr.length;
320
- for (var i = 0; i < ll; i++) {
321
- listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
322
- }
323
- // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
324
- var il = objIdArr.length;
325
- for (var j = 0; j < il; j++) {
326
- removeSWF(objIdArr[j]);
327
- }
328
- // cleanup library's main closures to avoid memory leaks
329
- for (var k in ua) {
330
- ua[k] = null;
331
- }
332
- ua = null;
333
- for (var l in swfmini) {
334
- swfmini[l] = null;
335
- }
336
- swfmini = null;
337
- });
338
- }
339
- }();
340
-
148
+
149
+
341
150
  webshims.ready('DOM', callDomLoadFunctions);
342
-
151
+
152
+ webshims.loader.addModule('swfmini-embed', {d: ['swfmini']});
153
+ var loadEmbed = hasPlayerVersion('9.0.0') ?
154
+ function(){
155
+ webshims.loader.loadList(['swfmini-embed']);
156
+ return true;
157
+ } :
158
+ webshims.$.noop
159
+ ;
160
+
161
+ if(!Modernizr.video){
162
+ loadEmbed();
163
+ } else {
164
+ webshims.ready('WINDOWLOAD', loadEmbed);
165
+ }
166
+
343
167
  return {
344
168
  /* Public API
345
169
  - Reference: http://code.google.com/p/swfobject/wiki/documentation
346
170
  */
347
- registerObject: function() {
348
-
349
- },
171
+ registerObject: wasRemoved,
350
172
 
351
- getObjectById: function(objectIdStr) {
352
- if (ua.w3) {
353
- return getObjectById(objectIdStr);
354
- }
355
- },
173
+ getObjectById: wasRemoved,
356
174
 
357
175
  embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
358
- var callbackObj = {success:false, id:replaceElemIdStr};
359
- if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
360
- setVisibility(replaceElemIdStr, false);
361
- addDomLoadEvent(function() {
362
- widthStr += ""; // auto-convert to string
363
- heightStr += "";
364
- var att = {};
365
- if (attObj && typeof attObj === OBJECT) {
366
- for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
367
- att[i] = attObj[i];
368
- }
369
- }
370
- att.data = swfUrlStr;
371
- att.width = widthStr;
372
- att.height = heightStr;
373
- var par = {};
374
- if (parObj && typeof parObj === OBJECT) {
375
- for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
376
- par[j] = parObj[j];
377
- }
378
- }
379
- if (flashvarsObj && typeof flashvarsObj === OBJECT) {
380
- for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
381
- if (typeof par.flashvars != UNDEF) {
382
- par.flashvars += "&" + k + "=" + flashvarsObj[k];
383
- }
384
- else {
385
- par.flashvars = k + "=" + flashvarsObj[k];
386
- }
387
- }
388
- }
389
- if (hasPlayerVersion(swfVersionStr)) { // create SWF
390
- var obj = createSWF(att, par, replaceElemIdStr);
391
- if (att.id == replaceElemIdStr) {
392
- setVisibility(replaceElemIdStr, true);
393
- }
394
- callbackObj.success = true;
395
- callbackObj.ref = obj;
396
- }
397
- else { // show alternative content
398
- setVisibility(replaceElemIdStr, true);
399
- }
400
- if (callbackFn) { callbackFn(callbackObj); }
176
+ var args = arguments;
177
+ if(loadEmbed()){
178
+ webshims.ready('swfmini-embed', function(){
179
+ swfmini.embedSWF.apply(swfmini, args);
401
180
  });
181
+ } else if(callbackFn) {
182
+ callbackFn({success:false, id:replaceElemIdStr});
402
183
  }
403
- else if (callbackFn) { callbackFn(callbackObj); }
404
184
  },
405
185
 
406
186
  switchOffAutoHideShow: function() {
@@ -424,34 +204,25 @@ var swfmini = function() {
424
204
  }
425
205
  },
426
206
 
427
- showExpressInstall: function() {
428
-
429
- },
207
+ showExpressInstall: wasRemoved,
430
208
 
431
- removeSWF: function(objElemIdStr) {
432
- if (ua.w3) {
433
- removeSWF(objElemIdStr);
434
- }
435
- },
209
+ removeSWF: wasRemoved,
436
210
 
437
- createCSS: function() {
438
-
439
- },
211
+ createCSS: wasRemoved,
440
212
 
441
213
  addDomLoadEvent: addDomLoadEvent,
442
214
 
443
- addLoadEvent: addLoadEvent,
215
+ addLoadEvent: wasRemoved,
444
216
 
445
217
 
446
218
  // For internal usage only
447
- expressInstallCallback: function() {
448
-
449
- }
219
+ expressInstallCallback: wasRemoved
450
220
  };
451
221
  }();
222
+
223
+ webshims.isReady('swfmini', true);
452
224
  ;(function(Modernizr, webshims){
453
225
  "use strict";
454
- var $ = webshims.$;
455
226
  var hasNative = Modernizr.audio && Modernizr.video;
456
227
  var supportsLoop = false;
457
228
  var bugs = webshims.bugs;
@@ -464,6 +235,7 @@ var swfmini = function() {
464
235
  }
465
236
  });
466
237
  };
238
+
467
239
  var wsCfg = webshims.cfg;
468
240
  var options = wsCfg.mediaelement;
469
241
  var hasFullTrackSupport;
@@ -472,74 +244,36 @@ var swfmini = function() {
472
244
  webshims.error("mediaelement wasn't implemented but loaded");
473
245
  return;
474
246
  }
247
+
475
248
  if(hasNative){
476
249
  var videoElem = document.createElement('video');
477
250
  Modernizr.videoBuffered = ('buffered' in videoElem);
478
251
  Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
479
252
  supportsLoop = ('loop' in videoElem);
480
-
253
+ Modernizr.mediaLoop = supportsLoop;
254
+
481
255
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
482
256
 
483
- if(!Modernizr.videoBuffered ){
257
+ if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && navigator.userAgent.indexOf('MSIE') != -1 && 'ActiveXObject' in window) ){
484
258
  webshims.addPolyfill('mediaelement-native-fix', {
485
259
  d: ['dom-support']
486
260
  });
487
261
  webshims.loader.loadList(['mediaelement-native-fix']);
488
262
  }
489
-
490
- if(!options.preferFlash){
491
- var noSwitch = {
492
- 1: 1
493
- };
494
- var switchOptions = function(e){
495
- var media, error, parent;
496
- if(!options.preferFlash &&
497
- ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
498
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
499
- ){
500
-
501
- $(function(){
502
- if(hasSwf && !options.preferFlash){
503
- loadSwf();
504
- webshims.ready('WINDOWLOAD '+swfType, function(){
505
- setTimeout(function(){
506
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
507
- options.preferFlash = true;
508
- document.removeEventListener('error', switchOptions, true);
509
- $('audio, video').each(function(){
510
- webshims.mediaelement.selectSource(this);
511
- });
512
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
513
- }
514
- }, 9);
515
- });
516
- } else{
517
- document.removeEventListener('error', switchOptions, true);
518
- }
519
- });
520
- }
521
- };
522
- document.addEventListener('error', switchOptions, true);
523
- $('audio, video').each(function(){
524
- var error = $.prop(this, 'error');
525
- if(error && !noSwitch[error]){
526
- switchOptions({target: this});
527
- return false;
528
- }
529
- });
530
- }
531
263
  }
532
264
 
533
265
  if(Modernizr.track && !bugs.track){
534
266
  (function(){
535
-
536
- if(!bugs.track){
537
- bugs.track = typeof $('<track />')[0].readyState != 'number';
538
- }
539
-
540
267
  if(!bugs.track){
268
+
269
+ if(window.VTTCue && !window.TextTrackCue){
270
+ window.TextTrackCue = window.VTTCue;
271
+ } else if(!window.VTTCue){
272
+ window.VTTCue = window.TextTrackCue;
273
+ }
274
+
541
275
  try {
542
- new TextTrackCue(2, 3, '');
276
+ new VTTCue(2, 3, '');
543
277
  } catch(e){
544
278
  bugs.track = true;
545
279
  }
@@ -575,6 +309,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
575
309
  }
576
310
  data.streamId = data.streamId.join('/');
577
311
  };
312
+
578
313
  var getSrcObj = function(elem, nodeName){
579
314
  elem = $(elem);
580
315
  var src = {src: elem.attr('src') || '', elem: elem, srcProp: elem.prop('src')};
@@ -644,14 +379,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
644
379
  });
645
380
  }
646
381
  };
647
- // var loadMediaGroup = function(){
648
- // if(!loadMediaGroup.loaded){
649
- // loadMediaGroup.loaded = true;
650
- // webshims.ready(window.MediaController ? 'WINDOWLOAD' : 'DOM', function(){
651
- // webshims.loader.loadList(['mediagroup']);
652
- // });
653
- // }
654
- // };
382
+
655
383
  var loadYt = (function(){
656
384
  var loaded;
657
385
  return function(){
@@ -676,10 +404,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
676
404
  d: ['dom-support']
677
405
  });
678
406
 
679
-
680
- // webshims.addModule('mediagroup', {
681
- // d: ['mediaelement', 'dom-support']
682
- // });
407
+
683
408
 
684
409
  mediaelement.mimeTypes = {
685
410
  audio: {
@@ -713,7 +438,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
713
438
 
714
439
  mediaelement.mimeTypes.source = $.extend({}, mediaelement.mimeTypes.audio, mediaelement.mimeTypes.video);
715
440
 
716
- mediaelement.getTypeForSrc = function(src, nodeName, data){
441
+ mediaelement.getTypeForSrc = function(src, nodeName){
717
442
  if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
718
443
  return 'video/youtube';
719
444
  }
@@ -751,32 +476,13 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
751
476
  }
752
477
  return srces;
753
478
  } else {
754
- mediaElem.removeAttr('src').removeAttr('type').find('source').remove();
755
- if(!$.isArray(srces)){
756
- srces = [srces];
757
- }
758
- srces.forEach(function(src){
759
- if(typeof src == 'string'){
760
- src = {src: src};
761
- }
762
- mediaElem.append($(document.createElement('source')).attr(src));
763
- });
764
-
479
+ webshims.error('setting sources was removed.');
765
480
  }
766
481
  };
767
482
 
768
483
 
769
- $.fn.loadMediaSrc = function(srces, poster){
770
- return this.each(function(){
771
- if(poster !== undefined){
772
- $(this).removeAttr('poster');
773
- if(poster){
774
- $.attr(this, 'poster', poster);
775
- }
776
- }
777
- mediaelement.srces(this, srces);
778
- $(this).mediaLoad();
779
- });
484
+ $.fn.loadMediaSrc = function(){
485
+ webshims.error('loadMediaSrc was removed.');
780
486
  };
781
487
 
782
488
  mediaelement.swfMimeTypes = ['video/3gpp', 'video/x-msvideo', 'video/quicktime', 'video/x-m4v', 'video/mp4', 'video/m4p', 'video/x-flv', 'video/flv', 'audio/mpeg', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/m4a', 'audio/mp3', 'audio/x-fla', 'audio/fla', 'youtube/flv', 'video/jarisplayer', 'jarisplayer/jarisplayer', 'video/youtube', 'video/rtmp', 'audio/rtmp'];
@@ -852,8 +558,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
852
558
  var readyType = hasSwf ? swfType : 'mediaelement-yt';
853
559
  return function( mediaElem, ret, data ){
854
560
  //readd to ready
855
-
856
-
561
+
857
562
  webshims.ready(readyType, function(){
858
563
  if(mediaelement.createSWF && $(mediaElem).parent()[0]){
859
564
  mediaelement.createSWF( mediaElem, ret, data );
@@ -929,7 +634,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
929
634
 
930
635
  });
931
636
 
932
- var handleMedia = false;
637
+ var handleMedia = false;
933
638
  var initMediaElements = function(){
934
639
  var testFixMedia = function(){
935
640
  if(webshims.implement(this, 'mediaelement')){
@@ -937,50 +642,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
937
642
  if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
938
643
  $.prop(this, 'muted', true);
939
644
  }
940
- //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
941
- if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
942
- var bufferTimer;
943
- var lastBuffered;
944
- var elem = this;
945
- var getBufferedString = function(){
946
- var buffered = $.prop(elem, 'buffered');
947
- if(!buffered){return;}
948
- var bufferString = "";
949
- for(var i = 0, len = buffered.length; i < len;i++){
950
- bufferString += buffered.end(i);
951
- }
952
- return bufferString;
953
- };
954
- var testBuffer = function(){
955
- var buffered = getBufferedString();
956
- if(buffered != lastBuffered){
957
- lastBuffered = buffered;
958
- webshims.info('needed to trigger progress manually');
959
- $(elem).triggerHandler('progress');
960
- }
961
- };
962
-
963
- $(this)
964
- .on({
965
- 'play loadstart progress': function(e){
966
- if(e.type == 'progress'){
967
- lastBuffered = getBufferedString();
968
- }
969
- clearTimeout(bufferTimer);
970
- bufferTimer = setTimeout(testBuffer, 400);
971
- },
972
- 'emptied stalled mediaerror abort suspend': function(e){
973
- if(e.type == 'emptied'){
974
- lastBuffered = false;
975
- }
976
- clearTimeout(bufferTimer);
977
- }
978
- })
979
- ;
980
- if('ActiveXObject' in window && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay],.nonnative-api-active)')){
981
- $(this).prop('preload', 'metadata').mediaLoad();
982
- }
983
- }
984
645
  }
985
646
 
986
647
  };
@@ -993,7 +654,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
993
654
  }
994
655
 
995
656
  ['audio', 'video'].forEach(function(nodeName){
996
- var supLoad, supController;
657
+ var supLoad;
997
658
  supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
998
659
  prop: {
999
660
  value: function(){
@@ -1026,58 +687,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1026
687
  }
1027
688
  }
1028
689
  });
1029
-
1030
- // supController = webshims.defineNodeNameProperty(nodeName, 'controller', {
1031
- // prop: {
1032
- // get: function(type){
1033
- // if(!loadMediaGroup.loaded){
1034
- // loadMediaGroup();
1035
- // }
1036
- // if(mediaelement.controller){
1037
- // return mediaelement.controller[nodeName].get.apply(this, arguments);
1038
- // }
1039
- // return supController.prop._supget && supController.prop._supget.apply(this, arguments);
1040
- // },
1041
- // set: function(){
1042
- // var that = this;
1043
- // var args = arguments;
1044
- // if(!loadMediaGroup.loaded){
1045
- // loadMediaGroup();
1046
- // }
1047
- // if(mediaelement.controller){
1048
- // return mediaelement.controller[nodeName].set.apply(that, args);
1049
- // } else {
1050
- // webshims.ready('mediagroup', function(){
1051
- // mediaelement.controller[nodeName].set.apply(that, args);
1052
- // });
1053
- // }
1054
- // return supController.prop._supset && supController.prop._supset.apply(this, arguments);
1055
- // }
1056
- // }
1057
- // });
1058
-
1059
- // webshims.ready('mediagroup', function(){
1060
- // mediaelement.controller[nodeName].sup = supController;
1061
- // });
1062
690
  });
1063
-
1064
- // webshims.onNodeNamesPropertyModify(['audio', 'video'], ['mediaGroup'], {
1065
- // set: function(){
1066
- // var that = this;
1067
- // var args = arguments;
1068
- // if(!loadMediaGroup.loaded){
1069
- // loadMediaGroup();
1070
- // }
1071
- // if(mediaelement.mediagroup){
1072
- // mediaelement.mediagroup.set.apply(that, args);
1073
- // } else {
1074
- // webshims.ready('mediagroup', function(){
1075
- // mediaelement.mediagroup.set.apply(that, args);
1076
- // });
1077
- // }
1078
- // },
1079
- // initAttr: true
1080
- // });
691
+
1081
692
 
1082
693
  webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1083
694
  set: function(){
@@ -1100,9 +711,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1100
711
  if(!loadTrackUi.loaded && $('track', media).length){
1101
712
  loadTrackUi();
1102
713
  }
1103
- // if(!loadMediaGroup.loaded && this.getAttribute('mediagroup')){
1104
- // loadMediaGroup();
1105
- // }
1106
714
  media = null;
1107
715
  });
1108
716
  });
@@ -1142,6 +750,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1142
750
  }
1143
751
  webshims.ready('track', loadTrackUi);
1144
752
  });
753
+
1145
754
  })(Modernizr, webshims);
1146
755
  ;webshims.register('track', function($, webshims, window, document, undefined){
1147
756
  "use strict";
@@ -1359,9 +968,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1359
968
  };
1360
969
  })();
1361
970
  var emptyDiv = $('<div />')[0];
1362
- var TextTrackCue = function(startTime, endTime, text){
971
+ function VTTCue(startTime, endTime, text){
1363
972
  if(arguments.length != 3){
1364
- webshims.error("wrong arguments.length for TextTrackCue.constructor");
973
+ webshims.error("wrong arguments.length for VTTCue.constructor");
1365
974
  }
1366
975
 
1367
976
  this.startTime = startTime;
@@ -1370,9 +979,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1370
979
 
1371
980
 
1372
981
  createEventTarget(this);
1373
- };
982
+ }
1374
983
 
1375
- TextTrackCue.prototype = {
984
+ VTTCue.prototype = {
1376
985
 
1377
986
  onenter: null,
1378
987
  onexit: null,
@@ -1414,11 +1023,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1414
1023
  // align: 'middle'
1415
1024
  };
1416
1025
 
1417
- window.TextTrackCue = TextTrackCue;
1418
-
1419
-
1420
-
1421
-
1026
+ window.VTTCue = VTTCue;
1027
+ window.TextTrackCue = function(){
1028
+ webshims.error("Use VTTCue constructor instead of abstract TextTrackCue constructor.");
1029
+ VTTCue.apply(this, arguments);
1030
+ };
1031
+
1032
+ window.TextTrackCue.prototype = VTTCue.prototype;
1033
+
1422
1034
  mediaelement.createCueList = function(){
1423
1035
  return $.extend([], cueListProto);
1424
1036
  };
@@ -1463,8 +1075,10 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1463
1075
  var loadEvents = 'play playing updatetrackdisplay';
1464
1076
  var obj = trackData.track;
1465
1077
  var load = function(){
1466
- var error, ajax, src, createAjax;
1467
- if(obj.mode != 'disabled' && $.attr(track, 'src') && (src = $.prop(track, 'src'))){
1078
+ var error, ajax, createAjax;
1079
+
1080
+ var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
1081
+ if(src){
1468
1082
  $(mediaelem).off(loadEvents, load);
1469
1083
  if(!trackData.readyState){
1470
1084
  error = function(){
@@ -1502,8 +1116,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1502
1116
  if($.ajax){
1503
1117
  createAjax();
1504
1118
  } else {
1505
- webshims.ready('$ajax', createAjax);
1506
- webshims.loader.loadList(['$ajax']);
1119
+ webshims.ready('jajax', createAjax);
1120
+ webshims.loader.loadList(['jajax']);
1507
1121
  }
1508
1122
  } catch(er){
1509
1123
  error();
@@ -1600,19 +1214,17 @@ modified for webshims
1600
1214
  mediaelement.parseCaptionChunk = (function(){
1601
1215
  // Set up timestamp parsers
1602
1216
  var WebVTTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s*(.*)/;
1603
- var GoogleTimestampParser = /^([\d\.]+)\s+\+([\d\.]+)\s*(.*)/;
1604
1217
  var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
1605
1218
  var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
1606
1219
  var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
1607
1220
 
1608
1221
  return function(subtitleElement,objectCount){
1609
- var cueDefaults = [];
1610
-
1611
- var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, cueSettings = "", id, specialCueData;
1222
+
1223
+ var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id, specialCueData;
1612
1224
  var timestampMatch, tmpCue;
1613
1225
 
1614
1226
  // WebVTT Special Cue Logic
1615
- if ((specialCueData = WebVTTDEFAULTSCueParser.exec(subtitleElement))) {
1227
+ if (WebVTTDEFAULTSCueParser.exec(subtitleElement)) {
1616
1228
  // cueDefaults = specialCueData.slice(2).join("");
1617
1229
  // cueDefaults = cueDefaults.split(/\s+/g).filter(function(def) { return def && !!def.length; });
1618
1230
  return null;
@@ -1689,7 +1301,7 @@ modified for webshims
1689
1301
  return previous;
1690
1302
  },compositeCueSettings);
1691
1303
 
1692
- // Turn back into string like the TextTrackCue constructor expects
1304
+ // Turn back into string like the VTTCue constructor expects
1693
1305
  cueSettings = "";
1694
1306
  for (var key in compositeCueSettings) {
1695
1307
  if (compositeCueSettings.hasOwnProperty(key)) {
@@ -1700,7 +1312,7 @@ modified for webshims
1700
1312
  */
1701
1313
  // The remaining lines are the subtitle payload itself (after removing an ID if present, and the time);
1702
1314
  html = subtitleParts.join("\n");
1703
- tmpCue = new TextTrackCue(timeIn, timeOut, html);
1315
+ tmpCue = new VTTCue(timeIn, timeOut, html);
1704
1316
  if(id){
1705
1317
  tmpCue.id = id;
1706
1318
  }
@@ -1709,10 +1321,10 @@ modified for webshims
1709
1321
  })();
1710
1322
 
1711
1323
  mediaelement.parseCaptions = function(captionData, track, complete) {
1712
- var subtitles = mediaelement.createCueList();
1713
- var cue, lazyProcess, regWevVTT;
1714
- var startDate;
1715
- var isWEBVTT;
1324
+
1325
+ var cue, lazyProcess, regWevVTT, startDate, isWEBVTT;
1326
+
1327
+ mediaelement.createCueList();
1716
1328
  if (captionData) {
1717
1329
 
1718
1330
  regWevVTT = /^WEBVTT(\s*FILE)?/ig;
@@ -1892,7 +1504,6 @@ modified for webshims
1892
1504
  },
1893
1505
  readyState: {
1894
1506
  get: function(){
1895
-
1896
1507
  return (webshims.data(this, 'trackData') || {readyState: 0}).readyState;
1897
1508
  },
1898
1509
  writeable: false
@@ -1957,29 +1568,27 @@ modified for webshims
1957
1568
  e.stopImmediatePropagation();
1958
1569
  }
1959
1570
  };
1960
- var startTrackImplementation = function(){
1571
+ var hideNativeTracks = function(){
1961
1572
  if(webshims.implement(this, 'track')){
1962
- var shimedTrack = $.prop(this, 'track');
1963
- var origTrack = this.track;
1964
1573
  var kind;
1965
- var readyState;
1574
+ var origTrack = this.track;
1966
1575
  if(origTrack){
1967
- kind = $.prop(this, 'kind');
1968
- readyState = getNativeReadyState(this, origTrack);
1969
- if (origTrack.mode || readyState) {
1970
- shimedTrack.mode = numericModes[origTrack.mode] || origTrack.mode;
1576
+
1577
+ if (!webshims.bugs.track && (origTrack.mode || getNativeReadyState(this, origTrack))) {
1578
+ $.prop(this, 'track').mode = numericModes[origTrack.mode] || origTrack.mode;
1971
1579
  }
1972
1580
  //disable track from showing + remove UI
1973
- if(kind != 'descriptions'){
1974
- origTrack.mode = (typeof origTrack.mode == 'string') ? 'disabled' : 0;
1975
- this.kind = 'metadata';
1976
- $(this).attr({kind: kind});
1977
- }
1581
+ kind = $.prop(this, 'kind');
1582
+ origTrack.mode = (typeof origTrack.mode == 'string') ? 'disabled' : 0;
1583
+ this.kind = 'metadata';
1584
+
1585
+ $(this).attr({kind: kind});
1978
1586
 
1979
1587
  }
1980
1588
  $(this).on('load error', stopOriginalEvent);
1981
1589
  }
1982
1590
  };
1591
+
1983
1592
  webshims.addReady(function(context, insertedElement){
1984
1593
  var insertedMedia = insertedElement.filter('video, audio, track').closest('audio, video');
1985
1594
  $('video, audio', context)
@@ -1996,10 +1605,11 @@ modified for webshims
1996
1605
  webshims.error("textTracks couldn't be copied");
1997
1606
  }
1998
1607
 
1999
- $('track', this).each(startTrackImplementation);
1608
+ $('track', this).each(hideNativeTracks);
2000
1609
  }
2001
1610
  })
2002
1611
  ;
1612
+
2003
1613
  insertedMedia.each(function(){
2004
1614
  var media = this;
2005
1615
  var baseData = webshims.data(media, 'mediaelementBase');
@@ -2015,4 +1625,4 @@ modified for webshims
2015
1625
  if(Modernizr.texttrackapi){
2016
1626
  $('video, audio').trigger('trackapichange');
2017
1627
  }
2018
- });
1628
+ });