webshims-rails 1.10.3 → 1.10.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +96 -73
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +2415 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +248 -745
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +771 -1206
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +679 -1201
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +46 -65
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +45 -64
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +94 -7
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +557 -1189
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +598 -1249
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +697 -1208
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +697 -1208
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +145 -78
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +472 -1280
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +144 -77
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +14 -15
  19. data/vendor/assets/javascripts/webshims/shims/combos/22.js +2 -2
  20. data/vendor/assets/javascripts/webshims/shims/combos/23.js +45 -64
  21. data/vendor/assets/javascripts/webshims/shims/combos/24.js +848 -0
  22. data/vendor/assets/javascripts/webshims/shims/combos/25.js +4373 -0
  23. data/vendor/assets/javascripts/webshims/shims/combos/26.js +1516 -0
  24. data/vendor/assets/javascripts/webshims/shims/combos/27.js +884 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/28.js +2067 -0
  26. data/vendor/assets/javascripts/webshims/shims/combos/29.js +1156 -0
  27. data/vendor/assets/javascripts/webshims/shims/combos/3.js +313 -700
  28. data/vendor/assets/javascripts/webshims/shims/combos/30.js +1868 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/31.js +1663 -0
  30. data/vendor/assets/javascripts/webshims/shims/combos/4.js +111 -20
  31. data/vendor/assets/javascripts/webshims/shims/combos/5.js +747 -1321
  32. data/vendor/assets/javascripts/webshims/shims/combos/6.js +837 -1809
  33. data/vendor/assets/javascripts/webshims/shims/combos/7.js +435 -1239
  34. data/vendor/assets/javascripts/webshims/shims/combos/8.js +360 -766
  35. data/vendor/assets/javascripts/webshims/shims/combos/9.js +843 -1676
  36. data/vendor/assets/javascripts/webshims/shims/details.js +1 -1
  37. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +90 -3
  38. data/vendor/assets/javascripts/webshims/shims/filereader.js +386 -0
  39. data/vendor/assets/javascripts/webshims/shims/form-core.js +201 -680
  40. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +418 -0
  41. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +69 -467
  42. data/vendor/assets/javascripts/webshims/shims/form-message.js +21 -17
  43. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +19 -82
  44. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +17 -6
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +570 -1185
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +181 -28
  47. data/vendor/assets/javascripts/webshims/shims/form-validation.js +599 -0
  48. data/vendor/assets/javascripts/webshims/{extras/custom-validity.js → shims/form-validators.js} +33 -38
  49. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +865 -0
  50. data/vendor/assets/javascripts/webshims/shims/geolocation.js +2 -2
  51. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.txt +37 -34
  52. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.txt +88 -48
  53. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +74 -0
  54. data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +121 -0
  55. data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +47 -0
  56. data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
  59. data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
  60. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Thumbs.db +0 -0
  61. data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  62. data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
  63. data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  66. data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
  67. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +257 -0
  68. data/vendor/assets/javascripts/webshims/shims/json-storage.js +4 -4
  69. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +44 -63
  70. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +10 -11
  71. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +2 -1
  72. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +5 -3
  73. data/vendor/assets/javascripts/webshims/shims/range-ui.js +110 -17
  74. data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/styles/range-track.png +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +104 -21
  77. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +90 -16
  78. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  81. data/vendor/assets/javascripts/webshims/shims/track-ui.js +35 -3
  82. data/vendor/assets/javascripts/webshims/shims/track.js +1 -1
  83. metadata +33 -3
@@ -0,0 +1,47 @@
1
+ jPicker 1.1.6
2
+
3
+ jQuery Plugin for Photoshop style color picker
4
+
5
+ Copyright (c) 2010 Christopher T. Tillman
6
+ Digital Magic Productions, Inc. (http://www.digitalmagicpro.com/)
7
+ MIT style license, FREE to use, alter, copy, sell, and especially ENHANCE
8
+
9
+ Painstakingly ported from John Dyers' excellent work on his own color picker based on the Prototype framework.
10
+
11
+ John Dyers' website: (http://johndyer.name)
12
+ Color Picker page: (http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx)
13
+
14
+
15
+ jPicker is a fast, lightweight jQuery plugin for including an advanced color picker in your web projects.
16
+ It has been painstakenly ported from John Dyers' awesome work on his picker using the Prototype framework.
17
+
18
+ jPicker supports all current browsers and has been extensively tested in Chrome, Firefox, IE5.5+, Safari,
19
+ and Opera.
20
+
21
+ If you are updating a current version, you MUST always use the CSS and image files from the download as
22
+ there may have been changes.
23
+
24
+ If you are moving from a V1.0.* version, you MUST read the docs below to implement some changes to the
25
+ Color object returned by the callback functions.
26
+
27
+
28
+ Known Issues
29
+ ______________
30
+ Attaching multiple jPicker objects on a single page will slow performance.
31
+ jPicker creates a new instance of the picker for every element. Performance will suffer when binding dozens of instances.
32
+
33
+
34
+ Coming Soon
35
+ ______________
36
+
37
+ Will consider supporting jQuery ThemeRoller CSS API for theming the UI if demand exists.
38
+
39
+ Planned For Future Release
40
+ ______________
41
+
42
+ Move the jPicker object to a single instance that all selection instances point to.
43
+ - This will result in much faster operation and initialization for pages with multiple pickers.
44
+
45
+ Add activateCallback option for calling a callback function when the jPicker is activated or its binding is switched to a different picker element.
46
+
47
+ Add multiple window modes for picker operation, include modal, popup, windowed, and exclusive.
@@ -0,0 +1,257 @@
1
+ .jPicker .Icon {
2
+ display: inline-block;
3
+ height: 24px; /* change this value if using a different sized color picker icon */
4
+ position: relative; /* make this element an absolute positioning container */
5
+ text-align: left; /* make the zero width children position to the left of container */
6
+ width: 25px; /* change this value if using a different sized color picker icon */
7
+ }
8
+ .jPicker .Icon span.Color, .jPicker .Icon span.Alpha {
9
+ background-position: 2px 2px;
10
+ display: block;
11
+ height: 100%;
12
+ left: 0px;
13
+ position: absolute;
14
+ top: 0px;
15
+ width: 100%;
16
+ }
17
+ .jPicker .Icon span.Image {
18
+ background-repeat: no-repeat;
19
+ cursor: pointer;
20
+ display: block;
21
+ height: 100%;
22
+ left: 0px;
23
+ position: absolute;
24
+ top: 0px;
25
+ width: 100%;
26
+ }
27
+ .jPicker.Container {
28
+ color: #000;
29
+ z-index: 10;
30
+ }
31
+ table.jPicker {
32
+ font-family: Arial, Helvetica, Sans-Serif;
33
+ font-size: 12px !important;
34
+ margin: 0px;
35
+ padding: 0;
36
+ width: 545px;
37
+ z-index: 20;
38
+ }
39
+ .jPicker hr {
40
+ margin: 7px 0;
41
+ }
42
+ .jPicker .Move {
43
+ background-color: #dddddd;
44
+ border-color: #fff #666 #666 #fff;
45
+ border-style: solid;
46
+ border-width: 1px;
47
+ cursor: move;
48
+ height: 12px;
49
+ padding: 0px;
50
+ }
51
+ .jPicker .Title {
52
+ display: none;
53
+ }
54
+ .jPicker div.Map {
55
+ border-bottom: 2px solid #fff;
56
+ border-left: 2px solid #9a9a9a;
57
+ border-right: 2px solid #fff;
58
+ border-top: 2px solid #9a9a9a;
59
+ cursor: crosshair;
60
+ height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
61
+ margin: 0px 10px 10px 10px;
62
+ overflow: hidden; /* hide the overdraw of the Color Map icon when at edge of viewing box */
63
+ padding: 0px;
64
+ position: relative; /* make this element an absolute positioning container */
65
+ width: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
66
+ }
67
+ .jPicker div[class="Map"] {
68
+ height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
69
+ width: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
70
+ }
71
+ .jPicker div.Bar {
72
+ border-bottom: 2px solid #fff;
73
+ border-left: 2px solid #9a9a9a;
74
+ border-right: 2px solid #fff;
75
+ border-top: 2px solid #9a9a9a;
76
+ cursor: n-resize;
77
+ height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
78
+ margin: -11px 10px 0 5px;
79
+ overflow: hidden;
80
+ padding: 0px;
81
+ position: relative;
82
+ width: 24px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 20px later */
83
+ }
84
+ .jPicker div[class="Bar"] {
85
+ height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
86
+ width: 20px; /* correct to 20px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
87
+ }
88
+ .jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Map .Map3, .jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4, .jPicker .Bar .Map5, .jPicker .Bar .Map6 {
89
+ background-color: transparent;
90
+ background-image: none;
91
+ display: block;
92
+ left: 0px;
93
+ position: absolute;
94
+ top: 0px;
95
+ }
96
+ .jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Map .Map3 {
97
+ height: 2596px;
98
+ width: 256px; /* must specify pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
99
+ would not be drawn if its overflow is set to hidden. */
100
+ }
101
+ .jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4 {
102
+ height: 3896px;
103
+ width: 20px; /* must specify pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
104
+ would not be drawn if its overflow is set to hidden. */
105
+ }
106
+ .jPicker .Bar .Map5, .jPicker .Bar .Map6 {
107
+ height: 256px;
108
+ width: 20px; /* must specify pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
109
+ would not be drawn if its overflow is set to hidden. */
110
+ }
111
+ .jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Bar .Map6 {
112
+ background-repeat: no-repeat;
113
+ }
114
+ .jPicker .Map .Map3, .jPicker .Bar .Map5 {
115
+ background-repeat: repeat;
116
+ }
117
+ .jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4 {
118
+ background-repeat: repeat-x;
119
+ }
120
+ .jPicker .Map .Arrow {
121
+ display: block;
122
+ position: absolute;
123
+ }
124
+ .jPicker .Bar .Arrow {
125
+ display: block;
126
+ left: 0px; /* (arrow width / 2) - (element width / 2) - position arrows' center in elements' center */
127
+ position: absolute;
128
+ }
129
+ .jPicker .Preview {
130
+ font-size: 9px;
131
+ padding: 5px 0px 0px 0px;
132
+ text-align: center;
133
+ }
134
+ .jPicker .Preview div {
135
+ border: 2px inset #eee;
136
+ height: 62px;
137
+ margin: 0px auto;
138
+ padding: 0px;
139
+ width: 62px;
140
+ }
141
+ .jPicker .Preview div span {
142
+ border: 1px solid #000;
143
+ display: block;
144
+ height: 30px;
145
+ margin: 0px auto;
146
+ padding: 0px;
147
+ width: 60px;
148
+ }
149
+ .jPicker .Preview .Active {
150
+ border-bottom-width: 0px;
151
+ }
152
+ .jPicker .Preview .Current {
153
+ border-top-width: 0px;
154
+ cursor: pointer;
155
+ }
156
+ .jPicker input {
157
+ font-size: 13px;
158
+ }
159
+ .jPicker .Button {
160
+ text-align: center;
161
+ padding: 0px 4px;
162
+ width: 115px;
163
+ }
164
+ .jPicker .Button input {
165
+ padding: 2px 0px;
166
+ width: 100px;
167
+ }
168
+ .jPicker .Button .Ok {
169
+ margin: 12px 0px 5px 0px;
170
+ }
171
+ .jPicker td {
172
+ margin: 0px;
173
+ padding: 0px;
174
+ }
175
+ .jPicker td.Radio {
176
+ margin: 0px;
177
+ padding: 0px;
178
+ width: 31px;
179
+ }
180
+ .jPicker td.Radio input {
181
+ margin: 0px 5px 0px 0px;
182
+ padding: 0px;
183
+ }
184
+ .jPicker td.Text {
185
+ font-size: 12px !important;
186
+ height: 22px;
187
+ margin: 0px;
188
+ padding: 0px;
189
+ text-align: left;
190
+ width: 70px;
191
+ }
192
+ .jPicker tr.Hex td.Text {
193
+ width: 100px;
194
+ }
195
+ .jPicker td.Text input {
196
+ background-color: #fff;
197
+ border: 1px inset #aaa;
198
+ height: 19px;
199
+ margin: 0px 0px 0px 5px;
200
+ text-align: left;
201
+ width: 30px;
202
+ }
203
+ .jPicker td[class="Text"] input {
204
+ height: 15px;
205
+ }
206
+ .jPicker tr.Hex td.Text input.Hex {
207
+ width: 45px;
208
+ margin-left: 2px;
209
+ text-align: center;
210
+ }
211
+ .jPicker.no-alpha-picker tr.Hex td.Text input.Hex {
212
+ width: 50px;
213
+ margin-left: 5px;
214
+ }
215
+ .jPicker tr.Hex td.Text input.AHex {
216
+ width: 15px;
217
+ }
218
+ .jPicker.no-alpha-picker tr.Hex td.Text input.AHex {
219
+ display: none;
220
+ }
221
+ .jPicker.no-alpha-picker tr.Alpha {
222
+ visibility: hidden;
223
+ }
224
+ .jPicker .Grid {
225
+ text-align: center;
226
+ width: 114px;
227
+ }
228
+ .jPicker .Grid span.QuickColor {
229
+ border: 1px inset #aaa;
230
+ cursor: pointer;
231
+ display: inline-block;
232
+ height: 15px;
233
+ line-height: 15px;
234
+ margin: 0px;
235
+ padding: 0px;
236
+ width: 19px;
237
+ }
238
+ .jPicker .Grid span[class="QuickColor"] {
239
+ width: 17px;
240
+ }
241
+ @media all
242
+ {
243
+ #jPicker { margin: 0px 8px; text-align: left; }
244
+ #jPicker ul { font-size: 15px; margin: 0px 0px 0px 15px; padding: 0px; }
245
+ #jPicker ul li { list-style: disc; padding: 2px 0px; }
246
+ #jPicker ul li ul { margin-bottom: 10px; }
247
+ #jPicker ul li ul li { list-style: circle; }
248
+ #jPicker p { font-size: 13px; padding: 0px 10px; }
249
+ #jPicker hr { clear: both; }
250
+ #jPicker h2.jPicker { font-size: 16px; padding: 20px 10px; }
251
+ #jPicker code { color: #8bd; font-size: 14px; font-weight: bold; }
252
+ #jPicker pre { background: #eee; border: 1px solid #000; color: #000; display: block; font-size: 11px; margin: 10px 5px; padding: 5px; }
253
+ #jPicker span { font-size: 13px; text-align: center; }
254
+ #jPicker a { color: #ff8050; }
255
+ #jPicker input { font-size: 13px; padding: 2px 5px; }
256
+ #jPicker h2 { font-size: 16px; margin: 10px 0px; }
257
+ }
@@ -253,7 +253,7 @@ if (!('sessionStorage' in window)) {window.sessionStorage = new Storage('session
253
253
  $.webshims.isReady('json-storage', true);
254
254
  };
255
255
  var storageCFG = $.webshims.cfg['json-storage'];
256
- $.webshims.swfLocalStorage = {
256
+ webshims.swfLocalStorage = {
257
257
  show: function(){
258
258
  if(storageCFG.exceededMessage){
259
259
  $('#swflocalstorageshim-wrapper').prepend('<div class="polyfill-exceeded-message">'+ storageCFG.exceededMessage +'</div>');
@@ -284,14 +284,14 @@ if (!('sessionStorage' in window)) {window.sessionStorage = new Storage('session
284
284
  //
285
285
  // };
286
286
 
287
- $.webshims.ready('DOM swfmini', function(){
287
+ webshims.ready('DOM swfmini', function(){
288
288
 
289
289
  var swfmini = window.swfmini;
290
290
  if(runStart || (('localStorage' in window) && document.getElementById('swflocalstorageshim')) ){return;}
291
291
  runStart = true;
292
292
  if(swfmini && swfmini.hasFlashPlayerVersion('8.0.0')){
293
293
  $('body').append('<div id="swflocalstorageshim-wrapper"><div id="swflocalstorageshim" /></div>');
294
- swfmini.embedSWF($.webshims.cfg.basePath +'swf/localStorage.swf' +($.webshims.cfg.addCacheBuster || ''), 'swflocalstorageshim', '295', '198', '8.0.0', null, {allowscriptaccess: 'always'}, {name: 'swflocalstorageshim'}, function(e){
294
+ swfmini.embedSWF(webshims.cfg.basePath +'swf/localStorage.swf' +(webshims.cfg.addCacheBuster || ''), 'swflocalstorageshim', '295', '198', '8.0.0', null, {allowscriptaccess: 'always'}, {name: 'swflocalstorageshim'}, function(e){
295
295
  if(!e.success && !window.localStorage){
296
296
  localStorageSwfCallback();
297
297
  }
@@ -299,7 +299,7 @@ if (!('sessionStorage' in window)) {window.sessionStorage = new Storage('session
299
299
  clearTimeout(swfTimer);
300
300
  swfTimer = setTimeout(function(){
301
301
  if(!('localStorage' in window)){
302
- $.webshims.warn('Add your development-directory to the local-trusted security sandbox: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html');
302
+ webshims.warn('Add your development-directory to the local-trusted security sandbox: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html');
303
303
  }
304
304
  localStorageSwfCallback();
305
305
  }, (location.protocol.indexOf('file') === 0) ? 500 : 9999);
@@ -3,7 +3,7 @@
3
3
  var hasNative = Modernizr.audio && Modernizr.video;
4
4
  var supportsLoop = false;
5
5
  var bugs = webshims.bugs;
6
-
6
+ var swfType = 'mediaelement-jaris';
7
7
  var loadSwf = function(){
8
8
  webshims.ready(swfType, function(){
9
9
  if(!webshims.mediaelement.createSWF){
@@ -13,7 +13,7 @@
13
13
  });
14
14
  };
15
15
  var options = webshims.cfg.mediaelement;
16
- var swfType = 'mediaelement-jaris';
16
+ var hasFullTrackSupport;
17
17
  var hasSwf;
18
18
  if(!options){
19
19
  webshims.error("mediaelement wasn't implemented but loaded");
@@ -26,14 +26,11 @@
26
26
 
27
27
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
28
28
 
29
- if(!Modernizr.videoBuffered){
29
+ if(!Modernizr.videoBuffered ){
30
30
  webshims.addPolyfill('mediaelement-native-fix', {
31
- f: 'mediaelement',
32
- test: Modernizr.videoBuffered,
33
31
  d: ['dom-support']
34
32
  });
35
-
36
- webshims.reTest('mediaelement-native-fix');
33
+ webshims.loader.loadList(['mediaelement-native-fix']);
37
34
  }
38
35
  }
39
36
 
@@ -44,9 +41,9 @@
44
41
  };
45
42
  var switchOptions = function(e){
46
43
  var media;
47
- var parent = e.target.parentNode;
44
+ var parent;
48
45
  if(!options.preferFlash &&
49
- ($(e.target).is('audio, video') || (parent && $('source:last', parent)[0] == e.target)) &&
46
+ ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
50
47
  (media = $(e.target).closest('audio, video')) && !noSwitch[media.prop('error')]
51
48
  ){
52
49
  $(function(){
@@ -60,7 +57,7 @@
60
57
  $('audio, video').each(function(){
61
58
  webshims.mediaelement.selectSource(this);
62
59
  });
63
- webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
60
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
64
61
  }
65
62
  }, 9);
66
63
  });
@@ -95,43 +92,9 @@
95
92
  bugs.track = true;
96
93
  }
97
94
  }
98
-
99
- var trackOptions = webshims.cfg.track;
100
- var trackListener = function(e){
101
- $(e.target).filter('track').each(changeApi);
102
- };
103
- var changeApi = function(){
104
- if(bugs.track || (!trackOptions.override && $.prop(this, 'readyState') == 3)){
105
- trackOptions.override = true;
106
- webshims.reTest('track');
107
- document.removeEventListener('error', trackListener, true);
108
- if(this && $.nodeName(this, 'track')){
109
- webshims.error("track support was overwritten. Please check your vtt including your vtt mime-type");
110
- } else {
111
- webshims.info("track support was overwritten. due to bad browser support");
112
- }
113
- return false;
114
- }
115
- };
116
- var detectTrackError = function(){
117
- document.addEventListener('error', trackListener, true);
118
-
119
- if(bugs.track){
120
- changeApi();
121
- } else {
122
- $('track').each(changeApi);
123
- }
124
- };
125
- if(!trackOptions.override){
126
- if(webshims.isReady('track')){
127
- detectTrackError();
128
- } else {
129
- $(detectTrackError);
130
- }
131
- }
132
95
  })();
133
-
134
96
  }
97
+ hasFullTrackSupport = Modernizr.track && !bugs.track;
135
98
 
136
99
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined){
137
100
  hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
@@ -216,7 +179,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
216
179
  var loadTrackUi = function(){
217
180
  if(loadTrackUi.loaded){return;}
218
181
  loadTrackUi.loaded = true;
219
- $(function(){
182
+ webshims.ready('WINDOWLOAD', function(){
183
+ loadThird();
220
184
  webshims.loader.loadList(['track-ui']);
221
185
  });
222
186
  };
@@ -389,27 +353,40 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
389
353
  }
390
354
  return ret;
391
355
  };
392
-
356
+ var emptyType = (/^\s*application\/octet\-stream\s*$/i);
357
+ var getRemoveEmptyType = function(){
358
+ var ret = emptyType.test($.attr(this, 'type') || '');
359
+ if(ret){
360
+ $(this).removeAttr('type');
361
+ }
362
+ return ret;
363
+ };
393
364
  mediaelement.setError = function(elem, message){
394
- if(!message){
395
- message = "can't play sources";
365
+ if($('source', elem).filter(getRemoveEmptyType).length){
366
+ webshims.error('"application/octet-stream" is a useless mimetype for audio/video. Please change this attribute.');
367
+ try {
368
+ $(elem).mediaLoad();
369
+ } catch(er){}
370
+ } else {
371
+ if(!message){
372
+ message = "can't play sources";
373
+ }
374
+ $(elem).pause().data('mediaerror', message);
375
+ webshims.error('mediaelementError: '+ message);
376
+ setTimeout(function(){
377
+ if($(elem).data('mediaerror')){
378
+ $(elem).trigger('mediaerror');
379
+ }
380
+ }, 1);
396
381
  }
397
382
 
398
- $(elem).pause().data('mediaerror', message);
399
- webshims.error('mediaelementError: '+ message);
400
- setTimeout(function(){
401
- if($(elem).data('mediaerror')){
402
- $(elem).trigger('mediaerror');
403
- }
404
- }, 1);
383
+
405
384
  };
406
385
 
407
386
  var handleThird = (function(){
408
387
  var requested;
409
388
  return function( mediaElem, ret, data ){
410
- if(!requested){
411
- loadTrackUi();
412
- }
389
+
413
390
  webshims.ready(hasSwf ? swfType : 'mediaelement-yt', function(){
414
391
  if(mediaelement.createSWF){
415
392
  mediaelement.createSWF( mediaElem, ret, data );
@@ -554,6 +531,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
554
531
  var buffered = getBufferedString();
555
532
  if(buffered != lastBuffered){
556
533
  lastBuffered = buffered;
534
+ webshims.info('needed to trigger progress manually');
557
535
  $(elem).triggerHandler('progress');
558
536
  }
559
537
  };
@@ -605,11 +583,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
605
583
  $('video, audio', context)
606
584
  .add(insertedElement.filter('video, audio'))
607
585
  .each(function(){
608
- if(!mediaelement.canNativePlaySrces(this) || (!loadTrackUi.loaded && $('track', this).length)){
586
+ if(!mediaelement.canNativePlaySrces(this)){
609
587
  loadThird();
610
588
  handleMedia = true;
611
589
  return false;
612
590
  }
591
+ if((!hasFullTrackSupport || webshims.modules.track.options.override) && !loadTrackUi.loaded && $('track', this).length){
592
+ loadTrackUi();
593
+ }
613
594
  })
614
595
  ;
615
596
  }
@@ -617,7 +598,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
617
598
  }
618
599
  };
619
600
 
620
- if(Modernizr.track && !bugs.track){
601
+ if(hasFullTrackSupport){
621
602
  webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
622
603
  get: function(){
623
604
  return this._shimActiveCues || this.activeCues;
@@ -632,6 +613,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
632
613
  } else {
633
614
  webshims.ready(swfType, initMediaElements);
634
615
  }
635
- webshims.ready('WINDOWLOAD mediaelement', loadTrackUi);
616
+ webshims.ready('track', loadTrackUi);
636
617
  });
637
- })(jQuery, Modernizr, jQuery.webshims);
618
+ })(jQuery, Modernizr, webshims);