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
  ;//DOM-Extension helper
453
225
  webshims.register('dom-extend', function($, webshims, window, document, undefined){
454
226
  "use strict";
@@ -1067,7 +839,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1067
839
  $.each({ Height: "getHeight", Width: "getWidth" }, function(name, type){
1068
840
  var body = document.body;
1069
841
  var doc = document.documentElement;
1070
- docObserve[type] = function(){
842
+ docObserve[type] = function (){
1071
843
  return Math.max(
1072
844
  body[ "scroll" + name ], doc[ "scroll" + name ],
1073
845
  body[ "offset" + name ], doc[ "offset" + name ],
@@ -1082,24 +854,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1082
854
  this._create();
1083
855
  this.height = docObserve.getHeight();
1084
856
  this.width = docObserve.getWidth();
1085
- setInterval(this.test, 600);
857
+ setInterval(this.test, 999);
1086
858
  $(this.test);
1087
859
  webshims.ready('WINDOWLOAD', this.test);
1088
860
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
1089
861
  $(window).on('resize', this.handler);
1090
- (function(){
1091
- var oldAnimate = $.fn.animate;
1092
- var animationTimer;
1093
-
1094
- $.fn.animate = function(){
1095
- clearTimeout(animationTimer);
1096
- animationTimer = setTimeout(function(){
1097
- docObserve.test();
1098
- }, 99);
1099
-
1100
- return oldAnimate.apply(this, arguments);
1101
- };
1102
- })();
1103
862
  }
1104
863
  }
1105
864
  };
@@ -1594,8 +1353,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1594
1353
 
1595
1354
  })();
1596
1355
  });
1597
- ;
1598
- webshims.register('form-core', function($, webshims, window, document, undefined, options){
1356
+ ;webshims.register('form-core', function($, webshims, window, document, undefined, options){
1599
1357
  "use strict";
1600
1358
 
1601
1359
  webshims.capturingEventPrevented = function(e){
@@ -1621,6 +1379,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1621
1379
  webshims.capturingEvents(['invalid'], true);
1622
1380
  }
1623
1381
 
1382
+ var modules = webshims.modules;
1624
1383
  var isValid = function(elem){
1625
1384
  return ($.prop(elem, 'validity') || {valid: 1}).valid;
1626
1385
  };
@@ -1630,10 +1389,12 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1630
1389
  options.customMessages = true;
1631
1390
  toLoad.push('form-message');
1632
1391
  }
1633
- if(options.customDatalist){
1392
+
1393
+ if(webshims._getAutoEnhance(options.customDatalist)){
1634
1394
  options.fD = true;
1635
1395
  toLoad.push('form-datalist');
1636
1396
  }
1397
+
1637
1398
  if(options.addValidators){
1638
1399
  toLoad.push('form-validators');
1639
1400
  }
@@ -1647,7 +1408,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1647
1408
  var hasInvalid = function(elem){
1648
1409
  var ret = false;
1649
1410
  $(elem).jProp('elements').each(function(){
1650
- if(!rElementsGroup.test(elem.nodeName || '')){
1411
+ if(!rElementsGroup.test(this.nodeName || '')){
1651
1412
  ret = $(this).is(':invalid');
1652
1413
  if(ret){
1653
1414
  return false;
@@ -1842,14 +1603,27 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1842
1603
  }
1843
1604
  return message;
1844
1605
  };
1845
-
1606
+
1607
+ $.event.special.valuevalidation = {
1608
+ setup: function(){
1609
+ var data = $(this).data() || $.data(this, {});
1610
+ if(!('valuevalidation' in data)){
1611
+ data.valuevalidation = true;
1612
+ }
1613
+ }
1614
+ };
1846
1615
 
1847
1616
  $(document).on('focusin.lazyloadvalidation', function(e){
1848
1617
  if('form' in e.target){
1849
1618
  lazyLoad();
1850
1619
  }
1851
1620
  });
1621
+
1852
1622
  webshims.ready('WINDOWLOAD', lazyLoad);
1623
+
1624
+ if(modules['form-number-date-ui'].loaded && modules['form-number-date-api'].test()){
1625
+ webshims.isReady('form-number-date-ui', true);
1626
+ }
1853
1627
  });
1854
1628
  ;webshims.register('form-message', function($, webshims, window, document, undefined, options){
1855
1629
  "use strict";
@@ -1985,9 +1759,11 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1985
1759
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1986
1760
  if(message.indexOf('{%'+attr) === -1){return;}
1987
1761
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
1762
+ val = ''+val;
1988
1763
  if(name == 'patternMismatch' && attr == 'title' && !val){
1989
1764
  webshims.error('no title for patternMismatch provided. Always add a title attribute.');
1990
1765
  }
1766
+
1991
1767
  if(valueVals[attr]){
1992
1768
  if(!widget){
1993
1769
  widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
@@ -2084,7 +1860,6 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2084
1860
  });
2085
1861
  ;(function(Modernizr, webshims){
2086
1862
  "use strict";
2087
- var $ = webshims.$;
2088
1863
  var hasNative = Modernizr.audio && Modernizr.video;
2089
1864
  var supportsLoop = false;
2090
1865
  var bugs = webshims.bugs;
@@ -2097,6 +1872,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2097
1872
  }
2098
1873
  });
2099
1874
  };
1875
+
2100
1876
  var wsCfg = webshims.cfg;
2101
1877
  var options = wsCfg.mediaelement;
2102
1878
  var hasFullTrackSupport;
@@ -2105,74 +1881,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2105
1881
  webshims.error("mediaelement wasn't implemented but loaded");
2106
1882
  return;
2107
1883
  }
1884
+
2108
1885
  if(hasNative){
2109
1886
  var videoElem = document.createElement('video');
2110
1887
  Modernizr.videoBuffered = ('buffered' in videoElem);
2111
1888
  Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
2112
1889
  supportsLoop = ('loop' in videoElem);
2113
-
1890
+ Modernizr.mediaLoop = supportsLoop;
1891
+
2114
1892
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
2115
1893
 
2116
- if(!Modernizr.videoBuffered ){
1894
+ if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && navigator.userAgent.indexOf('MSIE') != -1 && 'ActiveXObject' in window) ){
2117
1895
  webshims.addPolyfill('mediaelement-native-fix', {
2118
1896
  d: ['dom-support']
2119
1897
  });
2120
1898
  webshims.loader.loadList(['mediaelement-native-fix']);
2121
1899
  }
2122
-
2123
- if(!options.preferFlash){
2124
- var noSwitch = {
2125
- 1: 1
2126
- };
2127
- var switchOptions = function(e){
2128
- var media, error, parent;
2129
- if(!options.preferFlash &&
2130
- ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
2131
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
2132
- ){
2133
-
2134
- $(function(){
2135
- if(hasSwf && !options.preferFlash){
2136
- loadSwf();
2137
- webshims.ready('WINDOWLOAD '+swfType, function(){
2138
- setTimeout(function(){
2139
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
2140
- options.preferFlash = true;
2141
- document.removeEventListener('error', switchOptions, true);
2142
- $('audio, video').each(function(){
2143
- webshims.mediaelement.selectSource(this);
2144
- });
2145
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
2146
- }
2147
- }, 9);
2148
- });
2149
- } else{
2150
- document.removeEventListener('error', switchOptions, true);
2151
- }
2152
- });
2153
- }
2154
- };
2155
- document.addEventListener('error', switchOptions, true);
2156
- $('audio, video').each(function(){
2157
- var error = $.prop(this, 'error');
2158
- if(error && !noSwitch[error]){
2159
- switchOptions({target: this});
2160
- return false;
2161
- }
2162
- });
2163
- }
2164
1900
  }
2165
1901
 
2166
1902
  if(Modernizr.track && !bugs.track){
2167
1903
  (function(){
2168
-
2169
- if(!bugs.track){
2170
- bugs.track = typeof $('<track />')[0].readyState != 'number';
2171
- }
2172
-
2173
1904
  if(!bugs.track){
1905
+
1906
+ if(window.VTTCue && !window.TextTrackCue){
1907
+ window.TextTrackCue = window.VTTCue;
1908
+ } else if(!window.VTTCue){
1909
+ window.VTTCue = window.TextTrackCue;
1910
+ }
1911
+
2174
1912
  try {
2175
- new TextTrackCue(2, 3, '');
1913
+ new VTTCue(2, 3, '');
2176
1914
  } catch(e){
2177
1915
  bugs.track = true;
2178
1916
  }
@@ -2208,6 +1946,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2208
1946
  }
2209
1947
  data.streamId = data.streamId.join('/');
2210
1948
  };
1949
+
2211
1950
  var getSrcObj = function(elem, nodeName){
2212
1951
  elem = $(elem);
2213
1952
  var src = {src: elem.attr('src') || '', elem: elem, srcProp: elem.prop('src')};
@@ -2277,14 +2016,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2277
2016
  });
2278
2017
  }
2279
2018
  };
2280
- // var loadMediaGroup = function(){
2281
- // if(!loadMediaGroup.loaded){
2282
- // loadMediaGroup.loaded = true;
2283
- // webshims.ready(window.MediaController ? 'WINDOWLOAD' : 'DOM', function(){
2284
- // webshims.loader.loadList(['mediagroup']);
2285
- // });
2286
- // }
2287
- // };
2019
+
2288
2020
  var loadYt = (function(){
2289
2021
  var loaded;
2290
2022
  return function(){
@@ -2309,10 +2041,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2309
2041
  d: ['dom-support']
2310
2042
  });
2311
2043
 
2312
-
2313
- // webshims.addModule('mediagroup', {
2314
- // d: ['mediaelement', 'dom-support']
2315
- // });
2044
+
2316
2045
 
2317
2046
  mediaelement.mimeTypes = {
2318
2047
  audio: {
@@ -2346,7 +2075,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2346
2075
 
2347
2076
  mediaelement.mimeTypes.source = $.extend({}, mediaelement.mimeTypes.audio, mediaelement.mimeTypes.video);
2348
2077
 
2349
- mediaelement.getTypeForSrc = function(src, nodeName, data){
2078
+ mediaelement.getTypeForSrc = function(src, nodeName){
2350
2079
  if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
2351
2080
  return 'video/youtube';
2352
2081
  }
@@ -2384,32 +2113,13 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2384
2113
  }
2385
2114
  return srces;
2386
2115
  } else {
2387
- mediaElem.removeAttr('src').removeAttr('type').find('source').remove();
2388
- if(!$.isArray(srces)){
2389
- srces = [srces];
2390
- }
2391
- srces.forEach(function(src){
2392
- if(typeof src == 'string'){
2393
- src = {src: src};
2394
- }
2395
- mediaElem.append($(document.createElement('source')).attr(src));
2396
- });
2397
-
2116
+ webshims.error('setting sources was removed.');
2398
2117
  }
2399
2118
  };
2400
2119
 
2401
2120
 
2402
- $.fn.loadMediaSrc = function(srces, poster){
2403
- return this.each(function(){
2404
- if(poster !== undefined){
2405
- $(this).removeAttr('poster');
2406
- if(poster){
2407
- $.attr(this, 'poster', poster);
2408
- }
2409
- }
2410
- mediaelement.srces(this, srces);
2411
- $(this).mediaLoad();
2412
- });
2121
+ $.fn.loadMediaSrc = function(){
2122
+ webshims.error('loadMediaSrc was removed.');
2413
2123
  };
2414
2124
 
2415
2125
  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'];
@@ -2485,8 +2195,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2485
2195
  var readyType = hasSwf ? swfType : 'mediaelement-yt';
2486
2196
  return function( mediaElem, ret, data ){
2487
2197
  //readd to ready
2488
-
2489
-
2198
+
2490
2199
  webshims.ready(readyType, function(){
2491
2200
  if(mediaelement.createSWF && $(mediaElem).parent()[0]){
2492
2201
  mediaelement.createSWF( mediaElem, ret, data );
@@ -2562,7 +2271,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2562
2271
 
2563
2272
  });
2564
2273
 
2565
- var handleMedia = false;
2274
+ var handleMedia = false;
2566
2275
  var initMediaElements = function(){
2567
2276
  var testFixMedia = function(){
2568
2277
  if(webshims.implement(this, 'mediaelement')){
@@ -2570,50 +2279,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2570
2279
  if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
2571
2280
  $.prop(this, 'muted', true);
2572
2281
  }
2573
- //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
2574
- if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
2575
- var bufferTimer;
2576
- var lastBuffered;
2577
- var elem = this;
2578
- var getBufferedString = function(){
2579
- var buffered = $.prop(elem, 'buffered');
2580
- if(!buffered){return;}
2581
- var bufferString = "";
2582
- for(var i = 0, len = buffered.length; i < len;i++){
2583
- bufferString += buffered.end(i);
2584
- }
2585
- return bufferString;
2586
- };
2587
- var testBuffer = function(){
2588
- var buffered = getBufferedString();
2589
- if(buffered != lastBuffered){
2590
- lastBuffered = buffered;
2591
- webshims.info('needed to trigger progress manually');
2592
- $(elem).triggerHandler('progress');
2593
- }
2594
- };
2595
-
2596
- $(this)
2597
- .on({
2598
- 'play loadstart progress': function(e){
2599
- if(e.type == 'progress'){
2600
- lastBuffered = getBufferedString();
2601
- }
2602
- clearTimeout(bufferTimer);
2603
- bufferTimer = setTimeout(testBuffer, 400);
2604
- },
2605
- 'emptied stalled mediaerror abort suspend': function(e){
2606
- if(e.type == 'emptied'){
2607
- lastBuffered = false;
2608
- }
2609
- clearTimeout(bufferTimer);
2610
- }
2611
- })
2612
- ;
2613
- if('ActiveXObject' in window && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay],.nonnative-api-active)')){
2614
- $(this).prop('preload', 'metadata').mediaLoad();
2615
- }
2616
- }
2617
2282
  }
2618
2283
 
2619
2284
  };
@@ -2626,7 +2291,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2626
2291
  }
2627
2292
 
2628
2293
  ['audio', 'video'].forEach(function(nodeName){
2629
- var supLoad, supController;
2294
+ var supLoad;
2630
2295
  supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
2631
2296
  prop: {
2632
2297
  value: function(){
@@ -2659,58 +2324,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2659
2324
  }
2660
2325
  }
2661
2326
  });
2662
-
2663
- // supController = webshims.defineNodeNameProperty(nodeName, 'controller', {
2664
- // prop: {
2665
- // get: function(type){
2666
- // if(!loadMediaGroup.loaded){
2667
- // loadMediaGroup();
2668
- // }
2669
- // if(mediaelement.controller){
2670
- // return mediaelement.controller[nodeName].get.apply(this, arguments);
2671
- // }
2672
- // return supController.prop._supget && supController.prop._supget.apply(this, arguments);
2673
- // },
2674
- // set: function(){
2675
- // var that = this;
2676
- // var args = arguments;
2677
- // if(!loadMediaGroup.loaded){
2678
- // loadMediaGroup();
2679
- // }
2680
- // if(mediaelement.controller){
2681
- // return mediaelement.controller[nodeName].set.apply(that, args);
2682
- // } else {
2683
- // webshims.ready('mediagroup', function(){
2684
- // mediaelement.controller[nodeName].set.apply(that, args);
2685
- // });
2686
- // }
2687
- // return supController.prop._supset && supController.prop._supset.apply(this, arguments);
2688
- // }
2689
- // }
2690
- // });
2691
-
2692
- // webshims.ready('mediagroup', function(){
2693
- // mediaelement.controller[nodeName].sup = supController;
2694
- // });
2695
2327
  });
2696
-
2697
- // webshims.onNodeNamesPropertyModify(['audio', 'video'], ['mediaGroup'], {
2698
- // set: function(){
2699
- // var that = this;
2700
- // var args = arguments;
2701
- // if(!loadMediaGroup.loaded){
2702
- // loadMediaGroup();
2703
- // }
2704
- // if(mediaelement.mediagroup){
2705
- // mediaelement.mediagroup.set.apply(that, args);
2706
- // } else {
2707
- // webshims.ready('mediagroup', function(){
2708
- // mediaelement.mediagroup.set.apply(that, args);
2709
- // });
2710
- // }
2711
- // },
2712
- // initAttr: true
2713
- // });
2328
+
2714
2329
 
2715
2330
  webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
2716
2331
  set: function(){
@@ -2733,9 +2348,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2733
2348
  if(!loadTrackUi.loaded && $('track', media).length){
2734
2349
  loadTrackUi();
2735
2350
  }
2736
- // if(!loadMediaGroup.loaded && this.getAttribute('mediagroup')){
2737
- // loadMediaGroup();
2738
- // }
2739
2351
  media = null;
2740
2352
  });
2741
2353
  });
@@ -2775,4 +2387,5 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2775
2387
  }
2776
2388
  webshims.ready('track', loadTrackUi);
2777
2389
  });
2390
+
2778
2391
  })(Modernizr, webshims);