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,31 +204,23 @@ 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
  ;// Copyright 2009-2012 by contributors, MIT License
453
225
  // vim: ts=4 sts=4 sw=4 expandtab
454
226
 
@@ -2513,7 +2285,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2513
2285
  $.each({ Height: "getHeight", Width: "getWidth" }, function(name, type){
2514
2286
  var body = document.body;
2515
2287
  var doc = document.documentElement;
2516
- docObserve[type] = function(){
2288
+ docObserve[type] = function (){
2517
2289
  return Math.max(
2518
2290
  body[ "scroll" + name ], doc[ "scroll" + name ],
2519
2291
  body[ "offset" + name ], doc[ "offset" + name ],
@@ -2528,24 +2300,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2528
2300
  this._create();
2529
2301
  this.height = docObserve.getHeight();
2530
2302
  this.width = docObserve.getWidth();
2531
- setInterval(this.test, 600);
2303
+ setInterval(this.test, 999);
2532
2304
  $(this.test);
2533
2305
  webshims.ready('WINDOWLOAD', this.test);
2534
2306
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
2535
2307
  $(window).on('resize', this.handler);
2536
- (function(){
2537
- var oldAnimate = $.fn.animate;
2538
- var animationTimer;
2539
-
2540
- $.fn.animate = function(){
2541
- clearTimeout(animationTimer);
2542
- animationTimer = setTimeout(function(){
2543
- docObserve.test();
2544
- }, 99);
2545
-
2546
- return oldAnimate.apply(this, arguments);
2547
- };
2548
- })();
2549
2308
  }
2550
2309
  }
2551
2310
  };
@@ -3042,7 +2801,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3042
2801
  });
3043
2802
  ;(function(Modernizr, webshims){
3044
2803
  "use strict";
3045
- var $ = webshims.$;
3046
2804
  var hasNative = Modernizr.audio && Modernizr.video;
3047
2805
  var supportsLoop = false;
3048
2806
  var bugs = webshims.bugs;
@@ -3055,6 +2813,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3055
2813
  }
3056
2814
  });
3057
2815
  };
2816
+
3058
2817
  var wsCfg = webshims.cfg;
3059
2818
  var options = wsCfg.mediaelement;
3060
2819
  var hasFullTrackSupport;
@@ -3063,74 +2822,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3063
2822
  webshims.error("mediaelement wasn't implemented but loaded");
3064
2823
  return;
3065
2824
  }
2825
+
3066
2826
  if(hasNative){
3067
2827
  var videoElem = document.createElement('video');
3068
2828
  Modernizr.videoBuffered = ('buffered' in videoElem);
3069
2829
  Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
3070
2830
  supportsLoop = ('loop' in videoElem);
3071
-
2831
+ Modernizr.mediaLoop = supportsLoop;
2832
+
3072
2833
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
3073
2834
 
3074
- if(!Modernizr.videoBuffered ){
2835
+ if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && navigator.userAgent.indexOf('MSIE') != -1 && 'ActiveXObject' in window) ){
3075
2836
  webshims.addPolyfill('mediaelement-native-fix', {
3076
2837
  d: ['dom-support']
3077
2838
  });
3078
2839
  webshims.loader.loadList(['mediaelement-native-fix']);
3079
2840
  }
3080
-
3081
- if(!options.preferFlash){
3082
- var noSwitch = {
3083
- 1: 1
3084
- };
3085
- var switchOptions = function(e){
3086
- var media, error, parent;
3087
- if(!options.preferFlash &&
3088
- ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
3089
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
3090
- ){
3091
-
3092
- $(function(){
3093
- if(hasSwf && !options.preferFlash){
3094
- loadSwf();
3095
- webshims.ready('WINDOWLOAD '+swfType, function(){
3096
- setTimeout(function(){
3097
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
3098
- options.preferFlash = true;
3099
- document.removeEventListener('error', switchOptions, true);
3100
- $('audio, video').each(function(){
3101
- webshims.mediaelement.selectSource(this);
3102
- });
3103
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
3104
- }
3105
- }, 9);
3106
- });
3107
- } else{
3108
- document.removeEventListener('error', switchOptions, true);
3109
- }
3110
- });
3111
- }
3112
- };
3113
- document.addEventListener('error', switchOptions, true);
3114
- $('audio, video').each(function(){
3115
- var error = $.prop(this, 'error');
3116
- if(error && !noSwitch[error]){
3117
- switchOptions({target: this});
3118
- return false;
3119
- }
3120
- });
3121
- }
3122
2841
  }
3123
2842
 
3124
2843
  if(Modernizr.track && !bugs.track){
3125
2844
  (function(){
3126
-
3127
- if(!bugs.track){
3128
- bugs.track = typeof $('<track />')[0].readyState != 'number';
3129
- }
3130
-
3131
2845
  if(!bugs.track){
2846
+
2847
+ if(window.VTTCue && !window.TextTrackCue){
2848
+ window.TextTrackCue = window.VTTCue;
2849
+ } else if(!window.VTTCue){
2850
+ window.VTTCue = window.TextTrackCue;
2851
+ }
2852
+
3132
2853
  try {
3133
- new TextTrackCue(2, 3, '');
2854
+ new VTTCue(2, 3, '');
3134
2855
  } catch(e){
3135
2856
  bugs.track = true;
3136
2857
  }
@@ -3166,6 +2887,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3166
2887
  }
3167
2888
  data.streamId = data.streamId.join('/');
3168
2889
  };
2890
+
3169
2891
  var getSrcObj = function(elem, nodeName){
3170
2892
  elem = $(elem);
3171
2893
  var src = {src: elem.attr('src') || '', elem: elem, srcProp: elem.prop('src')};
@@ -3235,14 +2957,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3235
2957
  });
3236
2958
  }
3237
2959
  };
3238
- // var loadMediaGroup = function(){
3239
- // if(!loadMediaGroup.loaded){
3240
- // loadMediaGroup.loaded = true;
3241
- // webshims.ready(window.MediaController ? 'WINDOWLOAD' : 'DOM', function(){
3242
- // webshims.loader.loadList(['mediagroup']);
3243
- // });
3244
- // }
3245
- // };
2960
+
3246
2961
  var loadYt = (function(){
3247
2962
  var loaded;
3248
2963
  return function(){
@@ -3267,10 +2982,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3267
2982
  d: ['dom-support']
3268
2983
  });
3269
2984
 
3270
-
3271
- // webshims.addModule('mediagroup', {
3272
- // d: ['mediaelement', 'dom-support']
3273
- // });
2985
+
3274
2986
 
3275
2987
  mediaelement.mimeTypes = {
3276
2988
  audio: {
@@ -3304,7 +3016,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3304
3016
 
3305
3017
  mediaelement.mimeTypes.source = $.extend({}, mediaelement.mimeTypes.audio, mediaelement.mimeTypes.video);
3306
3018
 
3307
- mediaelement.getTypeForSrc = function(src, nodeName, data){
3019
+ mediaelement.getTypeForSrc = function(src, nodeName){
3308
3020
  if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
3309
3021
  return 'video/youtube';
3310
3022
  }
@@ -3342,32 +3054,13 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3342
3054
  }
3343
3055
  return srces;
3344
3056
  } else {
3345
- mediaElem.removeAttr('src').removeAttr('type').find('source').remove();
3346
- if(!$.isArray(srces)){
3347
- srces = [srces];
3348
- }
3349
- srces.forEach(function(src){
3350
- if(typeof src == 'string'){
3351
- src = {src: src};
3352
- }
3353
- mediaElem.append($(document.createElement('source')).attr(src));
3354
- });
3355
-
3057
+ webshims.error('setting sources was removed.');
3356
3058
  }
3357
3059
  };
3358
3060
 
3359
3061
 
3360
- $.fn.loadMediaSrc = function(srces, poster){
3361
- return this.each(function(){
3362
- if(poster !== undefined){
3363
- $(this).removeAttr('poster');
3364
- if(poster){
3365
- $.attr(this, 'poster', poster);
3366
- }
3367
- }
3368
- mediaelement.srces(this, srces);
3369
- $(this).mediaLoad();
3370
- });
3062
+ $.fn.loadMediaSrc = function(){
3063
+ webshims.error('loadMediaSrc was removed.');
3371
3064
  };
3372
3065
 
3373
3066
  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'];
@@ -3443,8 +3136,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3443
3136
  var readyType = hasSwf ? swfType : 'mediaelement-yt';
3444
3137
  return function( mediaElem, ret, data ){
3445
3138
  //readd to ready
3446
-
3447
-
3139
+
3448
3140
  webshims.ready(readyType, function(){
3449
3141
  if(mediaelement.createSWF && $(mediaElem).parent()[0]){
3450
3142
  mediaelement.createSWF( mediaElem, ret, data );
@@ -3520,7 +3212,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3520
3212
 
3521
3213
  });
3522
3214
 
3523
- var handleMedia = false;
3215
+ var handleMedia = false;
3524
3216
  var initMediaElements = function(){
3525
3217
  var testFixMedia = function(){
3526
3218
  if(webshims.implement(this, 'mediaelement')){
@@ -3528,50 +3220,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3528
3220
  if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
3529
3221
  $.prop(this, 'muted', true);
3530
3222
  }
3531
- //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
3532
- if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
3533
- var bufferTimer;
3534
- var lastBuffered;
3535
- var elem = this;
3536
- var getBufferedString = function(){
3537
- var buffered = $.prop(elem, 'buffered');
3538
- if(!buffered){return;}
3539
- var bufferString = "";
3540
- for(var i = 0, len = buffered.length; i < len;i++){
3541
- bufferString += buffered.end(i);
3542
- }
3543
- return bufferString;
3544
- };
3545
- var testBuffer = function(){
3546
- var buffered = getBufferedString();
3547
- if(buffered != lastBuffered){
3548
- lastBuffered = buffered;
3549
- webshims.info('needed to trigger progress manually');
3550
- $(elem).triggerHandler('progress');
3551
- }
3552
- };
3553
-
3554
- $(this)
3555
- .on({
3556
- 'play loadstart progress': function(e){
3557
- if(e.type == 'progress'){
3558
- lastBuffered = getBufferedString();
3559
- }
3560
- clearTimeout(bufferTimer);
3561
- bufferTimer = setTimeout(testBuffer, 400);
3562
- },
3563
- 'emptied stalled mediaerror abort suspend': function(e){
3564
- if(e.type == 'emptied'){
3565
- lastBuffered = false;
3566
- }
3567
- clearTimeout(bufferTimer);
3568
- }
3569
- })
3570
- ;
3571
- if('ActiveXObject' in window && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay],.nonnative-api-active)')){
3572
- $(this).prop('preload', 'metadata').mediaLoad();
3573
- }
3574
- }
3575
3223
  }
3576
3224
 
3577
3225
  };
@@ -3584,7 +3232,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3584
3232
  }
3585
3233
 
3586
3234
  ['audio', 'video'].forEach(function(nodeName){
3587
- var supLoad, supController;
3235
+ var supLoad;
3588
3236
  supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
3589
3237
  prop: {
3590
3238
  value: function(){
@@ -3617,58 +3265,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3617
3265
  }
3618
3266
  }
3619
3267
  });
3620
-
3621
- // supController = webshims.defineNodeNameProperty(nodeName, 'controller', {
3622
- // prop: {
3623
- // get: function(type){
3624
- // if(!loadMediaGroup.loaded){
3625
- // loadMediaGroup();
3626
- // }
3627
- // if(mediaelement.controller){
3628
- // return mediaelement.controller[nodeName].get.apply(this, arguments);
3629
- // }
3630
- // return supController.prop._supget && supController.prop._supget.apply(this, arguments);
3631
- // },
3632
- // set: function(){
3633
- // var that = this;
3634
- // var args = arguments;
3635
- // if(!loadMediaGroup.loaded){
3636
- // loadMediaGroup();
3637
- // }
3638
- // if(mediaelement.controller){
3639
- // return mediaelement.controller[nodeName].set.apply(that, args);
3640
- // } else {
3641
- // webshims.ready('mediagroup', function(){
3642
- // mediaelement.controller[nodeName].set.apply(that, args);
3643
- // });
3644
- // }
3645
- // return supController.prop._supset && supController.prop._supset.apply(this, arguments);
3646
- // }
3647
- // }
3648
- // });
3649
-
3650
- // webshims.ready('mediagroup', function(){
3651
- // mediaelement.controller[nodeName].sup = supController;
3652
- // });
3653
3268
  });
3654
-
3655
- // webshims.onNodeNamesPropertyModify(['audio', 'video'], ['mediaGroup'], {
3656
- // set: function(){
3657
- // var that = this;
3658
- // var args = arguments;
3659
- // if(!loadMediaGroup.loaded){
3660
- // loadMediaGroup();
3661
- // }
3662
- // if(mediaelement.mediagroup){
3663
- // mediaelement.mediagroup.set.apply(that, args);
3664
- // } else {
3665
- // webshims.ready('mediagroup', function(){
3666
- // mediaelement.mediagroup.set.apply(that, args);
3667
- // });
3668
- // }
3669
- // },
3670
- // initAttr: true
3671
- // });
3269
+
3672
3270
 
3673
3271
  webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
3674
3272
  set: function(){
@@ -3691,9 +3289,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3691
3289
  if(!loadTrackUi.loaded && $('track', media).length){
3692
3290
  loadTrackUi();
3693
3291
  }
3694
- // if(!loadMediaGroup.loaded && this.getAttribute('mediagroup')){
3695
- // loadMediaGroup();
3696
- // }
3697
3292
  media = null;
3698
3293
  });
3699
3294
  });
@@ -3733,6 +3328,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3733
3328
  }
3734
3329
  webshims.ready('track', loadTrackUi);
3735
3330
  });
3331
+
3736
3332
  })(Modernizr, webshims);
3737
3333
  ;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3738
3334
  "use strict";
@@ -4820,6 +4416,13 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4820
4416
  loadedSwf--;
4821
4417
  try {
4822
4418
  elems[i].api_pause();
4419
+ if(elems[i].readyState == 4){
4420
+ for (prop in elems[i]) {
4421
+ if (typeof elems[i][prop] == "function") {
4422
+ elems[i][prop] = null;
4423
+ }
4424
+ }
4425
+ }
4823
4426
  } catch(er){}
4824
4427
  }
4825
4428
  }
@@ -4883,6 +4486,17 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4883
4486
  }
4884
4487
 
4885
4488
  }, 'prop');
4489
+
4490
+
4491
+ if(hasFlash){
4492
+ webshims.ready('WINDOWLOAD', function(){
4493
+ setTimeout(function(){
4494
+ if(!loadedSwf){
4495
+ document.createElement('img').src = playerSwfPath;
4496
+ }
4497
+ }, 9);
4498
+ });
4499
+ }
4886
4500
  } else if(!('media' in document.createElement('source'))){
4887
4501
  webshims.reflectProperties('source', ['media']);
4888
4502
  }
@@ -4941,5 +4555,43 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4941
4555
  });
4942
4556
  })();
4943
4557
  }
4944
-
4945
- });
4558
+
4559
+
4560
+ if(hasNative && hasFlash && !options.preferFlash){
4561
+ var noSwitch = {
4562
+ 1: 1
4563
+ };
4564
+ var switchOptions = function(e){
4565
+ var media, error, parent;
4566
+ if(!options.preferFlash &&
4567
+ ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
4568
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
4569
+ ){
4570
+
4571
+ if(!options.preferFlash){
4572
+ if(!media.is('.nonnative-api-active')){
4573
+ options.preferFlash = true;
4574
+ document.removeEventListener('error', switchOptions, true);
4575
+ $('audio, video').each(function(){
4576
+ webshims.mediaelement.selectSource(this);
4577
+ });
4578
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
4579
+ }
4580
+ } else{
4581
+ document.removeEventListener('error', switchOptions, true);
4582
+ }
4583
+ }
4584
+ };
4585
+ setTimeout(function(){
4586
+ document.addEventListener('error', switchOptions, true);
4587
+ $('audio, video').each(function(){
4588
+ var error = $.prop(this, 'error');
4589
+ if(error && !noSwitch[error]){
4590
+ switchOptions({target: this});
4591
+ return false;
4592
+ }
4593
+ });
4594
+ }, 9);
4595
+ }
4596
+
4597
+ });