webshims-rails 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. data/lib/webshims-rails.rb +1 -1
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/readme.textile +5 -3
  4. data/vendor/assets/javascripts/webshims/dev/extras/custom-validity.js +261 -0
  5. data/vendor/assets/javascripts/webshims/dev/extras/modernizr-custom.js +535 -0
  6. data/vendor/assets/javascripts/webshims/dev/extras/mousepress.js +60 -0
  7. data/vendor/assets/javascripts/webshims/dev/polyfiller.js +1171 -0
  8. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/README +62 -0
  9. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/canvas2png.js +42 -0
  10. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.js +28 -0
  11. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/proxy.php +73 -0
  13. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/save.php +49 -0
  14. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/README +82 -0
  15. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/canvas2png.js +42 -0
  16. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  17. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  18. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flashcanvas.js +31 -0
  19. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/proxy.php +73 -0
  20. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/save.php +49 -0
  21. data/vendor/assets/javascripts/webshims/dev/shims/combos/1.js +1710 -0
  22. data/vendor/assets/javascripts/webshims/dev/shims/combos/10.js +3317 -0
  23. data/vendor/assets/javascripts/webshims/dev/shims/combos/11.js +1585 -0
  24. data/vendor/assets/javascripts/webshims/dev/shims/combos/12.js +1587 -0
  25. data/vendor/assets/javascripts/webshims/dev/shims/combos/13.js +1054 -0
  26. data/vendor/assets/javascripts/webshims/dev/shims/combos/14.js +476 -0
  27. data/vendor/assets/javascripts/webshims/dev/shims/combos/15.js +314 -0
  28. data/vendor/assets/javascripts/webshims/dev/shims/combos/16.js +2101 -0
  29. data/vendor/assets/javascripts/webshims/dev/shims/combos/17.js +2264 -0
  30. data/vendor/assets/javascripts/webshims/dev/shims/combos/18.js +2161 -0
  31. data/vendor/assets/javascripts/webshims/dev/shims/combos/19.js +2244 -0
  32. data/vendor/assets/javascripts/webshims/dev/shims/combos/2.js +2294 -0
  33. data/vendor/assets/javascripts/webshims/dev/shims/combos/20.js +1607 -0
  34. data/vendor/assets/javascripts/webshims/dev/shims/combos/21.js +1635 -0
  35. data/vendor/assets/javascripts/webshims/dev/shims/combos/22.js +2409 -0
  36. data/vendor/assets/javascripts/webshims/dev/shims/combos/23.js +2168 -0
  37. data/vendor/assets/javascripts/webshims/dev/shims/combos/24.js +2777 -0
  38. data/vendor/assets/javascripts/webshims/dev/shims/combos/25.js +2204 -0
  39. data/vendor/assets/javascripts/webshims/dev/shims/combos/26.js +2863 -0
  40. data/vendor/assets/javascripts/webshims/dev/shims/combos/27.js +4079 -0
  41. data/vendor/assets/javascripts/webshims/dev/shims/combos/3.js +2971 -0
  42. data/vendor/assets/javascripts/webshims/dev/shims/combos/4.js +823 -0
  43. data/vendor/assets/javascripts/webshims/dev/shims/combos/5.js +1078 -0
  44. data/vendor/assets/javascripts/webshims/dev/shims/combos/59.js +1754 -0
  45. data/vendor/assets/javascripts/webshims/dev/shims/combos/6.js +1230 -0
  46. data/vendor/assets/javascripts/webshims/dev/shims/combos/7.js +1485 -0
  47. data/vendor/assets/javascripts/webshims/dev/shims/combos/8.js +1442 -0
  48. data/vendor/assets/javascripts/webshims/dev/shims/combos/9.js +2515 -0
  49. data/vendor/assets/javascripts/webshims/dev/shims/details.js +146 -0
  50. data/vendor/assets/javascripts/webshims/dev/shims/dom-extend.js +908 -0
  51. data/vendor/assets/javascripts/webshims/dev/shims/es5.js +802 -0
  52. data/vendor/assets/javascripts/webshims/dev/shims/excanvas.js +924 -0
  53. data/vendor/assets/javascripts/webshims/dev/shims/form-core.js +660 -0
  54. data/vendor/assets/javascripts/webshims/dev/shims/form-datalist.js +677 -0
  55. data/vendor/assets/javascripts/webshims/dev/shims/form-message.js +164 -0
  56. data/vendor/assets/javascripts/webshims/dev/shims/form-native-extend.js +256 -0
  57. data/vendor/assets/javascripts/webshims/dev/shims/form-native-fix.js +261 -0
  58. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-api.js +384 -0
  59. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-ui.js +847 -0
  60. data/vendor/assets/javascripts/webshims/dev/shims/form-shim-extend.js +1472 -0
  61. data/vendor/assets/javascripts/webshims/dev/shims/geolocation.js +168 -0
  62. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ar.js +32 -0
  63. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ch-ZN.js +32 -0
  64. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-de.txt +33 -0
  65. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-el.js +32 -0
  66. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-en.txt +34 -0
  67. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-es.js +32 -0
  68. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-fr.js +32 -0
  69. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-he.js +32 -0
  70. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hi.js +32 -0
  71. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hu.js +32 -0
  72. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-it.js +32 -0
  73. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ja.js +32 -0
  74. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-nl.js +32 -0
  75. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-pt-PT.js +32 -0
  76. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ru.js +32 -0
  77. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-sv.js +32 -0
  78. data/vendor/assets/javascripts/webshims/dev/shims/json-storage.js +308 -0
  79. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/license.txt +1 -0
  80. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/player.swf +0 -0
  81. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/readme.html +87 -0
  82. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-core.js +534 -0
  83. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-native-fix.js +99 -0
  84. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-swf.js +1074 -0
  85. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-yt.js +543 -0
  86. data/vendor/assets/javascripts/webshims/dev/shims/styles/details-arrows.png +0 -0
  87. data/vendor/assets/javascripts/webshims/dev/shims/styles/forms.png +0 -0
  88. data/vendor/assets/javascripts/webshims/dev/shims/styles/polyfill-loader.gif +0 -0
  89. data/vendor/assets/javascripts/webshims/dev/shims/styles/shim.css +677 -0
  90. data/vendor/assets/javascripts/webshims/dev/shims/swf/jwwebshims.swf +0 -0
  91. data/vendor/assets/javascripts/webshims/dev/shims/swf/localStorage.swf +0 -0
  92. data/vendor/assets/javascripts/webshims/dev/shims/track-ui.js +292 -0
  93. data/vendor/assets/javascripts/webshims/dev/shims/track.js +763 -0
  94. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +20 -20
  95. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +29 -29
  96. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +37 -33
  97. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +83 -76
  98. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +44 -42
  99. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +43 -38
  100. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +27 -25
  101. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +60 -55
  102. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +68 -64
  103. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +60 -59
  104. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +66 -64
  105. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +74 -69
  106. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +46 -43
  107. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +52 -47
  108. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +61 -57
  109. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +68 -60
  110. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +82 -77
  111. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +58 -0
  112. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +80 -0
  113. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +103 -0
  114. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +96 -91
  115. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +30 -31
  116. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +37 -39
  117. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +59 -61
  118. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +31 -29
  119. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +38 -37
  120. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +38 -33
  121. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +68 -63
  122. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +22 -20
  123. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +15 -14
  124. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +22 -22
  125. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +22 -22
  126. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +8 -9
  127. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +7 -8
  128. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +23 -21
  129. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +44 -33
  130. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +3 -0
  131. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  132. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +86 -86
  133. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +16 -13
  134. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +30 -30
  135. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +14 -0
  136. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +71 -10
  137. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +9 -0
  138. data/vendor/assets/javascripts/webshims/minified/shims/track.js +20 -0
  139. metadata +101 -5
  140. data/vendor/assets/javascripts/webshims/minified/shims/form-output.js +0 -5
@@ -0,0 +1,543 @@
1
+ jQuery.webshims.register('mediaelement-yt', function($, webshims, window, document, undefined, options){
2
+ "use strict";
3
+ var mediaelement = webshims.mediaelement;
4
+ var ytAPI = jQuery.Deferred();
5
+ window.onYouTubePlayerAPIReady = function() {
6
+ ytAPI.resolve();
7
+ };
8
+ if(window.YT && YT.Player){
9
+ window.onYouTubePlayerAPIReady();
10
+ }
11
+
12
+ var getProps = {
13
+ paused: true,
14
+ ended: false,
15
+ currentSrc: '',
16
+ duration: window.NaN,
17
+
18
+ readyState: 0,
19
+ networkState: 0,
20
+ videoHeight: 0,
21
+ videoWidth: 0,
22
+ error: null,
23
+ buffered: {
24
+ start: function(index){
25
+ if(index){
26
+ webshims.error('buffered index size error');
27
+ return;
28
+ }
29
+ return 0;
30
+ },
31
+ end: function(index){
32
+ if(index){
33
+ webshims.error('buffered index size error');
34
+ return;
35
+ }
36
+ return 0;
37
+ },
38
+ length: 0
39
+ }
40
+ };
41
+ var getPropKeys = Object.keys(getProps);
42
+
43
+ var getSetProps = {
44
+ currentTime: 0,
45
+ volume: 1,
46
+ muted: false
47
+ };
48
+ var getSetPropKeys = Object.keys(getSetProps);
49
+
50
+ var playerStateObj = $.extend({
51
+ isActive: 'html5',
52
+ activating: 'html5',
53
+ wasSwfReady: false,
54
+ _metadata: false,
55
+ _callMeta: false,
56
+ currentTime: 0,
57
+ _buffered: 0,
58
+ _ppFlag: undefined
59
+ }, getProps, getSetProps);
60
+
61
+ var trigger = function(elem, evt){
62
+ evt = $.Event(evt);
63
+ evt.preventDefault();
64
+ $.event.trigger(evt, undefined, elem);
65
+ };
66
+
67
+ var resetSwfProps = (function(){
68
+ var resetProtoProps = ['_buffered', '_metadata', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'videoHeight', 'videoWidth', '_callMeta'];
69
+ var len = resetProtoProps.length;
70
+ return function(data){
71
+
72
+ if(!data){return;}
73
+ var lenI = len;
74
+ var networkState = data.networkState;
75
+ data.readyState = 0;
76
+ while(--lenI){
77
+ delete data[resetProtoProps[lenI]];
78
+ }
79
+ data.buffered.length = 0;
80
+ clearInterval(data._timeInterval);
81
+ if(networkState){
82
+ trigger(data._elem, 'emptied');
83
+ }
84
+ };
85
+ })();
86
+
87
+ var setElementDimension = function(data){
88
+ var elem = data._elem;
89
+ var box = data.shadowElem;
90
+ box.css({
91
+ width: elem.style.width || $(elem).width(),
92
+ height: elem.style.height || $(elem).height()
93
+ });
94
+ };
95
+
96
+ var getYtDataFromElem = function(elem){
97
+ try {
98
+ (elem.nodeName);
99
+ } catch(er){
100
+ return null;
101
+ }
102
+ var data = webshims.data(elem, 'mediaelement');
103
+ return (data && data.isActive == 'third') ? data : null;
104
+ };
105
+
106
+ var getYtId = function(src){
107
+ var found;
108
+ src = src.split('?');
109
+ if(src[0].indexOf('youtube.com/watch') != -1 && src[1]){
110
+ src = src[1].split('&');
111
+ $.each(src, function(i, name){
112
+ name = name.split('=');
113
+ if(name[0] == 'v'){
114
+ src = name[1];
115
+ found = true;
116
+ return false;
117
+ }
118
+ });
119
+ } else if(src[0].indexOf('youtube.com/v/') != -1) {
120
+ src = src[0].split('/');
121
+ $.each(src, function(i, name){
122
+ if(found){
123
+ src = name;
124
+ return false;
125
+ }
126
+
127
+ if(name == 'v'){
128
+ found = true;
129
+ }
130
+ });
131
+ }
132
+ if(!found){
133
+ webshims.warn('no youtube id found: '+ src);
134
+ }
135
+ return src;
136
+ };
137
+
138
+ var startAutoPlay = function(data){
139
+ if(!data){return;}
140
+ if( (data._ppFlag === undefined && ($.prop(data._elem, 'autoplay')) || !data.paused)){
141
+ setTimeout(function(){
142
+ if(data.isActive == 'third' && (data._ppFlag === undefined || !data.paused)){
143
+ try {
144
+ $(data._elem).play();
145
+ } catch(er){}
146
+ }
147
+ }, 1);
148
+ }
149
+ };
150
+
151
+ var addMediaToStopEvents = $.noop;
152
+ (function(){
153
+ var stopEvents = {
154
+ play: 1,
155
+ playing: 1
156
+ };
157
+ var hideEvtArray = ['play', 'pause', 'playing', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
158
+ var hidevents = hideEvtArray.map(function(evt){
159
+ return evt +'.webshimspolyfill';
160
+ }).join(' ');
161
+
162
+ var hidePlayerEvents = function(event){
163
+ var data = webshims.data(event.target, 'mediaelement');
164
+ if(!data){return;}
165
+ var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
166
+ if( isNativeHTML5 == (data.activating == 'third') ){
167
+ event.stopImmediatePropagation();
168
+ if(stopEvents[event.type] && data.isActive != data.activating){
169
+ $(event.target).pause();
170
+ }
171
+ }
172
+ };
173
+
174
+ addMediaToStopEvents = function(elem){
175
+ $(elem)
176
+ .unbind(hidevents)
177
+ .bind(hidevents, hidePlayerEvents)
178
+ ;
179
+ hideEvtArray.forEach(function(evt){
180
+ webshims.moveToFirstEvent(elem, evt);
181
+ });
182
+ };
183
+ addMediaToStopEvents(document);
184
+ })();
185
+
186
+ $(document).bind('emptied', function(e){
187
+ var data = getYtDataFromElem(e.target);
188
+ startAutoPlay(data);
189
+ });
190
+
191
+
192
+
193
+ mediaelement.setActive = function(elem, type, data){
194
+ if(!data){
195
+ data = webshims.data(elem, 'mediaelement');
196
+ }
197
+ if(!data || data.isActive == type){return;}
198
+ if(type != 'html5' && type != 'third'){
199
+ webshims.warn('wrong type for mediaelement activating: '+ type);
200
+ }
201
+ var shadowData = webshims.data(elem, 'shadowData');
202
+ data.activating = type;
203
+ $(elem).pause();
204
+ data.isActive = type;
205
+ if(type == 'third'){
206
+ shadowData.shadowElement = shadowData.shadowFocusElement = data.shadowElem[0];
207
+ $(elem).addClass('yt-api-active nonnative-api-active').hide().getShadowElement().show();
208
+ } else {
209
+ clearInterval(data._timeInterval);
210
+ $(elem).removeClass('yt-api-active nonnative-api-active').show().getShadowElement().hide();
211
+ shadowData.shadowElement = shadowData.shadowFocusElement = false;
212
+ }
213
+ $(elem).trigger('mediaelementapichange');
214
+ };
215
+
216
+
217
+ var handlePlayPauseState = function(state, data){
218
+ data._ppFlag = true;
219
+ if(state == 'playing'){
220
+ handlePlayPauseState('play', data);
221
+ if(data.readyState < 3){
222
+ data.readyState = 3;
223
+ trigger(data._elem, 'canplay');
224
+ }
225
+ $(data._elem).trigger('playing');
226
+ }
227
+
228
+ if(state == 'play' && data.paused){
229
+ data.paused = false;
230
+ trigger(data._elem, 'play');
231
+ } else if(state == 'pause' && !data.paused){
232
+ data.paused = true;
233
+ trigger(data._elem, 'pause');
234
+ }
235
+ };
236
+
237
+ var addYtAPI = function(mediaElm, elemId, data, ytID){
238
+ ytAPI.done(function(){
239
+ var handleBuffered = function(){
240
+ var buffered, bufFac;
241
+ if(data._metadata && data._ytAPI.getVideoLoadedFraction){
242
+ bufFac = data._ytAPI.getVideoLoadedFraction();
243
+ buffered = bufFac * data.duration;
244
+ if(data._buffered !== buffered){
245
+ data._buffered = buffered;
246
+ data.buffered.length = 1;
247
+ $(mediaElm).trigger('progress');
248
+ }
249
+ if(bufFac > 0.99){
250
+ data.networkState = 1;
251
+ }
252
+ if(data.readyState < 4 && data.currentTime && (data._buffered - data.currentTime > 9 || bufFac > 0.9) ){
253
+ data.readyState = 4;
254
+ trigger(data._elem, 'canplaythrough');
255
+ }
256
+ }
257
+ };
258
+ var getTime = function(){
259
+ if(data._ytAPI && data._ytAPI.getCurrentTime){
260
+ var currentTime = data._ytAPI.getCurrentTime();
261
+ if(data.currentTime != currentTime){
262
+ data.currentTime = currentTime;
263
+ $(mediaElm).trigger('timeupdate');
264
+ }
265
+ handleBuffered();
266
+ }
267
+ };
268
+
269
+ var getData = function(){
270
+ if(data.isActive == 'third' && data._ytAPI && data._ytAPI.getVolume){
271
+
272
+ var volume = data._ytAPI.getVolume() / 100;
273
+ var muted = data._ytAPI.isMuted();
274
+ var triggerVolume;
275
+ if(volume != data.volume){
276
+ data.volume = volume;
277
+ triggerVolume = true;
278
+ }
279
+ if(muted != data.muted){
280
+ data.muted = muted;
281
+ triggerVolume = true;
282
+ }
283
+ getTime();
284
+ handleBuffered();
285
+ if(triggerVolume){
286
+ $(mediaElm).trigger('volumechange');
287
+ }
288
+ }
289
+ };
290
+ var getIntervalTime = function(){
291
+ clearInterval(data._timeInterval);
292
+ data._timeInterval = setInterval(function(){
293
+ var currentTime = data._ytAPI.getCurrentTime();
294
+ if(data.currentTime != currentTime){
295
+ data.currentTime = currentTime;
296
+ $(mediaElm).trigger('timeupdate');
297
+ }
298
+ }, 350);
299
+ };
300
+ data._ytAPI = new YT.Player(elemId, {
301
+ height: '100%',
302
+ width: '100%',
303
+ playerVars: {
304
+ allowfullscreen: true,
305
+ fs: 1,
306
+ rel: 0,
307
+ showinfo: 0,
308
+ autohide: 1,
309
+ controls: $.prop(mediaElm, 'controls') ? 1:0
310
+ },
311
+
312
+ videoId: ytID,
313
+ events: {
314
+ 'onReady': function(e){
315
+ startAutoPlay(data);
316
+ setTimeout(getData, 9);
317
+ setInterval(getData, 5000);
318
+ },
319
+
320
+ 'onStateChange': function(e){
321
+ if(!e.target.getDuration){return;}
322
+ var callMeta;
323
+ if(!data._metadata){
324
+ var duration = e.target.getDuration();
325
+ if(duration){
326
+ data._metadata = true;
327
+ data.duration = duration;
328
+ if(data.readyState < 1){
329
+ data.readyState = 1;
330
+ }
331
+ if(data.networkState < 1){
332
+ data.networkState = 2;
333
+ }
334
+ callMeta = true;
335
+ }
336
+ }
337
+
338
+ if(callMeta){
339
+ $(mediaElm)
340
+ .trigger('durationchange')
341
+ .trigger('loadedmetadata')
342
+ ;
343
+ }
344
+ setTimeout(getData, 9);
345
+ if(e.data == 1){
346
+ handlePlayPauseState('playing', data);
347
+ getIntervalTime();
348
+ } else if(e.data == 2){
349
+ clearInterval(data._timeInterval);
350
+ handlePlayPauseState('pause', data);
351
+ } else if(e.data == 3){
352
+ if(data.readyState > 2){
353
+ data.readyState = 2;
354
+ }
355
+ data.networkState = 2;
356
+ $(mediaElm).trigger('waiting');
357
+ } else if(e.data === 0){
358
+ if(data.readyState > 4){
359
+ data.readyState = 4;
360
+ }
361
+ data.networkState = 1;
362
+ clearInterval(data._timeInterval);
363
+ $(mediaElm).trigger('ended');
364
+ }
365
+ }
366
+ }
367
+ });
368
+
369
+ $(mediaElm).bind('updateytdata', getData);
370
+
371
+ });
372
+ };
373
+
374
+ mediaelement.createSWF = function(mediaElem, src, data){
375
+ if(!data){
376
+ data = webshims.data(mediaElem, 'mediaelement');
377
+ }
378
+ var ytID = getYtId(src.src);
379
+ if(data){
380
+ mediaelement.setActive(mediaElem, 'third', data);
381
+ resetSwfProps(data);
382
+ data.currentSrc = src.srcProp;
383
+ ytAPI.done(function(){
384
+ if(data._ytAPI.loadVideoById){
385
+ data._ytAPI.loadVideoById(ytID);
386
+ }
387
+ });
388
+
389
+ return;
390
+ }
391
+ var hasControls = $.prop(mediaElem, 'controls');
392
+ var elemId = 'yt-'+ webshims.getID(mediaElem);
393
+ var box = $('<div class="polyfill-video polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
394
+ .css({
395
+ position: 'relative',
396
+ overflow: 'hidden'
397
+ })
398
+ ;
399
+
400
+
401
+
402
+ data = webshims.data(mediaElem, 'mediaelement', webshims.objectCreate(playerStateObj, {
403
+ shadowElem: {
404
+ value: box
405
+ },
406
+ _elem: {
407
+ value: mediaElem
408
+ },
409
+ currentSrc: {
410
+ value: src.srcProp
411
+ },
412
+ buffered: {
413
+ value: {
414
+ start: function(index){
415
+ if(index >= data.buffered.length){
416
+ webshims.error('buffered index size error');
417
+ return;
418
+ }
419
+ return 0;
420
+ },
421
+ end: function(index){
422
+ if(index >= data.buffered.length){
423
+ webshims.error('buffered index size error');
424
+ return;
425
+ }
426
+ return data._buffered;
427
+ },
428
+ length: 0
429
+ }
430
+ }
431
+ }));
432
+
433
+
434
+
435
+ setElementDimension(data);
436
+ box.insertBefore(mediaElem);
437
+
438
+ webshims.addShadowDom(mediaElem, box);
439
+ mediaelement.setActive(mediaElem, 'third', data);
440
+ addMediaToStopEvents(mediaElem);
441
+
442
+ addYtAPI(mediaElem, elemId, data, ytID);
443
+ $(mediaElem).bind('updatemediaelementdimensions updateshadowdom', function(){
444
+ setElementDimension(data);
445
+ });
446
+ };
447
+
448
+ (function(){
449
+ var triggerUpdate = function(data){
450
+ clearTimeout(data.updateDataTimer);
451
+ data.updateDataTimer = setTimeout(function(){
452
+ $(data._elem).triggerHandler('updateytdata');
453
+ }, 9);
454
+ };
455
+ var descs = {};
456
+ var mediaSup;
457
+ var createGetProp = function(key){
458
+ descs[key] = {
459
+ get: function(){
460
+ var data = getYtDataFromElem(this);
461
+ if(data){
462
+ return data[key];
463
+ } else {
464
+ return mediaSup[key].prop._supget.apply(this);
465
+ }
466
+ },
467
+ writeable: false
468
+ };
469
+ };
470
+ var createGetSetProp = function(key, setFn){
471
+ createGetProp(key);
472
+ delete descs[key].writeable;
473
+ descs[key].set = setFn;
474
+ };
475
+
476
+ getPropKeys.forEach(createGetProp);
477
+
478
+ createGetSetProp('currentTime', function(t){
479
+ var data = getYtDataFromElem(this);
480
+ if(data){
481
+ t *= 1;
482
+ if (!isNaN(t) && data._ytAPI && data._ytAPI.seekTo) {
483
+ data._ytAPI.seekTo(t);
484
+ triggerUpdate(data);
485
+ }
486
+ } else {
487
+ return mediaSup.currentTime.prop._supset.apply(this, arguments);
488
+ }
489
+ });
490
+
491
+ createGetSetProp('muted', function(mute){
492
+ var data = getYtDataFromElem(this);
493
+ if(data){
494
+ if (data._ytAPI && data._ytAPI.mute) {
495
+ data._ytAPI[mute ? 'mute' : 'unMute']();
496
+ triggerUpdate(data);
497
+ }
498
+
499
+ } else {
500
+ return mediaSup.muted.prop._supset.apply(this, arguments);
501
+ }
502
+ });
503
+
504
+ createGetSetProp('volume', function(v){
505
+ var data = getYtDataFromElem(this);
506
+ if(data){
507
+ v *= 100;
508
+ if (!isNaN(v) && data._ytAPI && data._ytAPI.setVolume) {
509
+ if(v < 0 || v > 100){
510
+ webshims.error('volume greater or less than allowed '+ (v / 100));
511
+ }
512
+ data._ytAPI.setVolume(v);
513
+ triggerUpdate(data);
514
+ }
515
+
516
+ } else {
517
+ return mediaSup.volume.prop._supset.apply(this, arguments);
518
+ }
519
+ });
520
+
521
+ $.each(['play', 'pause'], function(i, name){
522
+ var ytName = name+'Video';
523
+ descs[name] = {
524
+ value: function(){
525
+ var data = getYtDataFromElem(this);
526
+ if(data){
527
+ if(data._ytAPI && data._ytAPI[ytName]){
528
+ data._ytAPI[ytName]();
529
+ handlePlayPauseState(name, data);
530
+ }
531
+ } else {
532
+ return mediaSup[name].prop._supvalue.apply(this, arguments);
533
+ }
534
+ }
535
+ };
536
+
537
+ });
538
+ mediaSup = webshims.defineNodeNameProperties('video', descs, 'prop');
539
+ })();
540
+
541
+
542
+
543
+ });