WordPress.org

Make WordPress Core

Ticket #23282: 23282.13.diff

File 23282.13.diff, 560.8 KB (added by DrewAPicture, 7 years ago)

move into wp-includes/js

Line 
1Index: wp-includes/js/mediaelement/background.png
2===================================================================
3Cannot display: file marked as a binary type.
4svn:mime-type = application/octet-stream
5Index: wp-includes/js/mediaelement/background.png
6===================================================================
7--- wp-includes/js/mediaelement/background.png  (revision 23731)
8+++ wp-includes/js/mediaelement/background.png  (working copy)
9
10Property changes on: wp-includes/js/mediaelement/background.png
11___________________________________________________________________
12Added: svn:mime-type
13## -0,0 +1 ##
14+application/octet-stream
15\ No newline at end of property
16Index: wp-includes/js/mediaelement/bigplay.png
17===================================================================
18Cannot display: file marked as a binary type.
19svn:mime-type = application/octet-stream
20Index: wp-includes/js/mediaelement/bigplay.png
21===================================================================
22--- wp-includes/js/mediaelement/bigplay.png     (revision 23731)
23+++ wp-includes/js/mediaelement/bigplay.png     (working copy)
24
25Property changes on: wp-includes/js/mediaelement/bigplay.png
26___________________________________________________________________
27Added: svn:mime-type
28## -0,0 +1 ##
29+application/octet-stream
30\ No newline at end of property
31Index: wp-includes/js/mediaelement/bigplay.svg
32===================================================================
33--- wp-includes/js/mediaelement/bigplay.svg     (revision 0)
34+++ wp-includes/js/mediaelement/bigplay.svg     (working copy)
35@@ -0,0 +1,50 @@
36+<?xml version="1.0" standalone="no"?>
37+<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
38+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
39+<svg id="bigplay-gradient.fw-Page%201" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
40+       xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
41+       x="0px" y="0px" width="100px" height="200px"
42+>
43+       <defs>
44+               <radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
45+                       <stop stop-color="#222222" stop-opacity="0" offset="70%"/>
46+                       <stop stop-color="#222222" stop-opacity="0.0118" offset="70.202%"/>
47+                       <stop stop-color="#333333" stop-opacity="1" offset="85%"/>
48+                       <stop stop-color="#333333" stop-opacity="0" offset="100%"/>
49+               </radialGradient>
50+               <radialGradient id="gradient2" cx="50%" cy="50%" r="50%">
51+                       <stop stop-color="#bbbbbb" stop-opacity="0" offset="70%"/>
52+                       <stop stop-color="#bbbbbb" stop-opacity="0.0118" offset="70.202%"/>
53+                       <stop stop-color="#bbbbbb" stop-opacity="1" offset="85%"/>
54+                       <stop stop-color="#bbbbbb" stop-opacity="0" offset="100%"/>
55+               </radialGradient>
56+               <filter id="filter1" x="-100%" y="-100%" width="300%" height="300%">
57+                       <!-- Glow -->
58+                       <feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.251 0"/>
59+                       <feMorphology result="out" in="out" operator="dilate" radius="3"/>
60+                       <feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
61+                       <feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow1"/>
62+               </filter>
63+               <filter id="filter2" x="-100%" y="-100%" width="300%" height="300%">
64+                       <!-- Glow -->
65+                       <feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.251 0"/>
66+                       <feMorphology result="out" in="out" operator="dilate" radius="3"/>
67+                       <feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
68+                       <feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow2"/>
69+               </filter>
70+       </defs>
71+       <g id="Background">
72+       </g>
73+       <g id="dark%20shadow">
74+               <path d="M 22 50 C 22 34.5358 34.5358 22 50 22 C 65.4642 22 78 34.5358 78 50 C 78 65.4642 65.4642 78 50 78 C 34.5358 78 22 65.4642 22 50 ZM 5 50 C 5 74.8531 25.1469 95 50 95 C 74.8531 95 95 74.8531 95 50 C 95 25.1469 74.8531 5 50 5 C 25.1469 5 5 25.1469 5 50 Z" fill="url(#gradient1)"/>
75+               <path d="M 22 150 C 22 134.5358 34.5358 122 50 122 C 65.4642 122 78 134.5358 78 150 C 78 165.4642 65.4642 178 50 178 C 34.5358 178 22 165.4642 22 150 ZM 5 150 C 5 174.8531 25.1469 195 50 195 C 74.8531 195 95 174.8531 95 150 C 95 125.1469 74.8531 105 50 105 C 25.1469 105 5 125.1469 5 150 Z" fill="url(#gradient2)"/>
76+       </g>
77+       <g id="dark">
78+               <path id="Polygon" filter="url(#filter1)" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff"/>
79+               <path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none"/>
80+       </g>
81+       <g id="light">
82+               <path id="Polygon2" filter="url(#filter2)" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff"/>
83+               <path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none"/>
84+       </g>
85+</svg>
86\ No newline at end of file
87Index: wp-includes/js/mediaelement/controls.png
88===================================================================
89Cannot display: file marked as a binary type.
90svn:mime-type = application/octet-stream
91Index: wp-includes/js/mediaelement/controls.png
92===================================================================
93--- wp-includes/js/mediaelement/controls.png    (revision 23731)
94+++ wp-includes/js/mediaelement/controls.png    (working copy)
95
96Property changes on: wp-includes/js/mediaelement/controls.png
97___________________________________________________________________
98Added: svn:mime-type
99## -0,0 +1 ##
100+application/octet-stream
101\ No newline at end of property
102Index: wp-includes/js/mediaelement/controls.svg
103===================================================================
104--- wp-includes/js/mediaelement/controls.svg    (revision 0)
105+++ wp-includes/js/mediaelement/controls.svg    (working copy)
106@@ -0,0 +1,172 @@
107+<?xml version="1.0" standalone="no"?>
108+<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
109+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
110+<svg id="controls.fw-Page%201" viewBox="0 0 144 32" style="background-color:#ffffff00" version="1.1"
111+       xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
112+       x="0px" y="0px" width="144px" height="32px"
113+>
114+       <defs>
115+               <radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
116+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
117+                       <stop stop-color="#f2f2f2" stop-opacity="0.2" offset="100%"/>
118+               </radialGradient>
119+               <linearGradient id="gradient2" x1="50%" y1="-7.8652%" x2="50%" y2="249.6629%">
120+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
121+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
122+               </linearGradient>
123+               <linearGradient id="gradient3" x1="50%" y1="0%" x2="50%" y2="238.75%">
124+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
125+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
126+               </linearGradient>
127+               <linearGradient id="gradient4" x1="50%" y1="0%" x2="50%" y2="100%">
128+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
129+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
130+               </linearGradient>
131+               <linearGradient id="gradient5" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
132+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
133+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
134+               </linearGradient>
135+               <linearGradient id="gradient6" x1="50%" y1="0%" x2="50%" y2="100%">
136+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
137+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
138+               </linearGradient>
139+               <linearGradient id="gradient7" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
140+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
141+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
142+               </linearGradient>
143+               <linearGradient id="gradient8" x1="50%" y1="0%" x2="50%" y2="100%">
144+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
145+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
146+               </linearGradient>
147+               <linearGradient id="gradient9" x1="50%" y1="0%" x2="50%" y2="100%">
148+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
149+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
150+               </linearGradient>
151+               <linearGradient id="gradient10" x1="50%" y1="0%" x2="50%" y2="100%">
152+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
153+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
154+               </linearGradient>
155+               <linearGradient id="gradient11" x1="50%" y1="0%" x2="50%" y2="100%">
156+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
157+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
158+               </linearGradient>
159+               <linearGradient id="gradient12" x1="50%" y1="0%" x2="50%" y2="238.75%">
160+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
161+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
162+               </linearGradient>
163+               <linearGradient id="gradient13" x1="40%" y1="-140%" x2="40%" y2="98.75%">
164+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
165+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
166+               </linearGradient>
167+               <linearGradient id="gradient14" x1="50%" y1="0%" x2="50%" y2="238.75%">
168+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
169+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
170+               </linearGradient>
171+               <linearGradient id="gradient15" x1="60%" y1="-140%" x2="60%" y2="98.75%">
172+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
173+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
174+               </linearGradient>
175+               <linearGradient id="gradient16" x1="50%" y1="0%" x2="50%" y2="298.4375%">
176+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
177+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
178+               </linearGradient>
179+               <linearGradient id="gradient17" x1="50%" y1="0%" x2="50%" y2="238.75%">
180+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
181+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
182+               </linearGradient>
183+               <linearGradient id="gradient18" x1="50%" y1="-200%" x2="50%" y2="100%">
184+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
185+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
186+               </linearGradient>
187+               <linearGradient id="gradient19" x1="50%" y1="-200%" x2="50%" y2="110.9375%">
188+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
189+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
190+               </linearGradient>
191+               <linearGradient id="gradient20" x1="55%" y1="0%" x2="55%" y2="100%">
192+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
193+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
194+               </linearGradient>
195+               <linearGradient id="gradient21" x1="50%" y1="0%" x2="50%" y2="100%">
196+                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
197+                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="99.4444%"/>
198+               </linearGradient>
199+       </defs>
200+       <g id="BG">
201+       </g>
202+       <g id="controls">
203+               <path id="Line" d="M 98.5 7.5 L 109.5 7.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
204+               <path id="Line2" d="M 98.5 3.5 L 109.5 3.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
205+               <path id="Line3" d="M 98.5 11.5 L 109.5 11.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
206+               <path id="Ellipse" d="M 108 11.5 C 108 10.6716 108.4477 10 109 10 C 109.5523 10 110 10.6716 110 11.5 C 110 12.3284 109.5523 13 109 13 C 108.4477 13 108 12.3284 108 11.5 Z" fill="#ffffff"/>
207+               <path id="Ellipse2" d="M 104 7.5 C 104 6.6716 104.4477 6 105 6 C 105.5523 6 106 6.6716 106 7.5 C 106 8.3284 105.5523 9 105 9 C 104.4477 9 104 8.3284 104 7.5 Z" fill="#ffffff"/>
208+               <path id="Ellipse3" d="M 108 3.5 C 108 2.6716 108.4477 2 109 2 C 109.5523 2 110 2.6716 110 3.5 C 110 4.3284 109.5523 5 109 5 C 108.4477 5 108 4.3284 108 3.5 Z" fill="#ffffff"/>
209+       </g>
210+       <g id="backlight">
211+               <g id="off">
212+                       <rect x="83" y="21" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
213+               </g>
214+               <g id="on">
215+                       <path id="Ellipse4" d="M 81 8 C 81 5.2385 84.134 3 88 3 C 91.866 3 95 5.2385 95 8 C 95 10.7615 91.866 13 88 13 C 84.134 13 81 10.7615 81 8 Z" fill="url(#gradient1)"/>
216+                       <rect x="83" y="5" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
217+               </g>
218+       </g>
219+       <g id="loop">
220+               <g id="on2">
221+                       <path d="M 73.795 4.205 C 75.2155 4.8785 76.2 6.3234 76.2 8 C 76.2 10.3196 74.3196 12.2 72 12.2 C 69.6804 12.2 67.8 10.3196 67.8 8 C 67.8 6.3234 68.7845 4.8785 70.205 4.205 L 68.875 2.875 C 67.1501 3.9289 66 5.8306 66 8 C 66 11.3138 68.6862 14 72 14 C 75.3138 14 78 11.3138 78 8 C 78 5.8306 76.8499 3.9289 75.125 2.875 L 73.795 4.205 Z" fill="url(#gradient2)"/>
222+                       <path d="M 71 2 L 66 2 L 71 7 L 71 2 Z" fill="url(#gradient3)"/>
223+               </g>
224+               <g id="off2">
225+                       <path d="M 73.795 20.205 C 75.2155 20.8785 76.2 22.3234 76.2 24 C 76.2 26.3196 74.3196 28.2 72 28.2 C 69.6804 28.2 67.8 26.3196 67.8 24 C 67.8 22.3234 68.7845 20.8785 70.205 20.205 L 68.875 18.875 C 67.1501 19.9289 66 21.8306 66 24 C 66 27.3138 68.6862 30 72 30 C 75.3138 30 78 27.3138 78 24 C 78 21.8306 76.8499 19.9289 75.125 18.875 L 73.795 20.205 Z" fill="#a8a8b7"/>
226+                       <path d="M 71 18 L 66 18 L 71 23 L 71 18 Z" fill="#a8a8b7"/>
227+               </g>
228+       </g>
229+       <g id="cc">
230+               <rect visibility="hidden" x="49" y="2" width="14" height="12" stroke="#b0b0b0" stroke-width="1" fill="none"/>
231+               <text visibility="hidden" x="49" y="17" width="14" fill="#ffffff" style="font-size: 10px; color: #ffffff; font-family: Arial; text-align: center; "><tspan><![CDATA[cc]]></tspan></text>
232+               <path d="M 55 7 C 50.2813 3.7813 50.063 12.9405 55 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
233+               <path d="M 60 7 C 55.2813 3.7813 55.063 12.9405 60 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
234+               <path d="M 50 3 L 62 3 L 62 13 L 50 13 L 50 3 ZM 49 2 L 49 14 L 63 14 L 63 2 L 49 2 Z" fill="url(#gradient4)"/>
235+               <rect x="49" y="2" width="14" height="12" fill="none"/>
236+       </g>
237+       <g id="volume">
238+               <g id="no%20sound">
239+                       <rect x="17" y="5" width="5" height="6" fill="url(#gradient5)"/>
240+                       <path d="M 21 5 L 25 2 L 25 14 L 21 11.0625 L 21 5 Z" fill="url(#gradient6)"/>
241+               </g>
242+               <g id="sound%20bars">
243+                       <rect x="17" y="21" width="5" height="6" fill="url(#gradient7)"/>
244+                       <path d="M 21 21 L 25 18 L 25 30 L 21 27.0625 L 21 21 Z" fill="url(#gradient8)"/>
245+                       <path d="M 27 18 C 27 18 30.0625 17.375 30 24 C 29.9375 30.625 27 30 27 30 " stroke="#ffffff" stroke-width="1" fill="none"/>
246+                       <path d="M 26 21.0079 C 26 21.0079 28.041 20.6962 27.9994 24 C 27.9577 27.3038 26 26.9921 26 26.9921 " stroke="#ffffff" stroke-width="1" fill="none"/>
247+               </g>
248+       </g>
249+       <g id="play/pause">
250+               <g id="play">
251+                       <path id="Polygon" d="M 14 8.5 L 3 14 L 3 3 L 14 8.5 Z" fill="url(#gradient9)"/>
252+               </g>
253+               <g id="pause">
254+                       <rect x="3" y="18" width="3" height="12" fill="url(#gradient10)"/>
255+                       <rect x="10" y="18" width="3" height="12" fill="url(#gradient11)"/>
256+               </g>
257+       </g>
258+       <g id="fullscreen">
259+               <g id="enter%201">
260+                       <path d="M 34 2 L 39 2 L 34 7 L 34 2 Z" fill="url(#gradient12)"/>
261+                       <path d="M 34 14 L 39 14 L 34 9 L 34 14 Z" fill="url(#gradient13)"/>
262+                       <path d="M 46 2 L 41 2 L 46 7 L 46 2 Z" fill="url(#gradient14)"/>
263+                       <path d="M 46 14 L 41 14 L 46 9 L 46 14 Z" fill="url(#gradient15)"/>
264+               </g>
265+               <g id="exit">
266+                       <path d="M 42 22 L 46 22 L 42 18 L 42 22 Z" fill="url(#gradient16)"/>
267+                       <path d="M 38 22 L 38 18 L 34 22 L 38 22 Z" fill="url(#gradient17)"/>
268+                       <path d="M 38 26 L 34 26 L 38 30 L 38 26 Z" fill="url(#gradient18)"/>
269+                       <path d="M 42 26 L 42 30 L 46 26 L 42 26 Z" fill="url(#gradient19)"/>
270+               </g>
271+       </g>
272+       <g id="stop">
273+               <rect x="115" y="3" width="10" height="10" fill="url(#gradient20)"/>
274+       </g>
275+       <g id="chooser">
276+               <path d="M 135.2346 6.1522 C 136.2551 5.7295 137.4251 6.2141 137.8478 7.2346 C 138.2704 8.2551 137.7859 9.425 136.7654 9.8478 C 135.7449 10.2705 134.5749 9.7859 134.1522 8.7654 C 133.7295 7.7449 134.2141 6.5749 135.2346 6.1522 ZM 133.2735 1.4176 L 136 4.0054 L 138.7265 1.4176 L 138.8246 5.1754 L 142.5824 5.2735 L 139.9946 8 L 142.5824 10.7265 L 138.8246 10.8246 L 138.7265 14.5824 L 136 11.9946 L 133.2735 14.5824 L 133.1754 10.8246 L 129.4176 10.7265 L 132.0054 8 L 129.4176 5.2735 L 133.1754 5.1754 L 133.2735 1.4176 Z" fill="url(#gradient21)"/>
277+       </g>
278+</svg>
279\ No newline at end of file
280Index: wp-includes/js/mediaelement/flashmediaelement.swf
281===================================================================
282Cannot display: file marked as a binary type.
283svn:mime-type = application/octet-stream
284Index: wp-includes/js/mediaelement/flashmediaelement.swf
285===================================================================
286--- wp-includes/js/mediaelement/flashmediaelement.swf   (revision 23731)
287+++ wp-includes/js/mediaelement/flashmediaelement.swf   (working copy)
288
289Property changes on: wp-includes/js/mediaelement/flashmediaelement.swf
290___________________________________________________________________
291Added: svn:mime-type
292## -0,0 +1 ##
293+application/octet-stream
294\ No newline at end of property
295Index: wp-includes/js/mediaelement/loading.gif
296===================================================================
297Cannot display: file marked as a binary type.
298svn:mime-type = application/octet-stream
299Index: wp-includes/js/mediaelement/loading.gif
300===================================================================
301--- wp-includes/js/mediaelement/loading.gif     (revision 23731)
302+++ wp-includes/js/mediaelement/loading.gif     (working copy)
303
304Property changes on: wp-includes/js/mediaelement/loading.gif
305___________________________________________________________________
306Added: svn:mime-type
307## -0,0 +1 ##
308+application/octet-stream
309\ No newline at end of property
310Index: wp-includes/js/mediaelement/mediaelement-and-player.js
311===================================================================
312--- wp-includes/js/mediaelement/mediaelement-and-player.js      (revision 0)
313+++ wp-includes/js/mediaelement/mediaelement-and-player.js      (working copy)
314@@ -0,0 +1,4649 @@
315+/*!
316+* MediaElement.js
317+* HTML5 <video> and <audio> shim and player
318+* http://mediaelementjs.com/
319+*
320+* Creates a JavaScript object that mimics HTML5 MediaElement API
321+* for browsers that don't understand HTML5 or can't play the provided codec
322+* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
323+*
324+* Copyright 2010-2012, John Dyer (http://j.hn)
325+* Dual licensed under the MIT or GPL Version 2 licenses.
326+*
327+*/
328+// Namespace
329+var mejs = mejs || {};
330+
331+// version number
332+mejs.version = '2.10.1';
333+
334+// player number (for missing, same id attr)
335+mejs.meIndex = 0;
336+
337+// media types accepted by plugins
338+mejs.plugins = {
339+       silverlight: [
340+               {version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']}
341+       ],
342+       flash: [
343+               {version: [9,0,124], types: ['video/mp4','video/m4v','video/mov','video/flv','video/rtmp','video/x-flv','audio/flv','audio/x-flv','audio/mp3','audio/m4a','audio/mpeg', 'video/youtube', 'video/x-youtube']}
344+               //,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!)
345+       ],
346+       youtube: [
347+               {version: null, types: ['video/youtube', 'video/x-youtube']}
348+       ],
349+       vimeo: [
350+               {version: null, types: ['video/vimeo', 'video/x-vimeo']}
351+       ]
352+};
353+
354+/*
355+Utility methods
356+*/
357+mejs.Utility = {
358+       encodeUrl: function(url) {
359+               return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26');
360+       },
361+       escapeHTML: function(s) {
362+               return s.toString().split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;');
363+       },
364+       absolutizeUrl: function(url) {
365+               var el = document.createElement('div');
366+               el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>';
367+               return el.firstChild.href;
368+       },
369+       getScriptPath: function(scriptNames) {
370+               var
371+                       i = 0,
372+                       j,
373+                       path = '',
374+                       name = '',
375+                       script,
376+                       scripts = document.getElementsByTagName('script'),
377+                       il = scripts.length,
378+                       jl = scriptNames.length;
379+
380+               for (; i < il; i++) {
381+                       script = scripts[i].src;
382+                       for (j = 0; j < jl; j++) {
383+                               name = scriptNames[j];
384+                               if (script.indexOf(name) > -1) {
385+                                       path = script.substring(0, script.indexOf(name));
386+                                       break;
387+                               }
388+                       }
389+                       if (path !== '') {
390+                               break;
391+                       }
392+               }
393+               return path;
394+       },
395+       secondsToTimeCode: function(time, forceHours, showFrameCount, fps) {
396+               //add framecount
397+               if (typeof showFrameCount == 'undefined') {
398+                   showFrameCount=false;
399+               } else if(typeof fps == 'undefined') {
400+                   fps = 25;
401+               }
402+       
403+               var hours = Math.floor(time / 3600) % 24,
404+                       minutes = Math.floor(time / 60) % 60,
405+                       seconds = Math.floor(time % 60),
406+                       frames = Math.floor(((time % 1)*fps).toFixed(3)),
407+                       result =
408+                                       ( (forceHours || hours > 0) ? (hours < 10 ? '0' + hours : hours) + ':' : '')
409+                                               + (minutes < 10 ? '0' + minutes : minutes) + ':'
410+                                               + (seconds < 10 ? '0' + seconds : seconds)
411+                                               + ((showFrameCount) ? ':' + (frames < 10 ? '0' + frames : frames) : '');
412+       
413+               return result;
414+       },
415+       
416+       timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){
417+               if (typeof showFrameCount == 'undefined') {
418+                   showFrameCount=false;
419+               } else if(typeof fps == 'undefined') {
420+                   fps = 25;
421+               }
422+       
423+               var tc_array = hh_mm_ss_ff.split(":"),
424+                       tc_hh = parseInt(tc_array[0], 10),
425+                       tc_mm = parseInt(tc_array[1], 10),
426+                       tc_ss = parseInt(tc_array[2], 10),
427+                       tc_ff = 0,
428+                       tc_in_seconds = 0;
429+               
430+               if (showFrameCount) {
431+                   tc_ff = parseInt(tc_array[3])/fps;
432+               }
433+               
434+               tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff;
435+               
436+               return tc_in_seconds;
437+       },
438+       
439+
440+       convertSMPTEtoSeconds: function (SMPTE) {
441+               if (typeof SMPTE != 'string')
442+                       return false;
443+
444+               SMPTE = SMPTE.replace(',', '.');
445+               
446+               var secs = 0,
447+                       decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0,
448+                       multiplier = 1;
449+               
450+               SMPTE = SMPTE.split(':').reverse();
451+               
452+               for (var i = 0; i < SMPTE.length; i++) {
453+                       multiplier = 1;
454+                       if (i > 0) {
455+                               multiplier = Math.pow(60, i);
456+                       }
457+                       secs += Number(SMPTE[i]) * multiplier;
458+               }
459+               return Number(secs.toFixed(decimalLen));
460+       },     
461+       
462+       /* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */
463+       removeSwf: function(id) {
464+               var obj = document.getElementById(id);
465+               if (obj && obj.nodeName == "OBJECT") {
466+                       if (mejs.MediaFeatures.isIE) {
467+                               obj.style.display = "none";
468+                               (function(){
469+                                       if (obj.readyState == 4) {
470+                                               mejs.Utility.removeObjectInIE(id);
471+                                       } else {
472+                                               setTimeout(arguments.callee, 10);
473+                                       }
474+                               })();
475+                       } else {
476+                               obj.parentNode.removeChild(obj);
477+                       }
478+               }
479+       },
480+       removeObjectInIE: function(id) {
481+               var obj = document.getElementById(id);
482+               if (obj) {
483+                       for (var i in obj) {
484+                               if (typeof obj[i] == "function") {
485+                                       obj[i] = null;
486+                               }
487+                       }
488+                       obj.parentNode.removeChild(obj);
489+               }               
490+       }
491+};
492+
493+
494+// Core detector, plugins are added below
495+mejs.PluginDetector = {
496+
497+       // main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]);
498+       hasPluginVersion: function(plugin, v) {
499+               var pv = this.plugins[plugin];
500+               v[1] = v[1] || 0;
501+               v[2] = v[2] || 0;
502+               return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
503+       },
504+
505+       // cached values
506+       nav: window.navigator,
507+       ua: window.navigator.userAgent.toLowerCase(),
508+
509+       // stored version numbers
510+       plugins: [],
511+
512+       // runs detectPlugin() and stores the version number
513+       addPlugin: function(p, pluginName, mimeType, activeX, axDetect) {
514+               this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect);
515+       },
516+
517+       // get the version number from the mimetype (all but IE) or ActiveX (IE)
518+       detectPlugin: function(pluginName, mimeType, activeX, axDetect) {
519+
520+               var version = [0,0,0],
521+                       description,
522+                       i,
523+                       ax;
524+
525+               // Firefox, Webkit, Opera
526+               if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') {
527+                       description = this.nav.plugins[pluginName].description;
528+                       if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) {
529+                               version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.');
530+                               for (i=0; i<version.length; i++) {
531+                                       version[i] = parseInt(version[i].match(/\d+/), 10);
532+                               }
533+                       }
534+               // Internet Explorer / ActiveX
535+               } else if (typeof(window.ActiveXObject) != 'undefined') {
536+                       try {
537+                               ax = new ActiveXObject(activeX);
538+                               if (ax) {
539+                                       version = axDetect(ax);
540+                               }
541+                       }
542+                       catch (e) { }
543+               }
544+               return version;
545+       }
546+};
547+
548+// Add Flash detection
549+mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) {
550+       // adapted from SWFObject
551+       var version = [],
552+               d = ax.GetVariable("$version");
553+       if (d) {
554+               d = d.split(" ")[1].split(",");
555+               version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
556+       }
557+       return version;
558+});
559+
560+// Add Silverlight detection
561+mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) {
562+       // Silverlight cannot report its version number to IE
563+       // but it does have a isVersionSupported function, so we have to loop through it to get a version number.
564+       // adapted from http://www.silverlightversion.com/
565+       var v = [0,0,0,0],
566+               loopMatch = function(ax, v, i, n) {
567+                       while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){
568+                               v[i]+=n;
569+                       }
570+                       v[i] -= n;
571+               };
572+       loopMatch(ax, v, 0, 1);
573+       loopMatch(ax, v, 1, 1);
574+       loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx)
575+       loopMatch(ax, v, 2, 1000);
576+       loopMatch(ax, v, 2, 100);
577+       loopMatch(ax, v, 2, 10);
578+       loopMatch(ax, v, 2, 1);
579+       loopMatch(ax, v, 3, 1);
580+
581+       return v;
582+});
583+// add adobe acrobat
584+/*
585+PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) {
586+       var version = [],
587+               d = ax.GetVersions().split(',')[0].split('=')[1].split('.');
588+
589+       if (d) {
590+               version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
591+       }
592+       return version;
593+});
594+*/
595+// necessary detection (fixes for <IE9)
596+mejs.MediaFeatures = {
597+       init: function() {
598+               var
599+                       t = this,
600+                       d = document,
601+                       nav = mejs.PluginDetector.nav,
602+                       ua = mejs.PluginDetector.ua.toLowerCase(),
603+                       i,
604+                       v,
605+                       html5Elements = ['source','track','audio','video'];
606+
607+               // detect browsers (only the ones that have some kind of quirk we need to work around)
608+               t.isiPad = (ua.match(/ipad/i) !== null);
609+               t.isiPhone = (ua.match(/iphone/i) !== null);
610+               t.isiOS = t.isiPhone || t.isiPad;
611+               t.isAndroid = (ua.match(/android/i) !== null);
612+               t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null);
613+               t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1);
614+               t.isChrome = (ua.match(/chrome/gi) !== null);
615+               t.isFirefox = (ua.match(/firefox/gi) !== null);
616+               t.isWebkit = (ua.match(/webkit/gi) !== null);
617+               t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit;
618+               t.isOpera = (ua.match(/opera/gi) !== null);
619+               t.hasTouch = ('ontouchstart' in window);
620+               
621+               // borrowed from Modernizr
622+               t.svg = !! document.createElementNS &&
623+                               !! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;
624+
625+               // create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection
626+               for (i=0; i<html5Elements.length; i++) {
627+                       v = document.createElement(html5Elements[i]);
628+               }
629+               
630+               t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid);
631+
632+               // detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
633+               
634+               // iOS
635+               t.hasSemiNativeFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined');
636+               
637+               // Webkit/firefox
638+               t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined');
639+               t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined');
640+               
641+               t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen);
642+               t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen;
643+               if (t.hasMozNativeFullScreen) {
644+                       t.nativeFullScreenEnabled = v.mozFullScreenEnabled;
645+               }
646+               
647+               
648+               if (this.isChrome) {
649+                       t.hasSemiNativeFullScreen = false;
650+               }
651+               
652+               if (t.hasTrueNativeFullScreen) {
653+                       t.fullScreenEventName = (t.hasWebkitNativeFullScreen) ? 'webkitfullscreenchange' : 'mozfullscreenchange';
654+                       
655+                       
656+                       t.isFullScreen = function() {
657+                               if (v.mozRequestFullScreen) {
658+                                       return d.mozFullScreen;
659+                               } else if (v.webkitRequestFullScreen) {
660+                                       return d.webkitIsFullScreen;
661+                               }
662+                       }
663+                                       
664+                       t.requestFullScreen = function(el) {
665+               
666+                               if (t.hasWebkitNativeFullScreen) {
667+                                       el.webkitRequestFullScreen();
668+                               } else if (t.hasMozNativeFullScreen) {
669+                                       el.mozRequestFullScreen();
670+                               }
671+                       }
672+                       
673+                       t.cancelFullScreen = function() {                               
674+                               if (t.hasWebkitNativeFullScreen) {
675+                                       document.webkitCancelFullScreen();
676+                               } else if (t.hasMozNativeFullScreen) {
677+                                       document.mozCancelFullScreen();
678+                               }
679+                       }       
680+                       
681+               }
682+               
683+               
684+               // OS X 10.5 can't do this even if it says it can :(
685+               if (t.hasSemiNativeFullScreen && ua.match(/mac os x 10_5/i)) {
686+                       t.hasNativeFullScreen = false;
687+                       t.hasSemiNativeFullScreen = false;
688+               }
689+               
690+       }
691+};
692+mejs.MediaFeatures.init();
693+
694+
695+/*
696+extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below)
697+*/
698+mejs.HtmlMediaElement = {
699+       pluginType: 'native',
700+       isFullScreen: false,
701+
702+       setCurrentTime: function (time) {
703+               this.currentTime = time;
704+       },
705+
706+       setMuted: function (muted) {
707+               this.muted = muted;
708+       },
709+
710+       setVolume: function (volume) {
711+               this.volume = volume;
712+       },
713+
714+       // for parity with the plugin versions
715+       stop: function () {
716+               this.pause();
717+       },
718+
719+       // This can be a url string
720+       // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
721+       setSrc: function (url) {
722+               
723+               // Fix for IE9 which can't set .src when there are <source> elements. Awesome, right?
724+               var
725+                       existingSources = this.getElementsByTagName('source');
726+               while (existingSources.length > 0){
727+                       this.removeChild(existingSources[0]);
728+               }
729+       
730+               if (typeof url == 'string') {
731+                       this.src = url;
732+               } else {
733+                       var i, media;
734+
735+                       for (i=0; i<url.length; i++) {
736+                               media = url[i];
737+                               if (this.canPlayType(media.type)) {
738+                                       this.src = media.src;
739+                                       break;
740+                               }
741+                       }
742+               }
743+       },
744+
745+       setVideoSize: function (width, height) {
746+               this.width = width;
747+               this.height = height;
748+       }
749+};
750+
751+/*
752+Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember]
753+*/
754+mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) {
755+       this.id = pluginid;
756+       this.pluginType = pluginType;
757+       this.src = mediaUrl;
758+       this.events = {};
759+};
760+
761+// JavaScript values and ExternalInterface methods that match HTML5 video properties methods
762+// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html
763+// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
764+mejs.PluginMediaElement.prototype = {
765+
766+       // special
767+       pluginElement: null,
768+       pluginType: '',
769+       isFullScreen: false,
770+
771+       // not implemented :(
772+       playbackRate: -1,
773+       defaultPlaybackRate: -1,
774+       seekable: [],
775+       played: [],
776+
777+       // HTML5 read-only properties
778+       paused: true,
779+       ended: false,
780+       seeking: false,
781+       duration: 0,
782+       error: null,
783+       tagName: '',
784+
785+       // HTML5 get/set properties, but only set (updated by event handlers)
786+       muted: false,
787+       volume: 1,
788+       currentTime: 0,
789+
790+       // HTML5 methods
791+       play: function () {
792+               if (this.pluginApi != null) {
793+                       if (this.pluginType == 'youtube') {
794+                               this.pluginApi.playVideo();
795+                       } else {
796+                               this.pluginApi.playMedia();
797+                       }
798+                       this.paused = false;
799+               }
800+       },
801+       load: function () {
802+               if (this.pluginApi != null) {
803+                       if (this.pluginType == 'youtube') {
804+                       } else {
805+                               this.pluginApi.loadMedia();
806+                       }
807+                       
808+                       this.paused = false;
809+               }
810+       },
811+       pause: function () {
812+               if (this.pluginApi != null) {
813+                       if (this.pluginType == 'youtube') {
814+                               this.pluginApi.pauseVideo();
815+                       } else {
816+                               this.pluginApi.pauseMedia();
817+                       }                       
818+                       
819+                       
820+                       this.paused = true;
821+               }
822+       },
823+       stop: function () {
824+               if (this.pluginApi != null) {
825+                       if (this.pluginType == 'youtube') {
826+                               this.pluginApi.stopVideo();
827+                       } else {
828+                               this.pluginApi.stopMedia();
829+                       }       
830+                       this.paused = true;
831+               }
832+       },
833+       canPlayType: function(type) {
834+               var i,
835+                       j,
836+                       pluginInfo,
837+                       pluginVersions = mejs.plugins[this.pluginType];
838+
839+               for (i=0; i<pluginVersions.length; i++) {
840+                       pluginInfo = pluginVersions[i];
841+
842+                       // test if user has the correct plugin version
843+                       if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) {
844+
845+                               // test for plugin playback types
846+                               for (j=0; j<pluginInfo.types.length; j++) {
847+                                       // find plugin that can play the type
848+                                       if (type == pluginInfo.types[j]) {
849+                                               return true;
850+                                       }
851+                               }
852+                       }
853+               }
854+
855+               return false;
856+       },
857+       
858+       positionFullscreenButton: function(x,y,visibleAndAbove) {
859+               if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) {
860+                       this.pluginApi.positionFullscreenButton(x,y,visibleAndAbove);
861+               }
862+       },
863+       
864+       hideFullscreenButton: function() {
865+               if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) {
866+                       this.pluginApi.hideFullscreenButton();
867+               }               
868+       },     
869+       
870+
871+       // custom methods since not all JavaScript implementations support get/set
872+
873+       // This can be a url string
874+       // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
875+       setSrc: function (url) {
876+               if (typeof url == 'string') {
877+                       this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url));
878+                       this.src = mejs.Utility.absolutizeUrl(url);
879+               } else {
880+                       var i, media;
881+
882+                       for (i=0; i<url.length; i++) {
883+                               media = url[i];
884+                               if (this.canPlayType(media.type)) {
885+                                       this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src));
886+                                       this.src = mejs.Utility.absolutizeUrl(url);
887+                                       break;
888+                               }
889+                       }
890+               }
891+
892+       },
893+       setCurrentTime: function (time) {
894+               if (this.pluginApi != null) {
895+                       if (this.pluginType == 'youtube') {
896+                               this.pluginApi.seekTo(time);
897+                       } else {
898+                               this.pluginApi.setCurrentTime(time);
899+                       }                               
900+                       
901+                       
902+                       
903+                       this.currentTime = time;
904+               }
905+       },
906+       setVolume: function (volume) {
907+               if (this.pluginApi != null) {
908+                       // same on YouTube and MEjs
909+                       if (this.pluginType == 'youtube') {
910+                               this.pluginApi.setVolume(volume * 100);
911+                       } else {
912+                               this.pluginApi.setVolume(volume);
913+                       }
914+                       this.volume = volume;
915+               }
916+       },
917+       setMuted: function (muted) {
918+               if (this.pluginApi != null) {
919+                       if (this.pluginType == 'youtube') {
920+                               if (muted) {
921+                                       this.pluginApi.mute();
922+                               } else {
923+                                       this.pluginApi.unMute();
924+                               }
925+                               this.muted = muted;
926+                               this.dispatchEvent('volumechange');
927+                       } else {
928+                               this.pluginApi.setMuted(muted);
929+                       }
930+                       this.muted = muted;
931+               }
932+       },
933+
934+       // additional non-HTML5 methods
935+       setVideoSize: function (width, height) {
936+               
937+               //if (this.pluginType == 'flash' || this.pluginType == 'silverlight') {
938+                       if ( this.pluginElement.style) {
939+                               this.pluginElement.style.width = width + 'px';
940+                               this.pluginElement.style.height = height + 'px';
941+                       }
942+                       if (this.pluginApi != null && this.pluginApi.setVideoSize) {
943+                               this.pluginApi.setVideoSize(width, height);
944+                       }
945+               //}
946+       },
947+
948+       setFullscreen: function (fullscreen) {
949+               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
950+                       this.pluginApi.setFullscreen(fullscreen);
951+               }
952+       },
953+       
954+       enterFullScreen: function() {
955+               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
956+                       this.setFullscreen(true);
957+               }               
958+               
959+       },
960+       
961+       exitFullScreen: function() {
962+               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
963+                       this.setFullscreen(false);
964+               }
965+       },     
966+
967+       // start: fake events
968+       addEventListener: function (eventName, callback, bubble) {
969+               this.events[eventName] = this.events[eventName] || [];
970+               this.events[eventName].push(callback);
971+       },
972+       removeEventListener: function (eventName, callback) {
973+               if (!eventName) { this.events = {}; return true; }
974+               var callbacks = this.events[eventName];
975+               if (!callbacks) return true;
976+               if (!callback) { this.events[eventName] = []; return true; }
977+               for (i = 0; i < callbacks.length; i++) {
978+                       if (callbacks[i] === callback) {
979+                               this.events[eventName].splice(i, 1);
980+                               return true;
981+                       }
982+               }
983+               return false;
984+       },     
985+       dispatchEvent: function (eventName) {
986+               var i,
987+                       args,
988+                       callbacks = this.events[eventName];
989+
990+               if (callbacks) {
991+                       args = Array.prototype.slice.call(arguments, 1);
992+                       for (i = 0; i < callbacks.length; i++) {
993+                               callbacks[i].apply(null, args);
994+                       }
995+               }
996+       },
997+       // end: fake events
998+       
999+       // fake DOM attribute methods
1000+       attributes: {},
1001+       hasAttribute: function(name){
1002+               return (name in this.attributes); 
1003+       },
1004+       removeAttribute: function(name){
1005+               delete this.attributes[name];
1006+       },
1007+       getAttribute: function(name){
1008+               if (this.hasAttribute(name)) {
1009+                       return this.attributes[name];
1010+               }
1011+               return '';
1012+       },
1013+       setAttribute: function(name, value){
1014+               this.attributes[name] = value;
1015+       },
1016+
1017+       remove: function() {
1018+               mejs.Utility.removeSwf(this.pluginElement.id);
1019+       }
1020+};
1021+
1022+// Handles calls from Flash/Silverlight and reports them as native <video/audio> events and properties
1023+mejs.MediaPluginBridge = {
1024+
1025+       pluginMediaElements:{},
1026+       htmlMediaElements:{},
1027+
1028+       registerPluginElement: function (id, pluginMediaElement, htmlMediaElement) {
1029+               this.pluginMediaElements[id] = pluginMediaElement;
1030+               this.htmlMediaElements[id] = htmlMediaElement;
1031+       },
1032+
1033+       // when Flash/Silverlight is ready, it calls out to this method
1034+       initPlugin: function (id) {
1035+
1036+               var pluginMediaElement = this.pluginMediaElements[id],
1037+                       htmlMediaElement = this.htmlMediaElements[id];
1038+
1039+               if (pluginMediaElement) {
1040+                       // find the javascript bridge
1041+                       switch (pluginMediaElement.pluginType) {
1042+                               case "flash":
1043+                                       pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(id);
1044+                                       break;
1045+                               case "silverlight":
1046+                                       pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id);
1047+                                       pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS;
1048+                                       break;
1049+                       }
1050+       
1051+                       if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) {
1052+                               pluginMediaElement.success(pluginMediaElement, htmlMediaElement);
1053+                       }
1054+               }
1055+       },
1056+
1057+       // receives events from Flash/Silverlight and sends them out as HTML5 media events
1058+       // http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
1059+       fireEvent: function (id, eventName, values) {
1060+
1061+               var
1062+                       e,
1063+                       i,
1064+                       bufferedTime,
1065+                       pluginMediaElement = this.pluginMediaElements[id];
1066+
1067+               // fake event object to mimic real HTML media event.
1068+               e = {
1069+                       type: eventName,
1070+                       target: pluginMediaElement
1071+               };
1072+
1073+               // attach all values to element and event object
1074+               for (i in values) {
1075+                       pluginMediaElement[i] = values[i];
1076+                       e[i] = values[i];
1077+               }
1078+
1079+               // fake the newer W3C buffered TimeRange (loaded and total have been removed)
1080+               bufferedTime = values.bufferedTime || 0;
1081+
1082+               e.target.buffered = e.buffered = {
1083+                       start: function(index) {
1084+                               return 0;
1085+                       },
1086+                       end: function (index) {
1087+                               return bufferedTime;
1088+                       },
1089+                       length: 1
1090+               };
1091+
1092+               pluginMediaElement.dispatchEvent(e.type, e);
1093+       }
1094+};
1095+
1096+/*
1097+Default options
1098+*/
1099+mejs.MediaElementDefaults = {
1100+       // allows testing on HTML5, flash, silverlight
1101+       // auto: attempts to detect what the browser can do
1102+       // auto_plugin: prefer plugins and then attempt native HTML5
1103+       // native: forces HTML5 playback
1104+       // shim: disallows HTML5, will attempt either Flash or Silverlight
1105+       // none: forces fallback view
1106+       mode: 'auto',
1107+       // remove or reorder to change plugin priority and availability
1108+       plugins: ['flash','silverlight','youtube','vimeo'],
1109+       // shows debug errors on screen
1110+       enablePluginDebug: false,
1111+       // overrides the type specified, useful for dynamic instantiation
1112+       type: '',
1113+       // path to Flash and Silverlight plugins
1114+       pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']),
1115+       // name of flash file
1116+       flashName: 'flashmediaelement.swf',
1117+       // streamer for RTMP streaming
1118+       flashStreamer: '',
1119+       // turns on the smoothing filter in Flash
1120+       enablePluginSmoothing: false,
1121+       // name of silverlight file
1122+       silverlightName: 'silverlightmediaelement.xap',
1123+       // default if the <video width> is not specified
1124+       defaultVideoWidth: 480,
1125+       // default if the <video height> is not specified
1126+       defaultVideoHeight: 270,
1127+       // overrides <video width>
1128+       pluginWidth: -1,
1129+       // overrides <video height>
1130+       pluginHeight: -1,
1131+       // additional plugin variables in 'key=value' form
1132+       pluginVars: [],
1133+       // rate in milliseconds for Flash and Silverlight to fire the timeupdate event
1134+       // larger number is less accurate, but less strain on plugin->JavaScript bridge
1135+       timerRate: 250,
1136+       // initial volume for player
1137+       startVolume: 0.8,
1138+       success: function () { },
1139+       error: function () { }
1140+};
1141+
1142+/*
1143+Determines if a browser supports the <video> or <audio> element
1144+and returns either the native element or a Flash/Silverlight version that
1145+mimics HTML5 MediaElement
1146+*/
1147+mejs.MediaElement = function (el, o) {
1148+       return mejs.HtmlMediaElementShim.create(el,o);
1149+};
1150+
1151+mejs.HtmlMediaElementShim = {
1152+
1153+       create: function(el, o) {
1154+               var
1155+                       options = mejs.MediaElementDefaults,
1156+                       htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el,
1157+                       tagName = htmlMediaElement.tagName.toLowerCase(),
1158+                       isMediaTag = (tagName === 'audio' || tagName === 'video'),
1159+                       src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'),
1160+                       poster = htmlMediaElement.getAttribute('poster'),
1161+                       autoplay =  htmlMediaElement.getAttribute('autoplay'),
1162+                       preload =  htmlMediaElement.getAttribute('preload'),
1163+                       controls =  htmlMediaElement.getAttribute('controls'),
1164+                       playback,
1165+                       prop;
1166+
1167+               // extend options
1168+               for (prop in o) {
1169+                       options[prop] = o[prop];
1170+               }
1171+
1172+               // clean up attributes
1173+               src =           (typeof src == 'undefined'      || src === null || src == '') ? null : src;             
1174+               poster =        (typeof poster == 'undefined'   || poster === null) ? '' : poster;
1175+               preload =       (typeof preload == 'undefined'  || preload === null || preload === 'false') ? 'none' : preload;
1176+               autoplay =      !(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false');
1177+               controls =      !(typeof controls == 'undefined' || controls === null || controls === 'false');
1178+
1179+               // test for HTML5 and plugin capabilities
1180+               playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src);
1181+               playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : '';
1182+
1183+               if (playback.method == 'native') {
1184+                       // second fix for android
1185+                       if (mejs.MediaFeatures.isBustedAndroid) {
1186+                               htmlMediaElement.src = playback.url;
1187+                               htmlMediaElement.addEventListener('click', function() {
1188+                                       htmlMediaElement.play();
1189+                               }, false);
1190+                       }
1191+               
1192+                       // add methods to native HTMLMediaElement
1193+                       return this.updateNative(playback, options, autoplay, preload);
1194+               } else if (playback.method !== '') {
1195+                       // create plugin to mimic HTMLMediaElement
1196+                       
1197+                       return this.createPlugin( playback,  options, poster, autoplay, preload, controls);
1198+               } else {
1199+                       // boo, no HTML5, no Flash, no Silverlight.
1200+                       this.createErrorMessage( playback, options, poster );
1201+                       
1202+                       return this;
1203+               }
1204+       },
1205+       
1206+       determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) {
1207+               var
1208+                       mediaFiles = [],
1209+                       i,
1210+                       j,
1211+                       k,
1212+                       l,
1213+                       n,
1214+                       type,
1215+                       result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() != 'audio')},
1216+                       pluginName,
1217+                       pluginVersions,
1218+                       pluginInfo,
1219+                       dummy,
1220+                       media;
1221+                       
1222+               // STEP 1: Get URL and type from <video src> or <source src>
1223+
1224+               // supplied type overrides <video type> and <source type>
1225+               if (typeof options.type != 'undefined' && options.type !== '') {
1226+                       
1227+                       // accept either string or array of types
1228+                       if (typeof options.type == 'string') {
1229+                               mediaFiles.push({type:options.type, url:src});
1230+                       } else {
1231+                               
1232+                               for (i=0; i<options.type.length; i++) {
1233+                                       mediaFiles.push({type:options.type[i], url:src});
1234+                               }
1235+                       }
1236+
1237+               // test for src attribute first
1238+               } else if (src !== null) {
1239+                       type = this.formatType(src, htmlMediaElement.getAttribute('type'));
1240+                       mediaFiles.push({type:type, url:src});
1241+
1242+               // then test for <source> elements
1243+               } else {
1244+                       // test <source> types to see if they are usable
1245+                       for (i = 0; i < htmlMediaElement.childNodes.length; i++) {
1246+                               n = htmlMediaElement.childNodes[i];
1247+                               if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') {
1248+                                       src = n.getAttribute('src');
1249+                                       type = this.formatType(src, n.getAttribute('type'));
1250+                                       media = n.getAttribute('media');
1251+
1252+                                       if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) {
1253+                                               mediaFiles.push({type:type, url:src});
1254+                                       }
1255+                               }
1256+                       }
1257+               }
1258+               
1259+               // in the case of dynamicly created players
1260+               // check for audio types
1261+               if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) {
1262+                       result.isVideo = false;
1263+               }
1264+               
1265+
1266+               // STEP 2: Test for playback method
1267+               
1268+               // special case for Android which sadly doesn't implement the canPlayType function (always returns '')
1269+               if (mejs.MediaFeatures.isBustedAndroid) {
1270+                       htmlMediaElement.canPlayType = function(type) {
1271+                               return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : '';
1272+                       };
1273+               }               
1274+               
1275+
1276+               // test for native playback first
1277+               if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native')) {
1278+                                               
1279+                       if (!isMediaTag) {
1280+
1281+                               // create a real HTML5 Media Element
1282+                               dummy = document.createElement( result.isVideo ? 'video' : 'audio');                   
1283+                               htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement);
1284+                               htmlMediaElement.style.display = 'none';
1285+                               
1286+                               // use this one from now on
1287+                               result.htmlMediaElement = htmlMediaElement = dummy;
1288+                       }
1289+                               
1290+                       for (i=0; i<mediaFiles.length; i++) {
1291+                               // normal check
1292+                               if (htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
1293+                                       // special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
1294+                                       || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== '') {
1295+                                       result.method = 'native';
1296+                                       result.url = mediaFiles[i].url;
1297+                                       break;
1298+                               }
1299+                       }                       
1300+                       
1301+                       if (result.method === 'native') {
1302+                               if (result.url !== null) {
1303+                                       htmlMediaElement.src = result.url;
1304+                               }
1305+                       
1306+                               // if `auto_plugin` mode, then cache the native result but try plugins.
1307+                               if (options.mode !== 'auto_plugin') {
1308+                                       return result;
1309+                               }
1310+                       }
1311+               }
1312+
1313+               // if native playback didn't work, then test plugins
1314+               if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') {
1315+                       for (i=0; i<mediaFiles.length; i++) {
1316+                               type = mediaFiles[i].type;
1317+
1318+                               // test all plugins in order of preference [silverlight, flash]
1319+                               for (j=0; j<options.plugins.length; j++) {
1320+
1321+                                       pluginName = options.plugins[j];
1322+                       
1323+                                       // test version of plugin (for future features)
1324+                                       pluginVersions = mejs.plugins[pluginName];                             
1325+                                       
1326+                                       for (k=0; k<pluginVersions.length; k++) {
1327+                                               pluginInfo = pluginVersions[k];
1328+                                       
1329+                                               // test if user has the correct plugin version
1330+                                               
1331+                                               // for youtube/vimeo
1332+                                               if (pluginInfo.version == null ||
1333+                                                       
1334+                                                       mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) {
1335+
1336+                                                       // test for plugin playback types
1337+                                                       for (l=0; l<pluginInfo.types.length; l++) {
1338+                                                               // find plugin that can play the type
1339+                                                               if (type == pluginInfo.types[l]) {
1340+                                                                       result.method = pluginName;
1341+                                                                       result.url = mediaFiles[i].url;
1342+                                                                       return result;
1343+                                                               }
1344+                                                       }
1345+                                               }
1346+                                       }
1347+                               }
1348+                       }
1349+               }
1350+               
1351+               // at this point, being in 'auto_plugin' mode implies that we tried plugins but failed.
1352+               // if we have native support then return that.
1353+               if (options.mode === 'auto_plugin' && result.method === 'native') {
1354+                       return result;
1355+               }
1356+
1357+               // what if there's nothing to play? just grab the first available
1358+               if (result.method === '' && mediaFiles.length > 0) {
1359+                       result.url = mediaFiles[0].url;
1360+               }
1361+
1362+               return result;
1363+       },
1364+
1365+       formatType: function(url, type) {
1366+               var ext;
1367+
1368+               // if no type is supplied, fake it with the extension
1369+               if (url && !type) {             
1370+                       return this.getTypeFromFile(url);
1371+               } else {
1372+                       // only return the mime part of the type in case the attribute contains the codec
1373+                       // see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
1374+                       // `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`
1375+                       
1376+                       if (type && ~type.indexOf(';')) {
1377+                               return type.substr(0, type.indexOf(';'));
1378+                       } else {
1379+                               return type;
1380+                       }
1381+               }
1382+       },
1383+       
1384+       getTypeFromFile: function(url) {
1385+               url = url.split('?')[0];
1386+               var ext = url.substring(url.lastIndexOf('.') + 1);
1387+               return (/(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video' : 'audio') + '/' + this.getTypeFromExtension(ext);
1388+       },
1389+       
1390+       getTypeFromExtension: function(ext) {
1391+               
1392+               switch (ext) {
1393+                       case 'mp4':
1394+                       case 'm4v':
1395+                               return 'mp4';
1396+                       case 'webm':
1397+                       case 'webma':
1398+                       case 'webmv':   
1399+                               return 'webm';
1400+                       case 'ogg':
1401+                       case 'oga':
1402+                       case 'ogv':     
1403+                               return 'ogg';
1404+                       default:
1405+                               return ext;
1406+               }
1407+       },
1408+
1409+       createErrorMessage: function(playback, options, poster) {
1410+               var
1411+                       htmlMediaElement = playback.htmlMediaElement,
1412+                       errorContainer = document.createElement('div');
1413+                       
1414+               errorContainer.className = 'me-cannotplay';
1415+
1416+               try {
1417+                       errorContainer.style.width = htmlMediaElement.width + 'px';
1418+                       errorContainer.style.height = htmlMediaElement.height + 'px';
1419+               } catch (e) {}
1420+
1421+               errorContainer.innerHTML = (poster !== '') ?
1422+                       '<a href="' + playback.url + '"><img src="' + poster + '" width="100%" height="100%" /></a>' :
1423+                       '<a href="' + playback.url + '"><span>' + mejs.i18n.t('Download File') + '</span></a>';
1424+
1425+               htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement);
1426+               htmlMediaElement.style.display = 'none';
1427+
1428+               options.error(htmlMediaElement);
1429+       },
1430+
1431+       createPlugin:function(playback, options, poster, autoplay, preload, controls) {
1432+               var
1433+                       htmlMediaElement = playback.htmlMediaElement,
1434+                       width = 1,
1435+                       height = 1,
1436+                       pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++),
1437+                       pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url),
1438+                       container = document.createElement('div'),
1439+                       specialIEContainer,
1440+                       node,
1441+                       initVars;
1442+
1443+               // copy tagName from html media element
1444+               pluginMediaElement.tagName = htmlMediaElement.tagName
1445+
1446+               // copy attributes from html media element to plugin media element
1447+               for (var i = 0; i < htmlMediaElement.attributes.length; i++) {
1448+                       var attribute = htmlMediaElement.attributes[i];
1449+                       if (attribute.specified == true) {
1450+                               pluginMediaElement.setAttribute(attribute.name, attribute.value);
1451+                       }
1452+               }
1453+
1454+               // check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
1455+               node = htmlMediaElement.parentNode;
1456+               while (node !== null && node.tagName.toLowerCase() != 'body') {
1457+                       if (node.parentNode.tagName.toLowerCase() == 'p') {
1458+                               node.parentNode.parentNode.insertBefore(node, node.parentNode);
1459+                               break;
1460+                       }
1461+                       node = node.parentNode;
1462+               }
1463+
1464+               if (playback.isVideo) {
1465+                       width = (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth;
1466+                       height = (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight;
1467+               
1468+                       // in case of '%' make sure it's encoded
1469+                       width = mejs.Utility.encodeUrl(width);
1470+                       height = mejs.Utility.encodeUrl(height);
1471+               
1472+               } else {
1473+                       if (options.enablePluginDebug) {
1474+                               width = 320;
1475+                               height = 240;
1476+                       }
1477+               }
1478+
1479+               // register plugin
1480+               pluginMediaElement.success = options.success;
1481+               mejs.MediaPluginBridge.registerPluginElement(pluginid, pluginMediaElement, htmlMediaElement);
1482+
1483+               // add container (must be added to DOM before inserting HTML for IE)
1484+               container.className = 'me-plugin';
1485+               container.id = pluginid + '_container';
1486+               
1487+               if (playback.isVideo) {
1488+                               htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement);
1489+               } else {
1490+                               document.body.insertBefore(container, document.body.childNodes[0]);
1491+               }
1492+
1493+               // flash/silverlight vars
1494+               initVars = [
1495+                       'id=' + pluginid,
1496+                       'isvideo=' + ((playback.isVideo) ? "true" : "false"),
1497+                       'autoplay=' + ((autoplay) ? "true" : "false"),
1498+                       'preload=' + preload,
1499+                       'width=' + width,
1500+                       'startvolume=' + options.startVolume,
1501+                       'timerrate=' + options.timerRate,
1502+                       'flashstreamer=' + options.flashStreamer,
1503+                       'height=' + height];
1504+
1505+               if (playback.url !== null) {
1506+                       if (playback.method == 'flash') {
1507+                               initVars.push('file=' + mejs.Utility.encodeUrl(playback.url));
1508+                       } else {
1509+                               initVars.push('file=' + playback.url);
1510+                       }
1511+               }
1512+               if (options.enablePluginDebug) {
1513+                       initVars.push('debug=true');
1514+               }
1515+               if (options.enablePluginSmoothing) {
1516+                       initVars.push('smoothing=true');
1517+               }
1518+               if (controls) {
1519+                       initVars.push('controls=true'); // shows controls in the plugin if desired
1520+               }
1521+               if (options.pluginVars) {
1522+                       initVars = initVars.concat(options.pluginVars);
1523+               }               
1524+
1525+               switch (playback.method) {
1526+                       case 'silverlight':
1527+                               container.innerHTML =
1528+'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '">' +
1529+'<param name="initParams" value="' + initVars.join(',') + '" />' +
1530+'<param name="windowless" value="true" />' +
1531+'<param name="background" value="black" />' +
1532+'<param name="minRuntimeVersion" value="3.0.0.0" />' +
1533+'<param name="autoUpgrade" value="true" />' +
1534+'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' +
1535+'</object>';
1536+                                       break;
1537+
1538+                       case 'flash':
1539+
1540+                               if (mejs.MediaFeatures.isIE) {
1541+                                       specialIEContainer = document.createElement('div');
1542+                                       container.appendChild(specialIEContainer);
1543+                                       specialIEContainer.outerHTML =
1544+'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
1545+'id="' + pluginid + '" width="' + width + '" height="' + height + '">' +
1546+'<param name="movie" value="' + options.pluginPath + options.flashName + '?x=' + (new Date()) + '" />' +
1547+'<param name="flashvars" value="' + initVars.join('&amp;') + '" />' +
1548+'<param name="quality" value="high" />' +
1549+'<param name="bgcolor" value="#000000" />' +
1550+'<param name="wmode" value="transparent" />' +
1551+'<param name="allowScriptAccess" value="always" />' +
1552+'<param name="allowFullScreen" value="true" />' +
1553+'</object>';
1554+
1555+                               } else {
1556+
1557+                                       container.innerHTML =
1558+'<embed id="' + pluginid + '" name="' + pluginid + '" ' +
1559+'play="true" ' +
1560+'loop="false" ' +
1561+'quality="high" ' +
1562+'bgcolor="#000000" ' +
1563+'wmode="transparent" ' +
1564+'allowScriptAccess="always" ' +
1565+'allowFullScreen="true" ' +
1566+'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' +
1567+'src="' + options.pluginPath + options.flashName + '" ' +
1568+'flashvars="' + initVars.join('&') + '" ' +
1569+'width="' + width + '" ' +
1570+'height="' + height + '"></embed>';
1571+                               }
1572+                               break;
1573+                       
1574+                       case 'youtube':
1575+                       
1576+                               
1577+                               var
1578+                                       videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
1579+                                       youtubeSettings = {
1580+                                               container: container,
1581+                                               containerId: container.id,
1582+                                               pluginMediaElement: pluginMediaElement,
1583+                                               pluginId: pluginid,
1584+                                               videoId: videoId,
1585+                                               height: height,
1586+                                               width: width   
1587+                                       };                             
1588+                               
1589+                               if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) {
1590+                                       mejs.YouTubeApi.createFlash(youtubeSettings);
1591+                               } else {
1592+                                       mejs.YouTubeApi.enqueueIframe(youtubeSettings);         
1593+                               }
1594+                               
1595+                               break;
1596+                       
1597+                       // DEMO Code. Does NOT work.
1598+                       case 'vimeo':
1599+                               //console.log('vimeoid');
1600+                               
1601+                               pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
1602+                               
1603+                               container.innerHTML ='<iframe src="http://player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?portrait=0&byline=0&title=0" width="' + width +'" height="' + height +'" frameborder="0"></iframe>';
1604+                               
1605+                               /*
1606+                               container.innerHTML =
1607+                                       '<object width="' + width + '" height="' + height + '">' +
1608+                                               '<param name="allowfullscreen" value="true" />' +
1609+                                               '<param name="allowscriptaccess" value="always" />' +
1610+                                               '<param name="flashvars" value="api=1" />' +
1611+                                               '<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=' + pluginMediaElement.vimeoid  + '&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" />' +
1612+                                               '<embed src="//vimeo.com/moogaloop.swf?api=1&amp;clip_id=' + pluginMediaElement.vimeoid + '&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="' + width + '" height="' + height + '"></embed>' +
1613+                                       '</object>';
1614+                                       */
1615+                                                                       
1616+                               break;                 
1617+               }
1618+               // hide original element
1619+               htmlMediaElement.style.display = 'none';
1620+
1621+               // FYI: options.success will be fired by the MediaPluginBridge
1622+               
1623+               return pluginMediaElement;
1624+       },
1625+
1626+       updateNative: function(playback, options, autoplay, preload) {
1627+               
1628+               var htmlMediaElement = playback.htmlMediaElement,
1629+                       m;
1630+               
1631+               
1632+               // add methods to video object to bring it into parity with Flash Object
1633+               for (m in mejs.HtmlMediaElement) {
1634+                       htmlMediaElement[m] = mejs.HtmlMediaElement[m];
1635+               }
1636+
1637+               /*
1638+               Chrome now supports preload="none"
1639+               if (mejs.MediaFeatures.isChrome) {
1640+               
1641+                       // special case to enforce preload attribute (Chrome doesn't respect this)
1642+                       if (preload === 'none' && !autoplay) {
1643+                       
1644+                               // forces the browser to stop loading (note: fails in IE9)
1645+                               htmlMediaElement.src = '';
1646+                               htmlMediaElement.load();
1647+                               htmlMediaElement.canceledPreload = true;
1648+
1649+                               htmlMediaElement.addEventListener('play',function() {
1650+                                       if (htmlMediaElement.canceledPreload) {
1651+                                               htmlMediaElement.src = playback.url;
1652+                                               htmlMediaElement.load();
1653+                                               htmlMediaElement.play();
1654+                                               htmlMediaElement.canceledPreload = false;
1655+                                       }
1656+                               }, false);
1657+                       // for some reason Chrome forgets how to autoplay sometimes.
1658+                       } else if (autoplay) {
1659+                               htmlMediaElement.load();
1660+                               htmlMediaElement.play();
1661+                       }
1662+               }
1663+               */
1664+
1665+               // fire success code
1666+               options.success(htmlMediaElement, htmlMediaElement);
1667+               
1668+               return htmlMediaElement;
1669+       }
1670+};
1671+
1672+/*
1673+ - test on IE (object vs. embed)
1674+ - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE)
1675+ - fullscreen?
1676+*/
1677+
1678+// YouTube Flash and Iframe API
1679+mejs.YouTubeApi = {
1680+       isIframeStarted: false,
1681+       isIframeLoaded: false,
1682+       loadIframeApi: function() {
1683+               if (!this.isIframeStarted) {
1684+                       var tag = document.createElement('script');
1685+                       tag.src = "http://www.youtube.com/player_api";
1686+                       var firstScriptTag = document.getElementsByTagName('script')[0];
1687+                       firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
1688+                       this.isIframeStarted = true;
1689+               }
1690+       },
1691+       iframeQueue: [],
1692+       enqueueIframe: function(yt) {
1693+               
1694+               if (this.isLoaded) {
1695+                       this.createIframe(yt);
1696+               } else {
1697+                       this.loadIframeApi();
1698+                       this.iframeQueue.push(yt);
1699+               }
1700+       },
1701+       createIframe: function(settings) {
1702+               
1703+               var
1704+               pluginMediaElement = settings.pluginMediaElement,       
1705+               player = new YT.Player(settings.containerId, {
1706+                       height: settings.height,
1707+                       width: settings.width,
1708+                       videoId: settings.videoId,
1709+                       playerVars: {controls:0},
1710+                       events: {
1711+                               'onReady': function() {
1712+                                       
1713+                                       // hook up iframe object to MEjs
1714+                                       settings.pluginMediaElement.pluginApi = player;
1715+                                       
1716+                                       // init mejs
1717+                                       mejs.MediaPluginBridge.initPlugin(settings.pluginId);
1718+                                       
1719+                                       // create timer
1720+                                       setInterval(function() {
1721+                                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
1722+                                       }, 250);                                       
1723+                               },
1724+                               'onStateChange': function(e) {
1725+                                       
1726+                                       mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement);
1727+                                       
1728+                               }
1729+                       }
1730+               });
1731+       },
1732+       
1733+       createEvent: function (player, pluginMediaElement, eventName) {
1734+               var obj = {
1735+                       type: eventName,
1736+                       target: pluginMediaElement
1737+               };
1738+
1739+               if (player && player.getDuration) {
1740+                       
1741+                       // time
1742+                       pluginMediaElement.currentTime = obj.currentTime = player.getCurrentTime();
1743+                       pluginMediaElement.duration = obj.duration = player.getDuration();
1744+                       
1745+                       // state
1746+                       obj.paused = pluginMediaElement.paused;
1747+                       obj.ended = pluginMediaElement.ended;                   
1748+                       
1749+                       // sound
1750+                       obj.muted = player.isMuted();
1751+                       obj.volume = player.getVolume() / 100;
1752+                       
1753+                       // progress
1754+                       obj.bytesTotal = player.getVideoBytesTotal();
1755+                       obj.bufferedBytes = player.getVideoBytesLoaded();
1756+                       
1757+                       // fake the W3C buffered TimeRange
1758+                       var bufferedTime = obj.bufferedBytes / obj.bytesTotal * obj.duration;
1759+                       
1760+                       obj.target.buffered = obj.buffered = {
1761+                               start: function(index) {
1762+                                       return 0;
1763+                               },
1764+                               end: function (index) {
1765+                                       return bufferedTime;
1766+                               },
1767+                               length: 1
1768+                       };
1769+                       
1770+               }
1771+               
1772+               // send event up the chain
1773+               pluginMediaElement.dispatchEvent(obj.type, obj);
1774+       },     
1775+       
1776+       iFrameReady: function() {
1777+               
1778+               this.isLoaded = true;
1779+               this.isIframeLoaded = true;
1780+               
1781+               while (this.iframeQueue.length > 0) {
1782+                       var settings = this.iframeQueue.pop();
1783+                       this.createIframe(settings);
1784+               }       
1785+       },
1786+       
1787+       // FLASH!
1788+       flashPlayers: {},
1789+       createFlash: function(settings) {
1790+               
1791+               this.flashPlayers[settings.pluginId] = settings;
1792+               
1793+               /*
1794+               settings.container.innerHTML =
1795+                       '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0" ' +
1796+                               'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; ">' +
1797+                               '<param name="allowScriptAccess" value="always">' +
1798+                               '<param name="wmode" value="transparent">' +
1799+                       '</object>';
1800+               */
1801+
1802+               var specialIEContainer,
1803+                       youtubeUrl = 'http://www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0';
1804+                       
1805+               if (mejs.MediaFeatures.isIE) {
1806+                       
1807+                       specialIEContainer = document.createElement('div');
1808+                       settings.container.appendChild(specialIEContainer);
1809+                       specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
1810+'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '">' +
1811+       '<param name="movie" value="' + youtubeUrl + '" />' +
1812+       '<param name="wmode" value="transparent" />' +
1813+       '<param name="allowScriptAccess" value="always" />' +
1814+       '<param name="allowFullScreen" value="true" />' +
1815+'</object>';
1816+               } else {
1817+               settings.container.innerHTML =
1818+                       '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' +
1819+                               'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; ">' +
1820+                               '<param name="allowScriptAccess" value="always">' +
1821+                               '<param name="wmode" value="transparent">' +
1822+                       '</object>';
1823+               }               
1824+               
1825+       },
1826+       
1827+       flashReady: function(id) {
1828+               var
1829+                       settings = this.flashPlayers[id],
1830+                       player = document.getElementById(id),
1831+                       pluginMediaElement = settings.pluginMediaElement;
1832+               
1833+               // hook up and return to MediaELementPlayer.success     
1834+               pluginMediaElement.pluginApi =
1835+               pluginMediaElement.pluginElement = player;
1836+               mejs.MediaPluginBridge.initPlugin(id);
1837+               
1838+               // load the youtube video
1839+               player.cueVideoById(settings.videoId);
1840+               
1841+               var callbackName = settings.containerId + '_callback'
1842+               
1843+               window[callbackName] = function(e) {
1844+                       mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement);
1845+               }
1846+               
1847+               player.addEventListener('onStateChange', callbackName);
1848+               
1849+               setInterval(function() {
1850+                       mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
1851+               }, 250);
1852+       },
1853+       
1854+       handleStateChange: function(youTubeState, player, pluginMediaElement) {
1855+               switch (youTubeState) {
1856+                       case -1: // not started
1857+                               pluginMediaElement.paused = true;
1858+                               pluginMediaElement.ended = true;
1859+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata');
1860+                               //createYouTubeEvent(player, pluginMediaElement, 'loadeddata');
1861+                               break;
1862+                       case 0:
1863+                               pluginMediaElement.paused = false;
1864+                               pluginMediaElement.ended = true;
1865+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended');
1866+                               break;
1867+                       case 1:
1868+                               pluginMediaElement.paused = false;
1869+                               pluginMediaElement.ended = false;                               
1870+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play');
1871+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing');
1872+                               break;
1873+                       case 2:
1874+                               pluginMediaElement.paused = true;
1875+                               pluginMediaElement.ended = false;                               
1876+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause');
1877+                               break;
1878+                       case 3: // buffering
1879+                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress');
1880+                               break;
1881+                       case 5:
1882+                               // cued?
1883+                               break;                                         
1884+                       
1885+               }                       
1886+               
1887+       }
1888+}
1889+// IFRAME
1890+function onYouTubePlayerAPIReady() {
1891+       mejs.YouTubeApi.iFrameReady();
1892+}
1893+// FLASH
1894+function onYouTubePlayerReady(id) {
1895+       mejs.YouTubeApi.flashReady(id);
1896+}
1897+
1898+window.mejs = mejs;
1899+window.MediaElement = mejs.MediaElement;
1900+
1901+/*!
1902+ * Adds Internationalization and localization to objects.
1903+ *
1904+ * What is the concept beyond i18n?
1905+ *   http://en.wikipedia.org/wiki/Internationalization_and_localization
1906+ *
1907+ *
1908+ * This file both i18n methods and locale which is used to translate
1909+ * strings into other languages.
1910+ *
1911+ * Default translations are not available, you have to add them
1912+ * through locale objects which are named exactly as the langcode
1913+ * they stand for. The default language is always english (en).
1914+ *
1915+ *
1916+ * Wrapper built to be able to attach the i18n object to
1917+ * other objects without changing more than one line.
1918+ *
1919+ *
1920+ * LICENSE:
1921+ *
1922+ *   The i18n file uses methods from the Drupal project (drupal.js):
1923+ *     - i18n.methods.t() (modified)
1924+ *     - i18n.methods.checkPlain() (full copy)
1925+ *     - i18n.methods.formatString() (full copy)
1926+ *
1927+ *   The Drupal project is (like mediaelementjs) licensed under GPLv2.
1928+ *    - http://drupal.org/licensing/faq/#q1
1929+ *    - https://github.com/johndyer/mediaelement
1930+ *    - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
1931+ *
1932+ *
1933+ * @author
1934+ *   Tim Latz (latz.tim@gmail.com)
1935+ *
1936+ * @see
1937+ *   me-i18n-locale.js
1938+ *
1939+ * @params
1940+ *  - $       - zepto || jQuery  ..
1941+ *  - context - document, iframe ..
1942+ *  - exports - CommonJS, window ..
1943+ *
1944+ */
1945+;(function($, context, exports, undefined) {
1946+    "use strict";
1947+    var i18n = {
1948+        "locale": {
1949+            "strings" : {}
1950+        },
1951+        "methods" : {}
1952+    };
1953+// start i18n
1954+
1955+
1956+    /**
1957+     * Get the current browser's language
1958+     *
1959+     * @see: i18n.methods.t()
1960+     */
1961+    i18n.locale.getLanguage = function () {
1962+        return {
1963+            "language" : navigator.language
1964+        };
1965+    };
1966+
1967+    /**
1968+     * Store the language the locale object was initialized with
1969+     */
1970+    i18n.locale.INIT_LANGUAGE = i18n.locale.getLanguage();
1971+
1972+
1973+    /**
1974+     * Encode special characters in a plain-text string for display as HTML.
1975+     */
1976+    i18n.methods.checkPlain = function (str) {
1977+        var character, regex,
1978+        replace = {
1979+            '&': '&amp;',
1980+            '"': '&quot;',
1981+            '<': '&lt;',
1982+            '>': '&gt;'
1983+        };
1984+        str = String(str);
1985+        for (character in replace) {
1986+            if (replace.hasOwnProperty(character)) {
1987+                regex = new RegExp(character, 'g');
1988+                str = str.replace(regex, replace[character]);
1989+            }
1990+        }
1991+        return str;
1992+    };
1993+
1994+    /**
1995+     * Replace placeholders with sanitized values in a string.
1996+     *
1997+     * @param str
1998+     *   A string with placeholders.
1999+     * @param args
2000+     *   An object of replacements pairs to make. Incidences of any key in this
2001+     *   array are replaced with the corresponding value. Based on the first
2002+     *   character of the key, the value is escaped and/or themed:
2003+     *    - !variable: inserted as is
2004+     *    - @variable: escape plain text to HTML (i18n.methods.checkPlain)
2005+     *    - %variable: escape text and theme as a placeholder for user-submitted
2006+     *      content (checkPlain + <em class="placeholder" > )
2007+     *
2008+     * @see i18n.methods.t()
2009+     */
2010+    i18n.methods.formatString = function(str, args) {
2011+        // Transform arguments before inserting them.
2012+        for (var key in args) {
2013+            switch (key.charAt(0)) {
2014+                // Escaped only.
2015+                case '@':
2016+                    args[key] = i18n.methods.checkPlain(args[key]);
2017+                    break;
2018+                // Pass-through.
2019+                case '!':
2020+                    break;
2021+                // Escaped and placeholder.
2022+                case '%':
2023+                default:
2024+                    args[key] = '<em class="placeholder">' + i18n.methods.checkPlain(args[key]) + '</em>';
2025+                    break;
2026+            }
2027+            str = str.replace(key, args[key]);
2028+        }
2029+        return str;
2030+    };
2031+
2032+    /**
2033+     * Translate strings to the page language or a given language.
2034+     *
2035+     * See the documentation of the server-side t() function for further details.
2036+     *
2037+     * @param str
2038+     *   A string containing the English string to translate.
2039+     * @param args
2040+     *   An object of replacements pairs to make after translation. Incidences
2041+     *   of any key in this array are replaced with the corresponding value.
2042+     *   See i18n.methods.formatString().
2043+     *
2044+     * @param options
2045+     *   - 'context' (defaults to the default context): The context the source string
2046+     *     belongs to.
2047+     *
2048+     * @return
2049+     *   The translated string.
2050+     */
2051+    i18n.methods.t = function (str, args, options) {
2052+
2053+        // Fetch the localized version of the string.
2054+        if (i18n.locale.strings && i18n.locale.strings[options.context] && i18n.locale.strings[options.context][str]) {
2055+            str = i18n.locale.strings[options.context][str];
2056+        }
2057+
2058+        if (args) {
2059+            str = i18n.methods.formatString(str, args);
2060+        }
2061+        return str;
2062+    };
2063+
2064+
2065+    /**
2066+     * Wrapper for i18n.methods.t()
2067+     *
2068+     * @see i18n.methods.t()
2069+     * @throws InvalidArgumentException
2070+     */
2071+    i18n.t = function(str, args, options) {
2072+
2073+        if (typeof str === 'string' && str.length > 0) {
2074+
2075+            // check every time due languge can change for
2076+            // different reasons (translation, lang switcher ..)
2077+            var lang = i18n.locale.getLanguage();
2078+
2079+            options = options || {
2080+                "context" : lang.language
2081+            };
2082+
2083+            return i18n.methods.t(str, args, options);
2084+        }
2085+        else {
2086+            throw {
2087+                "name" : 'InvalidArgumentException',
2088+                "message" : 'First argument is either not a string or empty.'
2089+            }
2090+        }
2091+    };
2092+
2093+// end i18n
2094+    exports.i18n = i18n;
2095+}(jQuery, document, mejs));
2096+/*!
2097+ * This is a i18n.locale language object.
2098+ *
2099+ *<de> German translation by Tim Latz, latz.tim@gmail.com
2100+ *
2101+ * @author
2102+ *   Tim Latz (latz.tim@gmail.com)
2103+ *
2104+ * @see
2105+ *   me-i18n.js
2106+ *
2107+ * @params
2108+ *  - exports - CommonJS, window ..
2109+ */
2110+;(function(exports, undefined) {
2111+
2112+    "use strict";
2113+
2114+    exports.de = {
2115+        "Fullscreen" : "Vollbild",
2116+        "Go Fullscreen" : "Vollbild an",
2117+        "Turn off Fullscreen" : "Vollbild aus",
2118+        "Close" : "Schließen"
2119+    };
2120+
2121+}(mejs.i18n.locale.strings));
2122+
2123+/*!
2124+ * MediaElementPlayer
2125+ * http://mediaelementjs.com/
2126+ *
2127+ * Creates a controller bar for HTML5 <video> add <audio> tags
2128+ * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
2129+ *
2130+ * Copyright 2010-2012, John Dyer (http://j.hn/)
2131+ * Dual licensed under the MIT or GPL Version 2 licenses.
2132+ *
2133+ */
2134+if (typeof jQuery != 'undefined') {
2135+       mejs.$ = jQuery;
2136+} else if (typeof ender != 'undefined') {
2137+       mejs.$ = ender;
2138+}
2139+(function ($) {
2140+
2141+       // default player values
2142+       mejs.MepDefaults = {
2143+               // url to poster (to fix iOS 3.x)
2144+               poster: '',
2145+               // default if the <video width> is not specified
2146+               defaultVideoWidth: 480,
2147+               // default if the <video height> is not specified
2148+               defaultVideoHeight: 270,
2149+               // if set, overrides <video width>
2150+               videoWidth: -1,
2151+               // if set, overrides <video height>
2152+               videoHeight: -1,
2153+               // default if the user doesn't specify
2154+               defaultAudioWidth: 400,
2155+               // default if the user doesn't specify
2156+               defaultAudioHeight: 30,
2157+
2158+               // default amount to move back when back key is pressed         
2159+               defaultSeekBackwardInterval: function(media) {
2160+                       return (media.duration * 0.05);
2161+               },             
2162+               // default amount to move forward when forward key is pressed                           
2163+               defaultSeekForwardInterval: function(media) {
2164+                       return (media.duration * 0.05);
2165+               },             
2166+               
2167+               // width of audio player
2168+               audioWidth: -1,
2169+               // height of audio player
2170+               audioHeight: -1,               
2171+               // initial volume when the player starts (overrided by user cookie)
2172+               startVolume: 0.8,
2173+               // useful for <audio> player loops
2174+               loop: false,
2175+               // resize to media dimensions
2176+               enableAutosize: true,
2177+               // forces the hour marker (##:00:00)
2178+               alwaysShowHours: false,
2179+
2180+               // show framecount in timecode (##:00:00:00)
2181+               showTimecodeFrameCount: false,
2182+               // used when showTimecodeFrameCount is set to true
2183+               framesPerSecond: 25,
2184+               
2185+               // automatically calculate the width of the progress bar based on the sizes of other elements
2186+               autosizeProgress : true,
2187+               // Hide controls when playing and mouse is not over the video
2188+               alwaysShowControls: false,
2189+               // force iPad's native controls
2190+               iPadUseNativeControls: false,
2191+               // force iPhone's native controls
2192+               iPhoneUseNativeControls: false,
2193+               // force Android's native controls
2194+               AndroidUseNativeControls: false,                       
2195+               // features to show
2196+               features: ['playpause','current','progress','duration','tracks','volume','fullscreen'],
2197+               // only for dynamic
2198+               isVideo: true,
2199+               
2200+               // turns keyboard support on and off for this instance
2201+               enableKeyboard: true,
2202+               
2203+               // whenthis player starts, it will pause other players
2204+               pauseOtherPlayers: true,
2205+               
2206+               // array of keyboard actions such as play pause
2207+               keyActions: [
2208+                               {
2209+                                               keys: [
2210+                                                               32, // SPACE
2211+                                                               179 // GOOGLE play/pause button
2212+                                                         ],
2213+                                               action: function(player, media) {
2214+                                                               if (media.paused || media.ended) {
2215+                                                                               media.play();   
2216+                                                               } else {
2217+                                                                               media.pause();
2218+                                                               }                                                                               
2219+                                               }
2220+                               },
2221+                               {
2222+                                               keys: [38], // UP
2223+                                               action: function(player, media) {
2224+                                                               var newVolume = Math.min(media.volume + 0.1, 1);
2225+                                                               media.setVolume(newVolume);
2226+                                               }
2227+                               },
2228+                               {
2229+                                               keys: [40], // DOWN
2230+                                               action: function(player, media) {
2231+                                                               var newVolume = Math.max(media.volume - 0.1, 0);
2232+                                                               media.setVolume(newVolume);
2233+                                               }
2234+                               },
2235+                               {
2236+                                               keys: [
2237+                                                               37, // LEFT
2238+                                                               227 // Google TV rewind
2239+                                               ],
2240+                                               action: function(player, media) {
2241+                                                               if (!isNaN(media.duration) && media.duration > 0) {
2242+                                                                               if (player.isVideo) {
2243+                                                                                               player.showControls();
2244+                                                                                               player.startControlsTimer();
2245+                                                                               }
2246+                                                                               
2247+                                                                               // 5%
2248+                                                                               var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
2249+                                                                               media.setCurrentTime(newTime);
2250+                                                               }
2251+                                               }
2252+                               },
2253+                               {
2254+                                               keys: [
2255+                                                               39, // RIGHT
2256+                                                               228 // Google TV forward
2257+                                               ],
2258+                                               action: function(player, media) {
2259+                                                               if (!isNaN(media.duration) && media.duration > 0) {
2260+                                                                               if (player.isVideo) {
2261+                                                                                               player.showControls();
2262+                                                                                               player.startControlsTimer();
2263+                                                                               }
2264+                                                                               
2265+                                                                               // 5%
2266+                                                                               var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);                                                                           
2267+                                                                               media.setCurrentTime(newTime);
2268+                                                               }
2269+                                               }
2270+                               },
2271+                               {
2272+                                               keys: [70], // f
2273+                                               action: function(player, media) {
2274+                                                               if (typeof player.enterFullScreen != 'undefined') {
2275+                                                                               if (player.isFullScreen) {
2276+                                                                                               player.exitFullScreen();
2277+                                                                               } else {
2278+                                                                                               player.enterFullScreen();
2279+                                                                               }
2280+                                                               }
2281+                                               }
2282+                               }                                       
2283+               ]               
2284+       };
2285+
2286+       mejs.mepIndex = 0;
2287+       
2288+       mejs.players = [];
2289+
2290+       // wraps a MediaElement object in player controls
2291+       mejs.MediaElementPlayer = function(node, o) {
2292+               // enforce object, even without "new" (via John Resig)
2293+               if ( !(this instanceof mejs.MediaElementPlayer) ) {
2294+                       return new mejs.MediaElementPlayer(node, o);
2295+               }
2296+
2297+               var t = this;
2298+               
2299+               // these will be reset after the MediaElement.success fires
2300+               t.$media = t.$node = $(node);
2301+               t.node = t.media = t.$media[0];         
2302+               
2303+               // check for existing player
2304+               if (typeof t.node.player != 'undefined') {
2305+                       return t.node.player;
2306+               } else {
2307+                       // attach player to DOM node for reference
2308+                       t.node.player = t;
2309+               }
2310+                               
2311+                               
2312+               // try to get options from data-mejsoptions
2313+               if (typeof o == 'undefined') {
2314+                       o = t.$node.data('mejsoptions');       
2315+               }
2316+                       
2317+               // extend default options
2318+               t.options = $.extend({},mejs.MepDefaults,o);
2319+               
2320+               // add to player array (for focus events)
2321+               mejs.players.push(t);
2322+               
2323+               // start up
2324+               t.init();
2325+
2326+               return t;
2327+       };
2328+
2329+       // actual player
2330+       mejs.MediaElementPlayer.prototype = {
2331+               
2332+               hasFocus: false,
2333+               
2334+               controlsAreVisible: true,
2335+               
2336+               init: function() {
2337+
2338+                       var
2339+                               t = this,
2340+                               mf = mejs.MediaFeatures,
2341+                               // options for MediaElement (shim)
2342+                               meOptions = $.extend(true, {}, t.options, {
2343+                                       success: function(media, domNode) { t.meReady(media, domNode); },
2344+                                       error: function(e) { t.handleError(e);}
2345+                               }),
2346+                               tagName = t.media.tagName.toLowerCase();
2347+               
2348+                       t.isDynamic = (tagName !== 'audio' && tagName !== 'video');
2349+                       
2350+                       if (t.isDynamic) {     
2351+                               // get video from src or href?                         
2352+                               t.isVideo = t.options.isVideo;                                         
2353+                       } else {
2354+                               t.isVideo = (tagName !== 'audio' && t.options.isVideo);
2355+                       }
2356+               
2357+                       // use native controls in iPad, iPhone, and Android     
2358+                       if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) {
2359+                               
2360+                               // add controls and stop
2361+                               t.$media.attr('controls', 'controls');
2362+
2363+                               // attempt to fix iOS 3 bug
2364+                               //t.$media.removeAttr('poster');
2365+                                // no Issue found on iOS3 -ttroxell
2366+
2367+                               // override Apple's autoplay override for iPads
2368+                               if (mf.isiPad && t.media.getAttribute('autoplay') !== null) {
2369+                                       t.media.load();
2370+                                       t.media.play();
2371+                               }
2372+                                       
2373+                       } else if (mf.isAndroid && t.AndroidUseNativeControls) {
2374+                               
2375+                               // leave default player
2376+
2377+                       } else {
2378+
2379+                               // DESKTOP: use MediaElementPlayer controls
2380+                               
2381+                               // remove native controls                       
2382+                               t.$media.removeAttr('controls');                                       
2383+                               
2384+                               // unique ID
2385+                               t.id = 'mep_' + mejs.mepIndex++;
2386+
2387+                               // build container
2388+                               t.container =
2389+                                       $('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svg ? 'svg' : 'no-svg') + '">'+
2390+                                               '<div class="mejs-inner">'+
2391+                                                       '<div class="mejs-mediaelement"></div>'+
2392+                                                       '<div class="mejs-layers"></div>'+
2393+                                                       '<div class="mejs-controls"></div>'+
2394+                                                       '<div class="mejs-clear"></div>'+
2395+                                               '</div>' +
2396+                                       '</div>')
2397+                                       .addClass(t.$media[0].className)
2398+                                       .insertBefore(t.$media);       
2399+                                       
2400+                               // add classes for user and content
2401+                               t.container.addClass(
2402+                                       (mf.isAndroid ? 'mejs-android ' : '') +
2403+                                       (mf.isiOS ? 'mejs-ios ' : '') +
2404+                                       (mf.isiPad ? 'mejs-ipad ' : '') +
2405+                                       (mf.isiPhone ? 'mejs-iphone ' : '') +
2406+                                       (t.isVideo ? 'mejs-video ' : 'mejs-audio ')
2407+                               );     
2408+                                       
2409+
2410+                               // move the <video/video> tag into the right spot
2411+                               if (mf.isiOS) {
2412+                               
2413+                                       // sadly, you can't move nodes in iOS, so we have to destroy and recreate it!
2414+                                       var $newMedia = t.$media.clone();
2415+                                       
2416+                                       t.container.find('.mejs-mediaelement').append($newMedia);
2417+                                       
2418+                                       t.$media.remove();
2419+                                       t.$node = t.$media = $newMedia;
2420+                                       t.node = t.media = $newMedia[0]
2421+                                       
2422+                               } else {
2423+                                       
2424+                                       // normal way of moving it into place (doesn't work on iOS)
2425+                                       t.container.find('.mejs-mediaelement').append(t.$media);
2426+                               }
2427+                               
2428+                               // find parts
2429+                               t.controls = t.container.find('.mejs-controls');
2430+                               t.layers = t.container.find('.mejs-layers');
2431+
2432+                               // determine the size
2433+                               
2434+                               /* size priority:
2435+                                       (1) videoWidth (forced),
2436+                                       (2) style="width;height;"
2437+                                       (3) width attribute,
2438+                                       (4) defaultVideoWidth (for unspecified cases)
2439+                               */
2440+                               
2441+                               var tagType = (t.isVideo ? 'video' : 'audio'),
2442+                                       capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1);
2443+                                       
2444+                               
2445+                               if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
2446+                                       t.width = t.options[tagType + 'Width'];
2447+                               } else if (t.media.style.width !== '' && t.media.style.width !== null) {
2448+                                       t.width = t.media.style.width;                                         
2449+                               } else if (t.media.getAttribute('width') !== null) {
2450+                                       t.width = t.$media.attr('width');
2451+                               } else {
2452+                                       t.width = t.options['default' + capsTagName + 'Width'];
2453+                               }
2454+                               
2455+                               if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
2456+                                       t.height = t.options[tagType + 'Height'];
2457+                               } else if (t.media.style.height !== '' && t.media.style.height !== null) {
2458+                                       t.height = t.media.style.height;
2459+                               } else if (t.$media[0].getAttribute('height') !== null) {
2460+                                       t.height = t.$media.attr('height');     
2461+                               } else {
2462+                                       t.height = t.options['default' + capsTagName + 'Height'];
2463+                               }
2464+
2465+                               // set the size, while we wait for the plugins to load below
2466+                               t.setPlayerSize(t.width, t.height);
2467+                               
2468+                               // create MediaElementShim
2469+                               meOptions.pluginWidth = t.height;
2470+                               meOptions.pluginHeight = t.width;                               
2471+                       }
2472+                       
2473+                       
2474+
2475+                       // create MediaElement shim
2476+                       mejs.MediaElement(t.$media[0], meOptions);
2477+               },
2478+               
2479+               showControls: function(doAnimation) {
2480+                       var t = this;
2481+                       
2482+                       doAnimation = typeof doAnimation == 'undefined' || doAnimation;
2483+                       
2484+                       if (t.controlsAreVisible)
2485+                               return;
2486+                       
2487+                       if (doAnimation) {
2488+                               t.controls
2489+                                       .css('visibility','visible')
2490+                                       .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});       
2491+       
2492+                               // any additional controls people might add and want to hide
2493+                               t.container.find('.mejs-control')
2494+                                       .css('visibility','visible')
2495+                                       .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});       
2496+                                       
2497+                       } else {
2498+                               t.controls
2499+                                       .css('visibility','visible')
2500+                                       .css('display','block');
2501+       
2502+                               // any additional controls people might add and want to hide
2503+                               t.container.find('.mejs-control')
2504+                                       .css('visibility','visible')
2505+                                       .css('display','block');
2506+                                       
2507+                               t.controlsAreVisible = true;
2508+                       }
2509+                       
2510+                       t.setControlsSize();
2511+                       
2512+               },
2513+
2514+               hideControls: function(doAnimation) {
2515+                       var t = this;
2516+                       
2517+                       doAnimation = typeof doAnimation == 'undefined' || doAnimation;
2518+                       
2519+                       if (!t.controlsAreVisible)
2520+                               return;
2521+                       
2522+                       if (doAnimation) {
2523+                               // fade out main controls
2524+                               t.controls.stop(true, true).fadeOut(200, function() {
2525+                                       $(this)
2526+                                               .css('visibility','hidden')
2527+                                               .css('display','block');
2528+                                               
2529+                                       t.controlsAreVisible = false;
2530+                               });     
2531+       
2532+                               // any additional controls people might add and want to hide
2533+                               t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() {
2534+                                       $(this)
2535+                                               .css('visibility','hidden')
2536+                                               .css('display','block');
2537+                               });     
2538+                       } else {
2539+                               
2540+                               // hide main controls
2541+                               t.controls
2542+                                       .css('visibility','hidden')
2543+                                       .css('display','block');               
2544+                               
2545+                               // hide others
2546+                               t.container.find('.mejs-control')
2547+                                       .css('visibility','hidden')
2548+                                       .css('display','block');
2549+                                       
2550+                               t.controlsAreVisible = false;
2551+                       }
2552+               },             
2553+
2554+               controlsTimer: null,
2555+
2556+               startControlsTimer: function(timeout) {
2557+
2558+                       var t = this;
2559+                       
2560+                       timeout = typeof timeout != 'undefined' ? timeout : 1500;
2561+
2562+                       t.killControlsTimer('start');
2563+
2564+                       t.controlsTimer = setTimeout(function() {
2565+                               //console.log('timer fired');
2566+                               t.hideControls();
2567+                               t.killControlsTimer('hide');
2568+                       }, timeout);
2569+               },
2570+
2571+               killControlsTimer: function(src) {
2572+
2573+                       var t = this;
2574+
2575+                       if (t.controlsTimer !== null) {
2576+                               clearTimeout(t.controlsTimer);
2577+                               delete t.controlsTimer;
2578+                               t.controlsTimer = null;
2579+                       }
2580+               },             
2581+               
2582+               controlsEnabled: true,
2583+               
2584+               disableControls: function() {
2585+                       var t= this;
2586+                       
2587+                       t.killControlsTimer();
2588+                       t.hideControls(false);
2589+                       this.controlsEnabled = false;
2590+               },
2591+               
2592+               enableControls: function() {
2593+                       var t= this;
2594+                       
2595+                       t.showControls(false);
2596+                       
2597+                       t.controlsEnabled = true;
2598+               },             
2599+               
2600+
2601+               // Sets up all controls and events
2602+               meReady: function(media, domNode) {                     
2603+               
2604+               
2605+                       var t = this,
2606+                               mf = mejs.MediaFeatures,
2607+                               autoplayAttr = domNode.getAttribute('autoplay'),
2608+                               autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'),
2609+                               featureIndex,
2610+                               feature;
2611+
2612+                       // make sure it can't create itself again if a plugin reloads
2613+                       if (t.created)
2614+                               return;
2615+                       else
2616+                               t.created = true;                       
2617+
2618+                       t.media = media;
2619+                       t.domNode = domNode;
2620+                       
2621+                       if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) {                         
2622+                               
2623+                               // two built in features
2624+                               t.buildposter(t, t.controls, t.layers, t.media);
2625+                               t.buildkeyboard(t, t.controls, t.layers, t.media);
2626+                               t.buildoverlays(t, t.controls, t.layers, t.media);
2627+
2628+                               // grab for use by features
2629+                               t.findTracks();
2630+
2631+                               // add user-defined features/controls
2632+                               for (featureIndex in t.options.features) {
2633+                                       feature = t.options.features[featureIndex];
2634+                                       if (t['build' + feature]) {
2635+                                               try {
2636+                                                       t['build' + feature](t, t.controls, t.layers, t.media);
2637+                                               } catch (e) {
2638+                                                       // TODO: report control error
2639+                                                       //throw e;
2640+                                                       //console.log('error building ' + feature);
2641+                                                       //console.log(e);
2642+                                               }
2643+                                       }
2644+                               }
2645+
2646+                               t.container.trigger('controlsready');
2647+                               
2648+                               // reset all layers and controls
2649+                               t.setPlayerSize(t.width, t.height);
2650+                               t.setControlsSize();
2651+                               
2652+
2653+                               // controls fade
2654+                               if (t.isVideo) {
2655+                               
2656+                                       if (mejs.MediaFeatures.hasTouch) {
2657+                                               
2658+                                               // for touch devices (iOS, Android)
2659+                                               // show/hide without animation on touch
2660+                                               
2661+                                               t.$media.bind('touchstart', function() {
2662+                                                       
2663+                                                       
2664+                                                       // toggle controls
2665+                                                       if (t.controlsAreVisible) {
2666+                                                               t.hideControls(false);
2667+                                                       } else {
2668+                                                               if (t.controlsEnabled) {
2669+                                                                       t.showControls(false);
2670+                                                               }
2671+                                                       }
2672+                                               });                                     
2673+                                       
2674+                                       } else {
2675+            // click to play/pause
2676+            t.media.addEventListener('click', function() {
2677+              if (t.media.paused) {
2678+                t.media.play();
2679+              } else {
2680+                t.media.pause();
2681+              }
2682+            });
2683+                                       
2684+                                               // show/hide controls
2685+                                               t.container
2686+                                                       .bind('mouseenter mouseover', function () {
2687+                                                               if (t.controlsEnabled) {
2688+                                                                       if (!t.options.alwaysShowControls) {                                                           
2689+                                                                               t.killControlsTimer('enter');
2690+                                                                               t.showControls();
2691+                                                                               t.startControlsTimer(2500);             
2692+                                                                       }
2693+                                                               }
2694+                                                       })
2695+                                                       .bind('mousemove', function() {
2696+                                                               if (t.controlsEnabled) {
2697+                                                                       if (!t.controlsAreVisible) {
2698+                                                                               t.showControls();
2699+                                                                       }
2700+                                                                       //t.killControlsTimer('move');
2701+                                                                       if (!t.options.alwaysShowControls) {
2702+                                                                               t.startControlsTimer(2500);
2703+                                                                       }
2704+                                                               }
2705+                                                       })
2706+                                                       .bind('mouseleave', function () {
2707+                                                               if (t.controlsEnabled) {
2708+                                                                       if (!t.media.paused && !t.options.alwaysShowControls) {
2709+                                                                               t.startControlsTimer(1000);                                                             
2710+                                                                       }
2711+                                                               }
2712+                                                       });
2713+                                       }
2714+                                       
2715+                                       // check for autoplay
2716+                                       if (autoplay && !t.options.alwaysShowControls) {
2717+                                               t.hideControls();
2718+                                       }
2719+
2720+                                       // resizer
2721+                                       if (t.options.enableAutosize) {
2722+                                               t.media.addEventListener('loadedmetadata', function(e) {
2723+                                                       // if the <video height> was not set and the options.videoHeight was not set
2724+                                                       // then resize to the real dimensions
2725+                                                       if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) {
2726+                                                               t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
2727+                                                               t.setControlsSize();
2728+                                                               t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight);
2729+                                                       }
2730+                                               }, false);
2731+                                       }
2732+                               }
2733+                               
2734+                               // EVENTS
2735+
2736+                               // FOCUS: when a video starts playing, it takes focus from other players (possibily pausing them)
2737+                               media.addEventListener('play', function() {
2738+                                               
2739+                                               // go through all other players
2740+                                               for (var i=0, il=mejs.players.length; i<il; i++) {
2741+                                                       var p = mejs.players[i];
2742+                                                       if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
2743+                                                               p.pause();
2744+                                                       }
2745+                                                       p.hasFocus = false;
2746+                                               }
2747+                                               
2748+                                               t.hasFocus = true;
2749+                               },false);
2750+                                                               
2751+
2752+                               // ended for all
2753+                               t.media.addEventListener('ended', function (e) {
2754+                                       try{
2755+                                               t.media.setCurrentTime(0);
2756+                                       } catch (exp) {
2757+                                               
2758+                                       }
2759+                                       t.media.pause();
2760+                                       
2761+                                       if (t.setProgressRail)
2762+                                               t.setProgressRail();
2763+                                       if (t.setCurrentRail)
2764+                                               t.setCurrentRail();                                             
2765+
2766+                                       if (t.options.loop) {
2767+                                               t.media.play();
2768+                                       } else if (!t.options.alwaysShowControls && t.controlsEnabled) {
2769+                                               t.showControls();
2770+                                       }
2771+                               }, false);
2772+                               
2773+                               // resize on the first play
2774+                               t.media.addEventListener('loadedmetadata', function(e) {
2775+                                       if (t.updateDuration) {
2776+                                               t.updateDuration();
2777+                                       }
2778+                                       if (t.updateCurrent) {
2779+                                               t.updateCurrent();
2780+                                       }
2781+                                       
2782+                                       if (!t.isFullScreen) {
2783+                                               t.setPlayerSize(t.width, t.height);
2784+                                               t.setControlsSize();
2785+                                       }
2786+                               }, false);
2787+
2788+
2789+                               // webkit has trouble doing this without a delay
2790+                               setTimeout(function () {
2791+                                       t.setPlayerSize(t.width, t.height);
2792+                                       t.setControlsSize();
2793+                               }, 50);
2794+                               
2795+                               // adjust controls whenever window sizes (used to be in fullscreen only)
2796+                               $(window).resize(function() {
2797+                                       
2798+                                       // don't resize for fullscreen mode                             
2799+                                       if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) {
2800+                                               t.setPlayerSize(t.width, t.height);
2801+                                       }
2802+                                       
2803+                                       // always adjust controls
2804+                                       t.setControlsSize();
2805+                               });                             
2806+
2807+                               // TEMP: needs to be moved somewhere else
2808+                               if (t.media.pluginType == 'youtube') {
2809+                                       t.container.find('.mejs-overlay-play').hide(); 
2810+                               }
2811+                       }
2812+                       
2813+                       // force autoplay for HTML5
2814+                       if (autoplay && media.pluginType == 'native') {
2815+                               media.load();
2816+                               media.play();
2817+                       }
2818+
2819+
2820+                       if (t.options.success) {
2821+                               
2822+                               if (typeof t.options.success == 'string') {
2823+                                               window[t.options.success](t.media, t.domNode, t);
2824+                               } else {
2825+                                               t.options.success(t.media, t.domNode, t);
2826+                               }
2827+                       }
2828+               },
2829+
2830+               handleError: function(e) {
2831+                       var t = this;
2832+                       
2833+                       t.controls.hide();
2834+               
2835+                       // Tell user that the file cannot be played
2836+                       if (t.options.error) {
2837+                               t.options.error(e);
2838+                       }
2839+               },
2840+
2841+               setPlayerSize: function(width,height) {
2842+                       var t = this;
2843+
2844+                       if (typeof width != 'undefined')
2845+                               t.width = width;
2846+                               
2847+                       if (typeof height != 'undefined')
2848+                               t.height = height;
2849+
2850+      // detect 100% mode - use currentStyle for IE since css() doesn't return percentages
2851+      if (t.height.toString().indexOf('%') > 0 || t.$node.css('max-width') === '100%' || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')) {
2852+                       
2853+                               // do we have the native dimensions yet?
2854+                               var
2855+                                       nativeWidth = t.isVideo ? ((t.media.videoWidth && t.media.videoWidth > 0) ? t.media.videoWidth : t.options.defaultVideoWidth) : t.options.defaultAudioWidth,
2856+                                       nativeHeight = t.isVideo ? ((t.media.videoHeight && t.media.videoHeight > 0) ? t.media.videoHeight : t.options.defaultVideoHeight) : t.options.defaultAudioHeight,
2857+                                       parentWidth = t.container.parent().closest(':visible').width(),
2858+                                       newHeight = parseInt(parentWidth * nativeHeight/nativeWidth, 10);
2859+                                       
2860+                               if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
2861+                                       parentWidth = $(window).width();
2862+                                       newHeight = $(window).height();
2863+                               }
2864+                               
2865+                               if ( newHeight != 0 ) {
2866+                                       // set outer container size
2867+                                       t.container
2868+                                               .width(parentWidth)
2869+                                               .height(newHeight);
2870+                                               
2871+                                       // set native <video> or <audio>
2872+                                       t.$media
2873+                                               .width('100%')
2874+                                               .height('100%');
2875+                                               
2876+                                       // set shims
2877+                                       t.container.find('object, embed, iframe')
2878+                                               .width('100%')
2879+                                               .height('100%');
2880+                                               
2881+                                       // if shim is ready, send the size to the embeded plugin       
2882+                                       if (t.isVideo) {
2883+                                               if (t.media.setVideoSize) {
2884+                                                       t.media.setVideoSize(parentWidth, newHeight);
2885+                                               }
2886+                                       }
2887+                                       
2888+                                       // set the layers
2889+                                       t.layers.children('.mejs-layer')
2890+                                               .width('100%')
2891+                                               .height('100%');
2892+                               }
2893+                       
2894+                       
2895+                       } else {
2896+
2897+                               t.container
2898+                                       .width(t.width)
2899+                                       .height(t.height);
2900+       
2901+                               t.layers.children('.mejs-layer')
2902+                                       .width(t.width)
2903+                                       .height(t.height);
2904+                                       
2905+                       }
2906+               },
2907+
2908+               setControlsSize: function() {
2909+                       var t = this,
2910+                               usedWidth = 0,
2911+                               railWidth = 0,
2912+                               rail = t.controls.find('.mejs-time-rail'),
2913+                               total = t.controls.find('.mejs-time-total'),
2914+                               current = t.controls.find('.mejs-time-current'),
2915+                               loaded = t.controls.find('.mejs-time-loaded'),
2916+                               others = rail.siblings();
2917+                       
2918+
2919+                       // allow the size to come from custom CSS
2920+                       if (t.options && !t.options.autosizeProgress) {
2921+                               // Also, frontends devs can be more flexible
2922+                               // due the opportunity of absolute positioning.
2923+                               railWidth = parseInt(rail.css('width'));
2924+                       }
2925+                       
2926+                       // attempt to autosize
2927+                       if (railWidth === 0 || !railWidth) {
2928+                               
2929+                               // find the size of all the other controls besides the rail
2930+                               others.each(function() {
2931+                                       if ($(this).css('position') != 'absolute') {
2932+                                               usedWidth += $(this).outerWidth(true);
2933+                                       }
2934+                               });
2935+                               
2936+                               // fit the rail into the remaining space
2937+                               railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
2938+                       }
2939+
2940+                       // outer area
2941+                       rail.width(railWidth);
2942+                       // dark space
2943+                       total.width(railWidth - (total.outerWidth(true) - total.width()));
2944+                       
2945+                       if (t.setProgressRail)
2946+                               t.setProgressRail();
2947+                       if (t.setCurrentRail)
2948+                               t.setCurrentRail();                             
2949+               },
2950+
2951+
2952+               buildposter: function(player, controls, layers, media) {
2953+                       var t = this,
2954+                               poster =
2955+                               $('<div class="mejs-poster mejs-layer">' +
2956+                               '</div>')
2957+                                       .appendTo(layers),
2958+                               posterUrl = player.$media.attr('poster');
2959+
2960+                       // prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
2961+                       if (player.options.poster !== '') {
2962+                               posterUrl = player.options.poster;
2963+                       }       
2964+                               
2965+                       // second, try the real poster
2966+                       if (posterUrl !== '' && posterUrl != null) {
2967+                               t.setPoster(posterUrl);
2968+                       } else {
2969+                               poster.hide();
2970+                       }
2971+
2972+                       media.addEventListener('play',function() {
2973+                               poster.hide();
2974+                       }, false);
2975+               },
2976+               
2977+               setPoster: function(url) {
2978+                       var t = this,
2979+                               posterDiv = t.container.find('.mejs-poster'),
2980+                               posterImg = posterDiv.find('img');
2981+                               
2982+                       if (posterImg.length == 0) {
2983+                               posterImg = $('<img width="100%" height="100%" />').appendTo(posterDiv);
2984+                       }       
2985+                       
2986+                       posterImg.attr('src', url);
2987+               },
2988+
2989+               buildoverlays: function(player, controls, layers, media) {
2990+                       if (!player.isVideo)
2991+                               return;
2992+
2993+                       var
2994+                       loading =
2995+                               $('<div class="mejs-overlay mejs-layer">'+
2996+                                       '<div class="mejs-overlay-loading"><span></span></div>'+
2997+                               '</div>')
2998+                               .hide() // start out hidden
2999+                               .appendTo(layers),
3000+                       error =
3001+                               $('<div class="mejs-overlay mejs-layer">'+
3002+                                       '<div class="mejs-overlay-error"></div>'+
3003+                               '</div>')
3004+                               .hide() // start out hidden
3005+                               .appendTo(layers),
3006+                       // this needs to come last so it's on top
3007+                       bigPlay =
3008+                               $('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+
3009+                                       '<div class="mejs-overlay-button"></div>'+
3010+                               '</div>')
3011+                               .appendTo(layers)
3012+                               .click(function() {
3013+                                       if (media.paused) {
3014+                                               media.play();
3015+                                       } else {
3016+                                               media.pause();
3017+                                       }
3018+                               });
3019+                       
3020+                       /*
3021+                       if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) {
3022+                               bigPlay.remove();
3023+                               loading.remove();
3024+                       }
3025+                       */
3026+       
3027+
3028+                       // show/hide big play button
3029+                       media.addEventListener('play',function() {
3030+                               bigPlay.hide();
3031+                               loading.hide();
3032+                               controls.find('.mejs-time-buffering').hide();
3033+                               error.hide();
3034+                       }, false);     
3035+                       
3036+                       media.addEventListener('playing', function() {
3037+                               bigPlay.hide();
3038+                               loading.hide();
3039+                               controls.find('.mejs-time-buffering').hide();
3040+                               error.hide();                   
3041+                       }, false);
3042+
3043+                       media.addEventListener('seeking', function() {
3044+                               loading.show();
3045+                               controls.find('.mejs-time-buffering').show();
3046+                       }, false);
3047+
3048+                       media.addEventListener('seeked', function() {
3049+                               loading.hide();
3050+                               controls.find('.mejs-time-buffering').hide();
3051+                       }, false);
3052+       
3053+                       media.addEventListener('pause',function() {
3054+                               if (!mejs.MediaFeatures.isiPhone) {
3055+                                       bigPlay.show();
3056+                               }
3057+                       }, false);
3058+                       
3059+                       media.addEventListener('waiting', function() {
3060+                               loading.show();
3061+                               controls.find('.mejs-time-buffering').show();
3062+                       }, false);                     
3063+                       
3064+                       
3065+                       // show/hide loading                   
3066+                       media.addEventListener('loadeddata',function() {
3067+                               // for some reason Chrome is firing this event
3068+                               //if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none')
3069+                               //      return;
3070+                                       
3071+                               loading.show();
3072+                               controls.find('.mejs-time-buffering').show();
3073+                       }, false);     
3074+                       media.addEventListener('canplay',function() {
3075+                               loading.hide();
3076+                               controls.find('.mejs-time-buffering').hide();
3077+                       }, false);     
3078+
3079+                       // error handling
3080+                       media.addEventListener('error',function() {
3081+                               loading.hide();
3082+                               controls.find('.mejs-time-buffering').hide();
3083+                               error.show();
3084+                               error.find('mejs-overlay-error').html("Error loading this resource");
3085+                       }, false);                             
3086+               },
3087+               
3088+               buildkeyboard: function(player, controls, layers, media) {
3089+
3090+                               var t = this;
3091+                               
3092+                               // listen for key presses
3093+                               $(document).keydown(function(e) {
3094+                                               
3095+                                               if (player.hasFocus && player.options.enableKeyboard) {
3096+                                                                               
3097+                                                               // find a matching key
3098+                                                               for (var i=0, il=player.options.keyActions.length; i<il; i++) {
3099+                                                                               var keyAction = player.options.keyActions[i];
3100+                                                                               
3101+                                                                               for (var j=0, jl=keyAction.keys.length; j<jl; j++) {
3102+                                                                                               if (e.keyCode == keyAction.keys[j]) {
3103+                                                                                                               e.preventDefault();
3104+                                                                                                               keyAction.action(player, media, e.keyCode);
3105+                                                                                                               return false;
3106+                                                                                               }                                                                                               
3107+                                                                               }
3108+                                                               }
3109+                                               }
3110+                                               
3111+                                               return true;
3112+                               });
3113+                               
3114+                               // check if someone clicked outside a player region, then kill its focus
3115+                               $(document).click(function(event) {
3116+                                               if ($(event.target).closest('.mejs-container').length == 0) {
3117+                                                               player.hasFocus = false;
3118+                                               }
3119+                               });
3120+                       
3121+               },
3122+
3123+               findTracks: function() {
3124+                       var t = this,
3125+                               tracktags = t.$media.find('track');
3126+
3127+                       // store for use by plugins
3128+                       t.tracks = [];
3129+                       tracktags.each(function(index, track) {
3130+                               
3131+                               track = $(track);
3132+                               
3133+                               t.tracks.push({
3134+                                       srclang: track.attr('srclang').toLowerCase(),
3135+                                       src: track.attr('src'),
3136+                                       kind: track.attr('kind'),
3137+                                       label: track.attr('label') || '',
3138+                                       entries: [],
3139+                                       isLoaded: false
3140+                               });
3141+                       });
3142+               },
3143+               changeSkin: function(className) {
3144+                       this.container[0].className = 'mejs-container ' + className;
3145+                       this.setPlayerSize(this.width, this.height);
3146+                       this.setControlsSize();
3147+               },
3148+               play: function() {
3149+                       this.media.play();
3150+               },
3151+               pause: function() {
3152+                       this.media.pause();
3153+               },
3154+               load: function() {
3155+                       this.media.load();
3156+               },
3157+               setMuted: function(muted) {
3158+                       this.media.setMuted(muted);
3159+               },
3160+               setCurrentTime: function(time) {
3161+                       this.media.setCurrentTime(time);
3162+               },
3163+               getCurrentTime: function() {
3164+                       return this.media.currentTime;
3165+               },
3166+               setVolume: function(volume) {
3167+                       this.media.setVolume(volume);
3168+               },
3169+               getVolume: function() {
3170+                       return this.media.volume;
3171+               },
3172+               setSrc: function(src) {
3173+                       this.media.setSrc(src);
3174+               },
3175+               remove: function() {
3176+                       var t = this;
3177+                       
3178+                       if (t.media.pluginType === 'flash') {
3179+                               t.media.remove();
3180+                       } else if (t.media.pluginType === 'native') {
3181+                               t.$media.prop('controls', true);
3182+                       }
3183+                       
3184+                       // grab video and put it back in place
3185+                       if (!t.isDynamic) {
3186+                               t.$node.insertBefore(t.container)
3187+                       }
3188+                       
3189+                       t.container.remove();
3190+               }
3191+       };
3192+
3193+       // turn into jQuery plugin
3194+       if (typeof jQuery != 'undefined') {
3195+               jQuery.fn.mediaelementplayer = function (options) {
3196+                       return this.each(function () {
3197+                               new mejs.MediaElementPlayer(this, options);
3198+                       });
3199+               };
3200+       }
3201+       
3202+       $(document).ready(function() {
3203+               // auto enable using JSON attribute
3204+               $('.mejs-player').mediaelementplayer();
3205+       });
3206+       
3207+       // push out to window
3208+       window.MediaElementPlayer = mejs.MediaElementPlayer;
3209+
3210+})(mejs.$);
3211+
3212+(function($) {
3213+
3214+       $.extend(mejs.MepDefaults, {
3215+               playpauseText: 'Play/Pause'
3216+       });
3217+
3218+       // PLAY/pause BUTTON
3219+       $.extend(MediaElementPlayer.prototype, {
3220+               buildplaypause: function(player, controls, layers, media) {
3221+                       var
3222+                               t = this,
3223+                               play =
3224+                               $('<div class="mejs-button mejs-playpause-button mejs-play" >' +
3225+                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.playpauseText + '"></button>' +
3226+                               '</div>')
3227+                               .appendTo(controls)
3228+                               .click(function(e) {
3229+                                       e.preventDefault();
3230+                               
3231+                                       if (media.paused) {
3232+                                               media.play();
3233+                                       } else {
3234+                                               media.pause();
3235+                                       }
3236+                                       
3237+                                       return false;
3238+                               });
3239+
3240+                       media.addEventListener('play',function() {
3241+                               play.removeClass('mejs-play').addClass('mejs-pause');
3242+                       }, false);
3243+                       media.addEventListener('playing',function() {
3244+                               play.removeClass('mejs-play').addClass('mejs-pause');
3245+                       }, false);
3246+
3247+
3248+                       media.addEventListener('pause',function() {
3249+                               play.removeClass('mejs-pause').addClass('mejs-play');
3250+                       }, false);
3251+                       media.addEventListener('paused',function() {
3252+                               play.removeClass('mejs-pause').addClass('mejs-play');
3253+                       }, false);
3254+               }
3255+       });
3256+       
3257+})(mejs.$);
3258+(function($) {
3259+
3260+       $.extend(mejs.MepDefaults, {
3261+               stopText: 'Stop'
3262+       });
3263+
3264+       // STOP BUTTON
3265+       $.extend(MediaElementPlayer.prototype, {
3266+               buildstop: function(player, controls, layers, media) {
3267+                       var t = this,
3268+                               stop =
3269+                               $('<div class="mejs-button mejs-stop-button mejs-stop">' +
3270+                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '"></button>' +
3271+                               '</div>')
3272+                               .appendTo(controls)
3273+                               .click(function() {
3274+                                       if (!media.paused) {
3275+                                               media.pause();
3276+                                       }
3277+                                       if (media.currentTime > 0) {
3278+                                               media.setCurrentTime(0);
3279+                        media.pause();
3280+                                               controls.find('.mejs-time-current').width('0px');
3281+                                               controls.find('.mejs-time-handle').css('left', '0px');
3282+                                               controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0) );
3283+                                               controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0) );                                   
3284+                                               layers.find('.mejs-poster').show();
3285+                                       }
3286+                               });
3287+               }
3288+       });
3289+       
3290+})(mejs.$);
3291+(function($) {
3292+       // progress/loaded bar
3293+       $.extend(MediaElementPlayer.prototype, {
3294+               buildprogress: function(player, controls, layers, media) {
3295+
3296+                       $('<div class="mejs-time-rail">'+
3297+                               '<span class="mejs-time-total">'+
3298+                                       '<span class="mejs-time-buffering"></span>'+
3299+                                       '<span class="mejs-time-loaded"></span>'+
3300+                                       '<span class="mejs-time-current"></span>'+
3301+                                       '<span class="mejs-time-handle"></span>'+
3302+                                       '<span class="mejs-time-float">' +
3303+                                               '<span class="mejs-time-float-current">00:00</span>' +
3304+                                               '<span class="mejs-time-float-corner"></span>' +
3305+                                       '</span>'+
3306+                               '</span>'+
3307+                       '</div>')
3308+                               .appendTo(controls);
3309+                               controls.find('.mejs-time-buffering').hide();
3310+
3311+                       var
3312+                               t = this,
3313+                               total = controls.find('.mejs-time-total'),
3314+                               loaded  = controls.find('.mejs-time-loaded'),
3315+                               current  = controls.find('.mejs-time-current'),
3316+                               handle  = controls.find('.mejs-time-handle'),
3317+                               timefloat  = controls.find('.mejs-time-float'),
3318+                               timefloatcurrent  = controls.find('.mejs-time-float-current'),
3319+                               handleMouseMove = function (e) {
3320+                                       // mouse position relative to the object
3321+                                       var x = e.pageX,
3322+                                               offset = total.offset(),
3323+                                               width = total.outerWidth(true),
3324+                                               percentage = 0,
3325+                                               newTime = 0,
3326+                                               pos = x - offset.left;
3327+
3328+
3329+                                       if (x > offset.left && x <= width + offset.left && media.duration) {
3330+                                               percentage = ((x - offset.left) / width);
3331+                                               newTime = (percentage <= 0.02) ? 0 : percentage * media.duration;
3332+
3333+                                               // seek to where the mouse is
3334+                                               if (mouseIsDown) {
3335+                                                       media.setCurrentTime(newTime);
3336+                                               }
3337+
3338+                                               // position floating time box
3339+                                               if (!mejs.MediaFeatures.hasTouch) {
3340+                                                               timefloat.css('left', pos);
3341+                                                               timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime) );
3342+                                                               timefloat.show();
3343+                                               }
3344+                                       }
3345+                               },
3346+                               mouseIsDown = false,
3347+                               mouseIsOver = false;
3348+
3349+                       // handle clicks
3350+                       //controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
3351+                       total
3352+                               .bind('mousedown', function (e) {
3353+                                       // only handle left clicks
3354+                                       if (e.which === 1) {
3355+                                               mouseIsDown = true;
3356+                                               handleMouseMove(e);
3357+                                               $(document)
3358+                                                       .bind('mousemove.dur', function(e) {
3359+                                                               handleMouseMove(e);
3360+                                                       })
3361+                                                       .bind('mouseup.dur', function (e) {
3362+                                                               mouseIsDown = false;
3363+                                                               timefloat.hide();
3364+                                                               $(document).unbind('.dur');
3365+                                                       });
3366+                                               return false;
3367+                                       }
3368+                               })
3369+                               .bind('mouseenter', function(e) {
3370+                                       mouseIsOver = true;
3371+                                       $(document).bind('mousemove.dur', function(e) {
3372+                                               handleMouseMove(e);
3373+                                       });
3374+                                       if (!mejs.MediaFeatures.hasTouch) {
3375+                                               timefloat.show();
3376+                                       }
3377+                               })
3378+                               .bind('mouseleave',function(e) {
3379+                                       mouseIsOver = false;
3380+                                       if (!mouseIsDown) {
3381+                                               $(document).unbind('.dur');
3382+                                               timefloat.hide();
3383+                                       }
3384+                               });
3385+
3386+                       // loading
3387+                       media.addEventListener('progress', function (e) {
3388+                               player.setProgressRail(e);
3389+                               player.setCurrentRail(e);
3390+                       }, false);
3391+
3392+                       // current time
3393+                       media.addEventListener('timeupdate', function(e) {
3394+                               player.setProgressRail(e);
3395+                               player.setCurrentRail(e);
3396+                       }, false);
3397+                       
3398+                       
3399+                       // store for later use
3400+                       t.loaded = loaded;
3401+                       t.total = total;
3402+                       t.current = current;
3403+                       t.handle = handle;
3404+               },
3405+               setProgressRail: function(e) {
3406+
3407+                       var
3408+                               t = this,
3409+                               target = (e != undefined) ? e.target : t.media,
3410+                               percent = null;                 
3411+
3412+                       // newest HTML5 spec has buffered array (FF4, Webkit)
3413+                       if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
3414+                               // TODO: account for a real array with multiple values (only Firefox 4 has this so far)
3415+                               percent = target.buffered.end(0) / target.duration;
3416+                       }
3417+                       // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
3418+                       // to be anything other than 0. If the byte count is available we use this instead.
3419+                       // Browsers that support the else if do not seem to have the bufferedBytes value and
3420+                       // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
3421+                       else if (target && target.bytesTotal != undefined && target.bytesTotal > 0 && target.bufferedBytes != undefined) {
3422+                               percent = target.bufferedBytes / target.bytesTotal;
3423+                       }
3424+                       // Firefox 3 with an Ogg file seems to go this way
3425+                       else if (e && e.lengthComputable && e.total != 0) {
3426+                               percent = e.loaded/e.total;
3427+                       }
3428+
3429+                       // finally update the progress bar
3430+                       if (percent !== null) {
3431+                               percent = Math.min(1, Math.max(0, percent));
3432+                               // update loaded bar
3433+                               if (t.loaded && t.total) {
3434+                                       t.loaded.width(t.total.width() * percent);
3435+                               }
3436+                       }
3437+               },
3438+               setCurrentRail: function() {
3439+
3440+                       var t = this;
3441+               
3442+                       if (t.media.currentTime != undefined && t.media.duration) {
3443+
3444+                               // update bar and handle
3445+                               if (t.total && t.handle) {
3446+                                       var
3447+                                               newWidth = t.total.width() * t.media.currentTime / t.media.duration,
3448+                                               handlePos = newWidth - (t.handle.outerWidth(true) / 2);
3449+
3450+                                       t.current.width(newWidth);
3451+                                       t.handle.css('left', handlePos);
3452+                               }
3453+                       }
3454+
3455+               }       
3456+       });
3457+})(mejs.$);
3458+(function($) {
3459+       
3460+       // options
3461+       $.extend(mejs.MepDefaults, {
3462+               duration: -1,
3463+               timeAndDurationSeparator: ' <span> | </span> '
3464+       });
3465+
3466+
3467+       // current and duration 00:00 / 00:00
3468+       $.extend(MediaElementPlayer.prototype, {
3469+               buildcurrent: function(player, controls, layers, media) {
3470+                       var t = this;
3471+                       
3472+                       $('<div class="mejs-time">'+
3473+                                       '<span class="mejs-currenttime">' + (player.options.alwaysShowHours ? '00:' : '')
3474+                                       + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')+ '</span>'+
3475+                                       '</div>')
3476+                                       .appendTo(controls);
3477+                       
3478+                       t.currenttime = t.controls.find('.mejs-currenttime');
3479+
3480+                       media.addEventListener('timeupdate',function() {
3481+                               player.updateCurrent();
3482+                       }, false);
3483+               },
3484+
3485+
3486+               buildduration: function(player, controls, layers, media) {
3487+                       var t = this;
3488+                       
3489+                       if (controls.children().last().find('.mejs-currenttime').length > 0) {
3490+                               $(t.options.timeAndDurationSeparator +
3491+                                       '<span class="mejs-duration">' +
3492+                                               (t.options.duration > 0 ?
3493+                                                       mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
3494+                                                       ((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00'))
3495+                                               ) +
3496+                                       '</span>')
3497+                                       .appendTo(controls.find('.mejs-time'));
3498+                       } else {
3499+
3500+                               // add class to current time
3501+                               controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container');
3502+                               
3503+                               $('<div class="mejs-time mejs-duration-container">'+
3504+                                       '<span class="mejs-duration">' +
3505+                                               (t.options.duration > 0 ?
3506+                                                       mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
3507+                                                       ((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00'))
3508+                                               ) +
3509+                                       '</span>' +
3510+                               '</div>')
3511+                               .appendTo(controls);
3512+                       }
3513+                       
3514+                       t.durationD = t.controls.find('.mejs-duration');
3515+
3516+                       media.addEventListener('timeupdate',function() {
3517+                               player.updateDuration();
3518+                       }, false);
3519+               },
3520+               
3521+               updateCurrent:  function() {
3522+                       var t = this;
3523+
3524+                       if (t.currenttime) {
3525+                               t.currenttime.html(mejs.Utility.secondsToTimeCode(t.media.currentTime, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25));
3526+                       }
3527+               },
3528+               
3529+               updateDuration: function() {   
3530+                       var t = this;
3531+                       
3532+                       if (t.media.duration && t.durationD) {
3533+                               t.durationD.html(mejs.Utility.secondsToTimeCode(t.media.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond || 25));
3534+                       }               
3535+               }
3536+       });
3537+
3538+})(mejs.$);
3539+(function($) {
3540+
3541+       $.extend(mejs.MepDefaults, {
3542+               muteText: 'Mute Toggle',
3543+               hideVolumeOnTouchDevices: true,
3544+               
3545+               audioVolume: 'horizontal',
3546+               videoVolume: 'vertical'
3547+       });
3548+
3549+       $.extend(MediaElementPlayer.prototype, {
3550+               buildvolume: function(player, controls, layers, media) {
3551+                               
3552+                       // Android and iOS don't support volume controls
3553+                       if (mejs.MediaFeatures.hasTouch && this.options.hideVolumeOnTouchDevices)
3554+                               return;
3555+                       
3556+                       var t = this,
3557+                               mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume,
3558+                               mute = (mode == 'horizontal') ?
3559+                               
3560+                               // horizontal version
3561+                               $('<div class="mejs-button mejs-volume-button mejs-mute">'+
3562+                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '"></button>'+
3563+                               '</div>' +
3564+                               '<div class="mejs-horizontal-volume-slider">'+ // outer background
3565+                                       '<div class="mejs-horizontal-volume-total"></div>'+ // line background
3566+                                       '<div class="mejs-horizontal-volume-current"></div>'+ // current volume
3567+                                       '<div class="mejs-horizontal-volume-handle"></div>'+ // handle
3568+                               '</div>'
3569+                               )
3570+                                       .appendTo(controls) :
3571+                               
3572+                               // vertical version
3573+                               $('<div class="mejs-button mejs-volume-button mejs-mute">'+
3574+                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '"></button>'+
3575+                                       '<div class="mejs-volume-slider">'+ // outer background
3576+                                               '<div class="mejs-volume-total"></div>'+ // line background
3577+                                               '<div class="mejs-volume-current"></div>'+ // current volume
3578+                                               '<div class="mejs-volume-handle"></div>'+ // handle
3579+                                       '</div>'+
3580+                               '</div>')
3581+                                       .appendTo(controls),
3582+                       volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'),
3583+                       volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'),
3584+                       volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'),
3585+                       volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'),
3586+
3587+                       positionVolumeHandle = function(volume, secondTry) {
3588+
3589+                               if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') {
3590+                                       volumeSlider.show();
3591+                                       positionVolumeHandle(volume, true);
3592+                                       volumeSlider.hide()
3593+                                       return;
3594+                               }
3595+                       
3596+                               // correct to 0-1
3597+                               volume = Math.max(0,volume);
3598+                               volume = Math.min(volume,1);                                   
3599+                               
3600+                               // ajust mute button style
3601+                               if (volume == 0) {
3602+                                       mute.removeClass('mejs-mute').addClass('mejs-unmute');
3603+                               } else {
3604+                                       mute.removeClass('mejs-unmute').addClass('mejs-mute');
3605+                               }                               
3606+
3607+                               // position slider
3608+                               if (mode == 'vertical') {
3609+                                       var
3610+                                       
3611+                                               // height of the full size volume slider background
3612+                                               totalHeight = volumeTotal.height(),
3613+                                               
3614+                                               // top/left of full size volume slider background
3615+                                               totalPosition = volumeTotal.position(),
3616+                                               
3617+                                               // the new top position based on the current volume
3618+                                               // 70% volume on 100px height == top:30px
3619+                                               newTop = totalHeight - (totalHeight * volume);
3620+       
3621+                                       // handle
3622+                                       volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2)));
3623+       
3624+                                       // show the current visibility
3625+                                       volumeCurrent.height(totalHeight - newTop );
3626+                                       volumeCurrent.css('top', totalPosition.top + newTop);
3627+                               } else {
3628+                                       var
3629+                                       
3630+                                               // height of the full size volume slider background
3631+                                               totalWidth = volumeTotal.width(),
3632+                                               
3633+                                               // top/left of full size volume slider background
3634+                                               totalPosition = volumeTotal.position(),
3635+                                               
3636+                                               // the new left position based on the current volume
3637+                                               newLeft = totalWidth * volume;
3638+       
3639+                                       // handle
3640+                                       volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2)));
3641+       
3642+                                       // rezize the current part of the volume bar
3643+                                       volumeCurrent.width( Math.round(newLeft) );
3644+                               }
3645+                       },
3646+                       handleVolumeMove = function(e) {
3647+                               
3648+                               var volume = null,
3649+                                       totalOffset = volumeTotal.offset();
3650+                               
3651+                               // calculate the new volume based on the moust position
3652+                               if (mode == 'vertical') {
3653+                               
3654+                                       var
3655+                                               railHeight = volumeTotal.height(),
3656+                                               totalTop = parseInt(volumeTotal.css('top').replace(/px/,''),10),
3657+                                               newY = e.pageY - totalOffset.top;
3658+                                               
3659+                                       volume = (railHeight - newY) / railHeight;
3660+                                               
3661+                                       // the controls just hide themselves (usually when mouse moves too far up)
3662+                                       if (totalOffset.top == 0 || totalOffset.left == 0)
3663+                                               return;
3664+                                       
3665+                               } else {
3666+                                       var
3667+                                               railWidth = volumeTotal.width(),
3668+                                               newX = e.pageX - totalOffset.left;
3669+                                               
3670+                                       volume = newX / railWidth;
3671+                               }
3672+                               
3673+                               // ensure the volume isn't outside 0-1
3674+                               volume = Math.max(0,volume);
3675+                               volume = Math.min(volume,1);
3676+                               
3677+                               // position the slider and handle                       
3678+                               positionVolumeHandle(volume);
3679+                               
3680+                               // set the media object (this will trigger the volumechanged event)
3681+                               if (volume == 0) {
3682+                                       media.setMuted(true);
3683+                               } else {
3684+                                       media.setMuted(false);
3685+                               }
3686+                               media.setVolume(volume);                       
3687+                       },
3688+                       mouseIsDown = false,
3689+                       mouseIsOver = false;
3690+
3691+                       // SLIDER
3692+                       
3693+                       mute
3694+                               .hover(function() {
3695+                                       volumeSlider.show();
3696+                                       mouseIsOver = true;
3697+                               }, function() {
3698+                                       mouseIsOver = false;   
3699+                                               
3700+                                       if (!mouseIsDown && mode == 'vertical') {
3701+                                               volumeSlider.hide();
3702+                                       }
3703+                               });
3704+                       
3705+                       volumeSlider
3706+                               .bind('mouseover', function() {
3707+                                       mouseIsOver = true;     
3708+                               })
3709+                               .bind('mousedown', function (e) {
3710+                                       handleVolumeMove(e);
3711+                                       $(document)
3712+                                               .bind('mousemove.vol', function(e) {
3713+                                                       handleVolumeMove(e);
3714+                                               })
3715+                                               .bind('mouseup.vol', function () {
3716+                                                       mouseIsDown = false;
3717+                                                       $(document).unbind('.vol');
3718+
3719+                                                       if (!mouseIsOver && mode == 'vertical') {
3720+                                                               volumeSlider.hide();
3721+                                                       }
3722+                                               });
3723+                                       mouseIsDown = true;
3724+                                               
3725+                                       return false;
3726+                               });
3727+
3728+
3729+                       // MUTE button
3730+                       mute.find('button').click(function() {
3731+                               media.setMuted( !media.muted );
3732+                       });
3733+
3734+                       // listen for volume change events from other sources
3735+                       media.addEventListener('volumechange', function(e) {
3736+                               if (!mouseIsDown) {
3737+                                       if (media.muted) {
3738+                                               positionVolumeHandle(0);
3739+                                               mute.removeClass('mejs-mute').addClass('mejs-unmute');
3740+                                       } else {
3741+                                               positionVolumeHandle(media.volume);
3742+                                               mute.removeClass('mejs-unmute').addClass('mejs-mute');
3743+                                       }
3744+                               }
3745+                       }, false);
3746+
3747+                       if (t.container.is(':visible')) {
3748+                               // set initial volume
3749+                               positionVolumeHandle(player.options.startVolume);
3750+                               
3751+                               // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
3752+                               if (media.pluginType === 'native') {
3753+                                       media.setVolume(player.options.startVolume);
3754+                               }
3755+                       }
3756+               }
3757+       });
3758+       
3759+})(mejs.$);
3760+
3761+(function($) {
3762+
3763+       $.extend(mejs.MepDefaults, {
3764+               usePluginFullScreen: true,
3765+               newWindowCallback: function() { return '';},
3766+               fullscreenText: mejs.i18n.t('Fullscreen')
3767+       });
3768+
3769+       $.extend(MediaElementPlayer.prototype, {
3770+
3771+               isFullScreen: false,
3772+
3773+               isNativeFullScreen: false,
3774+
3775+               docStyleOverflow: null,
3776+
3777+               isInIframe: false,
3778+
3779+               buildfullscreen: function(player, controls, layers, media) {
3780+
3781+                       if (!player.isVideo)
3782+                               return;
3783+
3784+                       player.isInIframe = (window.location != window.parent.location);
3785+
3786+                       // native events
3787+                       if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
3788+
3789+                               // chrome doesn't alays fire this in an iframe
3790+                               var target = null;
3791+
3792+                               if (mejs.MediaFeatures.hasMozNativeFullScreen) {
3793+                                       target = $(document);
3794+                               } else {
3795+                                       target = player.container;
3796+                               }
3797+
3798+                               target.bind(mejs.MediaFeatures.fullScreenEventName, function(e) {
3799+
3800+                                       if (mejs.MediaFeatures.isFullScreen()) {
3801+                                               player.isNativeFullScreen = true;
3802+                                               // reset the controls once we are fully in full screen
3803+                                               player.setControlsSize();
3804+                                       } else {
3805+                                               player.isNativeFullScreen = false;
3806+                                               // when a user presses ESC
3807+                                               // make sure to put the player back into place
3808+                                               player.exitFullScreen();
3809+                                       }
3810+                               });
3811+                       }
3812+
3813+                       var t = this,
3814+                               normalHeight = 0,
3815+                               normalWidth = 0,
3816+                               container = player.container,
3817+                               fullscreenBtn =
3818+                                       $('<div class="mejs-button mejs-fullscreen-button">' +
3819+                                               '<button type="button" aria-controls="' + t.id + '" title="' + t.options.fullscreenText + '"></button>' +
3820+                                       '</div>')
3821+                                       .appendTo(controls);
3822+
3823+                               if (t.media.pluginType === 'native' || (!t.options.usePluginFullScreen && !mejs.MediaFeatures.isFirefox)) {
3824+
3825+                                       fullscreenBtn.click(function() {
3826+                                               var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen;
3827+
3828+                                               if (isFullScreen) {
3829+                                                       player.exitFullScreen();
3830+                                               } else {
3831+                                                       player.enterFullScreen();
3832+                                               }
3833+                                       });
3834+
3835+                               } else {
3836+
3837+                                       var hideTimeout = null,
3838+                                               supportsPointerEvents = (function() {
3839+                                                       // TAKEN FROM MODERNIZR
3840+                                                       var element = document.createElement('x'),
3841+                                                               documentElement = document.documentElement,
3842+                                                               getComputedStyle = window.getComputedStyle,
3843+                                                               supports;
3844+                                                       if(!('pointerEvents' in element.style)){
3845+                                                               return false;
3846+                                                       }
3847+                                                       element.style.pointerEvents = 'auto';
3848+                                                       element.style.pointerEvents = 'x';
3849+                                                       documentElement.appendChild(element);
3850+                                                       supports = getComputedStyle &&
3851+                                                               getComputedStyle(element, '').pointerEvents === 'auto';
3852+                                                       documentElement.removeChild(element);
3853+                                                       return !!supports;
3854+                                               })();
3855+
3856+                                       //console.log('supportsPointerEvents', supportsPointerEvents);
3857+
3858+                                       if (supportsPointerEvents && !mejs.MediaFeatures.isOpera) { // opera doesn't allow this :(
3859+
3860+                                               // allows clicking through the fullscreen button and controls down directly to Flash
3861+
3862+                                               /*
3863+                                                When a user puts his mouse over the fullscreen button, the controls are disabled
3864+                                                So we put a div over the video and another one on iether side of the fullscreen button
3865+                                                that caputre mouse movement
3866+                                                and restore the controls once the mouse moves outside of the fullscreen button
3867+                                               */
3868+
3869+                                               var fullscreenIsDisabled = false,
3870+                                                       restoreControls = function() {
3871+                                                               if (fullscreenIsDisabled) {
3872+                                                                       // hide the hovers
3873+                                                                       videoHoverDiv.hide();
3874+                                                                       controlsLeftHoverDiv.hide();
3875+                                                                       controlsRightHoverDiv.hide();
3876+
3877+                                                                       // restore the control bar
3878+                                                                       fullscreenBtn.css('pointer-events', '');
3879+                                                                       t.controls.css('pointer-events', '');
3880+
3881+                                                                       // store for later
3882+                                                                       fullscreenIsDisabled = false;
3883+                                                               }
3884+                                                       },
3885+                                                       videoHoverDiv = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls),
3886+                                                       controlsLeftHoverDiv = $('<div class="mejs-fullscreen-hover"  />').appendTo(t.container).mouseover(restoreControls),
3887+                                                       controlsRightHoverDiv = $('<div class="mejs-fullscreen-hover"  />').appendTo(t.container).mouseover(restoreControls),
3888+                                                       positionHoverDivs = function() {
3889+                                                               var style = {position: 'absolute', top: 0, left: 0}; //, backgroundColor: '#f00'};
3890+                                                               videoHoverDiv.css(style);
3891+                                                               controlsLeftHoverDiv.css(style);
3892+                                                               controlsRightHoverDiv.css(style);
3893+
3894+                                                               // over video, but not controls
3895+                                                               videoHoverDiv
3896+                                                                       .width( t.container.width() )
3897+                                                                       .height( t.container.height() - t.controls.height() );
3898+
3899+                                                               // over controls, but not the fullscreen button
3900+                                                               var fullScreenBtnOffset = fullscreenBtn.offset().left - t.container.offset().left;
3901+                                                                       fullScreenBtnWidth = fullscreenBtn.outerWidth(true);
3902+
3903+                                                               controlsLeftHoverDiv
3904+                                                                       .width( fullScreenBtnOffset )
3905+                                                                       .height( t.controls.height() )
3906+                                                                       .css({top: t.container.height() - t.controls.height()});
3907+
3908+                                                               // after the fullscreen button
3909+                                                               controlsRightHoverDiv
3910+                                                                       .width( t.container.width() - fullScreenBtnOffset - fullScreenBtnWidth )
3911+                                                                       .height( t.controls.height() )
3912+                                                                       .css({top: t.container.height() - t.controls.height(),
3913+                                                                                left: fullScreenBtnOffset + fullScreenBtnWidth});
3914+                                                       };
3915+
3916+                                               $(document).resize(function() {
3917+                                                       positionHoverDivs();
3918+                                               });
3919+
3920+                                               // on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash
3921+                                               fullscreenBtn
3922+                                                       .mouseover(function() {
3923+
3924+                                                               if (!t.isFullScreen) {
3925+
3926+                                                                       var buttonPos = fullscreenBtn.offset(),
3927+                                                                               containerPos = player.container.offset();
3928+
3929+                                                                       // move the button in Flash into place
3930+                                                                       media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false);
3931+
3932+                                                                       // allows click through
3933+                                                                       fullscreenBtn.css('pointer-events', 'none');
3934+                                                                       t.controls.css('pointer-events', 'none');
3935+
3936+                                                                       // show the divs that will restore things
3937+                                                                       videoHoverDiv.show();
3938+                                                                       controlsRightHoverDiv.show();
3939+                                                                       controlsLeftHoverDiv.show();
3940+                                                                       positionHoverDivs();
3941+
3942+                                                                       fullscreenIsDisabled = true;
3943+                                                               }
3944+
3945+                                                       });
3946+
3947+                                               // restore controls anytime the user enters or leaves fullscreen
3948+                                               media.addEventListener('fullscreenchange', function(e) {
3949+                                                       restoreControls();
3950+                                               });
3951+
3952+
3953+                                               // the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events
3954+                                               // so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button
3955+                                               /*
3956+                                               $(document).mousemove(function(e) {
3957+
3958+                                                       // if the mouse is anywhere but the fullsceen button, then restore it all
3959+                                                       if (fullscreenIsDisabled) {
3960+
3961+                                                               var fullscreenBtnPos = fullscreenBtn.offset();
3962+
3963+
3964+                                                               if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) ||
3965+                                                                       e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true)
3966+                                                                       ) {
3967+
3968+                                                                       fullscreenBtn.css('pointer-events', '');
3969+                                                                       t.controls.css('pointer-events', '');
3970+
3971+                                                                       fullscreenIsDisabled = false;
3972+                                                               }
3973+                                                       }
3974+                                               });
3975+                                               */
3976+
3977+
3978+                                       } else {
3979+
3980+                                               // the hover state will show the fullscreen button in Flash to hover up and click
3981+
3982+                                               fullscreenBtn
3983+                                                       .mouseover(function() {
3984+
3985+                                                               if (hideTimeout !== null) {
3986+                                                                       clearTimeout(hideTimeout);
3987+                                                                       delete hideTimeout;
3988+                                                               }
3989+
3990+                                                               var buttonPos = fullscreenBtn.offset(),
3991+                                                                       containerPos = player.container.offset();
3992+
3993+                                                               media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true);
3994+
3995+                                                       })
3996+                                                       .mouseout(function() {
3997+
3998+                                                               if (hideTimeout !== null) {
3999+                                                                       clearTimeout(hideTimeout);
4000+                                                                       delete hideTimeout;
4001+                                                               }
4002+
4003+                                                               hideTimeout = setTimeout(function() {
4004+                                                                       media.hideFullscreenButton();
4005+                                                               }, 1500);
4006+
4007+
4008+                                                       });
4009+                                       }
4010+                               }
4011+
4012+                       player.fullscreenBtn = fullscreenBtn;
4013+
4014+                       $(document).bind('keydown',function (e) {
4015+                               if (((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen) && e.keyCode == 27) {
4016+                                       player.exitFullScreen();
4017+                               }
4018+                       });
4019+
4020+               },
4021+               enterFullScreen: function() {
4022+
4023+                       var t = this;
4024+
4025+                       // firefox+flash can't adjust plugin sizes without resetting :(
4026+                       if (t.media.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || t.options.usePluginFullScreen)) {
4027+                               //t.media.setFullscreen(true);
4028+                               //player.isFullScreen = true;
4029+                               return;
4030+                       }
4031+
4032+                       // store overflow
4033+                       docStyleOverflow = document.documentElement.style.overflow;
4034+                       // set it to not show scroll bars so 100% will work
4035+                       document.documentElement.style.overflow = 'hidden';
4036+
4037+                       // store sizing
4038+                       normalHeight = t.container.height();
4039+                       normalWidth = t.container.width();
4040+
4041+                       // attempt to do true fullscreen (Safari 5.1 and Firefox Nightly only for now)
4042+                       if (t.media.pluginType === 'native') {
4043+                               if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
4044+
4045+                                       mejs.MediaFeatures.requestFullScreen(t.container[0]);
4046+                                       //return;
4047+
4048+                                       if (t.isInIframe) {
4049+                                               // sometimes exiting from fullscreen doesn't work
4050+                                               // notably in Chrome <iframe>. Fixed in version 17
4051+                                               setTimeout(function checkFullscreen() {
4052+
4053+                                                       if (t.isNativeFullScreen) {
4054+
4055+                                                               // check if the video is suddenly not really fullscreen
4056+                                                               if ($(window).width() !== screen.width) {
4057+                                                                       // manually exit
4058+                                                                       t.exitFullScreen();
4059+                                                               } else {
4060+                                                                       // test again
4061+                                                                       setTimeout(checkFullscreen, 500);
4062+                                                               }
4063+                                                       }
4064+
4065+
4066+                                               }, 500);
4067+                                       }
4068+
4069+                               } else if (mejs.MediaFeatures.hasSemiNativeFullScreen) {
4070+                                       t.media.webkitEnterFullscreen();
4071+                                       return;
4072+                               }
4073+                       }
4074+
4075+                       // check for iframe launch
4076+                       if (t.isInIframe) {
4077+                               var url = t.options.newWindowCallback(this);
4078+
4079+
4080+                               if (url !== '') {
4081+
4082+                                       // launch immediately
4083+                                       if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
4084+                                               t.pause();
4085+                                               window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
4086+                                               return;
4087+                                       } else {
4088+                                               setTimeout(function() {
4089+                                                       if (!t.isNativeFullScreen) {
4090+                                                               t.pause();
4091+                                                               window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
4092+                                                       }
4093+                                               }, 250);
4094+                                       }
4095+                               }
4096+
4097+                       }
4098+
4099+                       // full window code
4100+
4101+
4102+
4103+                       // make full size
4104+                       t.container
4105+                               .addClass('mejs-container-fullscreen')
4106+                               .width('100%')
4107+                               .height('100%');
4108+                               //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000});
4109+
4110+                       // Only needed for safari 5.1 native full screen, can cause display issues elsewhere
4111+                       // Actually, it seems to be needed for IE8, too
4112+                       //if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
4113+                               setTimeout(function() {
4114+                                       t.container.css({width: '100%', height: '100%'});
4115+                                       t.setControlsSize();
4116+                               }, 500);
4117+                       //}
4118+
4119+                       if (t.pluginType === 'native') {
4120+                               t.$media
4121+                                       .width('100%')
4122+                                       .height('100%');
4123+                       } else {
4124+                               t.container.find('object, embed, iframe')
4125+                                       .width('100%')
4126+                                       .height('100%');
4127+
4128+                               //if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
4129+                                       t.media.setVideoSize($(window).width(),$(window).height());
4130+                               //}
4131+                       }
4132+
4133+                       t.layers.children('div')
4134+                               .width('100%')
4135+                               .height('100%');
4136+
4137+                       if (t.fullscreenBtn) {
4138+                               t.fullscreenBtn
4139+                                       .removeClass('mejs-fullscreen')
4140+                                       .addClass('mejs-unfullscreen');
4141+                       }
4142+
4143+                       t.setControlsSize();
4144+                       t.isFullScreen = true;
4145+               },
4146+
4147+               exitFullScreen: function() {
4148+
4149+                       var t = this;
4150+
4151+                       // firefox can't adjust plugins
4152+                       if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) {
4153+                               t.media.setFullscreen(false);
4154+                               //player.isFullScreen = false;
4155+                               return;
4156+                       }
4157+
4158+                       // come outo of native fullscreen
4159+                       if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) {
4160+                               mejs.MediaFeatures.cancelFullScreen();
4161+                       }
4162+
4163+                       // restore scroll bars to document
4164+                       document.documentElement.style.overflow = docStyleOverflow;
4165+
4166+                       t.container
4167+                               .removeClass('mejs-container-fullscreen')
4168+                               .width(normalWidth)
4169+                               .height(normalHeight);
4170+                               //.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1});
4171+
4172+                       if (t.pluginType === 'native') {
4173+                               t.$media
4174+                                       .width(normalWidth)
4175+                                       .height(normalHeight);
4176+                       } else {
4177+                               t.container.find('object embed')
4178+                                       .width(normalWidth)
4179+                                       .height(normalHeight);
4180+
4181+                               t.media.setVideoSize(normalWidth, normalHeight);
4182+                       }
4183+
4184+                       t.layers.children('div')
4185+                               .width(normalWidth)
4186+                               .height(normalHeight);
4187+
4188+                       t.fullscreenBtn
4189+                               .removeClass('mejs-unfullscreen')
4190+                               .addClass('mejs-fullscreen');
4191+
4192+                       t.setControlsSize();
4193+                       t.isFullScreen = false;
4194+               }
4195+       });
4196+
4197+})(mejs.$);
4198+
4199+(function($) {
4200+
4201+       // add extra default options
4202+       $.extend(mejs.MepDefaults, {
4203+               // this will automatically turn on a <track>
4204+               startLanguage: '',
4205+               
4206+               tracksText: 'Captions/Subtitles'
4207+       });
4208+
4209+       $.extend(MediaElementPlayer.prototype, {
4210+       
4211+               hasChapters: false,
4212+
4213+               buildtracks: function(player, controls, layers, media) {
4214+                       if (!player.isVideo)
4215+                               return;
4216+
4217+                       if (player.tracks.length == 0)
4218+                               return;
4219+
4220+                       var t= this, i, options = '';
4221+
4222+                       player.chapters =
4223+                                       $('<div class="mejs-chapters mejs-layer"></div>')
4224+                                               .prependTo(layers).hide();
4225+                       player.captions =
4226+                                       $('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position"><span class="mejs-captions-text"></span></div></div>')
4227+                                               .prependTo(layers).hide();
4228+                       player.captionsText = player.captions.find('.mejs-captions-text');
4229+                       player.captionsButton =
4230+                                       $('<div class="mejs-button mejs-captions-button">'+
4231+                                               '<button type="button" aria-controls="' + t.id + '" title="' + t.options.tracksText + '"></button>'+
4232+                                               '<div class="mejs-captions-selector">'+
4233+                                                       '<ul>'+
4234+                                                               '<li>'+
4235+                                                                       '<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' +
4236+                                                                       '<label for="' + player.id + '_captions_none">None</label>'+
4237+                                                               '</li>' +
4238+                                                       '</ul>'+
4239+                                               '</div>'+
4240+                                       '</div>')
4241+                                               .appendTo(controls)
4242+                                               
4243+                                               // hover
4244+                                               .hover(function() {
4245+                                                       $(this).find('.mejs-captions-selector').css('visibility','visible');
4246+                                               }, function() {
4247+                                                       $(this).find('.mejs-captions-selector').css('visibility','hidden');
4248+                                               })                                     
4249+                                               
4250+                                               // handle clicks to the language radio buttons
4251+                                               .delegate('input[type=radio]','click',function() {
4252+                                                       lang = this.value;
4253+
4254+                                                       if (lang == 'none') {
4255+                                                               player.selectedTrack = null;
4256+                                                       } else {
4257+                                                               for (i=0; i<player.tracks.length; i++) {
4258+                                                                       if (player.tracks[i].srclang == lang) {
4259+                                                                               player.selectedTrack = player.tracks[i];
4260+                                                                               player.captions.attr('lang', player.selectedTrack.srclang);
4261+                                                                               player.displayCaptions();
4262+                                                                               break;
4263+                                                                       }
4264+                                                               }
4265+                                                       }
4266+                                               });
4267+                                               //.bind('mouseenter', function() {
4268+                                               //      player.captionsButton.find('.mejs-captions-selector').css('visibility','visible')
4269+                                               //});
4270+
4271+                       if (!player.options.alwaysShowControls) {
4272+                               // move with controls
4273+                               player.container
4274+                                       .bind('mouseenter', function () {
4275+                                               // push captions above controls
4276+                                               player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
4277+
4278+                                       })
4279+                                       .bind('mouseleave', function () {
4280+                                               if (!media.paused) {
4281+                                                       // move back to normal place
4282+                                                       player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover');
4283+                                               }
4284+                                       });
4285+                       } else {
4286+                               player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
4287+                       }
4288+
4289+                       player.trackToLoad = -1;
4290+                       player.selectedTrack = null;
4291+                       player.isLoadingTrack = false;
4292+
4293+                       
4294+
4295+                       // add to list
4296+                       for (i=0; i<player.tracks.length; i++) {
4297+                               if (player.tracks[i].kind == 'subtitles') {
4298+                                       player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label);
4299+                               }
4300+                       }
4301+
4302+                       player.loadNextTrack();
4303+
4304+
4305+                       media.addEventListener('timeupdate',function(e) {
4306+                               player.displayCaptions();
4307+                       }, false);
4308+
4309+                       media.addEventListener('loadedmetadata', function(e) {
4310+                               player.displayChapters();
4311+                       }, false);
4312+
4313+                       player.container.hover(
4314+                               function () {
4315+                                       // chapters
4316+                                       if (player.hasChapters) {
4317+                                               player.chapters.css('visibility','visible');
4318+                                               player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight());
4319+                                       }
4320+                               },
4321+                               function () {
4322+                                       if (player.hasChapters && !media.paused) {
4323+                                               player.chapters.fadeOut(200, function() {
4324+                                                       $(this).css('visibility','hidden');
4325+                                                       $(this).css('display','block');
4326+                                               });
4327+                                       }
4328+                               });
4329+                               
4330+                       // check for autoplay
4331+                       if (player.node.getAttribute('autoplay') !== null) {
4332+                               player.chapters.css('visibility','hidden');
4333+                       }
4334+               },
4335+
4336+               loadNextTrack: function() {
4337+                       var t = this;
4338+
4339+                       t.trackToLoad++;
4340+                       if (t.trackToLoad < t.tracks.length) {
4341+                               t.isLoadingTrack = true;
4342+                               t.loadTrack(t.trackToLoad);
4343+                       } else {
4344+                               // add done?
4345+                               t.isLoadingTrack = false;
4346+                       }
4347+               },
4348+
4349+               loadTrack: function(index){
4350+                       var
4351+                               t = this,
4352+                               track = t.tracks[index],
4353+                               after = function() {
4354+
4355+                                       track.isLoaded = true;
4356+
4357+                                       // create button
4358+                                       //t.addTrackButton(track.srclang);
4359+                                       t.enableTrackButton(track.srclang, track.label);
4360+
4361+                                       t.loadNextTrack();
4362+
4363+                               };
4364+
4365+
4366+                       $.ajax({
4367+                               url: track.src,
4368+                               dataType: "text",
4369+                               success: function(d) {
4370+
4371+                                       // parse the loaded file
4372+                                       if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) {
4373+                                               track.entries = mejs.TrackFormatParser.dfxp.parse(d);                                   
4374+                                       } else {       
4375+                                               track.entries = mejs.TrackFormatParser.webvvt.parse(d);
4376+                                       }
4377+                                       
4378+                                       after();
4379+
4380+                                       if (track.kind == 'chapters') {
4381+                                               t.media.addEventListener('play', function(e) {
4382+                                                       if (t.media.duration > 0) {
4383+                                                               t.displayChapters(track);
4384+                                                       }
4385+                                               }, false);
4386+                                       }
4387+                               },
4388+                               error: function() {
4389+                                       t.loadNextTrack();
4390+                               }
4391+                       });
4392+               },
4393+
4394+               enableTrackButton: function(lang, label) {
4395+                       var t = this;
4396+                       
4397+                       if (label === '') {
4398+                               label = mejs.language.codes[lang] || lang;
4399+                       }                       
4400+
4401+                       t.captionsButton
4402+                               .find('input[value=' + lang + ']')
4403+                                       .prop('disabled',false)
4404+                               .siblings('label')
4405+                                       .html( label );
4406+
4407+                       // auto select
4408+                       if (t.options.startLanguage == lang) {
4409+                               $('#' + t.id + '_captions_' + lang).click();
4410+                       }
4411+
4412+                       t.adjustLanguageBox();
4413+               },
4414+
4415+               addTrackButton: function(lang, label) {
4416+                       var t = this;
4417+                       if (label === '') {
4418+                               label = mejs.language.codes[lang] || lang;
4419+                       }
4420+
4421+                       t.captionsButton.find('ul').append(
4422+                               $('<li>'+
4423+                                       '<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' +
4424+                                       '<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+
4425+                               '</li>')
4426+                       );
4427+
4428+                       t.adjustLanguageBox();
4429+
4430+                       // remove this from the dropdownlist (if it exists)
4431+                       t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove();
4432+               },
4433+
4434+               adjustLanguageBox:function() {
4435+                       var t = this;
4436+                       // adjust the size of the outer box
4437+                       t.captionsButton.find('.mejs-captions-selector').height(
4438+                               t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) +
4439+                               t.captionsButton.find('.mejs-captions-translations').outerHeight(true)
4440+                       );
4441+               },
4442+
4443+               displayCaptions: function() {
4444+
4445+                       if (typeof this.tracks == 'undefined')
4446+                               return;
4447+
4448+                       var
4449+                               t = this,
4450+                               i,
4451+                               track = t.selectedTrack;
4452+
4453+                       if (track != null && track.isLoaded) {
4454+                               for (i=0; i<track.entries.times.length; i++) {
4455+                                       if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop){
4456+                                               t.captionsText.html(track.entries.text[i]);
4457+                                               t.captions.show().height(0);
4458+                                               return; // exit out if one is visible;
4459+                                       }
4460+                               }
4461+                               t.captions.hide();
4462+                       } else {
4463+                               t.captions.hide();
4464+                       }
4465+               },
4466+
4467+               displayChapters: function() {
4468+                       var
4469+                               t = this,
4470+                               i;
4471+
4472+                       for (i=0; i<t.tracks.length; i++) {
4473+                               if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) {
4474+                                       t.drawChapters(t.tracks[i]);
4475+                                       t.hasChapters = true;
4476+                                       break;
4477+                               }
4478+                       }
4479+               },
4480+
4481+               drawChapters: function(chapters) {
4482+                       var
4483+                               t = this,
4484+                               i,
4485+                               dur,
4486+                               //width,
4487+                               //left,
4488+                               percent = 0,
4489+                               usedPercent = 0;
4490+
4491+                       t.chapters.empty();
4492+
4493+                       for (i=0; i<chapters.entries.times.length; i++) {
4494+                               dur = chapters.entries.times[i].stop - chapters.entries.times[i].start;
4495+                               percent = Math.floor(dur / t.media.duration * 100);
4496+                               if (percent + usedPercent > 100 || // too large
4497+                                       i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in
4498+                                       {
4499+                                       percent = 100 - usedPercent;
4500+                               }
4501+                               //width = Math.floor(t.width * dur / t.media.duration);
4502+                               //left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration);
4503+                               //if (left + width > t.width) {
4504+                               //      width = t.width - left;
4505+                               //}
4506+
4507+                               t.chapters.append( $(
4508+                                       '<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' +
4509+                                               '<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' +
4510+                                                       '<span class="ch-title">' + chapters.entries.text[i] + '</span>' +
4511+                                                       '<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start) + '&ndash;' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop) + '</span>' +
4512+                                               '</div>' +
4513+                                       '</div>'));
4514+                               usedPercent += percent;
4515+                       }
4516+
4517+                       t.chapters.find('div.mejs-chapter').click(function() {
4518+                               t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) );
4519+                               if (t.media.paused) {
4520+                                       t.media.play();
4521+                               }
4522+                       });
4523+
4524+                       t.chapters.show();
4525+               }
4526+       });
4527+
4528+
4529+
4530+       mejs.language = {
4531+               codes:  {
4532+                       af:'Afrikaans',
4533+                       sq:'Albanian',
4534+                       ar:'Arabic',
4535+                       be:'Belarusian',
4536+                       bg:'Bulgarian',
4537+                       ca:'Catalan',
4538+                       zh:'Chinese',
4539+                       'zh-cn':'Chinese Simplified',
4540+                       'zh-tw':'Chinese Traditional',
4541+                       hr:'Croatian',
4542+                       cs:'Czech',
4543+                       da:'Danish',
4544+                       nl:'Dutch',
4545+                       en:'English',
4546+                       et:'Estonian',
4547+                       tl:'Filipino',
4548+                       fi:'Finnish',
4549+                       fr:'French',
4550+                       gl:'Galician',
4551+                       de:'German',
4552+                       el:'Greek',
4553+                       ht:'Haitian Creole',
4554+                       iw:'Hebrew',
4555+                       hi:'Hindi',
4556+                       hu:'Hungarian',
4557+                       is:'Icelandic',
4558+                       id:'Indonesian',
4559+                       ga:'Irish',
4560+                       it:'Italian',
4561+                       ja:'Japanese',
4562+                       ko:'Korean',
4563+                       lv:'Latvian',
4564+                       lt:'Lithuanian',
4565+                       mk:'Macedonian',
4566+                       ms:'Malay',
4567+                       mt:'Maltese',
4568+                       no:'Norwegian',
4569+                       fa:'Persian',
4570+                       pl:'Polish',
4571+                       pt:'Portuguese',
4572+                       //'pt-pt':'Portuguese (Portugal)',
4573+                       ro:'Romanian',
4574+                       ru:'Russian',
4575+                       sr:'Serbian',
4576+                       sk:'Slovak',
4577+                       sl:'Slovenian',
4578+                       es:'Spanish',
4579+                       sw:'Swahili',
4580+                       sv:'Swedish',
4581+                       tl:'Tagalog',
4582+                       th:'Thai',
4583+                       tr:'Turkish',
4584+                       uk:'Ukrainian',
4585+                       vi:'Vietnamese',
4586+                       cy:'Welsh',
4587+                       yi:'Yiddish'
4588+               }
4589+       };
4590+
4591+       /*
4592+       Parses WebVVT format which should be formatted as
4593+       ================================
4594+       WEBVTT
4595+       
4596+       1
4597+       00:00:01,1 --> 00:00:05,000
4598+       A line of text
4599+
4600+       2
4601+       00:01:15,1 --> 00:02:05,000
4602+       A second line of text
4603+       
4604+       ===============================
4605+
4606+       Adapted from: http://www.delphiki.com/html5/playr
4607+       */
4608+       mejs.TrackFormatParser = {
4609+               webvvt: {
4610+                       // match start "chapter-" (or anythingelse)
4611+                       pattern_identifier: /^([a-zA-z]+-)?[0-9]+$/,
4612+                       pattern_timecode: /^([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
4613+
4614+                       parse: function(trackText) {
4615+                               var
4616+                                       i = 0,
4617+                                       lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/),
4618+                                       entries = {text:[], times:[]},
4619+                                       timecode,
4620+                                       text;
4621+                               for(; i<lines.length; i++) {
4622+                                       // check for the line number
4623+                                       if (this.pattern_identifier.exec(lines[i])){
4624+                                               // skip to the next line where the start --> end time code should be
4625+                                               i++;
4626+                                               timecode = this.pattern_timecode.exec(lines[i]);                               
4627+
4628+                                               if (timecode && i<lines.length){
4629+                                                       i++;
4630+                                                       // grab all the (possibly multi-line) text that follows
4631+                                                       text = lines[i];
4632+                                                       i++;
4633+                                                       while(lines[i] !== '' && i<lines.length){
4634+                                                               text = text + '\n' + lines[i];
4635+                                                               i++;
4636+                                                       }
4637+                                                       text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
4638+                                                       // Text is in a different array so I can use .join
4639+                                                       entries.text.push(text);
4640+                                                       entries.times.push(
4641+                                                       {
4642+                                                               start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) == 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]),
4643+                                                               stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]),
4644+                                                               settings: timecode[5]
4645+                                                       });
4646+                                               }
4647+                                       }
4648+                               }
4649+                               return entries;
4650+                       }
4651+               },
4652+               // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
4653+               dfxp: {
4654+                       parse: function(trackText) {
4655+                               trackText = $(trackText).filter("tt");
4656+                               var
4657+                                       i = 0,
4658+                                       container = trackText.children("div").eq(0),
4659+                                       lines = container.find("p"),
4660+                                       styleNode = trackText.find("#" + container.attr("style")),
4661+                                       styles,
4662+                                       begin,
4663+                                       end,
4664+                                       text,
4665+                                       entries = {text:[], times:[]};
4666+
4667+
4668+                               if (styleNode.length) {
4669+                                       var attributes = styleNode.removeAttr("id").get(0).attributes;
4670+                                       if (attributes.length) {
4671+                                               styles = {};
4672+                                               for (i = 0; i < attributes.length; i++) {
4673+                                                       styles[attributes[i].name.split(":")[1]] = attributes[i].value;
4674+                                               }
4675+                                       }
4676+                               }
4677+
4678+                               for(i = 0; i<lines.length; i++) {
4679+                                       var style;
4680+                                       var _temp_times = {
4681+                                               start: null,
4682+                                               stop: null,
4683+                                               style: null
4684+                                       };
4685+                                       if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin"));
4686+                                       if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end"));
4687+                                       if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end"));
4688+                                       if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin"));
4689+                                       if (styles) {
4690+                                               style = "";
4691+                                               for (var _style in styles) {
4692+                                                       style += _style + ":" + styles[_style] + ";";                                   
4693+                                               }
4694+                                       }
4695+                                       if (style) _temp_times.style = style;
4696+                                       if (_temp_times.start == 0) _temp_times.start = 0.200;
4697+                                       entries.times.push(_temp_times);
4698+                                       text = $.trim(lines.eq(i).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
4699+                                       entries.text.push(text);
4700+                                       if (entries.times.start == 0) entries.times.start = 2;
4701+                               }
4702+                               return entries;
4703+                       }
4704+               },
4705+               split2: function (text, regex) {
4706+                       // normal version for compliant browsers
4707+                       // see below for IE fix
4708+                       return text.split(regex);
4709+               }
4710+       };
4711+       
4712+       // test for browsers with bad String.split method.
4713+       if ('x\n\ny'.split(/\n/gi).length != 3) {
4714+               // add super slow IE8 and below version
4715+               mejs.TrackFormatParser.split2 = function(text, regex) {
4716+                       var
4717+                               parts = [],
4718+                               chunk = '',
4719+                               i;
4720+
4721+                       for (i=0; i<text.length; i++) {
4722+                               chunk += text.substring(i,i+1);
4723+                               if (regex.test(chunk)) {
4724+                                       parts.push(chunk.replace(regex, ''));
4725+                                       chunk = '';
4726+                               }
4727+                       }
4728+                       parts.push(chunk);
4729+                       return parts;
4730+               }
4731+       }       
4732+
4733+})(mejs.$);
4734+
4735+/*
4736+* ContextMenu Plugin
4737+*
4738+*
4739+*/
4740+
4741+(function($) {
4742+
4743+$.extend(mejs.MepDefaults,
4744+       { 'contextMenuItems': [
4745+               // demo of a fullscreen option
4746+               {
4747+                       render: function(player) {
4748+                               
4749+                               // check for fullscreen plugin
4750+                               if (typeof player.enterFullScreen == 'undefined')
4751+                                       return null;
4752+                       
4753+                               if (player.isFullScreen) {
4754+                                       return "Turn off Fullscreen";
4755+                               } else {
4756+                                       return "Go Fullscreen";
4757+                               }
4758+                       },
4759+                       click: function(player) {
4760+                               if (player.isFullScreen) {
4761+                                       player.exitFullScreen();
4762+                               } else {
4763+                                       player.enterFullScreen();
4764+                               }
4765+                       }
4766+               }
4767+               ,
4768+               // demo of a mute/unmute button
4769+               {
4770+                       render: function(player) {
4771+                               if (player.media.muted) {
4772+                                       return "Unmute";
4773+                               } else {
4774+                                       return "Mute";
4775+                               }
4776+                       },
4777+                       click: function(player) {
4778+                               if (player.media.muted) {
4779+                                       player.setMuted(false);
4780+                               } else {
4781+                                       player.setMuted(true);
4782+                               }
4783+                       }
4784+               },
4785+               // separator
4786+               {
4787+                       isSeparator: true
4788+               }
4789+               ,
4790+               // demo of simple download video
4791+               {
4792+                       render: function(player) {
4793+                               return "Download Video";
4794+                       },
4795+                       click: function(player) {
4796+                               window.location.href = player.media.currentSrc;
4797+                       }
4798+               }       
4799+       ]}
4800+);
4801+
4802+
4803+       $.extend(MediaElementPlayer.prototype, {
4804+               buildcontextmenu: function(player, controls, layers, media) {
4805+                       
4806+                       // create context menu
4807+                       player.contextMenu = $('<div class="mejs-contextmenu"></div>')
4808+                                                               .appendTo($('body'))
4809+                                                               .hide();
4810+                       
4811+                       // create events for showing context menu
4812+                       player.container.bind('contextmenu', function(e) {
4813+                               if (player.isContextMenuEnabled) {
4814+                                       e.preventDefault();
4815+                                       player.renderContextMenu(e.clientX-1, e.clientY-1);
4816+                                       return false;
4817+                               }
4818+                       });
4819+                       player.container.bind('click', function() {
4820+                               player.contextMenu.hide();
4821+                       });     
4822+                       player.contextMenu.bind('mouseleave', function() {
4823+
4824+                               //console.log('context hover out');
4825+                               player.startContextMenuTimer();
4826+                               
4827+                       });             
4828+               },
4829+               
4830+               isContextMenuEnabled: true,
4831+               enableContextMenu: function() {
4832+                       this.isContextMenuEnabled = true;
4833+               },
4834+               disableContextMenu: function() {
4835+                       this.isContextMenuEnabled = false;
4836+               },
4837+               
4838+               contextMenuTimeout: null,
4839+               startContextMenuTimer: function() {
4840+                       //console.log('startContextMenuTimer');
4841+                       
4842+                       var t = this;
4843+                       
4844+                       t.killContextMenuTimer();
4845+                       
4846+                       t.contextMenuTimer = setTimeout(function() {
4847+                               t.hideContextMenu();
4848+                               t.killContextMenuTimer();
4849+                       }, 750);
4850+               },
4851+               killContextMenuTimer: function() {
4852+                       var timer = this.contextMenuTimer;
4853+                       
4854+                       //console.log('killContextMenuTimer', timer);
4855+                       
4856+                       if (timer != null) {                           
4857+                               clearTimeout(timer);
4858+                               delete timer;
4859+                               timer = null;
4860+                       }
4861+               },             
4862+               
4863+               hideContextMenu: function() {
4864+                       this.contextMenu.hide();
4865+               },
4866+               
4867+               renderContextMenu: function(x,y) {
4868+                       
4869+                       // alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly
4870+                       var t = this,
4871+                               html = '',
4872+                               items = t.options.contextMenuItems;
4873+                       
4874+                       for (var i=0, il=items.length; i<il; i++) {
4875+                               
4876+                               if (items[i].isSeparator) {
4877+                                       html += '<div class="mejs-contextmenu-separator"></div>';
4878+                               } else {
4879+                               
4880+                                       var rendered = items[i].render(t);
4881+                               
4882+                                       // render can return null if the item doesn't need to be used at the moment
4883+                                       if (rendered != null) {
4884+                                               html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>';
4885+                                       }
4886+                               }
4887+                       }
4888+                       
4889+                       // position and show the context menu
4890+                       t.contextMenu
4891+                               .empty()
4892+                               .append($(html))
4893+                               .css({top:y, left:x})
4894+                               .show();
4895+                               
4896+                       // bind events
4897+                       t.contextMenu.find('.mejs-contextmenu-item').each(function() {
4898+                                                       
4899+                               // which one is this?
4900+                               var $dom = $(this),
4901+                                       itemIndex = parseInt( $dom.data('itemindex'), 10 ),
4902+                                       item = t.options.contextMenuItems[itemIndex];
4903+                               
4904+                               // bind extra functionality?
4905+                               if (typeof item.show != 'undefined')
4906+                                       item.show( $dom , t);
4907+                               
4908+                               // bind click action
4909+                               $dom.click(function() {                 
4910+                                       // perform click action
4911+                                       if (typeof item.click != 'undefined')
4912+                                               item.click(t);
4913+                                       
4914+                                       // close
4915+                                       t.contextMenu.hide();                           
4916+                               });                             
4917+                       });     
4918+                       
4919+                       // stop the controls from hiding
4920+                       setTimeout(function() {
4921+                               t.killControlsTimer('rev3');   
4922+                       }, 100);
4923+                                               
4924+               }
4925+       });
4926+       
4927+})(mejs.$);
4928+/**
4929+ * Postroll plugin
4930+ */
4931+(function($) {
4932+
4933+       $.extend(mejs.MepDefaults, {
4934+               postrollCloseText: mejs.i18n.t('Close')
4935+       });
4936+
4937+       // Postroll
4938+       $.extend(MediaElementPlayer.prototype, {
4939+               buildpostroll: function(player, controls, layers, media) {
4940+                       var
4941+                               t = this,
4942+                               postrollLink = t.container.find('link[rel="postroll"]').attr('href');
4943+
4944+                       if (typeof postrollLink !== 'undefined') {
4945+                               player.postroll =
4946+                                       $('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">' + t.options.postrollCloseText + '</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(layers).hide();
4947+
4948+                               t.media.addEventListener('ended', function (e) {
4949+                                       $.ajax({
4950+                                               dataType: 'html',
4951+                                               url: postrollLink,
4952+                                               success: function (data, textStatus) {
4953+                                                       layers.find('.mejs-postroll-layer-content').html(data);
4954+                                               }
4955+                                       });
4956+                                       player.postroll.show();
4957+                               }, false);
4958+                       }
4959+               }
4960+       });
4961+
4962+})(mejs.$);
4963+
4964Index: wp-includes/js/mediaelement/mediaelement-and-player.min.js
4965===================================================================
4966--- wp-includes/js/mediaelement/mediaelement-and-player.min.js  (revision 0)
4967+++ wp-includes/js/mediaelement/mediaelement-and-player.min.js  (working copy)
4968@@ -0,0 +1,158 @@
4969+/*!
4970+* MediaElement.js
4971+* HTML5 <video> and <audio> shim and player
4972+* http://mediaelementjs.com/
4973+*
4974+* Creates a JavaScript object that mimics HTML5 MediaElement API
4975+* for browsers that don't understand HTML5 or can't play the provided codec
4976+* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
4977+*
4978+* Copyright 2010-2012, John Dyer (http://j.hn)
4979+* Dual licensed under the MIT or GPL Version 2 licenses.
4980+*
4981+*/var mejs=mejs||{};mejs.version="2.10.1";mejs.meIndex=0;
4982+mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mpeg","video/youtube","video/x-youtube"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube"]}],vimeo:[{version:null,types:["video/vimeo","video/x-vimeo"]}]};
4983+mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&amp;").split("<").join("&lt;").split('"').join("&quot;")},absolutizeUrl:function(a){var b=document.createElement("div");b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>';return b.firstChild.href},getScriptPath:function(a){for(var b=0,c,d="",e="",g,f=document.getElementsByTagName("script"),h=f.length,l=a.length;b<h;b++){g=f[b].src;for(c=0;c<l;c++){e=a[c];if(g.indexOf(e)>
4984+-1){d=g.substring(0,g.indexOf(e));break}}if(d!=="")break}return d},secondsToTimeCode:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d=="undefined")d=25;var e=Math.floor(a/3600)%24,g=Math.floor(a/60)%60,f=Math.floor(a%60);a=Math.floor((a%1*d).toFixed(3));return(b||e>0?(e<10?"0"+e:e)+":":"")+(g<10?"0"+g:g)+":"+(f<10?"0"+f:f)+(c?":"+(a<10?"0"+a:a):"")},timeCodeToSeconds:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d=="undefined")d=25;a=a.split(":");b=parseInt(a[0],
4985+10);var e=parseInt(a[1],10),g=parseInt(a[2],10),f=0,h=0;if(c)f=parseInt(a[3])/d;return h=b*3600+e*60+g+f},convertSMPTEtoSeconds:function(a){if(typeof a!="string")return false;a=a.replace(",",".");var b=0,c=a.indexOf(".")!=-1?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++){d=1;if(e>0)d=Math.pow(60,e);b+=Number(a[e])*d}return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);if(b&&b.nodeName=="OBJECT")if(mejs.MediaFeatures.isIE){b.style.display=
4986+"none";(function(){b.readyState==4?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)})()}else b.parentNode.removeChild(b)},removeObjectInIE:function(a){if(a=document.getElementById(a)){for(var b in a)if(typeof a[b]=="function")a[b]=null;a.parentNode.removeChild(a)}}};
4987+mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];b[1]=b[1]||0;b[2]=b[2]||0;return c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?true:false},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e=[0,0,0],g;if(typeof this.nav.plugins!="undefined"&&typeof this.nav.plugins[a]=="object"){if((c=this.nav.plugins[a].description)&&
4988+!(typeof this.nav.mimeTypes!="undefined"&&this.nav.mimeTypes[b]&&!this.nav.mimeTypes[b].enabledPlugin)){e=c.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(a=0;a<e.length;a++)e[a]=parseInt(e[a].match(/\d+/),10)}}else if(typeof window.ActiveXObject!="undefined")try{if(g=new ActiveXObject(c))e=d(g)}catch(f){}return e}};
4989+mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[];if(a=a.GetVariable("$version")){a=a.split(" ")[1].split(",");b=[parseInt(a[0],10),parseInt(a[1],10),parseInt(a[2],10)]}return b});
4990+mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(d,e,g,f){for(;d.isVersionSupported(e[0]+"."+e[1]+"."+e[2]+"."+e[3]);)e[g]+=f;e[g]-=f};c(a,b,0,1);c(a,b,1,1);c(a,b,2,1E4);c(a,b,2,1E3);c(a,b,2,100);c(a,b,2,10);c(a,b,2,1);c(a,b,3,1);return b});
4991+mejs.MediaFeatures={init:function(){var a=this,b=document,c=mejs.PluginDetector.nav,d=mejs.PluginDetector.ua.toLowerCase(),e,g=["source","track","audio","video"];a.isiPad=d.match(/ipad/i)!==null;a.isiPhone=d.match(/iphone/i)!==null;a.isiOS=a.isiPhone||a.isiPad;a.isAndroid=d.match(/android/i)!==null;a.isBustedAndroid=d.match(/android 2\.[12]/)!==null;a.isIE=c.appName.toLowerCase().indexOf("microsoft")!=-1;a.isChrome=d.match(/chrome/gi)!==null;a.isFirefox=d.match(/firefox/gi)!==null;a.isWebkit=d.match(/webkit/gi)!==
4992+null;a.isGecko=d.match(/gecko/gi)!==null&&!a.isWebkit;a.isOpera=d.match(/opera/gi)!==null;a.hasTouch="ontouchstart"in window;a.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(c=0;c<g.length;c++)e=document.createElement(g[c]);a.supportsMediaTag=typeof e.canPlayType!=="undefined"||a.isBustedAndroid;a.hasSemiNativeFullScreen=typeof e.webkitEnterFullscreen!=="undefined";a.hasWebkitNativeFullScreen=typeof e.webkitRequestFullScreen!=="undefined";
4993+a.hasMozNativeFullScreen=typeof e.mozRequestFullScreen!=="undefined";a.hasTrueNativeFullScreen=a.hasWebkitNativeFullScreen||a.hasMozNativeFullScreen;a.nativeFullScreenEnabled=a.hasTrueNativeFullScreen;if(a.hasMozNativeFullScreen)a.nativeFullScreenEnabled=e.mozFullScreenEnabled;if(this.isChrome)a.hasSemiNativeFullScreen=false;if(a.hasTrueNativeFullScreen){a.fullScreenEventName=a.hasWebkitNativeFullScreen?"webkitfullscreenchange":"mozfullscreenchange";a.isFullScreen=function(){if(e.mozRequestFullScreen)return b.mozFullScreen;
4994+else if(e.webkitRequestFullScreen)return b.webkitIsFullScreen};a.requestFullScreen=function(f){if(a.hasWebkitNativeFullScreen)f.webkitRequestFullScreen();else a.hasMozNativeFullScreen&&f.mozRequestFullScreen()};a.cancelFullScreen=function(){if(a.hasWebkitNativeFullScreen)document.webkitCancelFullScreen();else a.hasMozNativeFullScreen&&document.mozCancelFullScreen()}}if(a.hasSemiNativeFullScreen&&d.match(/mac os x 10_5/i)){a.hasNativeFullScreen=false;a.hasSemiNativeFullScreen=false}}};mejs.MediaFeatures.init();
4995+mejs.HtmlMediaElement={pluginType:"native",isFullScreen:false,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if(typeof a=="string")this.src=a;else{var c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.src=c.src;break}}}},setVideoSize:function(a,b){this.width=a;this.height=b}};
4996+mejs.PluginMediaElement=function(a,b,c){this.id=a;this.pluginType=b;this.src=c;this.events={}};
4997+mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:false,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:true,ended:false,seeking:false,duration:0,error:null,tagName:"",muted:false,volume:1,currentTime:0,play:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.playVideo():this.pluginApi.playMedia();this.paused=false}},load:function(){if(this.pluginApi!=null){this.pluginType!="youtube"&&this.pluginApi.loadMedia();this.paused=
4998+false}},pause:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia();this.paused=true}},stop:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.stopVideo():this.pluginApi.stopMedia();this.paused=true}},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++){d=e[b];if(mejs.PluginDetector.hasPluginVersion(this.pluginType,d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return true}return false},
4999+positionFullscreenButton:function(a,b,c){this.pluginApi!=null&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(a,b,c)},hideFullscreenButton:function(){this.pluginApi!=null&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if(typeof a=="string"){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a));this.src=mejs.Utility.absolutizeUrl(a)}else{var b,c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src));
5000+this.src=mejs.Utility.absolutizeUrl(a);break}}}},setCurrentTime:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a);this.currentTime=a}},setVolume:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.setVolume(a*100):this.pluginApi.setVolume(a);this.volume=a}},setMuted:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){a?this.pluginApi.mute():this.pluginApi.unMute();this.muted=a;this.dispatchEvent("volumechange")}else this.pluginApi.setMuted(a);
5001+this.muted=a}},setVideoSize:function(a,b){if(this.pluginElement.style){this.pluginElement.style.width=a+"px";this.pluginElement.style.height=b+"px"}this.pluginApi!=null&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(true)},exitFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&
5002+this.setFullscreen(false)},addEventListener:function(a,b){this.events[a]=this.events[a]||[];this.events[a].push(b)},removeEventListener:function(a,b){if(!a){this.events={};return true}var c=this.events[a];if(!c)return true;if(!b){this.events[a]=[];return true}for(i=0;i<c.length;i++)if(c[i]===b){this.events[a].splice(i,1);return true}return false},dispatchEvent:function(a){var b,c,d=this.events[a];if(d){c=Array.prototype.slice.call(arguments,1);for(b=0;b<d.length;b++)d[b].apply(null,c)}},attributes:{},
5003+hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){if(this.hasAttribute(a))return this.attributes[a];return""},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id)}};
5004+mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(a,b,c){this.pluginMediaElements[a]=b;this.htmlMediaElements[a]=c},initPlugin:function(a){var b=this.pluginMediaElements[a],c=this.htmlMediaElements[a];if(b){switch(b.pluginType){case "flash":b.pluginElement=b.pluginApi=document.getElementById(a);break;case "silverlight":b.pluginElement=document.getElementById(b.id);b.pluginApi=b.pluginElement.Content.MediaElementJS}b.pluginApi!=null&&b.success&&b.success(b,
5005+c)}},fireEvent:function(a,b,c){var d,e;a=this.pluginMediaElements[a];b={type:b,target:a};for(d in c){a[d]=c[d];b[d]=c[d]}e=c.bufferedTime||0;b.target.buffered=b.buffered={start:function(){return 0},end:function(){return e},length:1};a.dispatchEvent(b.type,b)}};
5006+mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:false,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",enablePluginSmoothing:false,silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:0.8,
5007+success:function(){},error:function(){}};mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)};
5008+mejs.HtmlMediaElementShim={create:function(a,b){var c=mejs.MediaElementDefaults,d=typeof a=="string"?document.getElementById(a):a,e=d.tagName.toLowerCase(),g=e==="audio"||e==="video",f=g?d.getAttribute("src"):d.getAttribute("href");e=d.getAttribute("poster");var h=d.getAttribute("autoplay"),l=d.getAttribute("preload"),j=d.getAttribute("controls"),k;for(k in b)c[k]=b[k];f=typeof f=="undefined"||f===null||f==""?null:f;e=typeof e=="undefined"||e===null?"":e;l=typeof l=="undefined"||l===null||l==="false"?
5009+"none":l;h=!(typeof h=="undefined"||h===null||h==="false");j=!(typeof j=="undefined"||j===null||j==="false");k=this.determinePlayback(d,c,mejs.MediaFeatures.supportsMediaTag,g,f);k.url=k.url!==null?mejs.Utility.absolutizeUrl(k.url):"";if(k.method=="native"){if(mejs.MediaFeatures.isBustedAndroid){d.src=k.url;d.addEventListener("click",function(){d.play()},false)}return this.updateNative(k,c,h,l)}else if(k.method!=="")return this.createPlugin(k,c,e,h,l,j);else{this.createErrorMessage(k,c,e);return this}},
5010+determinePlayback:function(a,b,c,d,e){var g=[],f,h,l,j={method:"",url:"",htmlMediaElement:a,isVideo:a.tagName.toLowerCase()!="audio"},k;if(typeof b.type!="undefined"&&b.type!=="")if(typeof b.type=="string")g.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)g.push({type:b.type[f],url:e});else if(e!==null){l=this.formatType(e,a.getAttribute("type"));g.push({type:l,url:e})}else for(f=0;f<a.childNodes.length;f++){h=a.childNodes[f];if(h.nodeType==1&&h.tagName.toLowerCase()=="source"){e=h.getAttribute("src");
5011+l=this.formatType(e,h.getAttribute("type"));h=h.getAttribute("media");if(!h||!window.matchMedia||window.matchMedia&&window.matchMedia(h).matches)g.push({type:l,url:e})}}if(!d&&g.length>0&&g[0].url!==null&&this.getTypeFromFile(g[0].url).indexOf("audio")>-1)j.isVideo=false;if(mejs.MediaFeatures.isBustedAndroid)a.canPlayType=function(m){return m.match(/video\/(mp4|m4v)/gi)!==null?"maybe":""};if(c&&(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="native")){if(!d){f=document.createElement(j.isVideo?
5012+"video":"audio");a.parentNode.insertBefore(f,a);a.style.display="none";j.htmlMediaElement=a=f}for(f=0;f<g.length;f++)if(a.canPlayType(g[f].type).replace(/no/,"")!==""||a.canPlayType(g[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")!==""){j.method="native";j.url=g[f].url;break}if(j.method==="native"){if(j.url!==null)a.src=j.url;if(b.mode!=="auto_plugin")return j}}if(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="shim")for(f=0;f<g.length;f++){l=g[f].type;for(a=0;a<b.plugins.length;a++){e=b.plugins[a];
5013+h=mejs.plugins[e];for(c=0;c<h.length;c++){k=h[c];if(k.version==null||mejs.PluginDetector.hasPluginVersion(e,k.version))for(d=0;d<k.types.length;d++)if(l==k.types[d]){j.method=e;j.url=g[f].url;return j}}}}if(b.mode==="auto_plugin"&&j.method==="native")return j;if(j.method===""&&g.length>0)j.url=g[0].url;return j},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];a=a.substring(a.lastIndexOf(".")+
5014+1);return(/(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi.test(a)?"video":"audio")+"/"+this.getTypeFromExtension(a)},getTypeFromExtension:function(a){switch(a){case "mp4":case "m4v":return"mp4";case "webm":case "webma":case "webmv":return"webm";case "ogg":case "oga":case "ogv":return"ogg";default:return a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div");e.className="me-cannotplay";try{e.style.width=d.width+"px";e.style.height=d.height+"px"}catch(g){}e.innerHTML=
5015+c!==""?'<a href="'+a.url+'"><img src="'+c+'" width="100%" height="100%" /></a>':'<a href="'+a.url+'"><span>'+mejs.i18n.t("Download File")+"</span></a>";d.parentNode.insertBefore(e,d);d.style.display="none";b.error(d)},createPlugin:function(a,b,c,d,e,g){c=a.htmlMediaElement;var f=1,h=1,l="me_"+a.method+"_"+mejs.meIndex++,j=new mejs.PluginMediaElement(l,a.method,a.url),k=document.createElement("div"),m;j.tagName=c.tagName;for(m=0;m<c.attributes.length;m++){var n=c.attributes[m];n.specified==true&&j.setAttribute(n.name,
5016+n.value)}for(m=c.parentNode;m!==null&&m.tagName.toLowerCase()!="body";){if(m.parentNode.tagName.toLowerCase()=="p"){m.parentNode.parentNode.insertBefore(m,m.parentNode);break}m=m.parentNode}if(a.isVideo){f=b.videoWidth>0?b.videoWidth:c.getAttribute("width")!==null?c.getAttribute("width"):b.defaultVideoWidth;h=b.videoHeight>0?b.videoHeight:c.getAttribute("height")!==null?c.getAttribute("height"):b.defaultVideoHeight;f=mejs.Utility.encodeUrl(f);h=mejs.Utility.encodeUrl(h)}else if(b.enablePluginDebug){f=
5017+320;h=240}j.success=b.success;mejs.MediaPluginBridge.registerPluginElement(l,j,c);k.className="me-plugin";k.id=l+"_container";a.isVideo?c.parentNode.insertBefore(k,c):document.body.insertBefore(k,document.body.childNodes[0]);d=["id="+l,"isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+f,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+h];if(a.url!==null)a.method=="flash"?d.push("file="+mejs.Utility.encodeUrl(a.url)):
5018+d.push("file="+a.url);b.enablePluginDebug&&d.push("debug=true");b.enablePluginSmoothing&&d.push("smoothing=true");g&&d.push("controls=true");if(b.pluginVars)d=d.concat(b.pluginVars);switch(a.method){case "silverlight":k.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+l+'" name="'+l+'" width="'+f+'" height="'+h+'"><param name="initParams" value="'+d.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+
5019+b.pluginPath+b.silverlightName+'" /></object>';break;case "flash":if(mejs.MediaFeatures.isIE){a=document.createElement("div");k.appendChild(a);a.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+l+'" width="'+f+'" height="'+h+'"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+d.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'}else k.innerHTML=
5020+'<embed id="'+l+'" name="'+l+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+d.join("&")+'" width="'+f+'" height="'+h+'"></embed>';break;case "youtube":b=a.url.substr(a.url.lastIndexOf("=")+1);youtubeSettings={container:k,containerId:k.id,pluginMediaElement:j,pluginId:l,videoId:b,
5021+height:h,width:f};mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case "vimeo":j.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1);k.innerHTML='<iframe src="http://player.vimeo.com/video/'+j.vimeoid+'?portrait=0&byline=0&title=0" width="'+f+'" height="'+h+'" frameborder="0"></iframe>'}c.style.display="none";return j},updateNative:function(a,b){var c=a.htmlMediaElement,d;for(d in mejs.HtmlMediaElement)c[d]=
5022+mejs.HtmlMediaElement[d];b.success(c,c);return c}};
5023+mejs.YouTubeApi={isIframeStarted:false,isIframeLoaded:false,loadIframeApi:function(){if(!this.isIframeStarted){var a=document.createElement("script");a.src="http://www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);this.isIframeStarted=true}},iframeQueue:[],enqueueIframe:function(a){if(this.isLoaded)this.createIframe(a);else{this.loadIframeApi();this.iframeQueue.push(a)}},createIframe:function(a){var b=a.pluginMediaElement,c=new YT.Player(a.containerId,
5024+{height:a.height,width:a.width,videoId:a.videoId,playerVars:{controls:0},events:{onReady:function(){a.pluginMediaElement.pluginApi=c;mejs.MediaPluginBridge.initPlugin(a.pluginId);setInterval(function(){mejs.YouTubeApi.createEvent(c,b,"timeupdate")},250)},onStateChange:function(d){mejs.YouTubeApi.handleStateChange(d.data,c,b)}}})},createEvent:function(a,b,c){c={type:c,target:b};if(a&&a.getDuration){b.currentTime=c.currentTime=a.getCurrentTime();b.duration=c.duration=a.getDuration();c.paused=b.paused;
5025+c.ended=b.ended;c.muted=a.isMuted();c.volume=a.getVolume()/100;c.bytesTotal=a.getVideoBytesTotal();c.bufferedBytes=a.getVideoBytesLoaded();var d=c.bufferedBytes/c.bytesTotal*c.duration;c.target.buffered=c.buffered={start:function(){return 0},end:function(){return d},length:1}}b.dispatchEvent(c.type,c)},iFrameReady:function(){for(this.isIframeLoaded=this.isLoaded=true;this.iframeQueue.length>0;)this.createIframe(this.iframeQueue.pop())},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=
5026+a;var b,c="http://www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+a.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";if(mejs.MediaFeatures.isIE){b=document.createElement("div");a.container.appendChild(b);b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'"><param name="movie" value="'+c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'}else a.container.innerHTML=
5027+'<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; "><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c;mejs.MediaPluginBridge.initPlugin(a);c.cueVideoById(b.videoId);a=b.containerId+"_callback";window[a]=function(e){mejs.YouTubeApi.handleStateChange(e,
5028+c,d)};c.addEventListener("onStateChange",a);setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250)},handleStateChange:function(a,b,c){switch(a){case -1:c.paused=true;c.ended=true;mejs.YouTubeApi.createEvent(b,c,"loadedmetadata");break;case 0:c.paused=false;c.ended=true;mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=false;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"play");mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=true;c.ended=false;mejs.YouTubeApi.createEvent(b,
5029+c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress")}}};function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}window.mejs=mejs;window.MediaElement=mejs.MediaElement;
5030+(function(a,b,c){var d={locale:{strings:{}},methods:{}};d.locale.getLanguage=function(){return{language:navigator.language}};d.locale.INIT_LANGUAGE=d.locale.getLanguage();d.methods.checkPlain=function(e){var g,f,h={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};e=String(e);for(g in h)if(h.hasOwnProperty(g)){f=RegExp(g,"g");e=e.replace(f,h[g])}return e};d.methods.formatString=function(e,g){for(var f in g){switch(f.charAt(0)){case "@":g[f]=d.methods.checkPlain(g[f]);break;case "!":break;default:g[f]=
5031+'<em class="placeholder">'+d.methods.checkPlain(g[f])+"</em>"}e=e.replace(f,g[f])}return e};d.methods.t=function(e,g,f){if(d.locale.strings&&d.locale.strings[f.context]&&d.locale.strings[f.context][e])e=d.locale.strings[f.context][e];if(g)e=d.methods.formatString(e,g);return e};d.t=function(e,g,f){if(typeof e==="string"&&e.length>0){var h=d.locale.getLanguage();f=f||{context:h.language};return d.methods.t(e,g,f)}else throw{name:"InvalidArgumentException",message:"First argument is either not a string or empty."};
5032+};c.i18n=d})(jQuery,document,mejs);(function(a){a.de={Fullscreen:"Vollbild","Go Fullscreen":"Vollbild an","Turn off Fullscreen":"Vollbild aus",Close:"Schlie\u00dfen"}})(mejs.i18n.locale.strings);
5033+
5034+/*!
5035+ * MediaElementPlayer
5036+ * http://mediaelementjs.com/
5037+ *
5038+ * Creates a controller bar for HTML5 <video> add <audio> tags
5039+ * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
5040+ *
5041+ * Copyright 2010-2012, John Dyer (http://j.hn/)
5042+ * Dual licensed under the MIT or GPL Version 2 licenses.
5043+ *
5044+ */if(typeof jQuery!="undefined")mejs.$=jQuery;else if(typeof ender!="undefined")mejs.$=ender;
5045+(function(f){mejs.MepDefaults={poster:"",defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return a.duration*0.05},defaultSeekForwardInterval:function(a){return a.duration*0.05},audioWidth:-1,audioHeight:-1,startVolume:0.8,loop:false,enableAutosize:true,alwaysShowHours:false,showTimecodeFrameCount:false,framesPerSecond:25,autosizeProgress:true,alwaysShowControls:false,iPadUseNativeControls:false,
5046+iPhoneUseNativeControls:false,AndroidUseNativeControls:false,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:true,enableKeyboard:true,pauseOtherPlayers:true,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?b.play():b.pause()}},{keys:[38],action:function(a,b){b.setVolume(Math.min(b.volume+0.1,1))}},{keys:[40],action:function(a,b){b.setVolume(Math.max(b.volume-0.1,0))}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>
5047+0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a){if(typeof a.enterFullScreen!="undefined")a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}}]};
5048+mejs.mepIndex=0;mejs.players=[];mejs.MediaElementPlayer=function(a,b){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(a,b);this.$media=this.$node=f(a);this.node=this.media=this.$media[0];if(typeof this.node.player!="undefined")return this.node.player;else this.node.player=this;if(typeof b=="undefined")b=this.$node.data("mejsoptions");this.options=f.extend({},mejs.MepDefaults,b);mejs.players.push(this);this.init();return this};mejs.MediaElementPlayer.prototype={hasFocus:false,
5049+controlsAreVisible:true,init:function(){var a=this,b=mejs.MediaFeatures,c=f.extend(true,{},a.options,{success:function(d,g){a.meReady(d,g)},error:function(d){a.handleError(d)}}),e=a.media.tagName.toLowerCase();a.isDynamic=e!=="audio"&&e!=="video";a.isVideo=a.isDynamic?a.options.isVideo:e!=="audio"&&a.options.isVideo;if(b.isiPad&&a.options.iPadUseNativeControls||b.isiPhone&&a.options.iPhoneUseNativeControls){a.$media.attr("controls","controls");if(b.isiPad&&a.media.getAttribute("autoplay")!==null){a.media.load();
5050+a.media.play()}}else if(!(b.isAndroid&&a.AndroidUseNativeControls)){a.$media.removeAttr("controls");a.id="mep_"+mejs.mepIndex++;a.container=f('<div id="'+a.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(a.$media[0].className).insertBefore(a.$media);a.container.addClass((b.isAndroid?"mejs-android ":
5051+"")+(b.isiOS?"mejs-ios ":"")+(b.isiPad?"mejs-ipad ":"")+(b.isiPhone?"mejs-iphone ":"")+(a.isVideo?"mejs-video ":"mejs-audio "));if(b.isiOS){b=a.$media.clone();a.container.find(".mejs-mediaelement").append(b);a.$media.remove();a.$node=a.$media=b;a.node=a.media=b[0]}else a.container.find(".mejs-mediaelement").append(a.$media);a.controls=a.container.find(".mejs-controls");a.layers=a.container.find(".mejs-layers");b=a.isVideo?"video":"audio";e=b.substring(0,1).toUpperCase()+b.substring(1);a.width=a.options[b+
5052+"Width"]>0||a.options[b+"Width"].toString().indexOf("%")>-1?a.options[b+"Width"]:a.media.style.width!==""&&a.media.style.width!==null?a.media.style.width:a.media.getAttribute("width")!==null?a.$media.attr("width"):a.options["default"+e+"Width"];a.height=a.options[b+"Height"]>0||a.options[b+"Height"].toString().indexOf("%")>-1?a.options[b+"Height"]:a.media.style.height!==""&&a.media.style.height!==null?a.media.style.height:a.$media[0].getAttribute("height")!==null?a.$media.attr("height"):a.options["default"+
5053+e+"Height"];a.setPlayerSize(a.width,a.height);c.pluginWidth=a.height;c.pluginHeight=a.width}mejs.MediaElement(a.$media[0],c)},showControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!b.controlsAreVisible){if(a){b.controls.css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true});b.container.find(".mejs-control").css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true})}else{b.controls.css("visibility","visible").css("display",
5054+"block");b.container.find(".mejs-control").css("visibility","visible").css("display","block");b.controlsAreVisible=true}b.setControlsSize()}},hideControls:function(a){var b=this;a=typeof a=="undefined"||a;if(b.controlsAreVisible)if(a){b.controls.stop(true,true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block");b.controlsAreVisible=false});b.container.find(".mejs-control").stop(true,true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block")})}else{b.controls.css("visibility",
5055+"hidden").css("display","block");b.container.find(".mejs-control").css("visibility","hidden").css("display","block");b.controlsAreVisible=false}},controlsTimer:null,startControlsTimer:function(a){var b=this;a=typeof a!="undefined"?a:1500;b.killControlsTimer("start");b.controlsTimer=setTimeout(function(){b.hideControls();b.killControlsTimer("hide")},a)},killControlsTimer:function(){if(this.controlsTimer!==null){clearTimeout(this.controlsTimer);delete this.controlsTimer;this.controlsTimer=null}},controlsEnabled:true,
5056+disableControls:function(){this.killControlsTimer();this.hideControls(false);this.controlsEnabled=false},enableControls:function(){this.showControls(false);this.controlsEnabled=true},meReady:function(a,b){var c=this,e=mejs.MediaFeatures,d=b.getAttribute("autoplay");d=!(typeof d=="undefined"||d===null||d==="false");var g;if(!c.created){c.created=true;c.media=a;c.domNode=b;if(!(e.isAndroid&&c.options.AndroidUseNativeControls)&&!(e.isiPad&&c.options.iPadUseNativeControls)&&!(e.isiPhone&&c.options.iPhoneUseNativeControls)){c.buildposter(c,
5057+c.controls,c.layers,c.media);c.buildkeyboard(c,c.controls,c.layers,c.media);c.buildoverlays(c,c.controls,c.layers,c.media);c.findTracks();for(g in c.options.features){e=c.options.features[g];if(c["build"+e])try{c["build"+e](c,c.controls,c.layers,c.media)}catch(k){}}c.container.trigger("controlsready");c.setPlayerSize(c.width,c.height);c.setControlsSize();if(c.isVideo){if(mejs.MediaFeatures.hasTouch)c.$media.bind("touchstart",function(){if(c.controlsAreVisible)c.hideControls(false);else c.controlsEnabled&&
5058+c.showControls(false)});else{c.media.addEventListener("click",function(){c.media.paused?c.media.play():c.media.pause()});c.container.bind("mouseenter mouseover",function(){if(c.controlsEnabled)if(!c.options.alwaysShowControls){c.killControlsTimer("enter");c.showControls();c.startControlsTimer(2500)}}).bind("mousemove",function(){if(c.controlsEnabled){c.controlsAreVisible||c.showControls();c.options.alwaysShowControls||c.startControlsTimer(2500)}}).bind("mouseleave",function(){c.controlsEnabled&&!c.media.paused&&
5059+!c.options.alwaysShowControls&&c.startControlsTimer(1E3)})}d&&!c.options.alwaysShowControls&&c.hideControls();c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(h){if(c.options.videoHeight<=0&&c.domNode.getAttribute("height")===null&&!isNaN(h.target.videoHeight)){c.setPlayerSize(h.target.videoWidth,h.target.videoHeight);c.setControlsSize();c.media.setVideoSize(h.target.videoWidth,h.target.videoHeight)}},false)}a.addEventListener("play",function(){for(var h=0,o=mejs.players.length;h<
5060+o;h++){var n=mejs.players[h];n.id!=c.id&&c.options.pauseOtherPlayers&&!n.paused&&!n.ended&&n.pause();n.hasFocus=false}c.hasFocus=true},false);c.media.addEventListener("ended",function(){try{c.media.setCurrentTime(0)}catch(h){}c.media.pause();c.setProgressRail&&c.setProgressRail();c.setCurrentRail&&c.setCurrentRail();if(c.options.loop)c.media.play();else!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()},false);c.media.addEventListener("loadedmetadata",function(){c.updateDuration&&
5061+c.updateDuration();c.updateCurrent&&c.updateCurrent();if(!c.isFullScreen){c.setPlayerSize(c.width,c.height);c.setControlsSize()}},false);setTimeout(function(){c.setPlayerSize(c.width,c.height);c.setControlsSize()},50);f(window).resize(function(){c.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||c.setPlayerSize(c.width,c.height);c.setControlsSize()});c.media.pluginType=="youtube"&&c.container.find(".mejs-overlay-play").hide()}if(d&&a.pluginType=="native"){a.load();
5062+a.play()}if(c.options.success)typeof c.options.success=="string"?window[c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)}},handleError:function(a){this.controls.hide();this.options.error&&this.options.error(a)},setPlayerSize:function(a,b){if(typeof a!="undefined")this.width=a;if(typeof b!="undefined")this.height=b;if(this.height.toString().indexOf("%")>0||this.$node.css("max-width")==="100%"||this.$node[0].currentStyle&&this.$node[0].currentStyle.maxWidth==="100%"){var c=
5063+this.isVideo?this.media.videoWidth&&this.media.videoWidth>0?this.media.videoWidth:this.options.defaultVideoWidth:this.options.defaultAudioWidth,e=this.isVideo?this.media.videoHeight&&this.media.videoHeight>0?this.media.videoHeight:this.options.defaultVideoHeight:this.options.defaultAudioHeight,d=this.container.parent().closest(":visible").width();c=parseInt(d*e/c,10);if(this.container.parent()[0].tagName.toLowerCase()==="body"){d=f(window).width();c=f(window).height()}if(c!=0){this.container.width(d).height(c);
5064+this.$media.width("100%").height("100%");this.container.find("object, embed, iframe").width("100%").height("100%");this.isVideo&&this.media.setVideoSize&&this.media.setVideoSize(d,c);this.layers.children(".mejs-layer").width("100%").height("100%")}}else{this.container.width(this.width).height(this.height);this.layers.children(".mejs-layer").width(this.width).height(this.height)}},setControlsSize:function(){var a=0,b=0,c=this.controls.find(".mejs-time-rail"),e=this.controls.find(".mejs-time-total");
5065+this.controls.find(".mejs-time-current");this.controls.find(".mejs-time-loaded");var d=c.siblings();if(this.options&&!this.options.autosizeProgress)b=parseInt(c.css("width"));if(b===0||!b){d.each(function(){if(f(this).css("position")!="absolute")a+=f(this).outerWidth(true)});b=this.controls.width()-a-(c.outerWidth(true)-c.width())}c.width(b);e.width(b-(e.outerWidth(true)-e.width()));this.setProgressRail&&this.setProgressRail();this.setCurrentRail&&this.setCurrentRail()},buildposter:function(a,b,c,
5066+e){var d=f('<div class="mejs-poster mejs-layer"></div>').appendTo(c);b=a.$media.attr("poster");if(a.options.poster!=="")b=a.options.poster;b!==""&&b!=null?this.setPoster(b):d.hide();e.addEventListener("play",function(){d.hide()},false)},setPoster:function(a){var b=this.container.find(".mejs-poster"),c=b.find("img");if(c.length==0)c=f('<img width="100%" height="100%" />').appendTo(b);c.attr("src",a)},buildoverlays:function(a,b,c,e){if(a.isVideo){var d=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(c),
5067+g=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(c),k=f('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(c).click(function(){e.paused?e.play():e.pause()});e.addEventListener("play",function(){k.hide();d.hide();b.find(".mejs-time-buffering").hide();g.hide()},false);e.addEventListener("playing",function(){k.hide();d.hide();b.find(".mejs-time-buffering").hide();g.hide()},false);e.addEventListener("seeking",
5068+function(){d.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("seeked",function(){d.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||k.show()},false);e.addEventListener("waiting",function(){d.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("loadeddata",function(){d.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("canplay",function(){d.hide();b.find(".mejs-time-buffering").hide()},
5069+false);e.addEventListener("error",function(){d.hide();b.find(".mejs-time-buffering").hide();g.show();g.find("mejs-overlay-error").html("Error loading this resource")},false)}},buildkeyboard:function(a,b,c,e){f(document).keydown(function(d){if(a.hasFocus&&a.options.enableKeyboard)for(var g=0,k=a.options.keyActions.length;g<k;g++)for(var h=a.options.keyActions[g],o=0,n=h.keys.length;o<n;o++)if(d.keyCode==h.keys[o]){d.preventDefault();h.action(a,e,d.keyCode);return false}return true});f(document).click(function(d){if(f(d.target).closest(".mejs-container").length==
5070+0)a.hasFocus=false})},findTracks:function(){var a=this,b=a.$media.find("track");a.tracks=[];b.each(function(c,e){e=f(e);a.tracks.push({srclang:e.attr("srclang").toLowerCase(),src:e.attr("src"),kind:e.attr("kind"),label:e.attr("label")||"",entries:[],isLoaded:false})})},changeSkin:function(a){this.container[0].className="mejs-container "+a;this.setPlayerSize(this.width,this.height);this.setControlsSize()},play:function(){this.media.play()},pause:function(){this.media.pause()},load:function(){this.media.load()},
5071+setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){this.media.setSrc(a)},remove:function(){if(this.media.pluginType==="flash")this.media.remove();else this.media.pluginType==="native"&&this.$media.prop("controls",true);this.isDynamic||this.$node.insertBefore(this.container);this.container.remove()}};
5072+if(typeof jQuery!="undefined")jQuery.fn.mediaelementplayer=function(a){return this.each(function(){new mejs.MediaElementPlayer(this,a)})};f(document).ready(function(){f(".mejs-player").mediaelementplayer()});window.MediaElementPlayer=mejs.MediaElementPlayer})(mejs.$);
5073+(function(f){f.extend(mejs.MepDefaults,{playpauseText:"Play/Pause"});f.extend(MediaElementPlayer.prototype,{buildplaypause:function(a,b,c,e){var d=f('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+this.id+'" title="'+this.options.playpauseText+'"></button></div>').appendTo(b).click(function(g){g.preventDefault();e.paused?e.play():e.pause();return false});e.addEventListener("play",function(){d.removeClass("mejs-play").addClass("mejs-pause")},false);
5074+e.addEventListener("playing",function(){d.removeClass("mejs-play").addClass("mejs-pause")},false);e.addEventListener("pause",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false);e.addEventListener("paused",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false)}})})(mejs.$);
5075+(function(f){f.extend(mejs.MepDefaults,{stopText:"Stop"});f.extend(MediaElementPlayer.prototype,{buildstop:function(a,b,c,e){f('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+this.id+'" title="'+this.options.stopText+'"></button></div>').appendTo(b).click(function(){e.paused||e.pause();if(e.currentTime>0){e.setCurrentTime(0);e.pause();b.find(".mejs-time-current").width("0px");b.find(".mejs-time-handle").css("left","0px");b.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0));
5076+b.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0));c.find(".mejs-poster").show()}})}})})(mejs.$);
5077+(function(f){f.extend(MediaElementPlayer.prototype,{buildprogress:function(a,b,c,e){f('<div class="mejs-time-rail"><span class="mejs-time-total"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span></span></div>').appendTo(b);b.find(".mejs-time-buffering").hide();var d=
5078+b.find(".mejs-time-total");c=b.find(".mejs-time-loaded");var g=b.find(".mejs-time-current"),k=b.find(".mejs-time-handle"),h=b.find(".mejs-time-float"),o=b.find(".mejs-time-float-current"),n=function(l){l=l.pageX;var q=d.offset(),i=d.outerWidth(true),j=0;j=0;var m=l-q.left;if(l>q.left&&l<=i+q.left&&e.duration){j=(l-q.left)/i;j=j<=0.02?0:j*e.duration;p&&e.setCurrentTime(j);if(!mejs.MediaFeatures.hasTouch){h.css("left",m);o.html(mejs.Utility.secondsToTimeCode(j));h.show()}}},p=false;d.bind("mousedown",
5079+function(l){if(l.which===1){p=true;n(l);f(document).bind("mousemove.dur",function(q){n(q)}).bind("mouseup.dur",function(){p=false;h.hide();f(document).unbind(".dur")});return false}}).bind("mouseenter",function(){f(document).bind("mousemove.dur",function(l){n(l)});mejs.MediaFeatures.hasTouch||h.show()}).bind("mouseleave",function(){if(!p){f(document).unbind(".dur");h.hide()}});e.addEventListener("progress",function(l){a.setProgressRail(l);a.setCurrentRail(l)},false);e.addEventListener("timeupdate",
5080+function(l){a.setProgressRail(l);a.setCurrentRail(l)},false);this.loaded=c;this.total=d;this.current=g;this.handle=k},setProgressRail:function(a){var b=a!=undefined?a.target:this.media,c=null;if(b&&b.buffered&&b.buffered.length>0&&b.buffered.end&&b.duration)c=b.buffered.end(0)/b.duration;else if(b&&b.bytesTotal!=undefined&&b.bytesTotal>0&&b.bufferedBytes!=undefined)c=b.bufferedBytes/b.bytesTotal;else if(a&&a.lengthComputable&&a.total!=0)c=a.loaded/a.total;if(c!==null){c=Math.min(1,Math.max(0,c));
5081+this.loaded&&this.total&&this.loaded.width(this.total.width()*c)}},setCurrentRail:function(){if(this.media.currentTime!=undefined&&this.media.duration)if(this.total&&this.handle){var a=this.total.width()*this.media.currentTime/this.media.duration,b=a-this.handle.outerWidth(true)/2;this.current.width(a);this.handle.css("left",b)}}})})(mejs.$);
5082+(function(f){f.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:" <span> | </span> "});f.extend(MediaElementPlayer.prototype,{buildcurrent:function(a,b,c,e){f('<div class="mejs-time"><span class="mejs-currenttime">'+(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(b);this.currenttime=this.controls.find(".mejs-currenttime");e.addEventListener("timeupdate",function(){a.updateCurrent()},false)},buildduration:function(a,
5083+b,c,e){if(b.children().last().find(".mejs-currenttime").length>0)f(this.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span>").appendTo(b.find(".mejs-time"));else{b.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container");
5084+f('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span></div>").appendTo(b)}this.durationD=this.controls.find(".mejs-duration");e.addEventListener("timeupdate",function(){a.updateDuration()},
5085+false)},updateCurrent:function(){if(this.currenttime)this.currenttime.html(mejs.Utility.secondsToTimeCode(this.media.currentTime,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))},updateDuration:function(){if(this.media.duration&&this.durationD)this.durationD.html(mejs.Utility.secondsToTimeCode(this.media.duration,this.options.alwaysShowHours,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))}})})(mejs.$);
5086+(function(f){f.extend(mejs.MepDefaults,{muteText:"Mute Toggle",hideVolumeOnTouchDevices:true,audioVolume:"horizontal",videoVolume:"vertical"});f.extend(MediaElementPlayer.prototype,{buildvolume:function(a,b,c,e){if(!(mejs.MediaFeatures.hasTouch&&this.options.hideVolumeOnTouchDevices)){var d=this.isVideo?this.options.videoVolume:this.options.audioVolume,g=d=="horizontal"?f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+this.id+'" title="'+this.options.muteText+
5087+'"></button></div><div class="mejs-horizontal-volume-slider"><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></div>').appendTo(b):f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+this.id+'" title="'+this.options.muteText+'"></button><div class="mejs-volume-slider"><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></div></div>').appendTo(b),
5088+k=this.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),h=this.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),o=this.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),n=this.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),p=function(j,m){if(!k.is(":visible")&&typeof m=="undefined"){k.show();p(j,true);k.hide()}else{j=Math.max(0,j);j=Math.min(j,1);j==0?g.removeClass("mejs-mute").addClass("mejs-unmute"):g.removeClass("mejs-unmute").addClass("mejs-mute");
5089+if(d=="vertical"){var r=h.height(),s=h.position(),t=r-r*j;n.css("top",Math.round(s.top+t-n.height()/2));o.height(r-t);o.css("top",s.top+t)}else{r=h.width();s=h.position();r=r*j;n.css("left",Math.round(s.left+r-n.width()/2));o.width(Math.round(r))}}},l=function(j){var m=null,r=h.offset();if(d=="vertical"){m=h.height();parseInt(h.css("top").replace(/px/,""),10);m=(m-(j.pageY-r.top))/m;if(r.top==0||r.left==0)return}else{m=h.width();m=(j.pageX-r.left)/m}m=Math.max(0,m);m=Math.min(m,1);p(m);m==0?e.setMuted(true):
5090+e.setMuted(false);e.setVolume(m)},q=false,i=false;g.hover(function(){k.show();i=true},function(){i=false;!q&&d=="vertical"&&k.hide()});k.bind("mouseover",function(){i=true}).bind("mousedown",function(j){l(j);f(document).bind("mousemove.vol",function(m){l(m)}).bind("mouseup.vol",function(){q=false;f(document).unbind(".vol");!i&&d=="vertical"&&k.hide()});q=true;return false});g.find("button").click(function(){e.setMuted(!e.muted)});e.addEventListener("volumechange",function(){if(!q)if(e.muted){p(0);
5091+g.removeClass("mejs-mute").addClass("mejs-unmute")}else{p(e.volume);g.removeClass("mejs-unmute").addClass("mejs-mute")}},false);if(this.container.is(":visible")){p(a.options.startVolume);e.pluginType==="native"&&e.setVolume(a.options.startVolume)}}}})})(mejs.$);
5092+(function(f){f.extend(mejs.MepDefaults,{usePluginFullScreen:true,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")});f.extend(MediaElementPlayer.prototype,{isFullScreen:false,isNativeFullScreen:false,docStyleOverflow:null,isInIframe:false,buildfullscreen:function(a,b,c,e){if(a.isVideo){a.isInIframe=window.location!=window.parent.location;if(mejs.MediaFeatures.hasTrueNativeFullScreen){c=null;c=mejs.MediaFeatures.hasMozNativeFullScreen?f(document):a.container;c.bind(mejs.MediaFeatures.fullScreenEventName,
5093+function(){if(mejs.MediaFeatures.isFullScreen()){a.isNativeFullScreen=true;a.setControlsSize()}else{a.isNativeFullScreen=false;a.exitFullScreen()}})}var d=this,g=f('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+d.id+'" title="'+d.options.fullscreenText+'"></button></div>').appendTo(b);if(d.media.pluginType==="native"||!d.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)g.click(function(){mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||
5094+a.isFullScreen?a.exitFullScreen():a.enterFullScreen()});else{var k=null;if(function(){var i=document.createElement("x"),j=document.documentElement,m=window.getComputedStyle;if(!("pointerEvents"in i.style))return false;i.style.pointerEvents="auto";i.style.pointerEvents="x";j.appendChild(i);m=m&&m(i,"").pointerEvents==="auto";j.removeChild(i);return!!m}()&&!mejs.MediaFeatures.isOpera){var h=false,o=function(){if(h){n.hide();p.hide();l.hide();g.css("pointer-events","");d.controls.css("pointer-events",
5095+"");h=false}},n=f('<div class="mejs-fullscreen-hover" />').appendTo(d.container).mouseover(o),p=f('<div class="mejs-fullscreen-hover"  />').appendTo(d.container).mouseover(o),l=f('<div class="mejs-fullscreen-hover"  />').appendTo(d.container).mouseover(o),q=function(){var i={position:"absolute",top:0,left:0};n.css(i);p.css(i);l.css(i);n.width(d.container.width()).height(d.container.height()-d.controls.height());i=g.offset().left-d.container.offset().left;fullScreenBtnWidth=g.outerWidth(true);p.width(i).height(d.controls.height()).css({top:d.container.height()-
5096+d.controls.height()});l.width(d.container.width()-i-fullScreenBtnWidth).height(d.controls.height()).css({top:d.container.height()-d.controls.height(),left:i+fullScreenBtnWidth})};f(document).resize(function(){q()});g.mouseover(function(){if(!d.isFullScreen){var i=g.offset(),j=a.container.offset();e.positionFullscreenButton(i.left-j.left,i.top-j.top,false);g.css("pointer-events","none");d.controls.css("pointer-events","none");n.show();l.show();p.show();q();h=true}});e.addEventListener("fullscreenchange",
5097+function(){o()})}else g.mouseover(function(){if(k!==null){clearTimeout(k);delete k}var i=g.offset(),j=a.container.offset();e.positionFullscreenButton(i.left-j.left,i.top-j.top,true)}).mouseout(function(){if(k!==null){clearTimeout(k);delete k}k=setTimeout(function(){e.hideFullscreenButton()},1500)})}a.fullscreenBtn=g;f(document).bind("keydown",function(i){if((mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||d.isFullScreen)&&i.keyCode==27)a.exitFullScreen()})}},enterFullScreen:function(){var a=
5098+this;if(!(a.media.pluginType!=="native"&&(mejs.MediaFeatures.isFirefox||a.options.usePluginFullScreen))){docStyleOverflow=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";normalHeight=a.container.height();normalWidth=a.container.width();if(a.media.pluginType==="native")if(mejs.MediaFeatures.hasTrueNativeFullScreen){mejs.MediaFeatures.requestFullScreen(a.container[0]);a.isInIframe&&setTimeout(function c(){if(a.isNativeFullScreen)f(window).width()!==screen.width?
5099+a.exitFullScreen():setTimeout(c,500)},500)}else if(mejs.MediaFeatures.hasSemiNativeFullScreen){a.media.webkitEnterFullscreen();return}if(a.isInIframe){var b=a.options.newWindowCallback(this);if(b!=="")if(mejs.MediaFeatures.hasTrueNativeFullScreen)setTimeout(function(){if(!a.isNativeFullScreen){a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no")}},250);else{a.pause();window.open(b,a.id,"top=0,left=0,width="+
5100+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");return}}a.container.addClass("mejs-container-fullscreen").width("100%").height("100%");setTimeout(function(){a.container.css({width:"100%",height:"100%"});a.setControlsSize()},500);if(a.pluginType==="native")a.$media.width("100%").height("100%");else{a.container.find("object, embed, iframe").width("100%").height("100%");a.media.setVideoSize(f(window).width(),f(window).height())}a.layers.children("div").width("100%").height("100%");
5101+a.fullscreenBtn&&a.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen");a.setControlsSize();a.isFullScreen=true}},exitFullScreen:function(){if(this.media.pluginType!=="native"&&mejs.MediaFeatures.isFirefox)this.media.setFullscreen(false);else{if(mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||this.isFullScreen))mejs.MediaFeatures.cancelFullScreen();document.documentElement.style.overflow=docStyleOverflow;this.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight);
5102+if(this.pluginType==="native")this.$media.width(normalWidth).height(normalHeight);else{this.container.find("object embed").width(normalWidth).height(normalHeight);this.media.setVideoSize(normalWidth,normalHeight)}this.layers.children("div").width(normalWidth).height(normalHeight);this.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen");this.setControlsSize();this.isFullScreen=false}}})})(mejs.$);
5103+(function(f){f.extend(mejs.MepDefaults,{startLanguage:"",tracksText:"Captions/Subtitles"});f.extend(MediaElementPlayer.prototype,{hasChapters:false,buildtracks:function(a,b,c,e){if(a.isVideo)if(a.tracks.length!=0){var d;a.chapters=f('<div class="mejs-chapters mejs-layer"></div>').prependTo(c).hide();a.captions=f('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position"><span class="mejs-captions-text"></span></div></div>').prependTo(c).hide();a.captionsText=a.captions.find(".mejs-captions-text");
5104+a.captionsButton=f('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+this.id+'" title="'+this.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+a.id+'_captions" id="'+a.id+'_captions_none" value="none" checked="checked" /><label for="'+a.id+'_captions_none">None</label></li></ul></div></div>').appendTo(b).hover(function(){f(this).find(".mejs-captions-selector").css("visibility","visible")},function(){f(this).find(".mejs-captions-selector").css("visibility",
5105+"hidden")}).delegate("input[type=radio]","click",function(){lang=this.value;if(lang=="none")a.selectedTrack=null;else for(d=0;d<a.tracks.length;d++)if(a.tracks[d].srclang==lang){a.selectedTrack=a.tracks[d];a.captions.attr("lang",a.selectedTrack.srclang);a.displayCaptions();break}});a.options.alwaysShowControls?a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):a.container.bind("mouseenter",function(){a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("mouseleave",
5106+function(){e.paused||a.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")});a.trackToLoad=-1;a.selectedTrack=null;a.isLoadingTrack=false;for(d=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&a.addTrackButton(a.tracks[d].srclang,a.tracks[d].label);a.loadNextTrack();e.addEventListener("timeupdate",function(){a.displayCaptions()},false);e.addEventListener("loadedmetadata",function(){a.displayChapters()},false);a.container.hover(function(){if(a.hasChapters){a.chapters.css("visibility",
5107+"visible");a.chapters.fadeIn(200).height(a.chapters.find(".mejs-chapter").outerHeight())}},function(){a.hasChapters&&!e.paused&&a.chapters.fadeOut(200,function(){f(this).css("visibility","hidden");f(this).css("display","block")})});a.node.getAttribute("autoplay")!==null&&a.chapters.css("visibility","hidden")}},loadNextTrack:function(){this.trackToLoad++;if(this.trackToLoad<this.tracks.length){this.isLoadingTrack=true;this.loadTrack(this.trackToLoad)}else this.isLoadingTrack=false},loadTrack:function(a){var b=
5108+this,c=b.tracks[a];f.ajax({url:c.src,dataType:"text",success:function(e){c.entries=typeof e=="string"&&/<tt\s+xml/ig.exec(e)?mejs.TrackFormatParser.dfxp.parse(e):mejs.TrackFormatParser.webvvt.parse(e);c.isLoaded=true;b.enableTrackButton(c.srclang,c.label);b.loadNextTrack();c.kind=="chapters"&&b.media.addEventListener("play",function(){b.media.duration>0&&b.displayChapters(c)},false)},error:function(){b.loadNextTrack()}})},enableTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("input[value="+
5109+a+"]").prop("disabled",false).siblings("label").html(b);this.options.startLanguage==a&&f("#"+this.id+"_captions_"+a).click();this.adjustLanguageBox()},addTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("ul").append(f('<li><input type="radio" name="'+this.id+'_captions" id="'+this.id+"_captions_"+a+'" value="'+a+'" disabled="disabled" /><label for="'+this.id+"_captions_"+a+'">'+b+" (loading)</label></li>"));this.adjustLanguageBox();this.container.find(".mejs-captions-translations option[value="+
5110+a+"]").remove()},adjustLanguageBox:function(){this.captionsButton.find(".mejs-captions-selector").height(this.captionsButton.find(".mejs-captions-selector ul").outerHeight(true)+this.captionsButton.find(".mejs-captions-translations").outerHeight(true))},displayCaptions:function(){if(typeof this.tracks!="undefined"){var a,b=this.selectedTrack;if(b!=null&&b.isLoaded)for(a=0;a<b.entries.times.length;a++)if(this.media.currentTime>=b.entries.times[a].start&&this.media.currentTime<=b.entries.times[a].stop){this.captionsText.html(b.entries.text[a]);
5111+this.captions.show().height(0);return}this.captions.hide()}},displayChapters:function(){var a;for(a=0;a<this.tracks.length;a++)if(this.tracks[a].kind=="chapters"&&this.tracks[a].isLoaded){this.drawChapters(this.tracks[a]);this.hasChapters=true;break}},drawChapters:function(a){var b=this,c,e,d=e=0;b.chapters.empty();for(c=0;c<a.entries.times.length;c++){e=a.entries.times[c].stop-a.entries.times[c].start;e=Math.floor(e/b.media.duration*100);if(e+d>100||c==a.entries.times.length-1&&e+d<100)e=100-d;b.chapters.append(f('<div class="mejs-chapter" rel="'+
5112+a.entries.times[c].start+'" style="left: '+d.toString()+"%;width: "+e.toString()+'%;"><div class="mejs-chapter-block'+(c==a.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+a.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(a.entries.times[c].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(a.entries.times[c].stop)+"</span></div></div>"));d+=e}b.chapters.find("div.mejs-chapter").click(function(){b.media.setCurrentTime(parseFloat(f(this).attr("rel")));
5113+b.media.paused&&b.media.play()});b.chapters.show()}});mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",tl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",
5114+ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}};mejs.TrackFormatParser={webvvt:{pattern_identifier:/^([a-zA-z]+-)?[0-9]+$/,pattern_timecode:/^([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
5115+parse:function(a){var b=0;a=mejs.TrackFormatParser.split2(a,/\r?\n/);for(var c={text:[],times:[]},e,d;b<a.length;b++)if(this.pattern_identifier.exec(a[b])){b++;if((e=this.pattern_timecode.exec(a[b]))&&b<a.length){b++;d=a[b];for(b++;a[b]!==""&&b<a.length;){d=d+"\n"+a[b];b++}d=f.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");c.text.push(d);c.times.push({start:mejs.Utility.convertSMPTEtoSeconds(e[1])==0?0.2:mejs.Utility.convertSMPTEtoSeconds(e[1]),
5116+stop:mejs.Utility.convertSMPTEtoSeconds(e[3]),settings:e[5]})}}return c}},dfxp:{parse:function(a){a=f(a).filter("tt");var b=0;b=a.children("div").eq(0);var c=b.find("p");b=a.find("#"+b.attr("style"));var e,d;a={text:[],times:[]};if(b.length){d=b.removeAttr("id").get(0).attributes;if(d.length){e={};for(b=0;b<d.length;b++)e[d[b].name.split(":")[1]]=d[b].value}}for(b=0;b<c.length;b++){var g;d={start:null,stop:null,style:null};if(c.eq(b).attr("begin"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("begin"));
5117+if(!d.start&&c.eq(b-1).attr("end"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b-1).attr("end"));if(c.eq(b).attr("end"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("end"));if(!d.stop&&c.eq(b+1).attr("begin"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b+1).attr("begin"));if(e){g="";for(var k in e)g+=k+":"+e[k]+";"}if(g)d.style=g;if(d.start==0)d.start=0.2;a.times.push(d);d=f.trim(c.eq(b).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,
5118+"<a href='$1' target='_blank'>$1</a>");a.text.push(d);if(a.times.start==0)a.times.start=2}return a}},split2:function(a,b){return a.split(b)}};if("x\n\ny".split(/\n/gi).length!=3)mejs.TrackFormatParser.split2=function(a,b){var c=[],e="",d;for(d=0;d<a.length;d++){e+=a.substring(d,d+1);if(b.test(e)){c.push(e.replace(b,""));e=""}}c.push(e);return c}})(mejs.$);
5119+(function(f){f.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){if(typeof a.enterFullScreen=="undefined")return null;return a.isFullScreen?"Turn off Fullscreen":"Go Fullscreen"},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return a.media.muted?"Unmute":"Mute"},click:function(a){a.media.muted?a.setMuted(false):a.setMuted(true)}},{isSeparator:true},{render:function(){return"Download Video"},click:function(a){window.location.href=a.media.currentSrc}}]});
5120+f.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(a){a.contextMenu=f('<div class="mejs-contextmenu"></div>').appendTo(f("body")).hide();a.container.bind("contextmenu",function(b){if(a.isContextMenuEnabled){b.preventDefault();a.renderContextMenu(b.clientX-1,b.clientY-1);return false}});a.container.bind("click",function(){a.contextMenu.hide()});a.contextMenu.bind("mouseleave",function(){a.startContextMenuTimer()})},isContextMenuEnabled:true,enableContextMenu:function(){this.isContextMenuEnabled=
5121+true},disableContextMenu:function(){this.isContextMenuEnabled=false},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer();a.contextMenuTimer=setTimeout(function(){a.hideContextMenu();a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;if(a!=null){clearTimeout(a);delete a}},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(a,b){for(var c=this,e="",d=c.options.contextMenuItems,g=0,k=d.length;g<
5122+k;g++)if(d[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var h=d[g].render(c);if(h!=null)e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+Math.random()*1E6+'">'+h+"</div>"}c.contextMenu.empty().append(f(e)).css({top:b,left:a}).show();c.contextMenu.find(".mejs-contextmenu-item").each(function(){var o=f(this),n=parseInt(o.data("itemindex"),10),p=c.options.contextMenuItems[n];typeof p.show!="undefined"&&p.show(o,c);o.click(function(){typeof p.click!=
5123+"undefined"&&p.click(c);c.contextMenu.hide()})});setTimeout(function(){c.killControlsTimer("rev3")},100)}})})(mejs.$);
5124+(function(f){f.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")});f.extend(MediaElementPlayer.prototype,{buildpostroll:function(a,b,c){var e=this.container.find('link[rel="postroll"]').attr("href");if(typeof e!=="undefined"){a.postroll=f('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+this.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(c).hide();this.media.addEventListener("ended",
5125+function(){f.ajax({dataType:"html",url:e,success:function(d){c.find(".mejs-postroll-layer-content").html(d)}});a.postroll.show()},false)}}})})(mejs.$);
5126+
5127Index: wp-includes/js/mediaelement/mediaelementplayer.css
5128===================================================================
5129--- wp-includes/js/mediaelement/mediaelementplayer.css  (revision 0)
5130+++ wp-includes/js/mediaelement/mediaelementplayer.css  (working copy)
5131@@ -0,0 +1,839 @@
5132+.mejs-container {
5133+       position: relative;
5134+       background: #000;
5135+       font-family: Helvetica, Arial;
5136+       text-align: left;
5137+       vertical-align: top;
5138+       text-indent: 0;
5139+}
5140+
5141+.me-plugin {
5142+       position: absolute;
5143+}
5144+
5145+.mejs-embed, .mejs-embed body {
5146+       width: 100%;
5147+       height: 100%;
5148+       margin: 0;
5149+       padding: 0;
5150+       background: #000;
5151+       overflow: hidden;
5152+}
5153+
5154+.mejs-container-fullscreen {
5155+       position: fixed;
5156+       left: 0;
5157+       top: 0;
5158+       right: 0;
5159+       bottom: 0;
5160+       overflow: hidden;
5161+       z-index: 1000;
5162+}
5163+.mejs-container-fullscreen .mejs-mediaelement,
5164+.mejs-container-fullscreen video {
5165+       width: 100%;
5166+       height: 100%;
5167+}
5168+
5169+/* Start: LAYERS */
5170+.mejs-background {
5171+       position: absolute;
5172+       top: 0;
5173+       left: 0;
5174+}
5175+.mejs-mediaelement {
5176+       position: absolute;
5177+       top: 0;
5178+       left: 0;
5179+       width: 100%;
5180+       height: 100%;
5181+}
5182+.mejs-poster {
5183+       position: absolute;
5184+       top: 0;
5185+       left: 0;
5186+}
5187+.mejs-poster img {
5188+       border: 0;
5189+       padding: 0;
5190+       border: 0;
5191+       display: block;
5192+}
5193+.mejs-overlay {
5194+       position: absolute;
5195+       top: 0;
5196+       left: 0;
5197+}
5198+.mejs-overlay-play {
5199+       cursor: pointer;
5200+}
5201+.mejs-overlay-button {
5202+       position: absolute;
5203+       top: 50%;
5204+       left: 50%;
5205+       width: 100px;
5206+       height: 100px;
5207+       margin: -50px 0 0 -50px;
5208+       background: url(bigplay.svg) no-repeat;
5209+}
5210+.no-svg .mejs-overlay-button {
5211+       background-image: url(bigplay.png);
5212+}
5213+.mejs-overlay:hover .mejs-overlay-button {
5214+       background-position: 0 -100px ;
5215+}
5216+.mejs-overlay-loading {
5217+       position: absolute;
5218+       top: 50%;
5219+       left: 50%;
5220+       width: 80px;
5221+       height: 80px;
5222+       margin: -40px 0 0 -40px;
5223+       background: #333;
5224+       background: url(background.png);
5225+       background: rgba(0, 0, 0, 0.9);
5226+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.9)), to(rgba(0,0,0,0.9)));
5227+       background: -webkit-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
5228+       background: -moz-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
5229+       background: -o-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
5230+       background: -ms-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
5231+       background: linear-gradient(rgba(50,50,50,0.9), rgba(0,0,0,0.9));
5232+}
5233+.mejs-overlay-loading span {
5234+       display: block;
5235+       width: 80px;
5236+       height: 80px;
5237+       background: transparent url(loading.gif) 50% 50% no-repeat;
5238+}
5239+
5240+/* End: LAYERS */
5241+
5242+/* Start: CONTROL BAR */
5243+.mejs-container .mejs-controls {
5244+       position: absolute;
5245+       background: none;
5246+       list-style-type: none;
5247+       margin: 0;
5248+       padding: 0;
5249+       bottom: 0;
5250+       left: 0;
5251+       background: url(background.png);
5252+       background: rgba(0, 0, 0, 0.7);
5253+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
5254+       background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5255+       background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5256+       background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5257+       background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));     
5258+       background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));       
5259+       height: 30px;
5260+       width: 100%;
5261+}
5262+.mejs-container .mejs-controls  div {
5263+       list-style-type: none;
5264+       background-image: none;
5265+       display: block;
5266+       float: left;
5267+       margin: 0;
5268+       padding: 0;
5269+       width: 26px;
5270+       height: 26px;
5271+       font-size: 11px;
5272+       line-height: 11px;
5273+       background: 0;
5274+       font-family: Helvetica, Arial;
5275+       border: 0;
5276+}
5277+
5278+.mejs-controls .mejs-button button {
5279+       cursor: pointer;
5280+       display: block;
5281+       font-size: 0;
5282+       line-height: 0;
5283+       text-decoration: none;
5284+       margin: 7px 5px;
5285+       padding: 0;
5286+       position: absolute;
5287+       height: 16px;
5288+       width: 16px;
5289+       border: 0;
5290+       background: transparent url(controls.svg) no-repeat;
5291+}
5292+
5293+.no-svg .mejs-controls .mejs-button button {
5294+       background-image: url(controls.png);
5295+}
5296+
5297+/* :focus for accessibility */
5298+.mejs-controls .mejs-button button:focus {
5299+       outline: solid 1px yellow;
5300+}
5301+
5302+/* End: CONTROL BAR */
5303+
5304+/* Start: Time (current / duration) */
5305+.mejs-container .mejs-controls .mejs-time {
5306+       color: #fff;
5307+       display: block;
5308+       height: 17px;
5309+       width: auto;
5310+       padding: 8px 3px 0 3px ;
5311+       overflow: hidden;
5312+       text-align: center;
5313+       padding: auto 4px;
5314+       -moz-box-sizing: content-box;
5315+       -webkit-box-sizing: content-box;
5316+       box-sizing: content-box;
5317+}
5318+.mejs-container .mejs-controls .mejs-time span {
5319+       font-size: 11px;
5320+       color: #fff;
5321+       line-height: 12px;
5322+       display: block;
5323+       float: left;
5324+       margin: 1px 2px 0 0;
5325+       width: auto;
5326+}
5327+/* End: Time (current / duration) */
5328+
5329+
5330+/* Start: Play/pause */
5331+.mejs-controls .mejs-play button {
5332+       background-position: 0 0;
5333+}
5334+.mejs-controls .mejs-pause button {
5335+       background-position: 0 -16px;
5336+}
5337+/* End: Play/pause */
5338+
5339+
5340+/* Stop */
5341+.mejs-controls .mejs-stop button {
5342+       background-position: -112px 0;
5343+}
5344+/* End: Play/pause */
5345+
5346+/* Start: Progress bar */
5347+.mejs-controls div.mejs-time-rail {
5348+       width: 200px;
5349+       padding-top: 5px;
5350+}
5351+.mejs-controls .mejs-time-rail span {
5352+       display: block;
5353+       position: absolute;
5354+       width: 180px;
5355+       height: 10px;
5356+       -webkit-border-radius: 2px;
5357+       -moz-border-radius: 2px;
5358+       border-radius: 2px;
5359+       cursor: pointer;
5360+}
5361+.mejs-controls .mejs-time-rail .mejs-time-total {
5362+       margin: 5px;
5363+       background: #333;
5364+       background: rgba(50,50,50,0.8);
5365+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
5366+       background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5367+       background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5368+       background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5369+       background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5370+       background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5371+}
5372+.mejs-controls .mejs-time-rail .mejs-time-buffering {
5373+       width: 100%;
5374+       background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5375+       background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5376+       background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5377+       background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5378+       background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5379+       background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5380+       -webkit-background-size: 15px 15px;
5381+       -moz-background-size: 15px 15px;
5382+       -o-background-size: 15px 15px;
5383+       background-size: 15px 15px;
5384+       -webkit-animation: buffering-stripes 2s linear infinite;
5385+       -moz-animation: buffering-stripes 2s linear infinite;
5386+       -ms-animation: buffering-stripes 2s linear infinite;
5387+       -o-animation: buffering-stripes 2s linear infinite;
5388+       animation: buffering-stripes 2s linear infinite;
5389+}
5390+
5391+@-webkit-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
5392+@-moz-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
5393+@-ms-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
5394+@-o-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
5395+@keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
5396+
5397+.mejs-controls .mejs-time-rail .mejs-time-loaded {
5398+       background: #3caac8;
5399+       background: rgba(60,170,200,0.8);
5400+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(44,124,145,0.8)), to(rgba(78,183,212,0.8)));
5401+       background: -webkit-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
5402+       background: -moz-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
5403+       background: -o-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
5404+       background: -ms-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
5405+       background: linear-gradient(rgba(44,124,145,0.8), rgba(78,183,212,0.8));
5406+       width: 0;
5407+}
5408+.mejs-controls .mejs-time-rail .mejs-time-current {
5409+       width: 0;
5410+       background: #fff;
5411+       background: rgba(255,255,255,0.8);
5412+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
5413+       background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5414+       background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5415+       background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5416+       background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5417+       background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5418+}
5419+
5420+.mejs-controls .mejs-time-rail .mejs-time-handle {
5421+       display: none;
5422+       position: absolute;
5423+       margin: 0;
5424+       width: 10px;
5425+       background: #fff;
5426+       -webkit-border-radius: 5px;
5427+       -moz-border-radius: 5px;
5428+       border-radius: 5px;
5429+       cursor: pointer;
5430+       border: solid 2px #333;
5431+       top: -2px;
5432+       text-align: center;
5433+}
5434+
5435+.mejs-controls .mejs-time-rail .mejs-time-float {
5436+       position: absolute;
5437+       display: none;
5438+       background: #eee;
5439+       width: 36px;
5440+       height: 17px;
5441+       border: solid 1px #333;
5442+       top: -26px;
5443+       margin-left: -18px;
5444+       text-align: center;
5445+       color: #111;
5446+}
5447+
5448+.mejs-controls .mejs-time-rail .mejs-time-float-current {
5449+       margin: 2px;
5450+       width: 30px;
5451+       display: block;
5452+       text-align: center;
5453+       left: 0;
5454+}
5455+.mejs-controls .mejs-time-rail .mejs-time-float-corner {
5456+       position: absolute;
5457+       display: block;
5458+       width: 0;
5459+       height: 0;
5460+       line-height: 0;
5461+       border: solid 5px #eee;
5462+       border-color: #eee transparent transparent transparent;
5463+       -webkit-border-radius: 0;
5464+       -moz-border-radius: 0;
5465+       border-radius: 0;
5466+       top: 15px;
5467+       left: 13px;
5468+
5469+}
5470+
5471+
5472+
5473+
5474+/*
5475+.mejs-controls .mejs-time-rail:hover .mejs-time-handle {
5476+       visibility:visible;
5477+}
5478+*/
5479+/* End: Progress bar */
5480+
5481+/* Start: Fullscreen */
5482+.mejs-controls .mejs-fullscreen-button button {
5483+       background-position: -32px 0;
5484+}
5485+.mejs-controls .mejs-unfullscreen button {
5486+       background-position: -32px -16px;
5487+}
5488+/* End: Fullscreen */
5489+
5490+
5491+/* Start: Mute/Volume */
5492+.mejs-controls .mejs-volume-button {
5493+}
5494+
5495+.mejs-controls .mejs-mute button {
5496+       background-position: -16px -16px;
5497+}
5498+
5499+.mejs-controls .mejs-unmute button {
5500+       background-position: -16px 0;
5501+}
5502+
5503+.mejs-controls .mejs-volume-button {
5504+       position: relative;
5505+}
5506+
5507+.mejs-controls .mejs-volume-button .mejs-volume-slider {
5508+       display: none;
5509+       height: 115px;
5510+       width: 25px;
5511+       background: url(background.png);
5512+       background: rgba(50, 50, 50, 0.7);
5513+       -webkit-border-radius: 0;
5514+       -moz-border-radius: 0;
5515+       border-radius: 0;
5516+       top: -115px;
5517+       left: 0;
5518+       z-index: 1;
5519+       position: absolute;
5520+       margin: 0;
5521+}
5522+.mejs-controls .mejs-volume-button:hover {
5523+       -webkit-border-radius: 0 0 4px 4px;
5524+       -moz-border-radius: 0 0 4px 4px;
5525+       border-radius: 0 0 4px 4px;
5526+}
5527+/*
5528+.mejs-controls .mejs-volume-button:hover .mejs-volume-slider {
5529+       display: block;
5530+}
5531+*/
5532+
5533+.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total {
5534+       position: absolute;
5535+       left: 11px;
5536+       top: 8px;
5537+       width: 2px;
5538+       height: 100px;
5539+       background: #ddd;
5540+       background: rgba(255, 255, 255, 0.5);
5541+       margin: 0;
5542+}
5543+
5544+.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current {
5545+       position: absolute;
5546+       left: 11px;
5547+       top: 8px;
5548+       width: 2px;
5549+       height: 100px;
5550+       background: #ddd;
5551+       background: rgba(255, 255, 255, 0.9);
5552+       margin: 0;
5553+}
5554+
5555+.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle {
5556+       position: absolute;
5557+       left: 4px;
5558+       top: -3px;
5559+       width: 16px;
5560+       height: 6px;
5561+       background: #ddd;
5562+       background: rgba(255, 255, 255, 0.9);
5563+       cursor: N-resize;
5564+       -webkit-border-radius: 1px;
5565+       -moz-border-radius: 1px;
5566+       border-radius: 1px;
5567+       margin: 0;
5568+}
5569+
5570+
5571+/* horizontal version */
5572+
5573+.mejs-controls div.mejs-horizontal-volume-slider {
5574+       height: 26px;
5575+       width: 60px;
5576+       position: relative;
5577+}
5578+
5579+.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
5580+       position: absolute;
5581+       left: 0;
5582+       top: 11px;
5583+       width: 50px;
5584+       height: 8px;
5585+       margin: 0;
5586+       padding: 0;
5587+       font-size: 1px;
5588+       
5589+       -webkit-border-radius: 2px;
5590+       -moz-border-radius: 2px;
5591+       border-radius: 2px;     
5592+
5593+       background: #333;
5594+       background: rgba(50,50,50,0.8);
5595+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
5596+       background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5597+       background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5598+       background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5599+       background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5600+       background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
5601+
5602+}
5603+
5604+.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
5605+       position: absolute;
5606+       left: 0;
5607+       top: 11px;
5608+       width: 50px;
5609+       height: 8px;
5610+       margin: 0;
5611+       padding: 0;
5612+       font-size: 1px;
5613+
5614+       -webkit-border-radius: 2px;
5615+       -moz-border-radius: 2px;
5616+       border-radius: 2px;
5617+
5618+       background: #fff;
5619+       background: rgba(255,255,255,0.8);
5620+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
5621+       background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5622+       background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5623+       background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5624+       background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5625+       background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
5626+
5627+}
5628+
5629+
5630+.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle {
5631+       display: none;
5632+}
5633+
5634+/* End: Mute/Volume */
5635+
5636+
5637+
5638+
5639+/* Start: TRACK (Captions and Chapters) */
5640+.mejs-controls .mejs-captions-button {
5641+       position: relative;
5642+}
5643+
5644+.mejs-controls .mejs-captions-button button {
5645+       background-position: -48px 0;
5646+}
5647+.mejs-controls .mejs-captions-button .mejs-captions-selector {
5648+       visibility: hidden;
5649+       position: absolute;
5650+       bottom: 26px;
5651+       right: -10px;
5652+       width: 130px;
5653+       height: 100px;
5654+       background: url(background.png);
5655+       background: rgba(50,50,50,0.7);
5656+       border: solid 1px transparent;
5657+       padding: 10px;
5658+       overflow: hidden;
5659+       -webkit-border-radius: 0;
5660+       -moz-border-radius: 0;
5661+       border-radius: 0;
5662+}
5663+/*
5664+.mejs-controls .mejs-captions-button:hover  .mejs-captions-selector {
5665+       visibility: visible;
5666+}
5667+*/
5668+
5669+.mejs-controls .mejs-captions-button .mejs-captions-selector ul {
5670+       margin: 0;
5671+       padding: 0;
5672+       display: block;
5673+       list-style-type: none !important;
5674+       overflow: hidden;
5675+}
5676+.mejs-controls .mejs-captions-button .mejs-captions-selector ul li {
5677+       margin: 0 0 6px 0;
5678+       padding: 0;
5679+       list-style-type: none !important;
5680+       display: block;
5681+       color: #fff;
5682+       overflow: hidden;
5683+}
5684+.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input {
5685+       clear: both;
5686+       float: left;
5687+       margin: 3px 3px 0 5px;
5688+}
5689+.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label {
5690+       width: 100px;
5691+       float: left;
5692+       padding: 4px 0 0 0;
5693+       line-height: 15px;
5694+       font-family: helvetica, arial;
5695+       font-size: 10px;
5696+}
5697+
5698+.mejs-controls .mejs-captions-button .mejs-captions-translations {
5699+       font-size: 10px;
5700+       margin: 0 0 5px 0;
5701+}
5702+
5703+
5704+.mejs-chapters {
5705+       position: absolute;
5706+       top: 0;
5707+       left: 0;
5708+       -xborder-right: solid 1px #fff;
5709+       width: 10000px;
5710+       z-index: 1;
5711+}
5712+.mejs-chapters .mejs-chapter {
5713+       position: absolute;
5714+       float: left;
5715+       background: #222;
5716+       background: rgba(0, 0, 0, 0.7);
5717+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
5718+       background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5719+       background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5720+       background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5721+       background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5722+       background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
5723+       filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232,endColorstr=#000000);         
5724+       overflow: hidden;
5725+       border: 0;
5726+}
5727+.mejs-chapters .mejs-chapter .mejs-chapter-block {
5728+       font-size: 11px;
5729+       color: #fff;
5730+       padding: 5px;
5731+       display: block;
5732+       border-right: solid 1px #333;
5733+       border-bottom: solid 1px #333;
5734+       cursor: pointer;
5735+}
5736+.mejs-chapters .mejs-chapter .mejs-chapter-block-last {
5737+       border-right: none;
5738+}
5739+
5740+.mejs-chapters .mejs-chapter .mejs-chapter-block:hover {
5741+       /*background: #333;*/
5742+       background: #666;
5743+       background: rgba(102,102,102, 0.7);
5744+       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(102,102,102,0.7)), to(rgba(50,50,50,0.6)));
5745+       background: -webkit-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
5746+       background: -moz-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
5747+       background: -o-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
5748+       background: -ms-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
5749+       background: linear-gradient(rgba(102,102,102,0.7), rgba(50,50,50,0.6));
5750+       filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666,endColorstr=#323232);         
5751+}
5752+.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title {
5753+       font-size: 12px;
5754+       font-weight: bold;
5755+       display: block;
5756+       white-space: nowrap;
5757+       text-overflow: ellipsis;
5758+       margin: 0 0 3px 0;
5759+       line-height: 12px;
5760+}
5761+.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan {
5762+       font-size: 12px;
5763+       line-height: 12px;
5764+       margin: 3px 0 4px 0;
5765+       display: block;
5766+       white-space: nowrap;
5767+       text-overflow: ellipsis;
5768+}
5769+
5770+
5771+.mejs-captions-layer {
5772+       position: absolute;
5773+       bottom: 0;
5774+       left: 0;
5775+       text-align:center;
5776+       /*font-weight: bold;*/
5777+       line-height: 22px;
5778+       font-size: 12px;
5779+       color: #fff;
5780+}
5781+.mejs-captions-layer  a {
5782+       color: #fff;
5783+       text-decoration: underline;
5784+}
5785+.mejs-captions-layer[lang=ar] {
5786+       font-size: 20px;
5787+       font-weight: normal;
5788+}
5789+
5790+.mejs-captions-position {
5791+       position: absolute;
5792+       width: 100%;
5793+       bottom: 15px;
5794+       left: 0;
5795+}
5796+
5797+.mejs-captions-position-hover {
5798+       bottom: 45px;
5799+}
5800+
5801+.mejs-captions-text {
5802+       padding: 3px 5px;
5803+       background: url(background.png);
5804+       background: rgba(20, 20, 20, 0.8);
5805+
5806+}
5807+/* End: TRACK (Captions and Chapters) */
5808+
5809+
5810+
5811+.mejs-clear {
5812+       clear: both;
5813+}
5814+
5815+/* Start: ERROR */
5816+.me-cannotplay {
5817+}
5818+.me-cannotplay a {
5819+       color: #fff;
5820+       font-weight: bold;
5821+}
5822+.me-cannotplay span {
5823+       padding: 15px;
5824+       display: block;
5825+}
5826+/* End: ERROR */
5827+
5828+
5829+/* Start: Loop */
5830+.mejs-controls .mejs-loop-off button {
5831+       background-position: -64px -16px;
5832+}
5833+.mejs-controls .mejs-loop-on button {
5834+       background-position: -64px 0;
5835+}
5836+/* End: Loop */
5837+
5838+/* Start: backlight */
5839+.mejs-controls .mejs-backlight-off button {
5840+       background-position: -80px -16px;
5841+}
5842+.mejs-controls .mejs-backlight-on button {
5843+       background-position: -80px 0;
5844+}
5845+/* End: backlight */
5846+
5847+
5848+/* Start: picture controls */
5849+.mejs-controls .mejs-picturecontrols-button {
5850+       background-position: -96px 0;
5851+}
5852+/* End: picture controls */
5853+
5854+
5855+/* context menu */
5856+.mejs-contextmenu {
5857+       position: absolute;
5858+       width: 150px;
5859+       padding: 10px;
5860+       border-radius: 4px;
5861+       top: 0;
5862+       left: 0;
5863+       background: #fff;
5864+       border: solid 1px #999;
5865+       z-index: 1001; /* make sure it shows on fullscreen */
5866+}
5867+.mejs-contextmenu .mejs-contextmenu-separator {
5868+       height: 1px;
5869+       font-size: 0;
5870+       margin: 5px 6px;
5871+       background: #333;       
5872+}
5873+
5874+.mejs-contextmenu .mejs-contextmenu-item {
5875+       font-family: Helvetica, Arial;
5876+       font-size: 12px;
5877+       padding: 4px 6px;
5878+       cursor: pointer;
5879+       color: #333;   
5880+}
5881+.mejs-contextmenu .mejs-contextmenu-item:hover {
5882+       background: #2C7C91;
5883+       color: #fff;
5884+}
5885+
5886+
5887+/* Start: SourceChooser */
5888+.mejs-controls .mejs-sourcechooser-button {
5889+       position: relative;
5890+}
5891+
5892+.mejs-controls .mejs-sourcechooser-button button {
5893+       background-position: -128px 0;
5894+}
5895+.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector {
5896+       visibility: hidden;
5897+       position: absolute;
5898+       bottom: 26px;
5899+       right: -10px;
5900+       width: 130px;
5901+       height: 100px;
5902+       background: url(background.png);
5903+       background: rgba(50,50,50,0.7);
5904+       border: solid 1px transparent;
5905+       padding: 10px;
5906+       overflow: hidden;
5907+       -webkit-border-radius: 0;
5908+       -moz-border-radius: 0;
5909+       border-radius: 0;
5910+}
5911+
5912+.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul {
5913+       margin: 0;
5914+       padding: 0;
5915+       display: block;
5916+       list-style-type: none !important;
5917+       overflow: hidden;
5918+}
5919+.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li {
5920+       margin: 0 0 6px 0;
5921+       padding: 0;
5922+       list-style-type: none !important;
5923+       display: block;
5924+       color: #fff;
5925+       overflow: hidden;
5926+}
5927+.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input {
5928+       clear: both;
5929+       float: left;
5930+       margin: 3px 3px 0 5px;
5931+}
5932+.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label {
5933+       width: 100px;
5934+       float: left;
5935+       padding: 4px 0 0 0;
5936+       line-height: 15px;
5937+       font-family: helvetica, arial;
5938+       font-size: 10px;
5939+}
5940+/* End: SourceChooser */
5941+
5942+
5943+/* Start: Postroll */
5944+.mejs-postroll-layer {
5945+       position: absolute;
5946+       bottom: 0;
5947+       left: 0;
5948+       width: 100%;
5949+       height: 100%;
5950+       background: url(background.png);
5951+       background: rgba(50,50,50,0.7);
5952+       z-index: 1000;
5953+       overflow: hidden;
5954+}
5955+.mejs-postroll-layer-content {
5956+       width: 100%;
5957+       height: 100%;
5958+}
5959+.mejs-postroll-close {
5960+       position: absolute;
5961+       right: 0;
5962+       top: 0;
5963+       background: url(background.png);
5964+       background: rgba(50,50,50,0.7);
5965+       color: #fff;
5966+       padding: 4px;
5967+       z-index: 100;
5968+       cursor: pointer;
5969+}
5970+/* End: Postroll */
5971Index: wp-includes/js/mediaelement/mediaelementplayer.min.css
5972===================================================================
5973--- wp-includes/js/mediaelement/mediaelementplayer.min.css      (revision 0)
5974+++ wp-includes/js/mediaelement/mediaelementplayer.min.css      (working copy)
5975@@ -0,0 +1 @@
5976+.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial;text-align:left;vertical-align:top;text-indent:0;}.me-plugin{position:absolute;}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden;}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:1000;}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%;height:100%;}.mejs-background{position:absolute;top:0;left:0;}.mejs-mediaelement{position:absolute;top:0;left:0;width:100%;height:100%;}.mejs-poster{position:absolute;top:0;left:0;}.mejs-poster img{border:0;padding:0;border:0;display:block;}.mejs-overlay{position:absolute;top:0;left:0;}.mejs-overlay-play{cursor:pointer;}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background:url(bigplay.svg) no-repeat;}.no-svg .mejs-overlay-button{background-image:url(bigplay.png);}.mejs-overlay:hover .mejs-overlay-button{background-position:0 -100px;}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:#333;background:url(background.png);background:rgba(0,0,0,0.9);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.9)),to(rgba(0,0,0,0.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-moz-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-o-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-ms-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:linear-gradient(rgba(50,50,50,0.9),rgba(0,0,0,0.9));}.mejs-overlay-loading span{display:block;width:80px;height:80px;background:transparent url(loading.gif) 50% 50% no-repeat;}.mejs-container .mejs-controls{position:absolute;background:none;list-style-type:none;margin:0;padding:0;bottom:0;left:0;background:url(background.png);background:rgba(0,0,0,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,0,0,0.7));height:30px;width:100%;}.mejs-container .mejs-controls div{list-style-type:none;background-image:none;display:block;float:left;margin:0;padding:0;width:26px;height:26px;font-size:11px;line-height:11px;background:0;font-family:Helvetica,Arial;border:0;}.mejs-controls .mejs-button button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:7px 5px;padding:0;position:absolute;height:16px;width:16px;border:0;background:transparent url(controls.svg) no-repeat;}.no-svg .mejs-controls .mejs-button button{background-image:url(controls.png);}.mejs-controls .mejs-button button:focus{outline:solid 1px yellow;}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:8px 3px 0 3px;overflow:hidden;text-align:center;padding:auto 4px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}.mejs-container .mejs-controls .mejs-time span{font-size:11px;color:#fff;line-height:12px;display:block;float:left;margin:1px 2px 0 0;width:auto;}.mejs-controls .mejs-play button{background-position:0 0;}.mejs-controls .mejs-pause button{background-position:0 -16px;}.mejs-controls .mejs-stop button{background-position:-112px 0;}.mejs-controls div.mejs-time-rail{width:200px;padding-top:5px;}.mejs-controls .mejs-time-rail span{display:block;position:absolute;width:180px;height:10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;cursor:pointer;}.mejs-controls .mejs-time-rail .mejs-time-total{margin:5px;background:#333;background:rgba(50,50,50,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.8));}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:15px 15px;-moz-background-size:15px 15px;-o-background-size:15px 15px;background-size:15px 15px;-webkit-animation:buffering-stripes 2s linear infinite;-moz-animation:buffering-stripes 2s linear infinite;-ms-animation:buffering-stripes 2s linear infinite;-o-animation:buffering-stripes 2s linear infinite;animation:buffering-stripes 2s linear infinite;}@-webkit-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-moz-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-ms-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-o-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#3caac8;background:rgba(60,170,200,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(44,124,145,0.8)),to(rgba(78,183,212,0.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-moz-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-o-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-ms-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:linear-gradient(rgba(44,124,145,0.8),rgba(78,183,212,0.8));width:0;}.mejs-controls .mejs-time-rail .mejs-time-current{width:0;background:#fff;background:rgba(255,255,255,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.8));}.mejs-controls .mejs-time-rail .mejs-time-handle{display:none;position:absolute;margin:0;width:10px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;border:solid 2px #333;top:-2px;text-align:center;}.mejs-controls .mejs-time-rail .mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:solid 1px #333;top:-26px;margin-left:-18px;text-align:center;color:#111;}.mejs-controls .mejs-time-rail .mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0;}.mejs-controls .mejs-time-rail .mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:solid 5px #eee;border-color:#eee transparent transparent transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:15px;left:13px;}.mejs-controls .mejs-fullscreen-button button{background-position:-32px 0;}.mejs-controls .mejs-unfullscreen button{background-position:-32px -16px;}.mejs-controls .mejs-mute button{background-position:-16px -16px;}.mejs-controls .mejs-unmute button{background-position:-16px 0;}.mejs-controls .mejs-volume-button{position:relative;}.mejs-controls .mejs-volume-button .mejs-volume-slider{display:none;height:115px;width:25px;background:url(background.png);background:rgba(50,50,50,0.7);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:-115px;left:0;z-index:1;position:absolute;margin:0;}.mejs-controls .mejs-volume-button:hover{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,0.5);margin:0;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,0.9);margin:0;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle{position:absolute;left:4px;top:-3px;width:16px;height:6px;background:#ddd;background:rgba(255,255,255,0.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0;}.mejs-controls div.mejs-horizontal-volume-slider{height:26px;width:60px;position:relative;}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#333;background:rgba(50,50,50,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.8));}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fff;background:rgba(255,255,255,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.8));}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle{display:none;}.mejs-controls .mejs-captions-button{position:relative;}.mejs-controls .mejs-captions-button button{background-position:-48px 0;}.mejs-controls .mejs-captions-button .mejs-captions-selector{visibility:hidden;position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li{margin:0 0 6px 0;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{width:100px;float:left;padding:4px 0 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px;}.mejs-controls .mejs-captions-button .mejs-captions-translations{font-size:10px;margin:0 0 5px 0;}.mejs-chapters{position:absolute;top:0;left:0;-xborder-right:solid 1px #fff;width:10000px;z-index:1;}.mejs-chapters .mejs-chapter{position:absolute;float:left;background:#222;background:rgba(0,0,0,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,0,0,0.7));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#323232,endColorstr=#000000);overflow:hidden;border:0;}.mejs-chapters .mejs-chapter .mejs-chapter-block{font-size:11px;color:#fff;padding:5px;display:block;border-right:solid 1px #333;border-bottom:solid 1px #333;cursor:pointer;}.mejs-chapters .mejs-chapter .mejs-chapter-block-last{border-right:none;}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(102,102,102,0.7)),to(rgba(50,50,50,0.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-moz-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-o-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-ms-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:linear-gradient(rgba(102,102,102,0.7),rgba(50,50,50,0.6));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#666666,endColorstr=#323232);}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title{font-size:12px;font-weight:bold;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px 0;line-height:12px;}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px 0;display:block;white-space:nowrap;text-overflow:ellipsis;}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:22px;font-size:12px;color:#fff;}.mejs-captions-layer a{color:#fff;text-decoration:underline;}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:normal;}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0;}.mejs-captions-position-hover{bottom:45px;}.mejs-captions-text{padding:3px 5px;background:url(background.png);background:rgba(20,20,20,0.8);}.mejs-clear{clear:both;}.me-cannotplay a{color:#fff;font-weight:bold;}.me-cannotplay span{padding:15px;display:block;}.mejs-controls .mejs-loop-off button{background-position:-64px -16px;}.mejs-controls .mejs-loop-on button{background-position:-64px 0;}.mejs-controls .mejs-backlight-off button{background-position:-80px -16px;}.mejs-controls .mejs-backlight-on button{background-position:-80px 0;}.mejs-controls .mejs-picturecontrols-button{background-position:-96px 0;}.mejs-contextmenu{position:absolute;width:150px;padding:10px;border-radius:4px;top:0;left:0;background:#fff;border:solid 1px #999;z-index:1001;}.mejs-contextmenu .mejs-contextmenu-separator{height:1px;font-size:0;margin:5px 6px;background:#333;}.mejs-contextmenu .mejs-contextmenu-item{font-family:Helvetica,Arial;font-size:12px;padding:4px 6px;cursor:pointer;color:#333;}.mejs-contextmenu .mejs-contextmenu-item:hover{background:#2C7C91;color:#fff;}.mejs-controls .mejs-sourcechooser-button{position:relative;}.mejs-controls .mejs-sourcechooser-button button{background-position:-128px 0;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:hidden;position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li{margin:0 0 6px 0;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{width:100px;float:left;padding:4px 0 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px;}.mejs-postroll-layer{position:absolute;bottom:0;left:0;width:100%;height:100%;background:url(background.png);background:rgba(50,50,50,0.7);z-index:1000;overflow:hidden;}.mejs-postroll-layer-content{width:100%;height:100%;}.mejs-postroll-close{position:absolute;right:0;top:0;background:url(background.png);background:rgba(50,50,50,0.7);color:#fff;padding:4px;z-index:100;cursor:pointer;}
5977\ No newline at end of file
5978Index: wp-includes/js/mediaelement/silverlightmediaelement.xap
5979===================================================================
5980Cannot display: file marked as a binary type.
5981svn:mime-type = application/octet-stream
5982Index: wp-includes/js/mediaelement/silverlightmediaelement.xap
5983===================================================================
5984--- wp-includes/js/mediaelement/silverlightmediaelement.xap     (revision 23731)
5985+++ wp-includes/js/mediaelement/silverlightmediaelement.xap     (working copy)
5986
5987Property changes on: wp-includes/js/mediaelement/silverlightmediaelement.xap
5988___________________________________________________________________
5989Added: svn:mime-type
5990## -0,0 +1 ##
5991+application/octet-stream
5992\ No newline at end of property
5993Index: wp-includes/js/mediaelement/wp-mediaelement.css
5994===================================================================
5995--- wp-includes/js/mediaelement/wp-mediaelement.css     (revision 0)
5996+++ wp-includes/js/mediaelement/wp-mediaelement.css     (working copy)
5997@@ -0,0 +1,11 @@
5998+.mejs-container, .mejs-embed, .mejs-embed body {
5999+       background: #464646;
6000+}
6001+
6002+.mejs-controls .mejs-time-rail .mejs-time-loaded {
6003+       background: #21759b;
6004+}
6005+
6006+.mejs-controls .mejs-time-rail .mejs-time-current {
6007+       background: #d54e21;
6008+}
6009\ No newline at end of file
6010Index: wp-includes/js/mediaelement/wp-mediaelement.js
6011===================================================================
6012--- wp-includes/js/mediaelement/wp-mediaelement.js      (revision 0)
6013+++ wp-includes/js/mediaelement/wp-mediaelement.js      (working copy)
6014@@ -0,0 +1,10 @@
6015+(function ($) {
6016+       // add mime-type aliases to MediaElement plugin support
6017+       mejs.plugins.silverlight[0].types.push('video/x-ms-wmv');
6018+       mejs.plugins.silverlight[0].types.push('audio/x-ms-wma');
6019+
6020+    $(function () {
6021+               $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer();
6022+       });
6023+
6024+}(jQuery));
6025\ No newline at end of file
6026Index: wp-includes/mediaelement/background.png
6027===================================================================
6028--- wp-includes/mediaelement/background.png     (revision 23731)
6029+++ wp-includes/mediaelement/background.png     (working copy)
6030@@ -1,4 +0,0 @@
6031-‰PNG
6032-
6033-
6034-IHDR22?ˆ±tEXtSoftwareAdobe ImageReadyqÉe<HIDATxÚìÏ1 ±ÿnj½ÄAN5-p[BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDä'ÀD¸ïyŒIEND®B`‚
6035\ No newline at end of file
6036Index: wp-includes/mediaelement/bigplay.png
6037===================================================================
6038--- wp-includes/mediaelement/bigplay.png        (revision 23731)
6039+++ wp-includes/mediaelement/bigplay.png        (working copy)
6040@@ -1,24 +0,0 @@
6041-‰PNG
6042-
6043-
6044-IHDRdÈ)â´ósBITÛáOàÒPLTEÿÿÿÌÌÌÌÌÌÌÌÌÖÖÖÌÌÌÞÞÞÖÖÖZZZQQQJJJAAA999333)))!!!æææÞÞÞ|||ssskkkfffZZZQQQïïïææ晙™”””ŒŒŒ„„„|||ïïïæææµµµ­­­¤¤¤™™™÷÷÷ïïïÌÌÌÅÅž¾¾µµµ÷÷÷ÖÖÖÌÌÌÅÅÅ÷÷÷ÞÞÞÖÖÖÿÿÿ÷÷÷æææÞÞÞÿÿÿ÷÷÷ïïïæææÿÿÿ÷÷÷ÿÿÿ÷÷÷”?´PFtRNS""33DDDDDDUUUUUUUUUUUffffffffwwwwwwwˆˆˆˆˆˆ™™™™™™ªªªª»»»ÌÌÌÌÝÝÝÝîîÿÿE+:        pHYsÒÝ~ütEXtSoftwareAdobe Fireworks CS4²Ó tEXtCreation Time11/19/10-s»1   âIDATxœíš{[¹ÀmE–å2GAª¬—]¶­œêʊˆPgÆïÿ•N.o’73I&Ÿ³Ïcþji&¿¼÷äM>ÆÇpŽÏ¹±BÕ¾^-7*ä B
6045-Ä©‘]_'íŒÑį́#Aç”Æ [°{7[o:Ò$Ù®g_û’S£#~›m“43’íüJǔƒ¬r<Ùf0âíä˜cJƒ×K,ÃUזgy1ŽèIÄ[²žÝ^0Cô/‰}$:™u&€‚°T¼ž\4uÏj]Ì· RòLùîr+öz¢¹­ä\Í`¯Ü4ÞÉh‚Ûۊ
6046-9øoÝ   Ÿ”ühPcÉ¿¾Õ5-‹Ñ9ƒ½,ý)’q¶æŸöµ‚‡Ät²©ÏÞÁè3FòW.I‰!9dBóæg_PüMθÌ&(}Ôd0]1Êú̇B?TŒí‰4F>ÙJ§œ0GüÙb·Â@æ3sË>r¨š) 1¦Ç(O­BQ„²&LŽ¾î´Æ´ñYnŸQnÆ> 1˜ †*Šæ¨('ô³„d2'DB·”œˆ¬J·¦Z¡²vû‚R^D«3eÝñ¹Òþ{vêÄÀNn•Âl„I½li9|›i„
6047-Z4*“¾K„zVҒÁˬ4§FúfFPŽéŸ¢ÀDVw’¡ $o\[1‚òÈmo¡iq{."‚s)®™Fû˜ï†9]ØËu‚=I¥i  €‹BmŸtm¢ Å$§Â×s’Ÿ.Ìø¾K7ùh‹XŽÎ™¨”‡ÓÝYìgFÕmш{C驍˜ Ä4&wQNb2ãʬ/˜B÷±F1k„ŒÁq¾x0ëVÛ"mØ!d'ywFs_úBÑþö;چB5cáÅWTÒ/&}Á„»”E{ݒ&ý¼-Šõo&}åL¢m…ä2
6048-å•üËÜ¡Uwæɚ¦&sƳ"ì~!{V¦©©ºjŒŠxŜi8ä+ùñ7ä­!:û†ª(¸—’håÓBLð °Zÿ¶Hšüݖ~â†Ðù»C<$iÛ$£®®¤·«á¯ÓBÈÛÍ®.ü­Bƒñv×`¤‡  [0¾KZ¡§´‚IÕáJ4Õo›»¤zrŒt§z^´´sy`Ñ¢s/SëQµºòKk’¹üâ»$ZV“H£|§+ "v$b¡Hâ=¾t‰êí_Å>Jîj…‡;|JÎäFÊS8Ž©5qñ¸Ä›mòÔ~àVW‡,§z÷ՁN<¥{œÙ´%E¡ÅßÂ.At+ÇÎKsA*
6049-¹a”¿Î9‘¢ÐêÉ\=øbú+M°¤ YÑ/Kå®ØJÕ®{¼j\„7X'ç3„»»CK¢.»…m|ædèåàoFýY܋”'FQí®º±¥u¼8cæ×U«É¶Dºí)JQS·î–^ýAaÞæLdÃßÚ¬sÆ
6050-c<ËèrB¤(g¬Cš<¶Ð»B-PNÞµ…vj!µ:ŸyÒí·l¯ »ÛôR–NyâIq¢:ÃÙÁÚÒ_æ1›øÐòg VýtÈz†.zÚè0é.„)×kHñ˛̓ÍñðçŠðg‡ºz î<»ÈξÏÄQò§H;Þí¥+/ÈRëåã×Ëî—ÖéÕ_“%~¤i–`èÏMÇ
6051-CWäïsè‡yÏR-}(Ÿeôn_sOsB¸Ûn۞ ý…ant=_ç8ÉzrB5!…‘˜vëûüù•¿f&Û×çù÷³¶Ž(ÁÐ1u“ëi­aÌ\Ê#TÉPõQU tÎþý%f¿ÿ}qò£:‚S5ác|Œñ1þ¥ãSnìŸP5‡¯w˜rá
6052-Ä©‘]_'íŒÑÌ¨#Aç”Æ [0MW›˜Ž4Ž7«é0’œÒq>ÝÄÙw¼™tLi1È*ñÆ|s œq‡cJƒƒ…&U—ö÷Åc)D¼šŽÎ™!¢sbõû4˜
6053-bŒa©øe|žu-b'S€A5µ{íhn+ÿ<˜Â&6Ü4ÞÅ16£E…ü·&Å£Šb,Ô×
6054-p¨e1ŒYøS$#ZñO#-ƒà!1U Egp1´$%†äÐ#&Ì*?Fã…1˜‘/Y‡*˜(ôCöÑ
6055-¹Œ9ÙJdæˆ+®1·Â„ Ìæ›9Ô¡) 1&b”i±(‚1Î1liã“
6056-\NRØ `ÁPEќ¥ƒ!ÝRÜY”nMµBe$ϰ͈V¿GbsHã^å@#v2R_Ú  “Z@¦"m˜M#Ÿ:e¹DA¨gÅ*x™•¦TC»0‚Â68uˆ™Õ¥ o`Å`¿$¶·Š‚až!Î~œæÊSFgb7Ìiì¢XÑ 2£ç…¢ŒœVAŠ‰… 9Hš¾œ›1ð}D79¶Å
6057-,'æ@ÊC ûç0x?‹¾@Ü¡&ˆBLcrg…9˜ÅôH[/(f‚1¸3Î÷f}Áj¤­;„ì$ï΅úÂюSœB5cáÅ«Á„ö#ˆ<m©ªy(}ghÒ2É
6058-‹ê‚ä2
6059-2ÊÔY¥™xuCȎ4Ó¨²º°@Ä&F!Í4‡*-Bño¢‚3
6060-‡= Q „¸óUQp/7Ds.?1A(¬¨ì    ’Æ÷
6061-       ‰b7„Îßâ%I¨MJ¨ë=¯g„².ì‚ì=ß%­¼[‚¥™Ãlpªo¥z^´âŠ–t.ó¡è=Ê/žQÁAÂhiæãH_aG"©­sǑè¨ñ>Ëîwø„ÌVî˜:rSåP}‰÷Øî[ê,»À¡tuµÄuBg³ò— ¦íŽó¤®s²QñuN3ÝBϬžÓ_^œÁSÑE9ðŠ=NÓ¢+¶Þ,8o°«àª°YðIM†–Ä‘ìz¶=¢¸Àêº(¥8¼õGq/
6062-çÜî2·¢´ŽWÇ·ehx5lºÊ4ÕxënáՔ‘Ë[ÅíÁ#ÎêÏ&$PƲ_ëltŽ£¸9¨Q -¼òhÙ²-Û"¢ð„&;xZé÷ÔâA‡ü^½ùd       Î}®îÁÐ^ Å/†
6063-㊇8ä…?;5ÔÓFº™fŸ6¢¡zڐ      ڛ¡Q:âñ‚¾¡,ÆÃA5¢ÁNjôHÓ(ÁП›&e¯Múƒ“½ZúP>É0ˆFù§9 ¬F®à/…éKŽ¯Æ»=Ja•·§‹
6064-͌7›E%™:æÈìŽ:Œ1sp  (8P%CÕGmTÐ9û{ô—˜ýþ÷Äɏê6NՄñ1þ_ÇÿŠƒIþ›¥JIEND®B`‚
6065\ No newline at end of file
6066Index: wp-includes/mediaelement/bigplay.svg
6067===================================================================
6068--- wp-includes/mediaelement/bigplay.svg        (revision 23731)
6069+++ wp-includes/mediaelement/bigplay.svg        (working copy)
6070@@ -1,50 +0,0 @@
6071-<?xml version="1.0" standalone="no"?>
6072-<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
6073-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6074-<svg id="bigplay-gradient.fw-Page%201" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
6075-       xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
6076-       x="0px" y="0px" width="100px" height="200px"
6077->
6078-       <defs>
6079-               <radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
6080-                       <stop stop-color="#222222" stop-opacity="0" offset="70%"/>
6081-                       <stop stop-color="#222222" stop-opacity="0.0118" offset="70.202%"/>
6082-                       <stop stop-color="#333333" stop-opacity="1" offset="85%"/>
6083-                       <stop stop-color="#333333" stop-opacity="0" offset="100%"/>
6084-               </radialGradient>
6085-               <radialGradient id="gradient2" cx="50%" cy="50%" r="50%">
6086-                       <stop stop-color="#bbbbbb" stop-opacity="0" offset="70%"/>
6087-                       <stop stop-color="#bbbbbb" stop-opacity="0.0118" offset="70.202%"/>
6088-                       <stop stop-color="#bbbbbb" stop-opacity="1" offset="85%"/>
6089-                       <stop stop-color="#bbbbbb" stop-opacity="0" offset="100%"/>
6090-               </radialGradient>
6091-               <filter id="filter1" x="-100%" y="-100%" width="300%" height="300%">
6092-                       <!-- Glow -->
6093-                       <feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.251 0"/>
6094-                       <feMorphology result="out" in="out" operator="dilate" radius="3"/>
6095-                       <feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
6096-                       <feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow1"/>
6097-               </filter>
6098-               <filter id="filter2" x="-100%" y="-100%" width="300%" height="300%">
6099-                       <!-- Glow -->
6100-                       <feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.251 0"/>
6101-                       <feMorphology result="out" in="out" operator="dilate" radius="3"/>
6102-                       <feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
6103-                       <feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow2"/>
6104-               </filter>
6105-       </defs>
6106-       <g id="Background">
6107-       </g>
6108-       <g id="dark%20shadow">
6109-               <path d="M 22 50 C 22 34.5358 34.5358 22 50 22 C 65.4642 22 78 34.5358 78 50 C 78 65.4642 65.4642 78 50 78 C 34.5358 78 22 65.4642 22 50 ZM 5 50 C 5 74.8531 25.1469 95 50 95 C 74.8531 95 95 74.8531 95 50 C 95 25.1469 74.8531 5 50 5 C 25.1469 5 5 25.1469 5 50 Z" fill="url(#gradient1)"/>
6110-               <path d="M 22 150 C 22 134.5358 34.5358 122 50 122 C 65.4642 122 78 134.5358 78 150 C 78 165.4642 65.4642 178 50 178 C 34.5358 178 22 165.4642 22 150 ZM 5 150 C 5 174.8531 25.1469 195 50 195 C 74.8531 195 95 174.8531 95 150 C 95 125.1469 74.8531 105 50 105 C 25.1469 105 5 125.1469 5 150 Z" fill="url(#gradient2)"/>
6111-       </g>
6112-       <g id="dark">
6113-               <path id="Polygon" filter="url(#filter1)" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff"/>
6114-               <path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none"/>
6115-       </g>
6116-       <g id="light">
6117-               <path id="Polygon2" filter="url(#filter2)" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff"/>
6118-               <path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none"/>
6119-       </g>
6120-</svg>
6121\ No newline at end of file
6122Index: wp-includes/mediaelement/controls.png
6123===================================================================
6124--- wp-includes/mediaelement/controls.png       (revision 23731)
6125+++ wp-includes/mediaelement/controls.png       (working copy)
6126@@ -1,10 +0,0 @@
6127-‰PNG
6128-
6129-
6130-IHDR ÊRÿsBITÛáOàûPLTEÿÿÿþþþûûûúúúùùùøøø÷÷÷öööõõõôôôòòòñññðððïïïîîîíííìììëëëêêêéééèèèæææäääãããâââáááàààßßßÞÞÞÜÜÜÛÛÛÚÚÚÙÙÙ×××ÖÖÖÓÓÓÒÒÒÑÑÑÐÐÐÎÎÎÍÍÍËËËÆÆÆÅÅÅÄÄÄÃÃÃÂÂÂÁÁÁÀÀÀ¿¿¿½½½¸¸¸···¶¶¶´´´²²²¯¯¯®®®­­­¬¬¬«««¨¨·§§§¥¥¥¤¤¤¢¢¢   žž¬ŸŸŸœœœ›››ššš™™™———•••”””””¡“““’’’ŽŽŽŒŒŒ‹‹‹ŠŠŠ‰‰‰‰‰•‡‡‡†††„„„ƒƒƒ‚‚‚€€€yyyxxxwwwuu€rrrpppnnnmmwiisiiigggdddccc```___^^^]]]\\\ZZZXXXVVVUUUSSSRRRQQQOOONNNMMMLLLKKKJJJIIIGGGFFFDDDCCCBBB@@@???>>>;;;999777666555559333222111000,,,+++*****.)))((('''!!!     "ü-(©tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûo{    pHYsÒÝ~ütEXtCreation Time11/13/12¬À:ytEXtSoftwareAdobe Fireworks CS6è¼²ŒIDATX…ÕV [W
6131-&šª£D#“HãV°î[THˆŠ(Õ*H
6132-Zµ&(FqAYTԀn¸®Tƒ÷gúî{wîLÂä+µóz¾/ïÞóޝ;'o¶cƒ)Ûdhã¡  ¡Ÿ8µ  TTc$ªôú»óú|\1€˜‹ùÚÆUtγsn·Ûk0ֈ©±N’Íj!æzJ³oî¤[S­]/õ?dÐoœÐÚ8ñ¸ÃÁ‚ìv:WÏoN§“‰Ó¹G%{ä¤ÓXˆdÄ=FüÓÜ#87Ö)u,ј8–ºúWn[Ú!;C[˜)Á‚~\БÍà6³kµ¬'Åïó[ 'âŽ5³+q¬ºg+"Ø®‚f2µ/,f,l—‚ µ«rÌç
6133-ðñû 'mkÖmÏÈ°Ê3£_ÕôÏðˆqðVÑ#BQúnþî æ0$­s»Ý•×¯WŠP§vh!|ˆyLÿžŸ s‡`•~ueö´GÔÚ&÷ЏuX½Çsà†ÇSJÐÆVb%…•¼‹Q‚È+ _Ô©JušíP     Cñƒ^ïM€›^ïA´ˆ°ò2[,Àǂœt1d;žË°ªdV·Z힅g4îг¿TÊPMÅÉ6ôönáä—¨¼¢Ê1/àãˎhٜ,ƒÞmë«Èp¢¶xõ®Ž­.–·ÿ-ý¦NÉQB»´”¬#¼„ksˆ£Á`I0x”g‘‘¼õ¹*ĽÒSáòჟ»R-õ±]±ú–³»‡B­M@B¦X²lÙºky»zmU9çååå     Œ       ‘ 5ÖIò¬Ô-QúŒf/á{èìü¦Ú…ÚB(ÔÔDòPÐÆ®ü#^ïàt¹@3@3F¢:dÅ»þùóýލo3AT`ÿ
6134-4ùèæaŠ2àÿ$¨/ýê¿ÓÁ ‡zP~(Ó¼E{lªy0A2"€É¨U‚Èìù¡Ö-ŠÅ¥UQ®È'” dtØ"Ad~ýPßÅ!ðJ¶W}­Øåa4*îD-Ø#D懂æ‡2;³ñý½ÏårÑz­Y‹d¤á4îÐ׆HRõäOÇw
6135-"óCA÷CU·=5ÑȐJ^D¢rBÿ¸~§ 2?t?Ôrîãh¡îhCö¯‘1¡ û¡ßÏþsR‘ù¡ û¡M«ÎL E42 ’«.™
6136-šê‹WÁ/@ćÍZˆ›ú+Fënj2?„~èIOŠ³Ä0¦-Äcß öh Á²Ç^ù-H(?tr·b        ¹j*Ðc_D–½ÉÖhîFýÐñŸ5Ö̃)F“BR4iÙ§£î´âÿSÎ~|ÎÑ"DâIEND®B`‚
6137\ No newline at end of file
6138Index: wp-includes/mediaelement/controls.svg
6139===================================================================
6140--- wp-includes/mediaelement/controls.svg       (revision 23731)
6141+++ wp-includes/mediaelement/controls.svg       (working copy)
6142@@ -1,172 +0,0 @@
6143-<?xml version="1.0" standalone="no"?>
6144-<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
6145-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6146-<svg id="controls.fw-Page%201" viewBox="0 0 144 32" style="background-color:#ffffff00" version="1.1"
6147-       xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
6148-       x="0px" y="0px" width="144px" height="32px"
6149->
6150-       <defs>
6151-               <radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
6152-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6153-                       <stop stop-color="#f2f2f2" stop-opacity="0.2" offset="100%"/>
6154-               </radialGradient>
6155-               <linearGradient id="gradient2" x1="50%" y1="-7.8652%" x2="50%" y2="249.6629%">
6156-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6157-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6158-               </linearGradient>
6159-               <linearGradient id="gradient3" x1="50%" y1="0%" x2="50%" y2="238.75%">
6160-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6161-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6162-               </linearGradient>
6163-               <linearGradient id="gradient4" x1="50%" y1="0%" x2="50%" y2="100%">
6164-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6165-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6166-               </linearGradient>
6167-               <linearGradient id="gradient5" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
6168-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6169-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6170-               </linearGradient>
6171-               <linearGradient id="gradient6" x1="50%" y1="0%" x2="50%" y2="100%">
6172-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6173-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6174-               </linearGradient>
6175-               <linearGradient id="gradient7" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
6176-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6177-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6178-               </linearGradient>
6179-               <linearGradient id="gradient8" x1="50%" y1="0%" x2="50%" y2="100%">
6180-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6181-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6182-               </linearGradient>
6183-               <linearGradient id="gradient9" x1="50%" y1="0%" x2="50%" y2="100%">
6184-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6185-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6186-               </linearGradient>
6187-               <linearGradient id="gradient10" x1="50%" y1="0%" x2="50%" y2="100%">
6188-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6189-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6190-               </linearGradient>
6191-               <linearGradient id="gradient11" x1="50%" y1="0%" x2="50%" y2="100%">
6192-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6193-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6194-               </linearGradient>
6195-               <linearGradient id="gradient12" x1="50%" y1="0%" x2="50%" y2="238.75%">
6196-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6197-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6198-               </linearGradient>
6199-               <linearGradient id="gradient13" x1="40%" y1="-140%" x2="40%" y2="98.75%">
6200-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6201-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6202-               </linearGradient>
6203-               <linearGradient id="gradient14" x1="50%" y1="0%" x2="50%" y2="238.75%">
6204-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6205-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6206-               </linearGradient>
6207-               <linearGradient id="gradient15" x1="60%" y1="-140%" x2="60%" y2="98.75%">
6208-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6209-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6210-               </linearGradient>
6211-               <linearGradient id="gradient16" x1="50%" y1="0%" x2="50%" y2="298.4375%">
6212-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6213-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6214-               </linearGradient>
6215-               <linearGradient id="gradient17" x1="50%" y1="0%" x2="50%" y2="238.75%">
6216-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6217-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6218-               </linearGradient>
6219-               <linearGradient id="gradient18" x1="50%" y1="-200%" x2="50%" y2="100%">
6220-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6221-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6222-               </linearGradient>
6223-               <linearGradient id="gradient19" x1="50%" y1="-200%" x2="50%" y2="110.9375%">
6224-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6225-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6226-               </linearGradient>
6227-               <linearGradient id="gradient20" x1="55%" y1="0%" x2="55%" y2="100%">
6228-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6229-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
6230-               </linearGradient>
6231-               <linearGradient id="gradient21" x1="50%" y1="0%" x2="50%" y2="100%">
6232-                       <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
6233-                       <stop stop-color="#c8c8c8" stop-opacity="1" offset="99.4444%"/>
6234-               </linearGradient>
6235-       </defs>
6236-       <g id="BG">
6237-       </g>
6238-       <g id="controls">
6239-               <path id="Line" d="M 98.5 7.5 L 109.5 7.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
6240-               <path id="Line2" d="M 98.5 3.5 L 109.5 3.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
6241-               <path id="Line3" d="M 98.5 11.5 L 109.5 11.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
6242-               <path id="Ellipse" d="M 108 11.5 C 108 10.6716 108.4477 10 109 10 C 109.5523 10 110 10.6716 110 11.5 C 110 12.3284 109.5523 13 109 13 C 108.4477 13 108 12.3284 108 11.5 Z" fill="#ffffff"/>
6243-               <path id="Ellipse2" d="M 104 7.5 C 104 6.6716 104.4477 6 105 6 C 105.5523 6 106 6.6716 106 7.5 C 106 8.3284 105.5523 9 105 9 C 104.4477 9 104 8.3284 104 7.5 Z" fill="#ffffff"/>
6244-               <path id="Ellipse3" d="M 108 3.5 C 108 2.6716 108.4477 2 109 2 C 109.5523 2 110 2.6716 110 3.5 C 110 4.3284 109.5523 5 109 5 C 108.4477 5 108 4.3284 108 3.5 Z" fill="#ffffff"/>
6245-       </g>
6246-       <g id="backlight">
6247-               <g id="off">
6248-                       <rect x="83" y="21" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
6249-               </g>
6250-               <g id="on">
6251-                       <path id="Ellipse4" d="M 81 8 C 81 5.2385 84.134 3 88 3 C 91.866 3 95 5.2385 95 8 C 95 10.7615 91.866 13 88 13 C 84.134 13 81 10.7615 81 8 Z" fill="url(#gradient1)"/>
6252-                       <rect x="83" y="5" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
6253-               </g>
6254-       </g>
6255-       <g id="loop">
6256-               <g id="on2">
6257-                       <path d="M 73.795 4.205 C 75.2155 4.8785 76.2 6.3234 76.2 8 C 76.2 10.3196 74.3196 12.2 72 12.2 C 69.6804 12.2 67.8 10.3196 67.8 8 C 67.8 6.3234 68.7845 4.8785 70.205 4.205 L 68.875 2.875 C 67.1501 3.9289 66 5.8306 66 8 C 66 11.3138 68.6862 14 72 14 C 75.3138 14 78 11.3138 78 8 C 78 5.8306 76.8499 3.9289 75.125 2.875 L 73.795 4.205 Z" fill="url(#gradient2)"/>
6258-                       <path d="M 71 2 L 66 2 L 71 7 L 71 2 Z" fill="url(#gradient3)"/>
6259-               </g>
6260-               <g id="off2">
6261-                       <path d="M 73.795 20.205 C 75.2155 20.8785 76.2 22.3234 76.2 24 C 76.2 26.3196 74.3196 28.2 72 28.2 C 69.6804 28.2 67.8 26.3196 67.8 24 C 67.8 22.3234 68.7845 20.8785 70.205 20.205 L 68.875 18.875 C 67.1501 19.9289 66 21.8306 66 24 C 66 27.3138 68.6862 30 72 30 C 75.3138 30 78 27.3138 78 24 C 78 21.8306 76.8499 19.9289 75.125 18.875 L 73.795 20.205 Z" fill="#a8a8b7"/>
6262-                       <path d="M 71 18 L 66 18 L 71 23 L 71 18 Z" fill="#a8a8b7"/>
6263-               </g>
6264-       </g>
6265-       <g id="cc">
6266-               <rect visibility="hidden" x="49" y="2" width="14" height="12" stroke="#b0b0b0" stroke-width="1" fill="none"/>
6267-               <text visibility="hidden" x="49" y="17" width="14" fill="#ffffff" style="font-size: 10px; color: #ffffff; font-family: Arial; text-align: center; "><tspan><![CDATA[cc]]></tspan></text>
6268-               <path d="M 55 7 C 50.2813 3.7813 50.063 12.9405 55 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
6269-               <path d="M 60 7 C 55.2813 3.7813 55.063 12.9405 60 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
6270-               <path d="M 50 3 L 62 3 L 62 13 L 50 13 L 50 3 ZM 49 2 L 49 14 L 63 14 L 63 2 L 49 2 Z" fill="url(#gradient4)"/>
6271-               <rect x="49" y="2" width="14" height="12" fill="none"/>
6272-       </g>
6273-       <g id="volume">
6274-               <g id="no%20sound">
6275-                       <rect x="17" y="5" width="5" height="6" fill="url(#gradient5)"/>
6276-                       <path d="M 21 5 L 25 2 L 25 14 L 21 11.0625 L 21 5 Z" fill="url(#gradient6)"/>
6277-               </g>
6278-               <g id="sound%20bars">
6279-                       <rect x="17" y="21" width="5" height="6" fill="url(#gradient7)"/>
6280-                       <path d="M 21 21 L 25 18 L 25 30 L 21 27.0625 L 21 21 Z" fill="url(#gradient8)"/>
6281-                       <path d="M 27 18 C 27 18 30.0625 17.375 30 24 C 29.9375 30.625 27 30 27 30 " stroke="#ffffff" stroke-width="1" fill="none"/>
6282-                       <path d="M 26 21.0079 C 26 21.0079 28.041 20.6962 27.9994 24 C 27.9577 27.3038 26 26.9921 26 26.9921 " stroke="#ffffff" stroke-width="1" fill="none"/>
6283-               </g>
6284-       </g>
6285-       <g id="play/pause">
6286-               <g id="play">
6287-                       <path id="Polygon" d="M 14 8.5 L 3 14 L 3 3 L 14 8.5 Z" fill="url(#gradient9)"/>
6288-               </g>
6289-               <g id="pause">
6290-                       <rect x="3" y="18" width="3" height="12" fill="url(#gradient10)"/>
6291-                       <rect x="10" y="18" width="3" height="12" fill="url(#gradient11)"/>
6292-               </g>
6293-       </g>
6294-       <g id="fullscreen">
6295-               <g id="enter%201">
6296-                       <path d="M 34 2 L 39 2 L 34 7 L 34 2 Z" fill="url(#gradient12)"/>
6297-                       <path d="M 34 14 L 39 14 L 34 9 L 34 14 Z" fill="url(#gradient13)"/>
6298-                       <path d="M 46 2 L 41 2 L 46 7 L 46 2 Z" fill="url(#gradient14)"/>
6299-                       <path d="M 46 14 L 41 14 L 46 9 L 46 14 Z" fill="url(#gradient15)"/>
6300-               </g>
6301-               <g id="exit">
6302-                       <path d="M 42 22 L 46 22 L 42 18 L 42 22 Z" fill="url(#gradient16)"/>
6303-                       <path d="M 38 22 L 38 18 L 34 22 L 38 22 Z" fill="url(#gradient17)"/>
6304-                       <path d="M 38 26 L 34 26 L 38 30 L 38 26 Z" fill="url(#gradient18)"/>
6305-                       <path d="M 42 26 L 42 30 L 46 26 L 42 26 Z" fill="url(#gradient19)"/>
6306-               </g>
6307-       </g>
6308-       <g id="stop">
6309-               <rect x="115" y="3" width="10" height="10" fill="url(#gradient20)"/>
6310-       </g>
6311-       <g id="chooser">
6312-               <path d="M 135.2346 6.1522 C 136.2551 5.7295 137.4251 6.2141 137.8478 7.2346 C 138.2704 8.2551 137.7859 9.425 136.7654 9.8478 C 135.7449 10.2705 134.5749 9.7859 134.1522 8.7654 C 133.7295 7.7449 134.2141 6.5749 135.2346 6.1522 ZM 133.2735 1.4176 L 136 4.0054 L 138.7265 1.4176 L 138.8246 5.1754 L 142.5824 5.2735 L 139.9946 8 L 142.5824 10.7265 L 138.8246 10.8246 L 138.7265 14.5824 L 136 11.9946 L 133.2735 14.5824 L 133.1754 10.8246 L 129.4176 10.7265 L 132.0054 8 L 129.4176 5.2735 L 133.1754 5.1754 L 133.2735 1.4176 Z" fill="url(#gradient21)"/>
6313-       </g>
6314-</svg>
6315\ No newline at end of file
6316Index: wp-includes/mediaelement/flashmediaelement.swf
6317===================================================================
6318--- wp-includes/mediaelement/flashmediaelement.swf      (revision 23731)
6319+++ wp-includes/mediaelement/flashmediaelement.swf      (working copy)
6320@@ -1,216 +0,0 @@
6321-CWSÁxœÌ¼w\SÉ÷?<÷¦Þ$@h±Ä"UD±‘&À@DC‚I@Qw7bï½aYÄF³®mQWÖµ·ÅÞ]{/Ñ]Ûîº>gî
6322-MÑõ»ŸçŸ¾ÞSÏ̜9sæ̙›ËÍA"BêF `Ë$„ÐwÖ­yÕÊ3ücƒC¥#³Uj?äº;eéõ9þ#FŒpáã®ÑfzxuéÒÅÃÓÛÃÛ»PtÐå«õ²‘ÔºVN=¤tÁ
6323-]ºV™£WjÔRœ—¥irõݝœLݎÌΩíV­s—É5i
6324-÷tM¶ÇHYŽ‡—»§îˆüƒ´
6325-™^£×hT=1•4T%ÓeIƒâ:Jc´š…NCÈTÝ<>¦®×^èáíéåÙÁ³S/¿x//__ßÎ<}ý==ëµe(™¦Q
6326-½L.ÓËj{wðìÒÁûø{zû{uªß¸­©¹F®ÌÈÿªÆu”ÒnIïëä)O¯gN®VE¯‘<ÝC¡Rd+ÔzˆÔ‹©<Ý?C£Í–é{ÈrrTÊtîÐcd]–&}ØYž¢Co7:Bº‘^©W)L¬ªô¦”J‰‡÷WÉԙݝFv+2d¹*½Sf‰¢r¥L°ÀÌK¥¬™!ӉG½®!™Î,Ÿ©÷8ÅðÚqzDh²ÔÒà|…öãŽ*­!#ÿD‚ÿÎv”2[™®“ê³Ò°ø¨H_f¦  HcÂ¥zT¡–¥©Ò6*}×<¥\¡i“©ï*•©åt‰,W®dJ”j©F%Wh¥iZ͝B«û¼²úßÖÔ(*êË;*;Û£†Z§Ud|™ZŸŸ£ðˆUè4¹Út·2íȨ(ÿ`Mz.Ixp(p—+å Ó=½¼ü:zúy{vêìåÕÙ³³O—N¡Þ½B:ùú†„v¡½aӚÞÂÕ:½L®0õ¦ü?ôV¯iMo}µÊL%؃ÆxíåêåäãåêåÕÅ«—w—Ž]B»ø…vöëåWÓk#]ÔÎ\¡Uæ)ä¡ZM6½
6327-92­N%ÕÝ©FTXL´|ý•LÌëß&öIӚÞäL¨óG½yu
6328-òêóò        éUӛ¼þD˜"Íÿ"¦Ïv!­]æ:9ý/*«ÌÌÒ뾬¨Zš¦æ¼`Zø÷W¤ÅéÁžb¾z˜ZgãÍl2ˆCut4»5i”gÓÉØCŠ‚H8/[ŠrörÎñsքg¤©}sÔ~C꜈`¿ðŒÌ¬w´×VdŠKW¨R/„zò¥tAæ+»7Eòöö>ŽÄ¶©qïîM½8:¶²}°R5CˆDã n V)S¡p4ê½è’‘d˟Ï.dß`wæ¤p¦sVp6röss§smyyfü9ü$j15A Ìnž¾Ú‹Ö‹ÍÓ͛Xt²èc‘e1Ù¢Ðb£…·¸R|\ìjYaùÂò€•‹õuk£õ®-߶­íw¶slW۞±%%ž’i’{’»L»b»ßìÄö㚬lòS“þ+ÄHl¶~æÌއÅgòNtÝò0¹bËKKŸcɔX˜2™_ù—Z¾
6329-%O–á­ÑƎž$X•¼½èÉÞ7C“ºN:5ø±ðXú òYÁŒ¼Ëã¶|¸V:äY‹5:½c´(½Å»pXuaCž—õ¯ó'ÇêÝïϾ´qð“!½£ìòâçíܵjMõûk“Oµ½”±û¯â‰»ßuœh'²{â‰ü7!Vù/•"÷£¶ú
6330-‹ÒÊvý1üÀ5qîéÊd3ßûGV»øÛåØÍIÚ¹þâþgצּ?ï:m®yœ/þæá̈åÓÎ-<T1¬âoY"žž
6331-/½r¶ðMÊ#Mî³E]+ÆhFÌ¿ƒÈúnι ¡DÀøåÉ֕®/¨Øí‘nå>ŽØS¾0VŸr¿ýಀ‚3ͦ”mŠ‚F
6332-„9/éli—áZæJ‹ç$uܝ˜Vö¦GŸ^^äúgçf¹¯Qo¾êº€å´ÛZv7vñŠ¸X?[‡€®ž   ú½{Y‘/¿Y4¹ì÷™7:Ì_û÷€ÂÁYæ{%L’ž(v±[œžsœßgOì9óM¯¬´ÛñJcP«×öŠËd‹Ž‹S|#ažûÅ        %W-ò#
6333-äšnˆµøç©3»²¤‡+âO=tÜ­¼Ù¦©ëYæŒD‚þPjˆÉeˆWí·ê:çnLM|ç`=6‰Ažm­Zw~ç”` ¢TÈþÏÛ  ‡®ŒD6ïcPßÙ7³ï¶¹uÝå±ñ('òîF²Ùë1—›û…´ýsҋa+õcGžuè\Ó±Ï]f£ø’*¤³÷êwhH
6334-¹@X&½›° }¡eü
6335-”@,[’˜ë$F^Šôöàß =§ntÄŸi Ò]—}§ x]KçˆeÈe½ÕrÐѝiY슨—Í:ì^}uЁäW…n:ãU~ü*µæœoÂû»cÏMéW8 ÀÌKÚr_°»‰Sç·W»ž”œPÞ§7B?m R..˜a›ÆíØOŠºVßõ.MxÛº‘6kfĬ‘x=oµ&6+óRÇ)䎈,‰GÂ?&Ù< BxczŠ_l@ãwˆ5ˑí‘Ù†‹ËÃÆ÷7ì^½mL„«‹.qUəvdÅj”0îÜÔÒnö¥ÙHè‰ºñ
6336-æUäÈg«QÛì¤×GNüí·¶ÜïìdtÏ93C ?õGaYö™ùï(Ï +‡ÙDø¬WÍJ¾Ûží=lW—–¯¢ÞÊ­fÀ[O¹¶^Aéòíj¼õä»&y%.çW@ͱŽëiƒÐÖËEhÊÍ
6337-Ó\'ŒšBM]×^äç8%÷[ó©¯7ÚR'oßY~ÿ¥#BóV¡’}¬¶i[Xm‡TöNzS½¹ö]T…á|;ÄIn8뻼qôí;ٓø¤cÅ{ÊÛ8™±D#¦LÀé7ÂÕá¾?â%mBì-[cû°Vö*wuå;¦ —ÛìÒCoü||DŽ…æM\ÓÏ>ë¦6îU¨[{rÚµØ_ڗU–mºôôY©W÷SÝÔmtˆ[“°ÌÏî@[nˆzm©Ý‘#oóh½ç=åÑk滳6/?ãÜ
6338-A¿'úgó´ 3ýn¥â—-fɛ†>Xpò±¼Àò5«»¶ìpù¯è‰«ªÜq¿ß{ǜGëò[§÷øñûPNŸŒê‰½ÖÅ{;LFv®|÷ì؇¼"ᜰ°J^ùpæsÁ’ÊÁ}~€e°1ñ¶¸¶èŸ§viÈ 6›ß2Uîì$×Çñö<9yÒ_RT%_Lܒl÷3…Pé\AyÏ]íp¤ØjyÄþÖˊPÿ-›Pòï篠òõåW4ÞKó[:wr-wÜYp        ‘¥UHxÏ÷èƜ~?Î(î8
6339-¡b@Àä+Œyë‘Ù»Ö¿·©BñË
6340-hhxTÒi*ñ¬¯½±ÐV¡M€ˆX$ٖÚ~{âÿž0Ÿ–„e_·*`T‡[\»[ØÓuCÒß%Y›+y¯
6341-{²ÚùRÄìa
6342-A{E÷ÄL}çÞYX¦žG^ß"Ñ9™?ôíëâÝ3uþJ¶Îm]ÜQŽ1(üՒA¹£½¯ä
6343-Dò+±¥À±ÿ–‚fßPäµÁ<ÊPÙ2Ïã”üâs*‘«O"é1íÆv!,C¬¿ÿvã"¶~[¿G®ßïr"½jmF7³foJo‡´Û¼+Ùû››-cð!¾ÓiõëÞ÷§"AõNDîæ¿fdEš,0Ë;þbëzF±áäÙ5¤½ïîÒóL5
6344-.`Ûï9í°ôˆcQYÎÚqë,ȶ#ª{L]¿óMå¥ý•;Šâ›Ønê_x©_Ê°43Ä    CœnýâKïÚ ¯Ð²¤ê>¶énƒÅhøŽŸNþ”s`þƙ9ß8áû7^‘ФßlDªâ‘Àe^èÍÄ°¦& NÿÕÈ¡KEBÖŠ¼Vî,ƒ±¤C³%–oa
6345-º 4Z¾ úÍrŸæ§ø+¶ÿèï"¼ž|gÕr·»7–]ÙLjgq-åÐüÑkÝ_döÙwSJ+ҝ󫟄òª‘àŒ‘?˽WO^3+«"¾ÉV
6346-ó/»XñÀ€¥I¨ý{]§´^!ÌÖí=>çú(}nyy÷n›^Ú±û¤Ùb¿!ÕÁWý64­Fž­ÐÑÅoG-H¿ù¨ÿ”ˆ•Ë¿ÚvQüý¤AÁ©“ó.ÙcÆK×´ZYÑiÞ
6347-´á:Bç¼V»Ý96Ca2¿è&û¾½›lٜùH0ʂÒÊͦ¶ž&/™·>¹j7¡TŸ´Â‹eûÊý{ ²üO$Šo!H[ycï£6   ’‹ºX2j}ÖÙí±l';Ü@¥BÚ>]°rgdì½þý³ùÎ¥Ék›’·WJÎn     ôb´ÈÕO0½ä’‡‚Ûñ_—û˜§ÝFä’Èå|ØÚåéO^µ/=iµ…<1ëÓ6êýWëZ;ç5±Óô™S_œñlW›ˆŸvµéów辺²Ÿ;Œp4OïµyDÿÎV”'lpZåÐV§/Œè#ًáQ¤oyø,„$‹ÐHŽwLÙQy»;"·vGhí TYSq*7Þwtëc¡ëã¹®ÁîŽ'¬ÖP1‚€Sªjûã²²+
6348-¤pxLE‚`×
6349-”Ø@ÌvElgÇ}oK&  oÚs‡–í·}êÙ­(¥ûܼ»!ýÖO!›½U¨bAˆëʾˆ·'åÛ‘Pbû-""îæaŠÖˆomüê²öCÜýHýÐé¹[_D®ýP§ôؒfaÈ&¶Åˆvú<Úrã×ò‹Èeq¹8³L91çŒÍ¾åÍ#ûŸäsÚûÞoß>j³ºW׌H°$Y=nSÖGTØÆe|Eä€QˆXG@×îë"¶Ç®Ÿ×³l[Å?k‹P™%"w.èµGe€øÛ+?§­,Â5ú@»áU¨Tl@ý*…ä‹ï¬¾Åé`‹HÏs›%\~’CDçDŸù).mڝ}Èæ—!„ÂýÜ —])á™ËåoÛ¹šÜܪŠó+'äUâ°¦¾³'15>/A‘68YWk’ôÛ#KKBœp1âŽ~®ÉÊCˆÅ‹G¢æ˸x>·õ­yé»gg‰<)_²ÛˆšïøŸ’h—˜  ml@P1ÙüÓ¶ùîY  ]Ë^ÿÓÓuP§ñÞ¶þ+gÃ1ü£;½mCƒg¡õ£y»Ž’w_r dœÿÌ%䛬0CÛ>a£û\
6350-¸ˆ     æ´¿õM{ýÖIÅÉæKr8ætœ7j çC¥EpesZâæmòùæ²ÕoïNÿv=Eà•~¼ÇÁ®úo¶î¹ò²RÝäãKÒO”p<¤ÒiPÉ£°¼™jëÓkZì»ïÄÐh›óȒ,B‹û í^۟³BBï`××1Áã¤ÂòåÜ»7rÖÚÚK·2¢øùU(cb`¿BûMHzNJ8©Ç‹~н_þ÷¹ößZ't~6Çõ)\€ØÎ÷ÈÙ÷ƒdä½±=ÝûFñaWç¢Û§Ç{|—åmŸ±óôêÓf­å¨}™w{ô׺!(vKëÖiÞ£
6351-ÞÔÊ®¬ò}m       ·"$¸°HR°k©d\æԅÇñ‹™Ö‘­&ÎÎsš¯Ÿ¿²eYìx}nÅÃ}þ!CPû>1È,ùbYá®!ÖiÏË¢¦ýÔòñ½3m  ìêœtµýáMWÛOF‚'W‘ÈZ{«¤ÙÑÇWç}³fÎ4 r”3á"¿bü¢º­}^Þ-ñ©U!lĊ5+\[Ø)}ðÀ²áC
6352-ÄÊ2ÄYxþ@hyÒü—·EKÂoÌAÅבÏÁô]‘‡{ñ€)!E‹ÚT¾JçÅ
6353-/þãÑ¡³'+”mœþöH2]n;ÐkvÆ҄%ÓUH”ƒÚõ£‹'qgÚl/¾nต ïŠoúHNuka-.hðã.—Ge6Â?;x®¡âع›\B. AJJV¯p·XÀúûŒÅËåžo(˜¿ö¶KŸv  .[&¸>@Ћ
6354-gÖçUPÙP˅Cþ†nƒ3âLý•»Ó_þ×¾X‹¦sºµ48ïyŸö×7ôóoOÓ'º­F'$$µô-±HH,ê&i‡lc7¡þÛ«R®    ›+«P¯D—`Y¢ÍüÒ³Û+\ü·w«¸Ùï®Î{        œ•ˆ×ÌóìÎ[oGÍ睍!çOo>hÐdםO«²ÊÃ7Wu”½þmÊQ$xv‰vš[•ætŽœ¨xûVW„á`p¬Ê™x¾äfӕ3§þc.3gi6"Æø9¬1^9°p篛ºý:õï3x¤#vbŽlyâañ³c¿ŒÚ7êIиþu×¹|³ûúǚ¯ÞìÙצwHûюŸÜ^™…wzµJ-}÷ÁÉ£^6»4R½àô“1v'¶o•ë×^3/²rQДüÃS…ꩉ¿Ïùáa²y‚ö ÆÇx¿öÃéi~SG¹bÑ¥U§Ñ:\“5>¸áÏÊìR:¼{yôT×7pºˆDÇúnÉ/CPÊ\8ùøCw*9»is<"ñ‘
6355-Ù¬dù䜳w•± yA§Êy   ÉkÍ(!¾ŠÐplvØpo·K4}eº`k "'x»mS´sKsDD\"“RυG}K†4M–:XöGëÐ3ÅS1åÚÀµÅÒÉÁȵâ:¬J)wÜ<ú¾sùÏÏÍ¥ñà䖯oߐ²Ù^+BËÜCF-s@6/’M·„âêÄò˜s²íRZwê?ÿâ[?ëó݆nÈè,5¤tüq.tÎâðMÈÖµ9ÜâLJrºYòo†nغf1^ƒŠ6ˆwÞ÷~ð˜Q??ÈÁ©ˆU\0Õ@’f­ÂË|ž¶é}­ÉBìα¥½BÒi踰Iˆ°î6 ÛƒœYM¾/CÂïNŠÖmêûä¦Þå¤]¯œ¡G3¶OF䮍ˆ•}ðüÕ¦T¼Š}W}{§%¢Ëç·¬—Àù2È@´õ½¼zî…4ÕöGûl@©nBI£cÝ;pÈ®ÙÈuü
6356-T&_¶Ñ‡3‘7ËY4õð€!)¾Ú?„¾{t:²…ëi3Çâ5½ï E'–ý“0ûл$‘Œ¸ACr˜à ·ElvÓó<<?¸å\
6357-ó»ÍþAìÒDÒîñP×èí‹Ã«ÈíÍʉ¢æ¾ŠŒß1ç0ŠK3pÞv°ÕälUûêOì>?ªt#¤YG¶ÎñÝ/×æb]¿ëšò:¬W\Ù|ËΈ=f5
6358-¾Fár41vŠJ°µÕúâö†Ê“ýúÙf
6359-h½'4\lm¥äSG·ý(·
6360-6fGĞÜeþªU‹[4Y—xã…`ÏÀvþ•Yzè|¬«rêæökÝF2G¿ÙQ¥çécã//-’w"ÓÖ
6361-jm@›K‘Èóp»²HoА£Åo%“v·ŒXøvð„ÃÝ\z…ŒDm\Ȓm¼?ח´ìÓ     *#ßôáegŸ|]~ú±cWÌŽ§ðiöpBßë¥ï}hê¡8‰ò^dÅm“øúwœf•¯¯ã“„’+nF]>~màò„—ƒÝÍû۽ߏùƒ2µ2ú‰8Ö„>1hzõÖأӂ*íÊ0ľxèP‘Þ[±Ÿ›~ºf,tVîҍÓÞµÀPapÙçŠÖñù­$«»y¥‡¸tœô.À|hTUÑ(kŽ½þä΂ÈԔ•·~Ç¢MåÍ?lÖªˆüÂá±Dû˷ގH–ôð“¼\¹áJÕÖ=®U×ÎÞ@ý­ŠÐ†Ÿã<š·R€:[«—\¿Sis4€XÉjí£,Èñ\˜fñª›ý‡Qs~{;yqùû¦GWTUl&f¯Ú+ÿæø    LÜã¸þÝÖ'–?Ÿ¿9z¢¾U‰|¸N˜iþs¢ëk³èYoË߯º}˧lÅ{ÿ-wß®sOFq9Ò¼@‚Ìû¬<½0µÍý"²)n Û¤ïbn(èr“qMJºiùvJé\Î1±Ë£†5ÝÇږ¿÷\g@Ë"DïÊM©®~ÖîEèƖʤisìc/€±}¿Ê¼j`§5ùßΟ%bK֌Èi‘\\$XTTtnj'ºû€}ó~^fo÷äa¡kæ›'û›`gd¿>Òl½zB®^CPDšUi[~ؔïù[YU¡5…ˆã²»´ß #g^¹—o•íyölY²ç¿üaåo“z%d.}±~Åú(ÕÅE(Á£§È.\Ÿï=è0ÂOïhÚmÕòöžeŽ§Ä͟K7šïç憖~4eFTßLiç•õ¾x•N\tz¿m9Wæ,«”˜\µÜ@.œ,}–Lò³çmð)Þåò&¬U¹0Â7­¬
6362-¹œ
6363- /eGlì“ß)¹Ì®"o·9ºÝ¸¹°ýmcÆv‡ù(å ÓËì"΍rû‰Í¨ù/+
6364-ßnBn„ã'-~%nJÖ鬂ôGam:_¶"¬dþ¡V¾‹šp’
6365-}Z—ºêÉ;ÎߙŠwø-Ƕí”GþõmÁˆ9çwÓ-ٙtvç“ãÃÖn땽=€HÂWBók%®wr1yÉxüŒâ×7o¬Ëo>ì°_—¥fô™yü`å°ø6WäÈvʯk⧗6ôN‚8Ôî«yÙ½ägjÀ…ÒÅÎ¥fXú9ܟëÚÚëð     ÅÁÀþC`á\î÷é¢ïÖ?ûՏNøaÇÍý뾚ïÝKôwßY÷ømRÁò;¹¥Wï©%¾î]}®Yš=%¶<¤Ú1Tðcó!ÐõLgäð•Ôî‘pùúžïnJ½ZÙïâ_ÑKªždª(ÿV··ýµ|öЇróCÇFmLb¬îñcM©§Ó3ӟWf\ÙÂOñº×㯵ٻ¤®Øn˜üöi®ŸÜÚ@ûͯW¸»äú¬™»«¥òòýèI||\œð®äGá6lD>;utÚ¼`ùŽ¯{§N4+Þª}g ˍȬ™{ÄÖ°Á-Cl÷[Ï ñá
6366-DÔó¡S6Ù#^ö‡]ï/Ü÷,ö°æúü@]„œewy¼¯¹_ÈðѧD/†­Œ ræƊ—ó‚‹{)2ېüqˆÂÁÔ)“Û%a™ýÝ!p5¸£šå8ó}{Î@  is±‡å;ŸQsÌ°‚Ö¸aÎ-kZ‡8Ædßuþ”´å†œõ³ÑÚ]HôjtÙ}³gH .AmçlogWôì=Õov³}Ä铅8ùãlïY"¶[<_‚‡¥/€ªD„š<~.³ß>ĺˆØ„È Øãz°ìhDbÇ(9¬<_’3e²{T„†DǶqÍ#öm Ÿ ŸsÏʗùÍF톡c÷]
6367-Hy*/'@'@ȶƒÁ€ñ‰IÁH¼9eä¤/ðóLжÿ&”¹òPÂòÞ|d1öۛ8E¾yUXîâ’tªÄV!×IWîlS…RËÄØ.a‹K/ò—`Ø&ôkÿÊ
6368-9×ÐÊ29Š'T€ÈïªÝj·ëd^ØÓ|¯.ÍÔNÿ¾Þ÷PJÄÀ‹¡V¶x”]Ÿ#c$Æüê‚æSÝ_ƞö[‘»¶÷l|Vb?júø”Ù€õv"¾b_i:!÷¤[¦¢Iþ)MóÑ+ûúیžõ䄎u²kñ»Ê7½Vè=ΟDR%"Un/Bñ»«Ð²AùW¾‹Ø¸ø•ÓaðêÐÎÑ;7xy÷—Ýv=µ²r³Ó¡žO:›4.ôZ°ÿæn­¯öŽÜ/kV|:0>M0çŒoarrE½ÄúîÕúży›#—wšqÓã~DržKЁÍ''ÄpýúCøÈ#GîL¾wÈߺëîÜÕ#·
6369-¯^ÚÂÓVßëÐ
6370-ó%êß÷®>,–ÝúgG¯áHŠ‘j…œQkÔµEírEí‘ê€Ü‘òD^Èù ŽÈuB~¨3ê‚üQWÔ
6371-uG=PO€BQo4
6372-FÉ(¥¢!()
6373-©‘i‘å¢Ñhú}‹ŠÐAò*i-µ‘ÚK›H¤Í¤Í¥-¤R©£ÔIÚFê)í"õ—VHUaˆKÈ`I°$§Ùd·Énn½ûÆX¬vXíàÖr§{°dµ®Ã5ÿÇå;ÝñÿÉnýx÷À%Á’ù­'»ÁÎn7Ù­ÚÓ1靇mv:0=®v˜ì†bª-ñœÃùÉn¢f(ÅÔÔòÑÿkÿúÎê‰qÀ?k2ÿȟ:áèz/yÇ¡åþ× 5ˆ.³‚Ô‡®5µ=Ú×õzmmÔ¤6Õ½¶Å÷þ5)¦—¶=Y䙏Úf÷`‘wéoðògšq?®­K-ª­Mîù%ºÆRè”
6374-¤~«M}LÇjP¶ vnK|jREµµßԖ5md4òGµ©Vþ5©›PVè]ÃKVmê½OMªÐ­éS¡¶uOœuú”Φ–Žª—íW“zìא—lX™:øZùý?™ê)Áz@"æõ}¥RoOÏNÒø,…4J£ÖèósÒ 6G£¥ßˆr—ªTRæÍi¬B§Ðæ)äîèé…×
6375-ᔏxύA\j&‰>|ø°FfSü”»‰ým+Ì^M&¹._}d¸ùªoBÿ2»öZ‰èf1µ²ÜËo!'  ´`sVE=ls¦íåÚCu’MÀ…ÉÈU©téZ…Bš¦W£ž|'¨å ú5>«*÷…ß%8n`o6.c-<;қ8º} ÄPÁ….'r¹4S‹_DÀ!82"Q¢¢¢H8
6376-ú²\n.íìd.‰{cŒ”ÀSû]ºi›ûxów»„9YG*_]Ü{m©a/ßzÁYð€}à´'+'Ewlj:¶®2æìnfɼ
6377-¨í5rÀ‰ÛzËe~½m†LGLWº+Šéj/Â3¢0¢˜?Ó3ãgî™vm‘Ùøîå¼]›³·ñŠ€ÎèD(¬‰³¥Ê@wtèðž…f½wŝðËlªŠòu4|°Ádf¨_Ò|ÑþÙýÆO±w$Ý
6378-HÌÑÚ­Õ}YÚËÁ{Ù÷&®ëŸµ'l´›Ã¬¼u…ꓝ.ö›jlùY×Jß
6379-ª˜±½Kåì×Y¹-{á̃I þÇ¿]C è ¼ÿ®[7!››r"݈tŽAn7ºCÃʀ•˜V!½ö,ˆàHSuŸÜ{³Ù<3ÐÄ&EP…7CïU±Ù洔ø&e3!KÔ/qæ؃ÆæÜшˆGgØwê¼ÑöØ«gG)CûŒ³3kŸìò$@uç^tŸNº
6380-ZmóŒ=¥\òÐÍf˜~åà    œ—DÞ%徝¥=ïÊr
6381-ºay˜äŒ†À V4£
6382-˜áYÒÌÛ¬:¶?âWD3ZÃoO~ôbúÿSjÕè„YD“&×*ÕÉ>§
6383-O¯¾Ðú§³6²ï<Ž\Úµ]Þ˜IôîÞ¤rúÕÐL…ï•×ï^¾ãÍå;;.=sћ€€‰G–Þ(ï<ô$'nB<Œ…7›MíXÑìåÛ@±-®ãYÓ↚Óï¨9P(A©Zgxڊ„ÍNk³•Û!Ô-G*S)3Õݝ藑œztËШõÒYº¢»mpœ¤:å(Èxy:IÓ5*¶»S«úŸ“T¥ÐëÚ¸Yº¿èéîIÿs’ShÕt‘—SOOúmQÜon9=L6ERϦ0ŒÚý¿É¨]}ãGoX{”…š&á7k´u}•¹%bY§uéÃ:ƒoÎX®&5–Ëž±\lÀF(¡YeV¨g‚ç6儣„
6384-£,}¥œûEî‚ß&ž¼3p°Ë"Žbc«  ¹PÛ´F@3|°€0=و€Òj˜ìWJ¨Fÿ‹„šÖ“Ъ„Íj¦î2ãÚáÀ2Û!ÏndiòÚxe¶"U?RÏȅZ
6385-“oŽ…)ÀoåÈruŠÔ´\8*örm™ƒ„‹P:ŒªÕ¨t©i™©ÙéPe«X`Ä­&µ6˜Ñmð6oÓl5Ýå¨dù¦rúP¢À\c¤òdÂNQuv®^!gºsÀµf`#Ž peM(UçªëÕãØÆ6ځ_öß¼ÕeDµ‹¡î`îjfjºÝlS€Ä ÏeŽdz¦{¹Mp¥ôIRÄ)JÏÕjajaª¶­î\ˎ]ç¦ÅkeéÃjØkòIu¤F&WÈk†nZ¯>Ÿ®ï%ÓBe3¨to•ö[ %
6386-õ¤kûÂZ€|€Û6-aáþ)šj‰^ ½\  ®eÃ5C¤YÝJ`¹ØÄÎAŒòŠáºÄcôقä<»¶‹‡Ø…Kð¿#=™øaOFID×9ˆ§QÊý³ôÙªšW½ýÃ뿵ìñù*¼¨]ÿcS¬(ÿqXû?6Õé59Ü8½¶R·ÿ؃B§MçFçf§)´Ýÿ{`‚ÿsë :µíùŸ;IÔ¨rÿsû̚ö¼^J!S÷øÏ|DáÍý›×ìíÀÿÖ¼ÞöùŸzˆÑj2µ
6387-®Ýzik„LA®l˜ulÐM þ›€š^LºÓä³NŸo[#­ÖŸ'©'—¥ª™µ%ýçõ§×æómëgDôߊ¸+ðœuf5ÝÑ"èôùÔ䘅ÉÔr•BË¡{}ec¥ÜÇÔN€g¬¥wþÊÆúÚ¦>º~eC&W-ÒdçÀi¯0µõþʶY4yˆN闕D›Þâó؄~¡ö–_¨ÆÆûͱ•m÷Eîê°/¬UŽV™'Ó+üåJyœ^¦ÕÇ[`¹[}±kÆ,}¦Öt}a§Ô˜¥/È8W…Øþß¹×)ÔrZMÌm—+uX¾fÁLÜ7m¨"ý£
6388-3@“Ÿ›¦¨¿
6389--f¼Õ—ÈL¦A’”ÜþKäô…)°»výWÚþJ¹>“:‰´ÆÈ|qìHÛ¯ ÅºòEf»~Q ¦¥aK;oÚpµ²f#{}M[:†n«ÉóÿO-B´ZÖïÿ҂þ»’ Øû™Š€¯k—ˆ7N¿µ_.ÜIôùLž_ÓmÛLÒøª ¦šp¹05-_¯ÐÅkô2U—ÿkcü?12­,û«ôqË­Êé߶ˆ6]ú%¼«¿H€•Æñ‹Ø<~±l ¿¨Ë
6390-Mdë!eÌÙ©jÞ÷nÙëð5²¯µkÜÆL­€õúUd(`>é
6391-Ç/’a&dì$ýçVš ÕçÛЖ   OÏå_hê,]»¡¬µsNŸ'¬±r_õ#×ú_)ñRAˆõ3îŸ'kl›GƒdÁ†ä2¾•÷¿·V×40õ`§.ÁˆÐÆ«­Ñ^tõ™z²Ôå«Óëºñù÷ndµ-L}|EÿEu°L/3µ‘~Yï>v—`›àñïc\
6392-î—
6393-YöºûÔ½jXý©{ՐÝOÜ«gSÏv|aë|ÆYj@ógéã~h«ÑþkÂd3¾‚–þÓØØø¨A”B7kõÉMÃã“ÇOi°H˜§%ÁŠ}V#½dã!ÓõÊ<P×(Mž‚ª}øâü/ԑ
6394-Yž¢é§DJÐ:úVÑHýØó¹:üHÈásu¹úfŸ©
6395-R)Ӈµø´R¯ÉÌT)L«ýåjüMçô)MŽF§ÄÏ$H]#£èô²L͂BÞòÓj°‚`ÝMÛ±‘URডµó¤PŒTê뺮¾õ§õøQa\í£BšÕF©{ HSX„Ö¶¢•°Ýgf^GÆxZòFo}º ‘:leè‚FV—¶   t‰}£³û՘*¥`>¢Ðøž¨35®Ùúé¡iË7¦Ðog|’»~^ê–©W®^¯Q·ù”4ºù˜¬‘ÕÒ*jú¤Çmt&&«ÓˆrsäØ·6)u#{Î0ZÞ,SF®07=´       Úª–©Y,üeŒü üh_Tß̙5xäðùGEl¬%zÉÙX)ØôcKf•y&'ɼáúQµ«E՚l~Í*ñk¼a=OÃâ#ÿļá#(Qý»¬UýŒ»LçÜÉÓÑôGñuOçã÷HËUªôJ57•~ÐÁ‰Ã¡“‰×ÊÔ:üYó¸Y3¦ïµB%Š«—±fª˜K^'¼UÜ'E¼Ô<zÒæ©9ZžµI©J-
6396-1X¢r\D?@ÁẼ{Qj=ÁP©5â1†Æ,5-7û°rL$¬i7*U–kÆǃã㧚V–›Jûa&—6W¯Té8ô¡`–š¡„¾‚dôÏâ£ÇX‚º'S–Ÿ<g²i쒰ޓ!ËTÌL`†ž¹Û*ՙ=Bá2O/¨ÚaÞÐÉçÆÁ)¬W4ýÂ=À¦akEÇ.‚Ô¸º)@|
6397-‘I^!Ù9ú|ajg-J­ç›¥Ö¿ƒs™ˆg*´0Åá¦%¤æ×\ö¸L°^W‚º!J|™§K)œ¤Í`¹ƒ²à’Òéì>s÷7kp¯7kpg·nä>ÞìKwmQ}'\Tÿ²jÛè×º‘û¬¨¾sÔä³n“Uƒë,†oG<áFaÉAc÷›bԜ|³hÚ52•óRu´ïJÑ÷œâ2‹%HÕ¨ä¦þÐ+öÊ(-L–éC!·¢×¬–B]¯(K¦£µO!7éŸ8¼;`´öV(ªEäÐcŠ?¾ƒØ4v°üär`ù‰ëoÖÀ1§jK
6398-<0%vXr„õ~L3oø¢Œ(N‰7süP©ô­–…›*W¤åfbc’ÈHˆ^ëXPa*혔N3º(Ne¾ý—­Ñè³@6©2•J3‹%7S©Öd˔j¼lu®ÝÖdÑÍRM|ÆéóU
6399-Æî„Á薩j0XyŠÄÚ`U¿„—ªÉÕçäêÌâc£IÅCªT¨Àdd|tҚ1S5i”E¤&]¦ªÓ‹zÚ
6400-J`
6401-3!Ë×ÅeiFÔ¦Ân{É´fõÒ½2AwL¿Š
6402-Së~^5K­ÿk¨(µÞ/«‚ÔZwܼ.‰¹ÒúÆ°,J¥ÏL&c‘Úðwa‘造OsS&AMgÅõ¸ ÏmóZé¬e}^èX$µ_hŸ¥Tëá419üæøÌ©½!(ðöÀsŠÃŠ`ñÑUÄò“‹‡Õ§—ªö*AÕ^¨ZYñk.‚º+€¨¾Goù‰{/þؙÕwÝÍ8ê¹åæ
6403-p³.·u#¶ÅGî´¤qg™ªu©ZGXPçöRµ¾¬¨¾‡iÿ9Ò¦1ïÑâ#_Ѽ¡÷gù‰¯'¨s儑}ƒC‚Sƒã*Zð÷Úø1±}{džÄÅñkŽpA|xTHBЅ°M`Æàƅ„ô         /N"fÇDàá <º7/‡1Šœ˜À„¸sfœ¨ø@<”93T¶éópœh¨ä(ð1/Jì™Ý;DÄ(t:-Lv\|ß
6404-wO”6#¼ Àhzèt™*`Ãñ0ƒ˜Ì!6Ñ¡   ‘‘qA±!!ÑÌâºudF±ëÂP¤ÆńŧÆƇ÷ŒPÒ_$B»~   ‘áñRãû¦âqCbS¡Q|˜ù‚žŒ“6     CdÊaQÇz$à/ŸyÕd©åø'šOEé<2•údòÐiÓ=hËÖàÉ׎5œ‹½ÿS—]:ÇЏÍ'%ξ¾ýþw~?ò´9#°5çfќ%Ógq´Øûã™ðk\OžÉó¤êŽ¡zëd¬X&g¼½H¥N¯P+´„BXÏÃÔ=¶ç…û„«34,ðCYš´¡lü~+G¦JËÍæB§Ðœ.?f€“©Pk᪡Qgâs€£Ç6”¯i9ô¡ÌRhµüšMÇU)ԙ0¥.ZÍÊÕªX0Ž !62V1<W¡Ó›ÇõMˆN
6405-êb­Udƒ©kÀ2‡ž']¥Ñ)XÐ/×äö7¼^pè7†(ú‡eÌ7O¦‚¨ÏÞßÌ­žÇïÏs£éýùn´Á‘C½Ã €éޟëëåïD8‰Üê¤äoáVs'è…ýÍÝêßü9ºl8ß¹xÙs³9*™6SÁɒûy{Æýïzò‰÷mÓà×EƁwnXØà'GlõÀÝPh[6$
6406-Çöž9Û¦_è¤Yý_ðýé•Âõ2}zxbøÌÇkgr²34üš¥í_àÔësM—HYŽ’qÌ{ÂɆ?ÌÙݧMoÖÝ«
6407-èxwÏ6:p2”Ð$•y©XëSs4p´äw÷âÐêÏ¡ù¡uQaž¯—2]JñU€gâ‰{!(K©’ó4jÚՇ˜VXpùë¹÷vŒËÿ‰go†G¥Ï^ùárQz®¢6ç›K•:66ØBpéƒMZ'1]Ø¥´+Ît菽~SëÚ½hÕ ŒÖ6ó̆7þÚ»?W
6408-æV–£ zò” ¶#ûfpÀÇÕëàøÄ·1XN¡äÀª)õœ@­V–O´aªb0ѝÈ#<„°Žúp¦5¥ËMÓÑ/I        AxÌs‡v.M>³dy~-–ç¿/½ã‚v.ôáÏøÑô¤“ôY¯aã½     Vì©qSéÊ3]ê…nµ×M‘[Ýý¶w½‹¡¿ÅÇzù‰ŠKßÿ?Øó®e,0l¬£æõ+œ=ù5—)¾FÝ«°F­à¦«”P%ˆ‰OÅgbBœy\HPB,>MCbcûÆRµ÷#6–/;üIóqQ½›ŽÕ–ƒ¤ö>çދ6Pîô­Üö“bì05op%t7%ÝãrÓÓÁ»i^×ow&­Ñ‡blóI-hX½aâ`E݁X™‘_'ú¹Œ©Øú“49’Æ.~þRªvñ¹±ŠÌ‘9’­>;§nŒ~ŒbŒ^áÒs°ÿ`Áœl¼ì|\‡m—þc-—‘8Ït-fv-ta`܀è F̂ºë¤…L¯—¥gÕrÈVãuŸt‚•Õ¾»«Ë`ví2Tyc²s:|\ü¡Œì1(e°Gr{g¸ *0KpvåØÔÞD¥¤W0+)Ø¿4⿹*Ÿ<µ“4VèìizÿJ—gk¶]C3_{7¶þ¤-¨kÍρ„«¾Â2WWA¥gkáŽËøÉL>C    7VPEì,9[¯ÍUpè+4lfZI92•NÁø/xQù´t`«òkl
6409-¥«¹83¾
6410-s6hºP
6411-ÑD‰¯Ç´k„oô½ˆvLè÷­ùž#}èftEšL[S¬ÈÀÿÅt1ãw×6
6412-
6413-ê̼ÁS³U9ôEF@ßëñKß|ðºS#CBã9ô;àætMܛQ°7ùÑ}Sã‚#Càêf*Ô=(Ö{N@á»9}é ²sUz¥
6414-$Æ¡ÑÊûke9Ü4H(´â`­&'.K&׌UªÀœ™Þ.Ê 3:ž)ãG[J`gHÍÝÝ]À¦–æ)uJ°ô‘‚Á^ù´ó&SådÉ8A‘áA}ˆ‘D¾°ž™çÓi÷4…yÃ7Àu7g~͝YTÿ/¬O£¯axêf°åñN†M÷í†wu~Í߂ºw¿ù5¯Sµ/™‹ê¿ÚmñÑ»Üf
6415-^qDõ…EjTßÄSR±”)™/dR‘!‰!âðèðøðÀH)s¿ò—r¥Q  ñ!Á|iB4àÑkå/%ø~ž"~ÁÅ
6416-î/Ô8äþR¾^üjL™|sØÜ&]÷—
6417-kuÒµ:ï/57í?ډð—Šêgͳdº¾#Ô1°ò
6418-­>¿yˆé'ú8Ãaà.˓)Uøð—Z~RKÕÖ6û´¥†>ùƒíš$[
6419-‹Â¥•5É&PŽ"J!£Âΐë’ûP¦ÇlÅP;m%˜‡Y½´Jy¦Âû\L·šŽÜÜ!PÚà­©&^C/h@ÆցjéÇu\¸m‡¬YÆà¾ý£…øªšÊÜDÍtÉQàK;;:.ýd%‰‰pÀn+ôØlƒÊƘn(|Zk ÇÅç§*‰«Ç^»žË<®dÁb       Wç8Ú1©i#þ¨렏Iü¥f5êI÷ÇVãK     ÜTÒÁ‰Ñk@‹´A2‚
6420-òx¸[õŽíç/ÍÀ–
6421-?³§Wb€C]_]å&­ù2/í8ÀîGøɳ£ba5ÁgU)¬>z”ÓÎE@ÕVšf*4Ù¢ YŽ,
6422-̎^©ÐYÖt¢k‹ç’ôIɛºÇ>q¦Ï}§ë-ió\O¹Ñ}c£#-<2‚S(SS·ýVúKèÄN(–4£^•U]FJ;ü°ûê1«ÿ՟C?íàà](àÒDÀg[)?ZÐÞ&h¿éÂ*H_  ¥æõ7Ážw