Make WordPress Core

Ticket #23282: 23282.13.diff

File 23282.13.diff, 560.8 KB (added by DrewAPicture, 12 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ãã_ƒY˜¬h Z˜jcVs͕†Æ™Xa¸³ª©À3`ž§3–?[/!ó¤–N·—Ã_.•ƒm+͒å)èÉ3R9˜  5ö³ÂÚnœ=…ôÜé®uÍc#ilHPHxbìgb4ñ&M!Øp§ÏlTüsóóv[V[·¶d[7ÂEÜðù˜³'#:9^)+']Ï3=4ãëMÏÌxÙJ5ˆNÇÅÕh     OŸ
6423-7Ñl}”ò²™§i”¾ö—@º¼î‡Á Y      !i&ñ’ÄIüB¾„°—pÊ;ȕ‰äÂþÁ9MpNöOÎS‚󄐠 {ŽƒdiGp^‘‡S„ÖÃ,‡­,‡m,‡í, -dK–²–±%‡Ø’…„d5§‡ 8!ׂ€äZÑÁ!6ÑÄ^Èѵ|ª&aV›"kSìڔ¹˜éȼi³æ-ZJ-fYåm>ʛñ˜,ËܚaÄґé¦a–ýQÞæ£¼É²¬%N„½E²mìZÙ:·¦+        ®M#¥m+ä4VhÖXaÛÆ
6424-Û      êÊæqyÉ#x<‚âæ<G6ç‘-y¤#åÍ#bxìx™Ì#Sy¤ŒGæðÈ   ³„àq—––V¾VŠ««kkëQmK   j       AðD½â
6425-o„xě!Þñollììü¨ììñD{ ú  °Pø°à™í‡ø ,À,À‚à àà0àà(”ëLCtb˜Ó"`JLEtb˜Ó!`:Ä       (;      Óø•౪ñTHžÆÃøb_㋁E1°(>ÖÅÀº¦#†©ˆmqOl‹ÏÎ΀eñèò"ė—W`¸«€k€ë€ß7 ü&àà6àà.àà>àà!à³ù³ÈâY‹ÖÀ¢5°hýðœàÙ¼€ø%Ä¿CüX·†Õ°~ö­}k`ߨ·ö­}k`ß:ˆg
6426-ì[ûÖÀ¾5°o
6427-ì[¿¼¼¼ü    øXþðÒÀžõ?€É³(›ÖãHk<¨áÀDHO"y’É`Y,K¦@z*ؔLƒx:``&``6``.`øÌ‡x`!ɳ[ñ@!O})ÄËË+ߊ+ŀU€Õ€5€µ€u‰VVRéR@ PXؼo„d!ÙñfÀ(ûäÙollììü¨ììº=ÿبüØø°ppppZkbÐR{ÐP{ÐNû£?88}‚líOBúW@5äOÎÎ...®®~ÜÜÜÜ<<<M
6428-x0^^|AÃØT  Á¡b¸‰!QïHºBñ¨?!   ªEÁZR F¬'µŸàS 'ʑ¢,›‘ñFB@R?@v€eã`7(`›‚éðØX°Jý &BÝÀTÀ4ÀtÀÀLÀ,Ø´Ù,1‡Em¡æBÙ<À|LŸ‚OÁ&§@»)˜6;„ûB­‡±›SØ      ª%E-j0Ô"–AP(‚¡À¼P`2(0Ôb sB-¸fƒ‚½C`©¥³AP)$‚§@ðžZu+°·(<‚Ť`ƒQ¥ ւºDˆ¨"Ào€€ó€s€]€ HZ’˜E yˆZ¢¨E ju‘0£.@¼ƒ%¢ZЍÝ‚ìXˆoB¼ˆeÁŠXÀŠˆ¨û€B¨Û
6429-ø      °ðt}Êïîî.®®â¶@s#¢At°(ÁŒCó“_‚ø2à*àÀxx ðQG¡Ù1ÀqÀ9(:ƒ›Aºðš?œe‰@yYME°”0>à*æjnâ¹nŠ!¿
6430-ó黀{€ûxÎÐë(?Øø•`óÈÇ,ë    à)‹ª&ÄÔ_„%õà
6431-iI½œ‡ô9À.ÀKÀ;(Dzմ±[RFˆ†ò½€­€*Üoⳤ^ÖÔsÜ%¤“-©WýÙ±§ZR¯!úÙý„
6432-,€%,€%OðÉü
6433-xøðð’ëlIY‚`-A°ÀŒ}â3ï†nÞÞÎBÙNÀoP^x¸xe— ¾(º_¬€ò5€ñlèâkP¶â·€Ÿ€b›šu¯!ÿ'`)´4S l*`à䇉n$¬`CŸ@#³¤f@•ªb`¾Í„ì,À;Ü`9`äoCÝCÀ\Ho‡²›~…ë¡—bˆ÷–M-©P{JBü6G5aK’èÉøµ£V°%T`% °
6434-pš%i*¡Ö@Š'¡&ñ^BBMx* Š§A¼0°òs ®š¹ÏÃ4€
6435-ÀzÀ(ŸÏ’P?]%``7`à'À^@`:ÐþñˆöAþ
6436-Äo¿@z?àà ۞:ñQÜú>ñqÀ$ [8é      u7ìX ùÒÕ8M4=(}•€u€•€lšPï!Ž®ìoH–BÑxh¾ð=`% PX¸t—p—.ÁJe€]€µ€u8
6437-}UVCz
6438-à´Ùq%à6¤wB|â!n)¡îBr$·6ö äÊQv_Bm‡¢Bˆw~€ôc x…eÅnJ½…øOÀ÷°¸{ þo,/ˆÿøÄ‡GðŒ Ë•€bÌ`”8j`9ô3â½P6⟠žô“ }€”ðˆÉ1…óŸÊ¡¦AÙtÀl Ùؘù-XŠÐf6¤×@s žøK    ò+‹ ¿PˆÇœúXҜf¼Vk8ÔZ([ǑðÚ­âP%.üs*Á‹t'±ä¡¬
6439-ëðe_Á¡6qð¸v0G;j7‰çiΎšéx5!}
6440-âëÐÇ5æRÀâÙpÀPHÀHÀ˜„ÏþÈpú¼¸Šy¹Æ¡(PÈ:p@WšÏ è¯,ÀpA|A,–À@À?–G,‘@,3¨e[à”!–%ÀŠþ.ó5‚þnKM÷`kHËèìMqØ$‹ÕԀ˜o)q[$pUBˆøNhÅku„3梵A‚ˆ6khpR–+.mSnbuÀ¹ã2<¦§¡ŽÊ‡æ¡£Á×±:Áø~€Î€.ÿ^ºÖðÂëfð…°;ö Ãžt!âw$ÙËa0†@H¡_Dô†Âá€Ì[ܒ        u¬(Ìa4îƒì[ÇAú1RŽñ"að”èH¤?7Åeø$0’^/„(¯‹Ùš§áPŽCRëC(€0      È(1WC镆×O…¹ÊÆC“j,wRS7dAL!BÃIDhÚBgЃ4rqÈÏáÅ:I‡ùt8ŠGCˆXcpìo&nþ-Ýü;ƒ!g,ˆ]@à‘Æ1ާ#ñDzàI˜j2¦`Rr*]:
6441-§YÓiBÖ:bτˆD,Ö,LÁ‚{6Á,ë,iö\3¡'I΃ñ°rÍ'
6442-ôÉZ@Â*ÈE„A¯§ÀµÕ07³‚–Ö0ª
6443-cc€†rì`5ìAG›À8ˆjJ A3X¼æµ YKÅC–H* ø„£}{'Db‘þÆ"ý‘Eú+‹ˆE°ÚCH²Üb
6444-Ýé´zÒµ^tèM‡>tؑ}¨5щnåG§;ã/‹Rã/4âöÝdӝ@¶=$éI »5       $C/5
6445-"P³`5!P‹PµìM·#4œ@ŽrêC V‘rŽ"PëhµéK ¶1j׏@.±q”9ïã“@›HóПN'aФÃAx%ÓÉô)ôÌSéôšDF‡it˜N—Ë!Íb)è0OÔ7)ˆDCiŠaôh*¹Á,;d“È]M"˜­'ÌÔfì­Áçà`8ÝBK Ž:ù‚JvÊ%_: P—‘òÏ'P×QêÒèÒèrè     r9‚z‚@Á ƒÑ
6446-GYßÄvú–æâ;zvX™!3– G+€hÆC4@      üI4¬ÈF“±*c1L%èYOÚNÐÍ`z˜ÉPÌbr³Â9L4—‰æ1uó    ZP˜h!¶ˆ©ZÌ0µ„É2ÑR&ZFàO·-‡­2ŒXA¨2‚ŒAöAÆ|qEį„ ¡‚ÄUôi%´¬†Ì@Ù Ù`Y2ˆ,D–
6447-""“­‚´µ¤s֔-ʊ/±×¨¢2•c.Qýá®õtzÞH‡›°
6448-G›im¡Ãèp+]»¦ßÎLi]±“.ú‘‘f%#]ŒÄv3ш~"Ð^fxü>Kô3„ûôÝx?Ý÷†ËƒLtˆ‰3Ñ&:ÊDǘè8Óï    ¦ß“Lô+SXÍD§˜ÂÓLt†‰Î҃ž£Ãótx‹ºD/æe&s…fê*3Õk Nåu†þÁ0ü5-ÕM²oA ¾
6449-æ9w!~í}t Ð?„ ÷y!ñ‚‘O!ÈÁ¨çŒ6B0æß¼„àÛß!øîÄ+ǯ!, Þ@8ŽxK`EáâOkû_N"þ†p2ñÂ)Ä?N%>@ˆu],6ÀiBž&‰±ØŸ%‰°Ûäy’G"6y‘$ƓˆC.%ˆ $â’WHb"‰xä2‚˜D">y$&“ˆ"oÄ    È[$1•DBrAL#‘ˆ¼KÓIdFÞ'‰$2ÇãÌ$‘ùˆ$f‘HL>!      kԞ;›ää3’˜CrIšKrYxO‘\6l»ù$—Ãb³\.‹Ã
6450-C
6451-ĵ ,Á;²"Z²áJHوìMIJKNŒa#öt‚à°ç;ìG±°#`ZGZU{¾ø4r’’Ò$”ei$¡FÇ=ûw¢Úó9q
6452-¦™b ÝN“2ùœ8Cܔ±¤ÛYR6²çH’—R@º'e½@²ø)ãH·‹¤ld/‘l*e<鶔‡ìe’#H™@º]!e {•ä
6453-S&’nËÙDÈ^#y¢”I¤ÛuR6   ²¿‘|³”ɤÛ
6454-R6²7IÊ<e
6455-év‹”MìmR`‘2•t[AȦBö)´J™FºÝ%eÓ 7zë”é¤Û}R6²H3۔ôf@ö!inŸ2“t{DÊfBö1iÑ4eéö„”ÍÂs·„c˜#¬ö¬G/þ - È
6456-Œ€  ÏJ^DxYL&ͳð©d
6457-•lVµ'$m ő¼xM½±ìސÈû9ñ–$¼¡Ö÷lŽk;U{ýª3–àŠIjKý¡´kuF!.µcAis\ÚJ{YJVg,,'W9ˋCWØ‹³gqٜi¦ê…Çû‹D½ž“„ïÁ|NüC² ü@²{ƒ`BÆàêSYߓƐêÓYE¤1´:“µ’4ö®>“ULë“W‘iìˆU$‘µš4FTg¬&‡¬!3Ö¸ëȾ%$iŒ¬N.…ÜJ2¢ˆÊHcTur9QN¢¬
6458
6459-“lB’lŽf©f©€…úãªOe¬'³–‘ÆxHm ³–“ÆÄê!ɌMdßÍ$aì
6460-Ä6o=™ÕžRÃò¼cÁº‡Æ4õuòsb"‹€p‹L1&Wgl%3¶‘¸Ûd–ÛD–Û–qÈéŒí¤ÛT–Qv:cé6eL;±“t›Î2¦ŸÎø‘t›Á2ÊOgT’n3YFÅéŒ]¤Û,–1ãtÆn2_pÁ˜%¶@¨Ús rMg»z¶Ï&šóÙÆa½       §‰Ätbù‰š‚óÆùæ7Û4Óìç$ÍêêꌽdFÙúoUV!iN¯°ù3m ‹éx=^ÍUx5«
6461-ÎõX'N—/tµ€–¼<º$ZÁ]Řk¶„4ލ/‰Ñtæ&ó-nìŒ6ºZ™Ac¬G¸ÀƒX¹ÉŠí¿«î»ŸDƱxç7#`‘šbÖÇ&ÞÇÆñC2“4'A;a’I@bœL`mè{ª§ÕÎÏj*QÝ&ë iœNÐlbؘ[·ÀZÐ
6462-·žG°€…æÆù¨ßaÒ¸€¨n›u„4.Ĥ-±¦¡å¸´F:Lº6`ÊŒËˆÞÆDuòQ2â(èØVÒXD`É
6463-9†u§:ã8£–+™ÂdÆI(ü•),¦“«IÜ_D5Iô=ì­ªá~
6464-Ãõi†ëux.ÀR)Sz†)-crg™\9¦9G×CÇçI+¸X7à™œ'At@6›ñŒ¤˜ÑlzFÛðŒvýÒ/âNÜÐÿô`Y•0¿=u¢ÝKTcžñځê;£êŒ22¬jÖ^ÒXE`­Â“¼—Ⱦ—a’?\ˆgþÓãèñt⃘1G,êDÌ×aÌ×ѺÑÝH­›Ç‰Õ÷]KVã   \#§É\g$s÷î„5fîýîý<Ý»ÔZ]^¨é’i$    _®ë÷
6465-½X}ƒä5`ùÄי!n2Cü†‡hŵšLKö&­WËXè&a¼ÅPÞb(o×
6466-v+LànÝ@÷ÓFt1Þÿ’´0}Þfú|T'Ñ'&‰>Å9ã9§b~žã9±:€t^0ï0_2¹»LŽÕŒs¤%ܶŒ4P¶W
6467-”íµIÙÞâaZ³`ރñ0ÑÓ^ÎBÆ÷xv`¾ÿ!0ã§d÷H£d¤k½¥Ó¸JvŸ4Ž'«±ÝvFåYHãD’ë!3Ö$|îµÁç#c
6468-       S™
6469--V\èh´
6470-3Πí>œ:mñÞÎÄsIÌÌ÷,ðLŒÈSy®˜Ü·Ësµ\N-¬+Zh…7ôB²·q1yʪ¤—`–ÊȌ{dÖ#ÒæÊõ}LbÞø¸î‰óÆïI˜'0]„Ùl‡%ޏ^ŒÙüÿ
6471-ûø8"ßékÆV L”ð’—}?9&f/ì6#À>9˜ÀpHɉ¿»ñ²°q^ÈÂC–-Ë·-ß·Ç’Ïø>â+ñ}ß3#[Žï3¾ö}{¶þÕß|#Ùz!¿XÓ]]]]Ý]Ýý¯ê©V¦Z`[˜ ݖ2<Ï`k^Îf2™ULªÐd:êÇ+1CÚw!Ú?K±CÖ$ÎÊX²3x¿LÆj•)“°Šdl‚²³>Ié‰ÊÎFz?¥');éu”ž¬ì\¤ÇSzвóÞ@é©*{WÙùȏ¡ü4eßCz4¥§+»é³”v¡LVÖÛÅÔþ8™ÎДH»ýh
6472-ÜñáêÈÿ(9Ǹã¼|Y>™hX¾Ð\4kþ{ôñœýsû2v^&P_/Hñ\ûj›¡Z®±™ªe¹‰ÍR-ëñٔ.ø¹NT—•òùöi~)wQªï´$‹Dbå.jh?XÉÄ`Êý“ù^û!²È$† Ù˜Í¾8G†hCøÁ»Ëø¢R;
6473-j;þ´cøÓÎþ-Ŗù"’ÔKj:
6474-3ýk¥Ó_"Ð@¿ÿ   )å]†ð/Ô_õå”wÔ6õ7D%,pÔPDý¨¥D-Kyר‹cËéPz†ù†‰‘ÔMBRö52ðPè+¬Õú]Ê»Y_UáæÛÈoû ëmYo3Èz›AÖÛ²Þ¶Èz‡ºr[ÒáœIܑöÏYw¥ý¬{’Nilêï_ñIîB§[V¶ËÒéV®l-åråuQ¥ÊëªR^7¯T’Žä”×]~šzНYJªTl±jW¥D¼‡8ŠKz*Ân=•HêéML½Tl     Ièí$ôaJ¼
6475-¹ú•l^PÍÝêÏ{Êû*Ô_ØjQÒWŖªx_’Jg·w[²FýT¼¿âœ(ñ$eˆðb+¨•j×ÊЀ¸’ˆqX@\EÄAŽ8< ®&â`GÍþ  šfÍFå4%
6476-І8Dø5¸èPO3Þh.!Sø(
6477-@Á   
6478-X`o8ü½¡*&ý:•O Ìɬ„¼a
6479-eñáJúäH#¨ãSóÃ7
6480-J~M’BÇ9g‚Tô¬¦U°M¢lN®lްsydש’‘*]<R       oYÚùèÏYLGY⪌Ž
6481-…š;˜0F&´JŒUö}:Æ)/©â´…`ˆž×
6482-”×JŸkµãªq\k\®Öå֊èÔÙà×و¨ÎfÇ5ÁqmÑàJ9êDGÝ!¢ï5ڙ†eh =A›ÒI*óYÚã‹BÑo‡€`J'ûý֋Ò)>AF/¶‹Ò©>Aa«"¥£?›É'Ff³Zg³­³ÙöÙl·l–ò%hX¿®iÄ¿€Qý07ª
6483-‚ՍŒê^TùgIUº°%íÏáÜý€)oˆ*|•”9äþ»4ø7Tpveiƒ=‚ì0U<²·$Є7Vá` ÀÍpD@ÂßR>Â“®p¦+<Mž“d¿‡"çrxøœ¸ ¶*qø di?K‰Êt\t\éØvU<[       Ú¸€nÐa_<G¡ì¶È<®ºâ\£Èfƒ¬­Ú»þ·Œ4/XÎ@'~›§*^
6484-sÛð·©mxÒi%áAg”‚ç\§49ʂ Éè%Y‡yJ”ÏW»Ô        ï=«ÏÑ^Մ
6485-ŠB_5Ñÿ¯L?iû‘ÙÁ€óCæ¤VmÙ!\m·zK®ˆ£†Ê(Àq_ÙÁT“°¦ƒö¨OO§©Îýø†ÒÍ^F7ÆJøÆº.Œw]˜¥ÇCé   •žHJ£ÙʝÒéØU¼ÆT$‹ñ8Meù߄m½ù3sòg¨—°­ý*äÝp`Èbð)æ%´Ñʼn[
6486-`Nw5´ðï±Ldn“>À{H2vP%ƒÝzŽÐoI:m¾…6—È,çÆ¹w%K-ü,IZ%nMvµö¡ÍòmœYŸƒ”­²ÍU„1l—0å8-›çóçpîÌsÖ;ΈóCp~'àÜνyÎ}yÎàğ{)hÎC҇ã‡hÙ0WúéøRZˆGÁ÷=ðµßGÒǯI{ÜñÑ)_†U„ñ¥ƒò$jüFçqÔ8
6487-Î0kñr"nš°ÿƒ•ýŠÏç0èyÂà,±w[§æ
6488-âeqÙeW’ÖWe{œA$jµ
6489-•­RöšäµºÆ­Õëhº(æ(/š[9ôxË¡G:¡ï=úøh£&±V=vQÈ%c'éW@†Š‘dW¤o9$Ù
6490-éõŠ‘d%Òc#ÉîHQŒ$«¾ëd¤«IöDþšC’½¾ádo¤×Ï)eû }…è§•í‹ôeF˜ýæ…Ó›°×xš˜jE}mK³ÙWaRg/Ù €07ª6¥Í۔n¢ÍôïgmJ·¨—Õ“ü_â§àĎöUlî¢^ßÇd<~ñ¼B\‹§
6491-}Í>Ks¹UÙ¯Sq;ì}­Qüœ
6492-ŸcTø‚]ÛTºl»²ß@*S–Rö›TãˆQoÓÜ?2šóê÷ˆú/)/
6493-êj[¢¾ò2 þ( ¾HÔ¦¼:P々_õÇDýIÊÛ¡Z<
6494-Oä§¥;r^½ûØ¥~¨¾ÄØðǰǧPõeªúŠ«Z@UÅv«ìo˜ñ'!QPãRO~ªš|bˆDöõT›_¶~5B#pQ…_ï(ҝDG‘é$;ŠºNª£è ;iúi:úîf ù:Í×h¾Î@óušôó’2¯N%¸ù»TGñ†HìQö_‘’‰½ÊþR&±OÙ7R‰ýÊvB*œ8 ìïS%U»ƒtªmSö?J)Œpü-€?¦J«v‡©äu åQ±ËêùŸü\”Uèě •SÞGT縊Ÿ CêÌ´“Ê;E´ÓŽövªäuê
6495-Ýîí“gcï¬Ã£çǵ
6496-…Ï+\哽H²*¤dè¢
6497-iº¤BF….«PX†~ãꀶÿâŸà!ììOV⊲å"åÏYâªÐ×ÜݕŽáëÊ»¡â7©gUTpkTñÝÃÞr…=aÑ/aÝoÔhªOaôA<«ä¶Š]WiïŽòîªøm%£%‚@Ò@@¨{ŠQrVaãa‘å"ñ'F-G¯€s˜h¨ððF
6498- »ÇP·B£Et   jŽ©xœ¤ˆ¾‹|
6499-+sZ ”∸¦8vE"*XŽ]Q®«ËM'%»éGþ§‹Y¡ ÒÌr¹î.7O`žâUÔä{"ú¬pX=Ãb}
6500-ÔÐyjs©+íéJ—‰¨BéJ”f•]åk¶Ú‰íEb  –z÷š-‚¨ë3WRº¿ð‡»>v[‘S’ƒ˜]Éõ¼£ÈÍÈAÌ?á.œ‚Ä,#
6501-çx‘ƒ˜?&©2É'hÀÔX¹&èê05ÖEÈv„0`j¬B¾v„HS›1LmF0õWÙl3y/»—õîeߺ—í}/{ê^6{/ûd6Ke„³É¢~Žcïs0¨Í9ƒÚ,ìžÃ®š`ÅmÆÜÄùçNçöçvaÓ(ú%@²\vC…vÄØÒ^o¨Sˆ´¥½>:ÑW#Жö¶«D†QrÚK©DZÙ}n’ú¹I:ĦPø,
6502-3\²Äxš—£þ„Ôuӈ“5°ÇÖÒièõ20ӛPËæ ­ˆ|yt  Ú¡Þbàp9ßÐ5D­ªµ½ŽeP­KêXwý]Q<H‹¡C[?Ҝë 'mÚÐÄ`
6503-ÜÛ*1@ۛø¢í-´ý
6504-Æd7   Aà6-Êvr쾖Ÿr˜8×2‚c”ª]lìˆKv•®nÒu¼
6505-Ÿd0=¤[˜½‰u°.|1º zèPr¥%k^<L4ŒÀôåf?™F®l¸&ț[ٍ@5—ö†ëøHí\ƒ™ÔyÂ0º£ÜüŒùFw"c„ôÑ¡)’à/l§B²åŒ“©’ÑbڍÖ"±C!$V2†(ûT»1D«£>ÔÐeã4¡aäîÛ¿'9bR{ã©jfâYR«ÛÕêz8=™ Ë&jψ9Mǁ.qlðN¢N ¿_Åèiž¬‡~‘úJșmkž¯Lµ.
6506-µŽOю³³L4þKñIóÐåäü|!Y­)ªDn•˜¬íŒÖ¯açØÖIß6H®”«?@»k”Oõ6‘œ©šQ´Cͺðû>j¾¦
6507-Ÿ£dÊéö.1¥e°-f¤ÛÒêdÃ]t‡l°‹Fۇ€¤ÙlžñÍf·´»›Í7’ÞMýq1‡}Áø€D;hõ ßê!hO«àzý`’ߢӧ€‘Osí|or†zu.?¶çý       0v‡ »e°-_ñ9®Ê†ûù54S‚f^@37ÐÌÍÍÜ¢fîäWÕ]_Ë{y¹Y'oš“WÌٓõÈ«P¾ÓP œÛMµ%P̧»ŠU\šŽÏ aé¡îE=!ò·ØhK!²·òý‹ÞÀ¦!êÐWae¤sË¢Ÿj¸,ªmI„•©Öbä3µâڙå4ŠvJE§vì’0SsŒ|¤BŒ|´B}BePè`L*ß?IÒòdþ4÷±–ú8Q¥¿BéI*å:O›_ʛ­;ÃmaŒ0N{stçÄlm'+„Ççú»ÇTԘ­‘·Ó¡=é;vˆ¹Î+a¶ò—ÙŠ—´QÍ@-0qMbž†ó²P!ÇÎË"8
6508-}5;/‹‘Æ~ÂWg·ªˆ*ÄìÐ,AùLÍÍûìœ8‡æ¤³Î¡YŠô>ÅÍ2¤«uàÐ,Gþªb‡f;.Šš•HÏÓìЬB:£Ø¡YtZÁ¡YÃÍ:Ò{"‡æ&mYëÑÿWµn^0Ÿû¿QùÇÒFê•›V¢Ü¬ì&•Ʊ3È?vÊçÌè©íÕ"ÖKÛ­ªÅÏeyÁ.›RvæÓª.S$¼ù»z‰ÌmM¥;UKLÒ^xOKðÕÙZ/Ô!œ»6ïaºŽÎdŒþÕÑâw `¯ª#«y-獑ö—,ÒM{c‹õËÚ÷ÆþNˆa˜Îó„|è¡Ï0R>".R³GEé_ã:ŒÊ_ϗçò\þFàŠÊÍÕC…Óÿ%¿†Ë²ëI‡~M9r6ڗ.Õ±q:¾Œ¯¬£(YNGÆ
6509-í­ÔÅ˵ðVéò‚NÂv`$6A{«u鍃±d­Îӊ×jQ    (‰uÚ¾êØïHŸýïòìL{l’ž¡P«Äzm_s&ë+LÖTØ mGWaJ®Âçò¦¦êÇñ£ÒÓü#±Q[ÏÕ|7Wó3Ts“Îӊ
6510-Š7iÙ9JKºå-Ñ9±Y“£ÇÅӛÐnúƒÚmÑäÅqáŒ&*Ìx°ÂVí{|±™
6511-Çw›Îӊ·iÑõ˲sb»v~¡ˆÝÍ
6512-ð§`09B%éØN¤´sElv7ûþ‰Kkç[ŠØœ&ØçäØßrC™ÑÎÿ±¹MpÏ͇2óÖjûïŽ~üóó¿§;4yµ\¶   þùêÄNmÿàø5Á¿èþÎÖkûfÉ.²õͺx—…´Q“ßK3Ž        »ôC]º[{{tÙ^mÿ„Ü>íí×e´}'EYï NÒx­AéÃ:q„ ‘*9ªÛÕ¡Ä1ï˜þb¸ì#mpÚÕ*zm|Ùq:ŸÒa]vBÃó¤üÓe'5;ŸHžÒ|7sL·*;­ùnæ˜.9£‹DQ¨è‹ôS¶.íÎèÈ/DÙYÍ72Çtl£.;§É-9¯‘Ÿå¢”·A—]Ðv©i         Ëb«EéE]•¸¤á”z—•]Ö|ÿrI—^ÑÞUªtM·Š_׊¯^.ù}@Ê;®Ç—ÝÐü$ã’ߦŸ úMMÎYÊÛ¨#"gÖ[§ci]|K‹¢ì¬Ö|ŠñÑ29Zá+4üäіÜÖtž­'Q)žš”·]·»­Mb‰ÆµLÊ[¢Koë*ïŽNÜÕv¶ÈRÞ!]vOãz& ÑeYí‚ã›*)7Nyõº]¹      Cø_x¹©òºÇ»šÓ„-òsGxºs®´ÂP3[uYWc—ˆ\õT¼›äMóÜå)ˆþ/R‚<è’Ê•hWi¸wëܼTºyénªUÆ®‡VU&V§jƒ¦îÈS{Üÿ0ugžÚËàESëóÔÞÎ+Swå©}?
6513-émž.ëkì6?ÙÏàæ(åõ4't¼¿áw")¯åw¸|ù>”ßéò;|Ù{t`a|Wo€ÉYUµqVµ×çݛçhàÜ2u_ž:Èàñˆ700ؗ€›ŸAPûöç%1ìñyŸ÷ˆQâHüÈç=çjøQÉÐïë9ÞSLm…utÚ¯vÐU;JՆ{ƧÊS‡<0aê›Áh0¸6Jy#Lìpžu¤±çˆÜÂNâ-ª"Y[$’XY–É´Viõ]åi‚–£ˆq´žpÇ}"†dŒ#^ˆc‰sœ#ވI"ŽwÄ[DÌèÂ×ø2
6514-;_ñj©x‚+¾Ë4¿Å‰ŽFŽzË5&&øæ%“©`’i7وÄÃ.úS:Õxï}š«Ð…‰ñé&d+ñæKþ÷àxéE»Ð'ÛP¦J–Ì0±ã¼F’±„ªfв"žŒàiOO‰™ÇHEcü¤¥!ÿIŸ¿óópöe~®Z-1h¹Aä7Î$M†HÞBOù»\2F‚ÜÆFP•äÍ"yCÏYí+OæÈç4VwñlÊ
6515-wExÑ7.ኬÆVÙ¸h¤+º¨±¿4.åŠ.¹£«QÑhWt=ˆ]ÑÅsŒhÌ0Î1\Ó¥s7Ï4.LºÂ›\8ß´¨pIðUÅnëŠ|…É›¸#‡%–ð°Äߣ²I4¨hPñ¶´¬u¡áHC?=C:
6516-ÿJ'Ä,×2m–;Gú
6517- 쀣"¯BH…©µùà‰­£z‹L|1í:ï1a=”p„L@Èà}GXȄDøÀ3GßRGXœtËá}&àˆ[î0ÏV8Â2&àFo¥#,gÂ&"¬r„•LØL„ÕŽ°Š  [ˆ°ÆÖ2!ë{|-‘6¸ébx@6Éè+xºšÆãÕz~»j7ËRb¨0åÂ[g‚Iy²™´[dôŸ_äø·2·&ù3¶I€ñі4´u<‘ñõ4y¸Q\¯ƒEçsDŸòc!T‚øØî<ÿž€ÉþÖ±ÖÙF·êKëØD´ÍŽvŒi[Œ·•hÛí#ÙVNþô¢Ç—?¾Ý¤R_*SF¤MH„~'EÁC_c?ыS²!Ø9írU†sg\î’+;‡ØÇ¿*YðÐpv“¬ô³Vòb±©Çap²ÒÙ­Ñq¤Ý~0Ó/«kPVgÜ1³ð;4ׂmå­Öø1Kó¶˜ëˆÅì4·…õ†C.´î2ˆ¸{á(øo’|úÝËéwO"ê‚]Q¬r•j•øÐ ÖBÍñÞÖ$’ßMùò+U ¿»Kî¦døÓo`J!¿—òå÷r‘’ÿ]<órûûr ÊPÏûzâ«síÌ·3(ßδÓI낇6ð@#´òùúÏïâÆ†+;Jñ©vAÖ"˜ÖψÑäÉx£ìh•öö ‚˜µ°§â½&Tদs½£29rm@ÞeÇ!d
6518-ɝC„†ä§½}ÆÛo¼Œ¡£2úI¢×0½”       v‚rÇk/ãÝÔùS–ÑëD*iR™âFPOE‡þ]ÓÀ½€þLË
6519-Ü4…XM“büÓzó©3SÑ      •æciäýò¾      ysròæ(;·iyI_Þ<àƒòÚ<´…GyQNÊ"Åcº„>ù}6j)‚;kh?PL=hBGø¸Æ/UØ¿‰õÁñŸõ*!Xô/6Äd’±¡¦À´“©?åÂr        ªÍh—£ÏtÐoáïÙ#¬C™ø!™ÍèԤʭѭ¹NmUv wØxG†1Ú
6520-/›Òd£ñT5£¢¿a‡J=̈́*ú#\?qXùë        l"ä_?ábhŸ¶uÁ§ÜŐä‹!ÙL>±"›•c³ÙYÙ,¥ì.(øG¬Ñ^䐝ܭì•&ð‚'{USö©¦`·< @rP€ä0„þg˜z=¯€<,u„    Uö8±‘ït”N¿QfZpbÞ*üƒÙ“<è£y<ì)Õ$b<­òˆñ¥{˜–Ó%œš³œ)*Kcñ"Å Yµ®§#:ÓL⠾ؘ~Œénj½Ð!ƒ,¤¯'†ø©ñE‘$qßÐà¦f¯4æ>¡™•|Å¢‡ÇßMæ#U¯ñÞã»Ê²¶åPÁ^æõ€|˜7w®ù/Õ;T4,§’ðL‹
6521-¸ÚÝ|Ù  W†z®—¥²á¦ˆ·‚rtÀ7¼!_…†ãÈàäGX~W&EÀW©1±˜Ñ¢HÞwoLzÚC;¯        žToã<,jø†kÿ¸N6Áû?!·gõ}ý{:ý‚‘½ÿí÷֍ësmûãdzrܯßô3ZM×_ÃàÆ:ƒKrfœËŒ×MZ_Î[_­†’nza€8_ô÷0À‰.âèA.MuÞÕ9Ó)
6522-
6523-sZcz`˜3òôF1SÿÿLP62Á¹¾1q„€ùc     ï9Khƒg¦œõ­²¡B‹ò–QÐP%ÚYíÀ†uƒ™1¬Ëû>OSVÛPÖÒ¿iekeËþ¦•5ÿX+[ñ±VVа[Mœ]É«ÝÙÁ*ýà€&ÖiÚ;ߨi­s³ö•l¦ÃC§bIñè$ھ΂øž_*ǗÒv§Nŏn©Ë[†Xzò᳛yƛÐ~m÷2ƌÕ8H¾_—œ ½Z—ž4Þ)ƒŸ§M»F—Ÿ1;íø_é²³ÆBªôÐmÙych:™ŽSõ£ÚyGÇtªô‚ñ¬‰_$êqî'‰3±ÃØSÐèÿð~   
6524-!…친ÐK,ÔꮑOØ
6525-µ.£ÖÛJ?Äý¸ªö¯§¾L3âªæ—J!Ϋ´µº~Í0“6vïp蔏軤ðeŠ6þ4©øR¾«‰~nFnÉ.çfÐ]ÒEqЦýÃêô6ð=fæ|F<ÙLÙ¾¦­xî•R†øW
6526-~ȟ”*øä‹Pœ›¦6M0>ƒHÛa†ÆW’žƒ]†GvˆÁWRyO    Î0jàS_}
6527-„ށèW zdNôHcG›|t\¾™¤¡ Cã?s5ÆÍ\mSíL¤vžx¾-·ó_@wo¢)¹v¦;ÕðhÏ"sí>÷{zf˜0x³Œo"±9\)ÉÆìÒü(j®i̘ohêÿƒiɘÚ¶‹]£sé.1“ö>˜ÿ0/ó2Ç<Ï1/7s·Ìÿ/`^æÕŽy¾c^ã˜qï´ÌÅ¢ü*˜×ÿân½±\÷L:ß÷\3͑ƒM¨Š_Oâ7´
6528-mu•¸†¶¹†®“VÛÁÝE ¥gÁæ–¬
6529-¥Í¸JMºñH×ù­oî@ý
6530-®ÿ<ê×ϑs³ËÕ_týýú7(½›f*~“{ ¨+jAûŒK¼ÏØýNÐâûðÝ¢ôAÃèâÛ&ÄòA^7ü&œ‡†ò">bü·–G?¶<bìQ'wINîû&™iÜÂG¤.*Ž“3ƒKŠ“1é~‹ç”q»ÞiߤÏ:i0mʁLΟ¸/Öd¡_¥Pää¥Y¿K¬ßvºDú¥´ÀÇR#/{Å    ^–Ss»¾_Í»¦®ðó¤Ò=^i Úñ³œË䮞`Ý%Ì|`ªàd'AwNòÃI4†KXnúþ¢W¸Ž7¸Þ\îv®¾aêZw¶ÀÏ gýÃdÃùå9UîÃnOñÝ·›—›Ðð°æ>¯p;:ìßÌ+,’äñҖ2!|A¬2rB؎
6531-ó=ԃ{¨·Z?‚ïú2ånŽâ¾s‡œ™¹Ì]d
6532-Ióq®¥Õ®¥d¸­ÆŒ¹Ssr.Mã35œ~ú±}TåÝpÃs_Sž†|ˆ­­Øeg†ë2g9½™….UÞÚø=ڇf³x'‡¶ßŽ¾—BáL˚vÂ;~³5ܚK³¬y¬S,çLÀo¨Ézìq\è4Ð+/!º†Š‡qeƒ‹ôkI£~-C¿¾‰ï´øºâQÆgƒ>­ç®zìQ\ä G²*è˜]b)«Ã¹ë£û‚7›kÐ|mbm]\Ýh1‘7…ý›¬yü®o3æî  |—·é®CÒö$ٝa·¶ëa±=ðk¢uŠ¡M`­Ø5Fîç/óû’ÝdœkØ¶ûÂÀ8²yçs#9îàÌ:Ó[çLïp#ÇKÄpþF­<œ¸CÛUJ—pâ®±…áçÚÔ5øZ¾=&¸¬Àß'h{*ì.2ï¸X0m#¼Fí$gÃXãçMl¶y¯„ΡMgqZnö|ØäŒdlØí€WÂ|qÌ ìføã£Ïý±MaPd~q•å4=c»DøÎóD­ˆt »²G©1ÚHù¥MLTÐIŽW8&™¬ì$m%±ÆÖ~ÉdlƒI©:¡jÛd\ëÉØf“„ŠÉØNëV“,
6533-Å×eGڊ_ôÄRY–]Ã!!CÝÂ!)C=@ ›ña‘ÜfÄ0jôóx©ÎHf|XωD¿ƒøÉø¼Æ?5‘ྫ6ˆÒI\ʤÉ\ʌS"Ñ*„Z*¨ïc"ÐtWl´°c#u~œov·;Î'~³{HÚ¤Oüfw”°|‚âÐÌ^U>A¡Ã¡ÓL=1 ›5/e³îÿ?òÿD²Ó"9£­Os×Ívz@ëÐf4k¦¾CºÏް_•Tåâs#ìjå‚c9ò|ªßtÀá4šÈ¸?˜/x¬#Ι"ƪp(ÇWôZ-
6534-G¢Oߏ¦—Dà^§Ln1ðó2šñ¢5Ujú3ރf\…zñ©4šO䕜ÈZ¹ êŒXE;Œ\‰        »*RYoWGJ{†ÓŽ¢óN»†3Eߨ-îMù]vm¤®¨àS¡Pš®ŒR*Vo8“¬ÄK-Ÿóï´ë#™Ø.“vuÒîÊÈÕqÇ~Eï»6Dðí¬ÞŒ¾Ïþ+ù¡   m&ív=FnØ­‘´×'ìõ
6535-—÷ï²Û"u%ýÙâþaQ6 l·sa]Yß°MEhoëCǵhþlª
6536-d~¶¤:ÜôK«É¢MéÀðËæIÿ¹ŸÞŸÁ·®ðX„Ý'ô<Qÿ.[WM
6537\ No newline at end of file
6538Index: wp-includes/mediaelement/loading.gif
6539===================================================================
6540--- wp-includes/mediaelement/loading.gif        (revision 23731)
6541+++ wp-includes/mediaelement/loading.gif        (working copy)
6542@@ -1,74 +0,0 @@
6543-GIF89a00÷ÿÿÿþþþýýýûûûøøø÷÷÷õõõíííìììëëëêêêèèèæææåååäääáááàààßßßÞÞÞÜÜÜÙÙÙØØØÖÖÖÕÕÕÔÔÔÓÓÓÌÌÌËËËÉÉÉÈÈÈÇÇÇÃÃÃÂÂÂÀÀÀ¿¿¿½½½¼¼¼»»»ººº¸¸¸³³³²²²°°°­­­¬¬¬¦¦¦¤¤¤£££¢¢¢¡¡¡   žžž›››ššš™™™———–––•••”””“““‘‘‘ŽŽŽ‹‹‹ŠŠŠ‰‰‰ˆˆˆ‡‡‡………„„„ƒƒƒ‚‚‚€€€~~~}}}|||{{{zzzxxxwwwvvvuuutttrrrqqqlllkkkjjjiiihhhfffeeedddccc___^^^]]]\\\[[[YYYXXXWWWVVVUUUSSSRRRQQQOOOMMMLLLKKKJJJIIIGGGFFFEEEDDDCCCBBB@@@???>>>===<<<:::888777666444333222111000...---,,,+++)))'''%%%$$$###!!!
6544-
6545-
6546-
6547-
6548-
6549-ÿÿÿ!ÿNETSCAPE2.0!ù   
6550-­,+-ÿ[      H° ÁU–²´Ê Ã‡
6551-"ÚQ!A‚
6552-;EÜȱ›BŠ|À¦£É‚ˆ\ €ÁŸ“'M­`Ér…)˜ ¹ò€FœKBS†'kð)`
6553-PŒnTpÐ@B
6554-9­ÈX2™§‹D4Kւ<¸(€g +T©8šºA¶nƒ2¨½€I`)F}þHR±P»u½`QÊS€ªÉy󆎤ˆi×ò)ÆV–`€øÉÎ9“ÿÄ}XF3Ù­<Yð9À#Gv¢szrTùHp݀ŠÀUжôè¡EQÁ¨>Í(¢'®-:éé;†Jmÿ”c±(„Ožêô)}ÄUk:P[Ѝ§0#uñ¡cŠ Õøm´Š{­°`G¬aX ò܁EbCTXÂBˆÊ'£ØÊ(=T(â"ôá@™Ä1†ƒ÷Ç#Š€’ÒF8~¡Q1ŠÈB''JŽ8¾¡
6555-=nðcCiä‹IÎx¢Dêøaˆ1–x¢@)®Ø¢@Rh!†[
6556-´a‡%¸`ƒ–     Ñ€nÆ)'A©dR‰xs:‰2ÀP mš$J$•œÒ‘%<œ è    -¼”_ODÆ'‘‘  )dzBxv$JJ„Ê>”Š˜fzi–œ    J0ŒÁ„Z‘*O¤ªé™œTI±ÎÚE§É¡BªŠN‘¡'
6557-åF*h̪ĎF$ÊÇbÊC$9ò„:<áˆAŸÀ‘EǑ(r8‘­TÊ8ԋÃÄGJ¾©Bã@•a/AT’'A›1ð›<|:ԫÁæYÊTP1¿›rÓS!ù
6558-­,+,ÿ[      H° AR„̐ÙÓɠÇ
6559-2²Q¡ )äDÜȱÕ"
6560-BŠ´Ð¦£É‚¦lˆ\ÙàÃɗ­
6561-UdÒA—ª*
6562-TIÕÉU©
6563-¦a@S䁇vTH C;©1äÊ!Ÿ­Æ-Ú@G+6ˆ›ˆ‘ltÐÀ֚ z"pm@ѱx4ðóp¶€5ˆàÓªS
6564-®L­È›—E)‡>äT«83YB9t€1^P
6565-‚™˜§VªÔpØÚ ”Pj<ã°ÆáÒlM„Ä¥Ž)‚Le•=V‡~$“"¼à*‚fPàŽCQ'‹ØÓÃô—BÿªÁp‰3¨:B! JDNjˆø°´cœžÀøÄQ•e˜¡ÀX(PÄi0½¤
6566-"YðÀƒ‰Ôg*˜TBJ‚¶I3Ä` fX+§4'P%<œ â       -ð%bA¥0ÒǑ¤×
6567-(œ€ÂŽ'qዩrˆo¼AG$­ ’„Ž;æ(C%@
6568-ôIoÈA䧨ғ<Î^”ÐQ%‘}¤G
6569-Lª8…@¢H•U*"(R ©#D9'ÐQ‡!£JMA%ztJ'Ÿ°‰Óc‰F*餔V*';5„!*žˆ‚GŽ8‘CO4’`&qŒaÆ &BTÊ8슁žDJ]äúE!U„¬81ÉK’€‘k®p8ê&D{„&Ä{ìʔš¬9¬¢@¡@B  ¤±q쮑ÇTÈQ+A‘táDhxbP&p¨ÊêI¦€KP(](á/p|:*ŸŒ"°ˆ‘@¡L(±…(–T‰Â+Ñź–¢bFÃJ8ÑGÄyòF]üÑ*Ȫòc‚!ù 
6570-­,-+ÿ[      H°àÀQ„ù#ʠÇFêñaÃ> EÜÈq`'Cn¸Á©£É‡k:ˆ´èaÍɗUYòˆªžöIS¨LU§
6571-ªúAÓbU­VÅQ!Á8™çÉ2•^)ºáŠÀ5ˆ+bGQSTœ8‘‚‡FˆHÐ,¨U¤có6Àá3¢µ)R¬‚J *3"DŠ8ƒ´‹½c+Š¨Ê ÛÀ‚gdŠÉ'AúÜlåòXh"¦Br9ð‰Y  ¢âÄ)ÕÀU9L‹u@fãÁ˜Oé»QŠîöl¬´cíÚLª ;…'ސ¤È€QäҎ¨œ<ÿÖkAŽÉT˜,7Ê    õ±ÚÀœo8Д?¼üÉCf
6572-¢õô™ô  €°àG€'yƒD(al´Š&•ŒÂ …F á‡@pˆ@¥¬a„X4²¡@Š,â‡ðpÓ:à`#¬¸…‡/Jh%¦Pa£:²b=~¨!¦L1$:²"IJ¸d+rä0ä×m˜E•þØ
6573-)&q…#+¶’ˆ`îð݅• *ETù@]i>ԉ‚È@…yBôI@¬] ]rÇþ™Â褭 BI$ 8Û'¶ô     Q@áÅ[/yv BŠI«ÀÁ„°v ‘éI§üñÆ­r02ÚF¤d¡¯>ÉKÐ!DZoôG¥pñë«QPòÒ'v¼ìr䇰2Æ²‘I$
6574-       Uˆ·Ò1¬I¨øÑ…p|bP&m€†—T
6575-#}ü!É®&•B
6576-+¡Gw!‡¤g›ç'c$ÜÅ]RjÐ(fHlF¹ÄŠ _ üÅ w\0"·"R˜É©0}!ù
6577-­,,+ÿ[      H°`AU§*\Ȱ!(8M”©Ô°¢E‚ ¤¤8q"HC2Œ³
6578-ŽRŠ\)PU“&Mž ‰%ËSF`Æ<!ƒAQ}¼€ù#J¤*M”Fsr§R!ñø Aˆ -’RC$–F+íàȱşœjT]«á'‹qpÈÅñ¤SAHRdÄ0ò'Õ@5ØVõ°¦¢©)sqäd0Õ¥JP¦"x­U
6579-'^UÊUƒ`nwn]‘V@k¸¢U¯`E"Qل¡‹G“²Te&[hFۙj,‚ôñ;Üæ)NœT6ŸÞª“1i
6580-•¢Rœ4ÿ¨pCAT” }âNPMñðˆX$Г(Pºdå‰Cüø7Œ¢ÊL(a`ëqÇÿÁW!¤d¡:ñ{=4Ÿf”ÂńF1        wªÜ ¡xÑŠMˆÆvÜIqbìÑ
6581-*}p±ž°×J œ˜B•" ­œâƒÿY ’òÄ{(~Д™1ƈ¶]`IPO`@@ À‚bÔÉÄ)'
6582-°q)‘DRTwCÌé'·5”      `€áÆ%!!¢€ŸsÀƒp¡G”v!‡)eÁ¨ŸP´Ð'cTÚÅvYÄæs*ÀØB£”!ª¡\ˆt*ªqªÊ+‚|Aéƒ@**œx‚Ê@šÒ
6583-@§
6584-¡bÈp‚iAžBGˆ(Պ¢´:ê«BªkÐ)¼!®Œ`¦JŸ¨J]'tÈáî}<ۉ›ÖÉÝ'u¼ñî϶ò    €¦šl’Xˆâ҉A˜Ø±å!0²WÊ"}ü‰·m.„ŠtÃ!ù     
6585-­,+-ÿ[      H°`AS¦*\Ȑ!)9S¨Ì)Õ°¢Å«ÖäÀCǚUC.Ôd„#G#šDª$X)ˆIB*)L¥je)R –ºò˨‚•Æ q"GÔET~¸dóÉ £':t@iTҎ'N¨˜b´¢'J”0AƒÊ §A„:L%%k
6586-¬*âT,ÕE,%Q(‰Ä$ãÄÛ·'žÔt¨Å®(‘DZ‚á÷ï‰%§²‚s7¬P"KiŒ5‹ŸÐDyÒÒÊ?-²få!Óâ)J‘0¯\õ§HŒSL¯Ü-°T¥LeyN¼ ªÁÅ/ªBt凑5j²õ)xòVªÌØÀ½ƒÄ­P      ÿ23&N¦ë­øˆàÎ~CŸˆ¾t™ß†TrTAÚ³ÿðG՛ùóqœ° {aø`&WàÜ…ÑJ|ºÑq©äw „7yr\‚^ëéçCW¬ˆâIBè©rF   ìypƒnè)´
6587-sA±'5ÚHÐ*Èõ(*H‘ƒ](ä@¡8QAP:ÐÁG©òI'‘‰¤Š@éeÈÕP)…ØAǞˆÈ“_z©Bš1"Çsbv‰dÁC[(’Óm~)Á¡ÒsÒÁ£@¡°€i|¶P* ú†Mµò‰–iŸüpi”i4$  oЖ‰H*U!€©¦
6588-€…«‚YHCªDòGŒØ×Ê%àŠk|°*U”Ê)ÈÝA€²¦G*‚"¼m®ŸÉ‘‚8P‹·FãB*Ày²h-oˆ/ "¤)+ü˾5þÁÀ¸
6589-ø±¤@l<€k°ñð@ˆì`
6590-XÀÃ!ÿh        !„X¤H!ù   
6591-­,+,ÿ[      H°`ÁR¤T\Ȱ!CT~¸dyãɡŋû4Q¢„‰TC2,Å¥#%P(‰\Ipԓ(!±dÈjÔ'UÁ9ɱ˧…¦L‰D%¨Ì8™zBÅI™Iř2%)Œ†¾tÙÊæêÁI~æTƒ£,5
6592-ªz³u+˜H+51‹ƒˆ&‹¨à´íòv%¥ tƒ¨´˜µ­Q+Ga¡‹eÔESƒÌŒ‘sif£'9r<iRU¨NBg¶ê4hP'ѨS«^ͺ5êSi      ªúÔé”끕ÆiÔÀR…êÐùSÑ5¤(NœH!Åw«ErÞD„su*)ÊQ$O§ª>Ò£ÓÿáÔú’ŒÚµŸh¢êԟðoê_])úô'”ØŽDçtDÕ©FŠ÷mG†@¨DòGŒ8æÚ-(§•Tl­¥ò‡2Ð T·5D
6593-%˜Ø¶*ˆdÁY ‚aˆu2„Ô€CœÆ*©\ô‰6 Àqtfˆ=¡y
6594-Q!¤O`”Š$h`%5€X&<$킕djÀbÙQ€—6`†lD™d~ÐÇBcÀfŒÑÊ)HqC\€È       t’éÅBkè¹gk€â
6595-TÊhµrh¢V‚±Ð!ì       ˆ<Á@¥¨6PAw§Á),ŽT
6596-¢²`J©¦šÂi}ˆhhäGl6àǹ¦­¤‚†    dzpƒ–±£|BÀF+;$›ª©bÈA±“ƒ
6597-(`†„·¨¦‘Ó‹jURZ%±uá½ã@Ð{C)ԆɊ HÂɑ‚8PÁ
6598-‹@L'{a!²!ù     
6599-­,-+ÿ[      H° AªR\ȰáATˆÞ¼AdʡŋY
6600-úҥ˗Aª0Š\8ÊLǎfD\IðӘ“]ÆxbÙ0UEƒ¨âÀŒƒÊ «Q¤VªŠô§Ï¢ 3µ¦M&ƒŸàhéâçæEIt$Ê1¤° )I’<…†‰%Oü`Lõç9oì|Y)Š&f»ˆmˆªÛ·t8Œôä®Ù,£.²bWâŸS#Eu9{Î*Œ¥Ù¡hæÊH] DA3W¤ªOzÒ©’jš°Eš:´fÌK±WþYq@@€ª”Îí
6601-ȓ€!˜8CD’KÀHHç¥*iº¾jÇôé9ÿwt%ȑ5‰+Uø.=@âžžà˜¯CN«A      ØKïAœŽùóQQ
6602-~ú%Ç_nþˆ¦¨W uZÀ'}ö©â]áWžk”"túUwv•l2¢@Æ}'@ž9ÇÐn½ý–ùȐ)ˆ¬AxÄSҕ¹ñAH6` ¬”&¯9$‡I&é]´ÊEÄ0ÏXäI
6603-UVYA Ò      lžÀC%ñ!A™UJqQ)EœÂžzŽáPtV©Ã‰©pÂI–Uƒž{¦pBˆ„†"éB|ÁAð1d&20ʧ×-TH•:ÐE+«œ!°nŒ Â×¥"›|ª‡C¥ÜPi‘´‚H  ±ÆZ"Eƒ£'¨0…J1"¬!Å{A––ÐZ´È
6604-¨6 
6605-r\¦
6606-ÙÆ
6607-Đ¥R*F¦’F|´¸ŠíÂjĉD´Fív`mÀubC»6t‚ðA‘ôð¬ôìÉâaü‘ØJ!ù   
6608-­,-+ÿ[      H° A§P\ȰáAT‘þôYTÊ¡E‚¥­c“ÁHtÞ¼‘SHÕE‹~X  €*Ÿšú3RΛ:1O2dӀϟ\thªOM9t†ê<hЧCLªbdSäŸSMZTÅ#ÀS 
6609-      …¨@žš2ç!…
6610-+Yøú4Ë@Tž8Á%¨jЗ.]¾bÕpº@y\e0à2£
6611-FìS±ÅNcw“s¡\Ê>íZ4%G3œ½¹zEöä%7`À°Éd±)å¨:EEŠDê$Oº/”.žrežÄ¾´SL!Úh†ùÒ64Ø^á  (ëKåXÿØN¾'XÁT5ªâ@O)ʗ§H=AOp¶péwùåIaŸ@¥ Á„J4á‡@dhàv7h¥Þ$Q(Áā\Td†ƒö0`+8aáYôFHšÇҟt …o˜4Ê
6612-)rɇ­@ÒP˜‘–@‹ˆ`jà(Ð'P‚Z+ŠÜ€b¤‡„F.TJ!iˆ¡‡pUêt
6613-'œ¤×%C©ô,±G*c¦††Ä©AfPyÑ(”hb'C†˜ §œ$²T#Xa„½YtşZ¡S'Oà )Ë9¤JŒÊÙÒ
6614-’ä8Dg©™Æ9›‘RÉ%¨ä)¨¢:ˆ´†™rP¤@©üaD2Hq#A‚Z©CœÜi
6615-œôG'4{•DhD z$=€ç<üÚ
6616-)Fœ€Â¸âŽažz.%Ê`xч(Q"ƒ¸ã¢p‚b¶)&4ÐKn{ŽyŠÍ’›Â°ú )4›‚ß%\P%d$GÄtJÀ;
6617\ No newline at end of file
6618Index: wp-includes/mediaelement/mediaelement-and-player.js
6619===================================================================
6620--- wp-includes/mediaelement/mediaelement-and-player.js (revision 23731)
6621+++ wp-includes/mediaelement/mediaelement-and-player.js (working copy)
6622@@ -1,4649 +0,0 @@
6623-/*!
6624-* MediaElement.js
6625-* HTML5 <video> and <audio> shim and player
6626-* http://mediaelementjs.com/
6627-*
6628-* Creates a JavaScript object that mimics HTML5 MediaElement API
6629-* for browsers that don't understand HTML5 or can't play the provided codec
6630-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
6631-*
6632-* Copyright 2010-2012, John Dyer (http://j.hn)
6633-* Dual licensed under the MIT or GPL Version 2 licenses.
6634-*
6635-*/
6636-// Namespace
6637-var mejs = mejs || {};
6638-
6639-// version number
6640-mejs.version = '2.10.1';
6641-
6642-// player number (for missing, same id attr)
6643-mejs.meIndex = 0;
6644-
6645-// media types accepted by plugins
6646-mejs.plugins = {
6647-       silverlight: [
6648-               {version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']}
6649-       ],
6650-       flash: [
6651-               {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']}
6652-               //,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!)
6653-       ],
6654-       youtube: [
6655-               {version: null, types: ['video/youtube', 'video/x-youtube']}
6656-       ],
6657-       vimeo: [
6658-               {version: null, types: ['video/vimeo', 'video/x-vimeo']}
6659-       ]
6660-};
6661-
6662-/*
6663-Utility methods
6664-*/
6665-mejs.Utility = {
6666-       encodeUrl: function(url) {
6667-               return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26');
6668-       },
6669-       escapeHTML: function(s) {
6670-               return s.toString().split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;');
6671-       },
6672-       absolutizeUrl: function(url) {
6673-               var el = document.createElement('div');
6674-               el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>';
6675-               return el.firstChild.href;
6676-       },
6677-       getScriptPath: function(scriptNames) {
6678-               var
6679-                       i = 0,
6680-                       j,
6681-                       path = '',
6682-                       name = '',
6683-                       script,
6684-                       scripts = document.getElementsByTagName('script'),
6685-                       il = scripts.length,
6686-                       jl = scriptNames.length;
6687-
6688-               for (; i < il; i++) {
6689-                       script = scripts[i].src;
6690-                       for (j = 0; j < jl; j++) {
6691-                               name = scriptNames[j];
6692-                               if (script.indexOf(name) > -1) {
6693-                                       path = script.substring(0, script.indexOf(name));
6694-                                       break;
6695-                               }
6696-                       }
6697-                       if (path !== '') {
6698-                               break;
6699-                       }
6700-               }
6701-               return path;
6702-       },
6703-       secondsToTimeCode: function(time, forceHours, showFrameCount, fps) {
6704-               //add framecount
6705-               if (typeof showFrameCount == 'undefined') {
6706-                   showFrameCount=false;
6707-               } else if(typeof fps == 'undefined') {
6708-                   fps = 25;
6709-               }
6710-       
6711-               var hours = Math.floor(time / 3600) % 24,
6712-                       minutes = Math.floor(time / 60) % 60,
6713-                       seconds = Math.floor(time % 60),
6714-                       frames = Math.floor(((time % 1)*fps).toFixed(3)),
6715-                       result =
6716-                                       ( (forceHours || hours > 0) ? (hours < 10 ? '0' + hours : hours) + ':' : '')
6717-                                               + (minutes < 10 ? '0' + minutes : minutes) + ':'
6718-                                               + (seconds < 10 ? '0' + seconds : seconds)
6719-                                               + ((showFrameCount) ? ':' + (frames < 10 ? '0' + frames : frames) : '');
6720-       
6721-               return result;
6722-       },
6723-       
6724-       timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){
6725-               if (typeof showFrameCount == 'undefined') {
6726-                   showFrameCount=false;
6727-               } else if(typeof fps == 'undefined') {
6728-                   fps = 25;
6729-               }
6730-       
6731-               var tc_array = hh_mm_ss_ff.split(":"),
6732-                       tc_hh = parseInt(tc_array[0], 10),
6733-                       tc_mm = parseInt(tc_array[1], 10),
6734-                       tc_ss = parseInt(tc_array[2], 10),
6735-                       tc_ff = 0,
6736-                       tc_in_seconds = 0;
6737-               
6738-               if (showFrameCount) {
6739-                   tc_ff = parseInt(tc_array[3])/fps;
6740-               }
6741-               
6742-               tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff;
6743-               
6744-               return tc_in_seconds;
6745-       },
6746-       
6747-
6748-       convertSMPTEtoSeconds: function (SMPTE) {
6749-               if (typeof SMPTE != 'string')
6750-                       return false;
6751-
6752-               SMPTE = SMPTE.replace(',', '.');
6753-               
6754-               var secs = 0,
6755-                       decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0,
6756-                       multiplier = 1;
6757-               
6758-               SMPTE = SMPTE.split(':').reverse();
6759-               
6760-               for (var i = 0; i < SMPTE.length; i++) {
6761-                       multiplier = 1;
6762-                       if (i > 0) {
6763-                               multiplier = Math.pow(60, i);
6764-                       }
6765-                       secs += Number(SMPTE[i]) * multiplier;
6766-               }
6767-               return Number(secs.toFixed(decimalLen));
6768-       },     
6769-       
6770-       /* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */
6771-       removeSwf: function(id) {
6772-               var obj = document.getElementById(id);
6773-               if (obj && obj.nodeName == "OBJECT") {
6774-                       if (mejs.MediaFeatures.isIE) {
6775-                               obj.style.display = "none";
6776-                               (function(){
6777-                                       if (obj.readyState == 4) {
6778-                                               mejs.Utility.removeObjectInIE(id);
6779-                                       } else {
6780-                                               setTimeout(arguments.callee, 10);
6781-                                       }
6782-                               })();
6783-                       } else {
6784-                               obj.parentNode.removeChild(obj);
6785-                       }
6786-               }
6787-       },
6788-       removeObjectInIE: function(id) {
6789-               var obj = document.getElementById(id);
6790-               if (obj) {
6791-                       for (var i in obj) {
6792-                               if (typeof obj[i] == "function") {
6793-                                       obj[i] = null;
6794-                               }
6795-                       }
6796-                       obj.parentNode.removeChild(obj);
6797-               }               
6798-       }
6799-};
6800-
6801-
6802-// Core detector, plugins are added below
6803-mejs.PluginDetector = {
6804-
6805-       // main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]);
6806-       hasPluginVersion: function(plugin, v) {
6807-               var pv = this.plugins[plugin];
6808-               v[1] = v[1] || 0;
6809-               v[2] = v[2] || 0;
6810-               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;
6811-       },
6812-
6813-       // cached values
6814-       nav: window.navigator,
6815-       ua: window.navigator.userAgent.toLowerCase(),
6816-
6817-       // stored version numbers
6818-       plugins: [],
6819-
6820-       // runs detectPlugin() and stores the version number
6821-       addPlugin: function(p, pluginName, mimeType, activeX, axDetect) {
6822-               this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect);
6823-       },
6824-
6825-       // get the version number from the mimetype (all but IE) or ActiveX (IE)
6826-       detectPlugin: function(pluginName, mimeType, activeX, axDetect) {
6827-
6828-               var version = [0,0,0],
6829-                       description,
6830-                       i,
6831-                       ax;
6832-
6833-               // Firefox, Webkit, Opera
6834-               if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') {
6835-                       description = this.nav.plugins[pluginName].description;
6836-                       if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) {
6837-                               version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.');
6838-                               for (i=0; i<version.length; i++) {
6839-                                       version[i] = parseInt(version[i].match(/\d+/), 10);
6840-                               }
6841-                       }
6842-               // Internet Explorer / ActiveX
6843-               } else if (typeof(window.ActiveXObject) != 'undefined') {
6844-                       try {
6845-                               ax = new ActiveXObject(activeX);
6846-                               if (ax) {
6847-                                       version = axDetect(ax);
6848-                               }
6849-                       }
6850-                       catch (e) { }
6851-               }
6852-               return version;
6853-       }
6854-};
6855-
6856-// Add Flash detection
6857-mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) {
6858-       // adapted from SWFObject
6859-       var version = [],
6860-               d = ax.GetVariable("$version");
6861-       if (d) {
6862-               d = d.split(" ")[1].split(",");
6863-               version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
6864-       }
6865-       return version;
6866-});
6867-
6868-// Add Silverlight detection
6869-mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) {
6870-       // Silverlight cannot report its version number to IE
6871-       // but it does have a isVersionSupported function, so we have to loop through it to get a version number.
6872-       // adapted from http://www.silverlightversion.com/
6873-       var v = [0,0,0,0],
6874-               loopMatch = function(ax, v, i, n) {
6875-                       while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){
6876-                               v[i]+=n;
6877-                       }
6878-                       v[i] -= n;
6879-               };
6880-       loopMatch(ax, v, 0, 1);
6881-       loopMatch(ax, v, 1, 1);
6882-       loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx)
6883-       loopMatch(ax, v, 2, 1000);
6884-       loopMatch(ax, v, 2, 100);
6885-       loopMatch(ax, v, 2, 10);
6886-       loopMatch(ax, v, 2, 1);
6887-       loopMatch(ax, v, 3, 1);
6888-
6889-       return v;
6890-});
6891-// add adobe acrobat
6892-/*
6893-PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) {
6894-       var version = [],
6895-               d = ax.GetVersions().split(',')[0].split('=')[1].split('.');
6896-
6897-       if (d) {
6898-               version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
6899-       }
6900-       return version;
6901-});
6902-*/
6903-// necessary detection (fixes for <IE9)
6904-mejs.MediaFeatures = {
6905-       init: function() {
6906-               var
6907-                       t = this,
6908-                       d = document,
6909-                       nav = mejs.PluginDetector.nav,
6910-                       ua = mejs.PluginDetector.ua.toLowerCase(),
6911-                       i,
6912-                       v,
6913-                       html5Elements = ['source','track','audio','video'];
6914-
6915-               // detect browsers (only the ones that have some kind of quirk we need to work around)
6916-               t.isiPad = (ua.match(/ipad/i) !== null);
6917-               t.isiPhone = (ua.match(/iphone/i) !== null);
6918-               t.isiOS = t.isiPhone || t.isiPad;
6919-               t.isAndroid = (ua.match(/android/i) !== null);
6920-               t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null);
6921-               t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1);
6922-               t.isChrome = (ua.match(/chrome/gi) !== null);
6923-               t.isFirefox = (ua.match(/firefox/gi) !== null);
6924-               t.isWebkit = (ua.match(/webkit/gi) !== null);
6925-               t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit;
6926-               t.isOpera = (ua.match(/opera/gi) !== null);
6927-               t.hasTouch = ('ontouchstart' in window);
6928-               
6929-               // borrowed from Modernizr
6930-               t.svg = !! document.createElementNS &&
6931-                               !! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;
6932-
6933-               // create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection
6934-               for (i=0; i<html5Elements.length; i++) {
6935-                       v = document.createElement(html5Elements[i]);
6936-               }
6937-               
6938-               t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid);
6939-
6940-               // detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
6941-               
6942-               // iOS
6943-               t.hasSemiNativeFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined');
6944-               
6945-               // Webkit/firefox
6946-               t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined');
6947-               t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined');
6948-               
6949-               t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen);
6950-               t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen;
6951-               if (t.hasMozNativeFullScreen) {
6952-                       t.nativeFullScreenEnabled = v.mozFullScreenEnabled;
6953-               }
6954-               
6955-               
6956-               if (this.isChrome) {
6957-                       t.hasSemiNativeFullScreen = false;
6958-               }
6959-               
6960-               if (t.hasTrueNativeFullScreen) {
6961-                       t.fullScreenEventName = (t.hasWebkitNativeFullScreen) ? 'webkitfullscreenchange' : 'mozfullscreenchange';
6962-                       
6963-                       
6964-                       t.isFullScreen = function() {
6965-                               if (v.mozRequestFullScreen) {
6966-                                       return d.mozFullScreen;
6967-                               } else if (v.webkitRequestFullScreen) {
6968-                                       return d.webkitIsFullScreen;
6969-                               }
6970-                       }
6971-                                       
6972-                       t.requestFullScreen = function(el) {
6973-               
6974-                               if (t.hasWebkitNativeFullScreen) {
6975-                                       el.webkitRequestFullScreen();
6976-                               } else if (t.hasMozNativeFullScreen) {
6977-                                       el.mozRequestFullScreen();
6978-                               }
6979-                       }
6980-                       
6981-                       t.cancelFullScreen = function() {                               
6982-                               if (t.hasWebkitNativeFullScreen) {
6983-                                       document.webkitCancelFullScreen();
6984-                               } else if (t.hasMozNativeFullScreen) {
6985-                                       document.mozCancelFullScreen();
6986-                               }
6987-                       }       
6988-                       
6989-               }
6990-               
6991-               
6992-               // OS X 10.5 can't do this even if it says it can :(
6993-               if (t.hasSemiNativeFullScreen && ua.match(/mac os x 10_5/i)) {
6994-                       t.hasNativeFullScreen = false;
6995-                       t.hasSemiNativeFullScreen = false;
6996-               }
6997-               
6998-       }
6999-};
7000-mejs.MediaFeatures.init();
7001-
7002-
7003-/*
7004-extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below)
7005-*/
7006-mejs.HtmlMediaElement = {
7007-       pluginType: 'native',
7008-       isFullScreen: false,
7009-
7010-       setCurrentTime: function (time) {
7011-               this.currentTime = time;
7012-       },
7013-
7014-       setMuted: function (muted) {
7015-               this.muted = muted;
7016-       },
7017-
7018-       setVolume: function (volume) {
7019-               this.volume = volume;
7020-       },
7021-
7022-       // for parity with the plugin versions
7023-       stop: function () {
7024-               this.pause();
7025-       },
7026-
7027-       // This can be a url string
7028-       // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
7029-       setSrc: function (url) {
7030-               
7031-               // Fix for IE9 which can't set .src when there are <source> elements. Awesome, right?
7032-               var
7033-                       existingSources = this.getElementsByTagName('source');
7034-               while (existingSources.length > 0){
7035-                       this.removeChild(existingSources[0]);
7036-               }
7037-       
7038-               if (typeof url == 'string') {
7039-                       this.src = url;
7040-               } else {
7041-                       var i, media;
7042-
7043-                       for (i=0; i<url.length; i++) {
7044-                               media = url[i];
7045-                               if (this.canPlayType(media.type)) {
7046-                                       this.src = media.src;
7047-                                       break;
7048-                               }
7049-                       }
7050-               }
7051-       },
7052-
7053-       setVideoSize: function (width, height) {
7054-               this.width = width;
7055-               this.height = height;
7056-       }
7057-};
7058-
7059-/*
7060-Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember]
7061-*/
7062-mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) {
7063-       this.id = pluginid;
7064-       this.pluginType = pluginType;
7065-       this.src = mediaUrl;
7066-       this.events = {};
7067-};
7068-
7069-// JavaScript values and ExternalInterface methods that match HTML5 video properties methods
7070-// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html
7071-// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
7072-mejs.PluginMediaElement.prototype = {
7073-
7074-       // special
7075-       pluginElement: null,
7076-       pluginType: '',
7077-       isFullScreen: false,
7078-
7079-       // not implemented :(
7080-       playbackRate: -1,
7081-       defaultPlaybackRate: -1,
7082-       seekable: [],
7083-       played: [],
7084-
7085-       // HTML5 read-only properties
7086-       paused: true,
7087-       ended: false,
7088-       seeking: false,
7089-       duration: 0,
7090-       error: null,
7091-       tagName: '',
7092-
7093-       // HTML5 get/set properties, but only set (updated by event handlers)
7094-       muted: false,
7095-       volume: 1,
7096-       currentTime: 0,
7097-
7098-       // HTML5 methods
7099-       play: function () {
7100-               if (this.pluginApi != null) {
7101-                       if (this.pluginType == 'youtube') {
7102-                               this.pluginApi.playVideo();
7103-                       } else {
7104-                               this.pluginApi.playMedia();
7105-                       }
7106-                       this.paused = false;
7107-               }
7108-       },
7109-       load: function () {
7110-               if (this.pluginApi != null) {
7111-                       if (this.pluginType == 'youtube') {
7112-                       } else {
7113-                               this.pluginApi.loadMedia();
7114-                       }
7115-                       
7116-                       this.paused = false;
7117-               }
7118-       },
7119-       pause: function () {
7120-               if (this.pluginApi != null) {
7121-                       if (this.pluginType == 'youtube') {
7122-                               this.pluginApi.pauseVideo();
7123-                       } else {
7124-                               this.pluginApi.pauseMedia();
7125-                       }                       
7126-                       
7127-                       
7128-                       this.paused = true;
7129-               }
7130-       },
7131-       stop: function () {
7132-               if (this.pluginApi != null) {
7133-                       if (this.pluginType == 'youtube') {
7134-                               this.pluginApi.stopVideo();
7135-                       } else {
7136-                               this.pluginApi.stopMedia();
7137-                       }       
7138-                       this.paused = true;
7139-               }
7140-       },
7141-       canPlayType: function(type) {
7142-               var i,
7143-                       j,
7144-                       pluginInfo,
7145-                       pluginVersions = mejs.plugins[this.pluginType];
7146-
7147-               for (i=0; i<pluginVersions.length; i++) {
7148-                       pluginInfo = pluginVersions[i];
7149-
7150-                       // test if user has the correct plugin version
7151-                       if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) {
7152-
7153-                               // test for plugin playback types
7154-                               for (j=0; j<pluginInfo.types.length; j++) {
7155-                                       // find plugin that can play the type
7156-                                       if (type == pluginInfo.types[j]) {
7157-                                               return true;
7158-                                       }
7159-                               }
7160-                       }
7161-               }
7162-
7163-               return false;
7164-       },
7165-       
7166-       positionFullscreenButton: function(x,y,visibleAndAbove) {
7167-               if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) {
7168-                       this.pluginApi.positionFullscreenButton(x,y,visibleAndAbove);
7169-               }
7170-       },
7171-       
7172-       hideFullscreenButton: function() {
7173-               if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) {
7174-                       this.pluginApi.hideFullscreenButton();
7175-               }               
7176-       },     
7177-       
7178-
7179-       // custom methods since not all JavaScript implementations support get/set
7180-
7181-       // This can be a url string
7182-       // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
7183-       setSrc: function (url) {
7184-               if (typeof url == 'string') {
7185-                       this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url));
7186-                       this.src = mejs.Utility.absolutizeUrl(url);
7187-               } else {
7188-                       var i, media;
7189-
7190-                       for (i=0; i<url.length; i++) {
7191-                               media = url[i];
7192-                               if (this.canPlayType(media.type)) {
7193-                                       this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src));
7194-                                       this.src = mejs.Utility.absolutizeUrl(url);
7195-                                       break;
7196-                               }
7197-                       }
7198-               }
7199-
7200-       },
7201-       setCurrentTime: function (time) {
7202-               if (this.pluginApi != null) {
7203-                       if (this.pluginType == 'youtube') {
7204-                               this.pluginApi.seekTo(time);
7205-                       } else {
7206-                               this.pluginApi.setCurrentTime(time);
7207-                       }                               
7208-                       
7209-                       
7210-                       
7211-                       this.currentTime = time;
7212-               }
7213-       },
7214-       setVolume: function (volume) {
7215-               if (this.pluginApi != null) {
7216-                       // same on YouTube and MEjs
7217-                       if (this.pluginType == 'youtube') {
7218-                               this.pluginApi.setVolume(volume * 100);
7219-                       } else {
7220-                               this.pluginApi.setVolume(volume);
7221-                       }
7222-                       this.volume = volume;
7223-               }
7224-       },
7225-       setMuted: function (muted) {
7226-               if (this.pluginApi != null) {
7227-                       if (this.pluginType == 'youtube') {
7228-                               if (muted) {
7229-                                       this.pluginApi.mute();
7230-                               } else {
7231-                                       this.pluginApi.unMute();
7232-                               }
7233-                               this.muted = muted;
7234-                               this.dispatchEvent('volumechange');
7235-                       } else {
7236-                               this.pluginApi.setMuted(muted);
7237-                       }
7238-                       this.muted = muted;
7239-               }
7240-       },
7241-
7242-       // additional non-HTML5 methods
7243-       setVideoSize: function (width, height) {
7244-               
7245-               //if (this.pluginType == 'flash' || this.pluginType == 'silverlight') {
7246-                       if ( this.pluginElement.style) {
7247-                               this.pluginElement.style.width = width + 'px';
7248-                               this.pluginElement.style.height = height + 'px';
7249-                       }
7250-                       if (this.pluginApi != null && this.pluginApi.setVideoSize) {
7251-                               this.pluginApi.setVideoSize(width, height);
7252-                       }
7253-               //}
7254-       },
7255-
7256-       setFullscreen: function (fullscreen) {
7257-               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
7258-                       this.pluginApi.setFullscreen(fullscreen);
7259-               }
7260-       },
7261-       
7262-       enterFullScreen: function() {
7263-               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
7264-                       this.setFullscreen(true);
7265-               }               
7266-               
7267-       },
7268-       
7269-       exitFullScreen: function() {
7270-               if (this.pluginApi != null && this.pluginApi.setFullscreen) {
7271-                       this.setFullscreen(false);
7272-               }
7273-       },     
7274-
7275-       // start: fake events
7276-       addEventListener: function (eventName, callback, bubble) {
7277-               this.events[eventName] = this.events[eventName] || [];
7278-               this.events[eventName].push(callback);
7279-       },
7280-       removeEventListener: function (eventName, callback) {
7281-               if (!eventName) { this.events = {}; return true; }
7282-               var callbacks = this.events[eventName];
7283-               if (!callbacks) return true;
7284-               if (!callback) { this.events[eventName] = []; return true; }
7285-               for (i = 0; i < callbacks.length; i++) {
7286-                       if (callbacks[i] === callback) {
7287-                               this.events[eventName].splice(i, 1);
7288-                               return true;
7289-                       }
7290-               }
7291-               return false;
7292-       },     
7293-       dispatchEvent: function (eventName) {
7294-               var i,
7295-                       args,
7296-                       callbacks = this.events[eventName];
7297-
7298-               if (callbacks) {
7299-                       args = Array.prototype.slice.call(arguments, 1);
7300-                       for (i = 0; i < callbacks.length; i++) {
7301-                               callbacks[i].apply(null, args);
7302-                       }
7303-               }
7304-       },
7305-       // end: fake events
7306-       
7307-       // fake DOM attribute methods
7308-       attributes: {},
7309-       hasAttribute: function(name){
7310-               return (name in this.attributes); 
7311-       },
7312-       removeAttribute: function(name){
7313-               delete this.attributes[name];
7314-       },
7315-       getAttribute: function(name){
7316-               if (this.hasAttribute(name)) {
7317-                       return this.attributes[name];
7318-               }
7319-               return '';
7320-       },
7321-       setAttribute: function(name, value){
7322-               this.attributes[name] = value;
7323-       },
7324-
7325-       remove: function() {
7326-               mejs.Utility.removeSwf(this.pluginElement.id);
7327-       }
7328-};
7329-
7330-// Handles calls from Flash/Silverlight and reports them as native <video/audio> events and properties
7331-mejs.MediaPluginBridge = {
7332-
7333-       pluginMediaElements:{},
7334-       htmlMediaElements:{},
7335-
7336-       registerPluginElement: function (id, pluginMediaElement, htmlMediaElement) {
7337-               this.pluginMediaElements[id] = pluginMediaElement;
7338-               this.htmlMediaElements[id] = htmlMediaElement;
7339-       },
7340-
7341-       // when Flash/Silverlight is ready, it calls out to this method
7342-       initPlugin: function (id) {
7343-
7344-               var pluginMediaElement = this.pluginMediaElements[id],
7345-                       htmlMediaElement = this.htmlMediaElements[id];
7346-
7347-               if (pluginMediaElement) {
7348-                       // find the javascript bridge
7349-                       switch (pluginMediaElement.pluginType) {
7350-                               case "flash":
7351-                                       pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(id);
7352-                                       break;
7353-                               case "silverlight":
7354-                                       pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id);
7355-                                       pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS;
7356-                                       break;
7357-                       }
7358-       
7359-                       if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) {
7360-                               pluginMediaElement.success(pluginMediaElement, htmlMediaElement);
7361-                       }
7362-               }
7363-       },
7364-
7365-       // receives events from Flash/Silverlight and sends them out as HTML5 media events
7366-       // http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
7367-       fireEvent: function (id, eventName, values) {
7368-
7369-               var
7370-                       e,
7371-                       i,
7372-                       bufferedTime,
7373-                       pluginMediaElement = this.pluginMediaElements[id];
7374-
7375-               // fake event object to mimic real HTML media event.
7376-               e = {
7377-                       type: eventName,
7378-                       target: pluginMediaElement
7379-               };
7380-
7381-               // attach all values to element and event object
7382-               for (i in values) {
7383-                       pluginMediaElement[i] = values[i];
7384-                       e[i] = values[i];
7385-               }
7386-
7387-               // fake the newer W3C buffered TimeRange (loaded and total have been removed)
7388-               bufferedTime = values.bufferedTime || 0;
7389-
7390-               e.target.buffered = e.buffered = {
7391-                       start: function(index) {
7392-                               return 0;
7393-                       },
7394-                       end: function (index) {
7395-                               return bufferedTime;
7396-                       },
7397-                       length: 1
7398-               };
7399-
7400-               pluginMediaElement.dispatchEvent(e.type, e);
7401-       }
7402-};
7403-
7404-/*
7405-Default options
7406-*/
7407-mejs.MediaElementDefaults = {
7408-       // allows testing on HTML5, flash, silverlight
7409-       // auto: attempts to detect what the browser can do
7410-       // auto_plugin: prefer plugins and then attempt native HTML5
7411-       // native: forces HTML5 playback
7412-       // shim: disallows HTML5, will attempt either Flash or Silverlight
7413-       // none: forces fallback view
7414-       mode: 'auto',
7415-       // remove or reorder to change plugin priority and availability
7416-       plugins: ['flash','silverlight','youtube','vimeo'],
7417-       // shows debug errors on screen
7418-       enablePluginDebug: false,
7419-       // overrides the type specified, useful for dynamic instantiation
7420-       type: '',
7421-       // path to Flash and Silverlight plugins
7422-       pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']),
7423-       // name of flash file
7424-       flashName: 'flashmediaelement.swf',
7425-       // streamer for RTMP streaming
7426-       flashStreamer: '',
7427-       // turns on the smoothing filter in Flash
7428-       enablePluginSmoothing: false,
7429-       // name of silverlight file
7430-       silverlightName: 'silverlightmediaelement.xap',
7431-       // default if the <video width> is not specified
7432-       defaultVideoWidth: 480,
7433-       // default if the <video height> is not specified
7434-       defaultVideoHeight: 270,
7435-       // overrides <video width>
7436-       pluginWidth: -1,
7437-       // overrides <video height>
7438-       pluginHeight: -1,
7439-       // additional plugin variables in 'key=value' form
7440-       pluginVars: [],
7441-       // rate in milliseconds for Flash and Silverlight to fire the timeupdate event
7442-       // larger number is less accurate, but less strain on plugin->JavaScript bridge
7443-       timerRate: 250,
7444-       // initial volume for player
7445-       startVolume: 0.8,
7446-       success: function () { },
7447-       error: function () { }
7448-};
7449-
7450-/*
7451-Determines if a browser supports the <video> or <audio> element
7452-and returns either the native element or a Flash/Silverlight version that
7453-mimics HTML5 MediaElement
7454-*/
7455-mejs.MediaElement = function (el, o) {
7456-       return mejs.HtmlMediaElementShim.create(el,o);
7457-};
7458-
7459-mejs.HtmlMediaElementShim = {
7460-
7461-       create: function(el, o) {
7462-               var
7463-                       options = mejs.MediaElementDefaults,
7464-                       htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el,
7465-                       tagName = htmlMediaElement.tagName.toLowerCase(),
7466-                       isMediaTag = (tagName === 'audio' || tagName === 'video'),
7467-                       src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'),
7468-                       poster = htmlMediaElement.getAttribute('poster'),
7469-                       autoplay =  htmlMediaElement.getAttribute('autoplay'),
7470-                       preload =  htmlMediaElement.getAttribute('preload'),
7471-                       controls =  htmlMediaElement.getAttribute('controls'),
7472-                       playback,
7473-                       prop;
7474-
7475-               // extend options
7476-               for (prop in o) {
7477-                       options[prop] = o[prop];
7478-               }
7479-
7480-               // clean up attributes
7481-               src =           (typeof src == 'undefined'      || src === null || src == '') ? null : src;             
7482-               poster =        (typeof poster == 'undefined'   || poster === null) ? '' : poster;
7483-               preload =       (typeof preload == 'undefined'  || preload === null || preload === 'false') ? 'none' : preload;
7484-               autoplay =      !(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false');
7485-               controls =      !(typeof controls == 'undefined' || controls === null || controls === 'false');
7486-
7487-               // test for HTML5 and plugin capabilities
7488-               playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src);
7489-               playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : '';
7490-
7491-               if (playback.method == 'native') {
7492-                       // second fix for android
7493-                       if (mejs.MediaFeatures.isBustedAndroid) {
7494-                               htmlMediaElement.src = playback.url;
7495-                               htmlMediaElement.addEventListener('click', function() {
7496-                                       htmlMediaElement.play();
7497-                               }, false);
7498-                       }
7499-               
7500-                       // add methods to native HTMLMediaElement
7501-                       return this.updateNative(playback, options, autoplay, preload);
7502-               } else if (playback.method !== '') {
7503-                       // create plugin to mimic HTMLMediaElement
7504-                       
7505-                       return this.createPlugin( playback,  options, poster, autoplay, preload, controls);
7506-               } else {
7507-                       // boo, no HTML5, no Flash, no Silverlight.
7508-                       this.createErrorMessage( playback, options, poster );
7509-                       
7510-                       return this;
7511-               }
7512-       },
7513-       
7514-       determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) {
7515-               var
7516-                       mediaFiles = [],
7517-                       i,
7518-                       j,
7519-                       k,
7520-                       l,
7521-                       n,
7522-                       type,
7523-                       result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() != 'audio')},
7524-                       pluginName,
7525-                       pluginVersions,
7526-                       pluginInfo,
7527-                       dummy,
7528-                       media;
7529-                       
7530-               // STEP 1: Get URL and type from <video src> or <source src>
7531-
7532-               // supplied type overrides <video type> and <source type>
7533-               if (typeof options.type != 'undefined' && options.type !== '') {
7534-                       
7535-                       // accept either string or array of types
7536-                       if (typeof options.type == 'string') {
7537-                               mediaFiles.push({type:options.type, url:src});
7538-                       } else {
7539-                               
7540-                               for (i=0; i<options.type.length; i++) {
7541-                                       mediaFiles.push({type:options.type[i], url:src});
7542-                               }
7543-                       }
7544-
7545-               // test for src attribute first
7546-               } else if (src !== null) {
7547-                       type = this.formatType(src, htmlMediaElement.getAttribute('type'));
7548-                       mediaFiles.push({type:type, url:src});
7549-
7550-               // then test for <source> elements
7551-               } else {
7552-                       // test <source> types to see if they are usable
7553-                       for (i = 0; i < htmlMediaElement.childNodes.length; i++) {
7554-                               n = htmlMediaElement.childNodes[i];
7555-                               if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') {
7556-                                       src = n.getAttribute('src');
7557-                                       type = this.formatType(src, n.getAttribute('type'));
7558-                                       media = n.getAttribute('media');
7559-
7560-                                       if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) {
7561-                                               mediaFiles.push({type:type, url:src});
7562-                                       }
7563-                               }
7564-                       }
7565-               }
7566-               
7567-               // in the case of dynamicly created players
7568-               // check for audio types
7569-               if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) {
7570-                       result.isVideo = false;
7571-               }
7572-               
7573-
7574-               // STEP 2: Test for playback method
7575-               
7576-               // special case for Android which sadly doesn't implement the canPlayType function (always returns '')
7577-               if (mejs.MediaFeatures.isBustedAndroid) {
7578-                       htmlMediaElement.canPlayType = function(type) {
7579-                               return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : '';
7580-                       };
7581-               }               
7582-               
7583-
7584-               // test for native playback first
7585-               if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native')) {
7586-                                               
7587-                       if (!isMediaTag) {
7588-
7589-                               // create a real HTML5 Media Element
7590-                               dummy = document.createElement( result.isVideo ? 'video' : 'audio');                   
7591-                               htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement);
7592-                               htmlMediaElement.style.display = 'none';
7593-                               
7594-                               // use this one from now on
7595-                               result.htmlMediaElement = htmlMediaElement = dummy;
7596-                       }
7597-                               
7598-                       for (i=0; i<mediaFiles.length; i++) {
7599-                               // normal check
7600-                               if (htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
7601-                                       // special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
7602-                                       || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== '') {
7603-                                       result.method = 'native';
7604-                                       result.url = mediaFiles[i].url;
7605-                                       break;
7606-                               }
7607-                       }                       
7608-                       
7609-                       if (result.method === 'native') {
7610-                               if (result.url !== null) {
7611-                                       htmlMediaElement.src = result.url;
7612-                               }
7613-                       
7614-                               // if `auto_plugin` mode, then cache the native result but try plugins.
7615-                               if (options.mode !== 'auto_plugin') {
7616-                                       return result;
7617-                               }
7618-                       }
7619-               }
7620-
7621-               // if native playback didn't work, then test plugins
7622-               if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') {
7623-                       for (i=0; i<mediaFiles.length; i++) {
7624-                               type = mediaFiles[i].type;
7625-
7626-                               // test all plugins in order of preference [silverlight, flash]
7627-                               for (j=0; j<options.plugins.length; j++) {
7628-
7629-                                       pluginName = options.plugins[j];
7630-                       
7631-                                       // test version of plugin (for future features)
7632-                                       pluginVersions = mejs.plugins[pluginName];                             
7633-                                       
7634-                                       for (k=0; k<pluginVersions.length; k++) {
7635-                                               pluginInfo = pluginVersions[k];
7636-                                       
7637-                                               // test if user has the correct plugin version
7638-                                               
7639-                                               // for youtube/vimeo
7640-                                               if (pluginInfo.version == null ||
7641-                                                       
7642-                                                       mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) {
7643-
7644-                                                       // test for plugin playback types
7645-                                                       for (l=0; l<pluginInfo.types.length; l++) {
7646-                                                               // find plugin that can play the type
7647-                                                               if (type == pluginInfo.types[l]) {
7648-                                                                       result.method = pluginName;
7649-                                                                       result.url = mediaFiles[i].url;
7650-                                                                       return result;
7651-                                                               }
7652-                                                       }
7653-                                               }
7654-                                       }
7655-                               }
7656-                       }
7657-               }
7658-               
7659-               // at this point, being in 'auto_plugin' mode implies that we tried plugins but failed.
7660-               // if we have native support then return that.
7661-               if (options.mode === 'auto_plugin' && result.method === 'native') {
7662-                       return result;
7663-               }
7664-
7665-               // what if there's nothing to play? just grab the first available
7666-               if (result.method === '' && mediaFiles.length > 0) {
7667-                       result.url = mediaFiles[0].url;
7668-               }
7669-
7670-               return result;
7671-       },
7672-
7673-       formatType: function(url, type) {
7674-               var ext;
7675-
7676-               // if no type is supplied, fake it with the extension
7677-               if (url && !type) {             
7678-                       return this.getTypeFromFile(url);
7679-               } else {
7680-                       // only return the mime part of the type in case the attribute contains the codec
7681-                       // see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
7682-                       // `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`
7683-                       
7684-                       if (type && ~type.indexOf(';')) {
7685-                               return type.substr(0, type.indexOf(';'));
7686-                       } else {
7687-                               return type;
7688-                       }
7689-               }
7690-       },
7691-       
7692-       getTypeFromFile: function(url) {
7693-               url = url.split('?')[0];
7694-               var ext = url.substring(url.lastIndexOf('.') + 1);
7695-               return (/(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video' : 'audio') + '/' + this.getTypeFromExtension(ext);
7696-       },
7697-       
7698-       getTypeFromExtension: function(ext) {
7699-               
7700-               switch (ext) {
7701-                       case 'mp4':
7702-                       case 'm4v':
7703-                               return 'mp4';
7704-                       case 'webm':
7705-                       case 'webma':
7706-                       case 'webmv':   
7707-                               return 'webm';
7708-                       case 'ogg':
7709-                       case 'oga':
7710-                       case 'ogv':     
7711-                               return 'ogg';
7712-                       default:
7713-                               return ext;
7714-               }
7715-       },
7716-
7717-       createErrorMessage: function(playback, options, poster) {
7718-               var
7719-                       htmlMediaElement = playback.htmlMediaElement,
7720-                       errorContainer = document.createElement('div');
7721-                       
7722-               errorContainer.className = 'me-cannotplay';
7723-
7724-               try {
7725-                       errorContainer.style.width = htmlMediaElement.width + 'px';
7726-                       errorContainer.style.height = htmlMediaElement.height + 'px';
7727-               } catch (e) {}
7728-
7729-               errorContainer.innerHTML = (poster !== '') ?
7730-                       '<a href="' + playback.url + '"><img src="' + poster + '" width="100%" height="100%" /></a>' :
7731-                       '<a href="' + playback.url + '"><span>' + mejs.i18n.t('Download File') + '</span></a>';
7732-
7733-               htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement);
7734-               htmlMediaElement.style.display = 'none';
7735-
7736-               options.error(htmlMediaElement);
7737-       },
7738-
7739-       createPlugin:function(playback, options, poster, autoplay, preload, controls) {
7740-               var
7741-                       htmlMediaElement = playback.htmlMediaElement,
7742-                       width = 1,
7743-                       height = 1,
7744-                       pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++),
7745-                       pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url),
7746-                       container = document.createElement('div'),
7747-                       specialIEContainer,
7748-                       node,
7749-                       initVars;
7750-
7751-               // copy tagName from html media element
7752-               pluginMediaElement.tagName = htmlMediaElement.tagName
7753-
7754-               // copy attributes from html media element to plugin media element
7755-               for (var i = 0; i < htmlMediaElement.attributes.length; i++) {
7756-                       var attribute = htmlMediaElement.attributes[i];
7757-                       if (attribute.specified == true) {
7758-                               pluginMediaElement.setAttribute(attribute.name, attribute.value);
7759-                       }
7760-               }
7761-
7762-               // check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
7763-               node = htmlMediaElement.parentNode;
7764-               while (node !== null && node.tagName.toLowerCase() != 'body') {
7765-                       if (node.parentNode.tagName.toLowerCase() == 'p') {
7766-                               node.parentNode.parentNode.insertBefore(node, node.parentNode);
7767-                               break;
7768-                       }
7769-                       node = node.parentNode;
7770-               }
7771-
7772-               if (playback.isVideo) {
7773-                       width = (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth;
7774-                       height = (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight;
7775-               
7776-                       // in case of '%' make sure it's encoded
7777-                       width = mejs.Utility.encodeUrl(width);
7778-                       height = mejs.Utility.encodeUrl(height);
7779-               
7780-               } else {
7781-                       if (options.enablePluginDebug) {
7782-                               width = 320;
7783-                               height = 240;
7784-                       }
7785-               }
7786-
7787-               // register plugin
7788-               pluginMediaElement.success = options.success;
7789-               mejs.MediaPluginBridge.registerPluginElement(pluginid, pluginMediaElement, htmlMediaElement);
7790-
7791-               // add container (must be added to DOM before inserting HTML for IE)
7792-               container.className = 'me-plugin';
7793-               container.id = pluginid + '_container';
7794-               
7795-               if (playback.isVideo) {
7796-                               htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement);
7797-               } else {
7798-                               document.body.insertBefore(container, document.body.childNodes[0]);
7799-               }
7800-
7801-               // flash/silverlight vars
7802-               initVars = [
7803-                       'id=' + pluginid,
7804-                       'isvideo=' + ((playback.isVideo) ? "true" : "false"),
7805-                       'autoplay=' + ((autoplay) ? "true" : "false"),
7806-                       'preload=' + preload,
7807-                       'width=' + width,
7808-                       'startvolume=' + options.startVolume,
7809-                       'timerrate=' + options.timerRate,
7810-                       'flashstreamer=' + options.flashStreamer,
7811-                       'height=' + height];
7812-
7813-               if (playback.url !== null) {
7814-                       if (playback.method == 'flash') {
7815-                               initVars.push('file=' + mejs.Utility.encodeUrl(playback.url));
7816-                       } else {
7817-                               initVars.push('file=' + playback.url);
7818-                       }
7819-               }
7820-               if (options.enablePluginDebug) {
7821-                       initVars.push('debug=true');
7822-               }
7823-               if (options.enablePluginSmoothing) {
7824-                       initVars.push('smoothing=true');
7825-               }
7826-               if (controls) {
7827-                       initVars.push('controls=true'); // shows controls in the plugin if desired
7828-               }
7829-               if (options.pluginVars) {
7830-                       initVars = initVars.concat(options.pluginVars);
7831-               }               
7832-
7833-               switch (playback.method) {
7834-                       case 'silverlight':
7835-                               container.innerHTML =
7836-'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '">' +
7837-'<param name="initParams" value="' + initVars.join(',') + '" />' +
7838-'<param name="windowless" value="true" />' +
7839-'<param name="background" value="black" />' +
7840-'<param name="minRuntimeVersion" value="3.0.0.0" />' +
7841-'<param name="autoUpgrade" value="true" />' +
7842-'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' +
7843-'</object>';
7844-                                       break;
7845-
7846-                       case 'flash':
7847-
7848-                               if (mejs.MediaFeatures.isIE) {
7849-                                       specialIEContainer = document.createElement('div');
7850-                                       container.appendChild(specialIEContainer);
7851-                                       specialIEContainer.outerHTML =
7852-'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
7853-'id="' + pluginid + '" width="' + width + '" height="' + height + '">' +
7854-'<param name="movie" value="' + options.pluginPath + options.flashName + '?x=' + (new Date()) + '" />' +
7855-'<param name="flashvars" value="' + initVars.join('&amp;') + '" />' +
7856-'<param name="quality" value="high" />' +
7857-'<param name="bgcolor" value="#000000" />' +
7858-'<param name="wmode" value="transparent" />' +
7859-'<param name="allowScriptAccess" value="always" />' +
7860-'<param name="allowFullScreen" value="true" />' +
7861-'</object>';
7862-
7863-                               } else {
7864-
7865-                                       container.innerHTML =
7866-'<embed id="' + pluginid + '" name="' + pluginid + '" ' +
7867-'play="true" ' +
7868-'loop="false" ' +
7869-'quality="high" ' +
7870-'bgcolor="#000000" ' +
7871-'wmode="transparent" ' +
7872-'allowScriptAccess="always" ' +
7873-'allowFullScreen="true" ' +
7874-'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' +
7875-'src="' + options.pluginPath + options.flashName + '" ' +
7876-'flashvars="' + initVars.join('&') + '" ' +
7877-'width="' + width + '" ' +
7878-'height="' + height + '"></embed>';
7879-                               }
7880-                               break;
7881-                       
7882-                       case 'youtube':
7883-                       
7884-                               
7885-                               var
7886-                                       videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
7887-                                       youtubeSettings = {
7888-                                               container: container,
7889-                                               containerId: container.id,
7890-                                               pluginMediaElement: pluginMediaElement,
7891-                                               pluginId: pluginid,
7892-                                               videoId: videoId,
7893-                                               height: height,
7894-                                               width: width   
7895-                                       };                             
7896-                               
7897-                               if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) {
7898-                                       mejs.YouTubeApi.createFlash(youtubeSettings);
7899-                               } else {
7900-                                       mejs.YouTubeApi.enqueueIframe(youtubeSettings);         
7901-                               }
7902-                               
7903-                               break;
7904-                       
7905-                       // DEMO Code. Does NOT work.
7906-                       case 'vimeo':
7907-                               //console.log('vimeoid');
7908-                               
7909-                               pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
7910-                               
7911-                               container.innerHTML ='<iframe src="http://player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?portrait=0&byline=0&title=0" width="' + width +'" height="' + height +'" frameborder="0"></iframe>';
7912-                               
7913-                               /*
7914-                               container.innerHTML =
7915-                                       '<object width="' + width + '" height="' + height + '">' +
7916-                                               '<param name="allowfullscreen" value="true" />' +
7917-                                               '<param name="allowscriptaccess" value="always" />' +
7918-                                               '<param name="flashvars" value="api=1" />' +
7919-                                               '<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" />' +
7920-                                               '<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>' +
7921-                                       '</object>';
7922-                                       */
7923-                                                                       
7924-                               break;                 
7925-               }
7926-               // hide original element
7927-               htmlMediaElement.style.display = 'none';
7928-
7929-               // FYI: options.success will be fired by the MediaPluginBridge
7930-               
7931-               return pluginMediaElement;
7932-       },
7933-
7934-       updateNative: function(playback, options, autoplay, preload) {
7935-               
7936-               var htmlMediaElement = playback.htmlMediaElement,
7937-                       m;
7938-               
7939-               
7940-               // add methods to video object to bring it into parity with Flash Object
7941-               for (m in mejs.HtmlMediaElement) {
7942-                       htmlMediaElement[m] = mejs.HtmlMediaElement[m];
7943-               }
7944-
7945-               /*
7946-               Chrome now supports preload="none"
7947-               if (mejs.MediaFeatures.isChrome) {
7948-               
7949-                       // special case to enforce preload attribute (Chrome doesn't respect this)
7950-                       if (preload === 'none' && !autoplay) {
7951-                       
7952-                               // forces the browser to stop loading (note: fails in IE9)
7953-                               htmlMediaElement.src = '';
7954-                               htmlMediaElement.load();
7955-                               htmlMediaElement.canceledPreload = true;
7956-
7957-                               htmlMediaElement.addEventListener('play',function() {
7958-                                       if (htmlMediaElement.canceledPreload) {
7959-                                               htmlMediaElement.src = playback.url;
7960-                                               htmlMediaElement.load();
7961-                                               htmlMediaElement.play();
7962-                                               htmlMediaElement.canceledPreload = false;
7963-                                       }
7964-                               }, false);
7965-                       // for some reason Chrome forgets how to autoplay sometimes.
7966-                       } else if (autoplay) {
7967-                               htmlMediaElement.load();
7968-                               htmlMediaElement.play();
7969-                       }
7970-               }
7971-               */
7972-
7973-               // fire success code
7974-               options.success(htmlMediaElement, htmlMediaElement);
7975-               
7976-               return htmlMediaElement;
7977-       }
7978-};
7979-
7980-/*
7981- - test on IE (object vs. embed)
7982- - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE)
7983- - fullscreen?
7984-*/
7985-
7986-// YouTube Flash and Iframe API
7987-mejs.YouTubeApi = {
7988-       isIframeStarted: false,
7989-       isIframeLoaded: false,
7990-       loadIframeApi: function() {
7991-               if (!this.isIframeStarted) {
7992-                       var tag = document.createElement('script');
7993-                       tag.src = "http://www.youtube.com/player_api";
7994-                       var firstScriptTag = document.getElementsByTagName('script')[0];
7995-                       firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
7996-                       this.isIframeStarted = true;
7997-               }
7998-       },
7999-       iframeQueue: [],
8000-       enqueueIframe: function(yt) {
8001-               
8002-               if (this.isLoaded) {
8003-                       this.createIframe(yt);
8004-               } else {
8005-                       this.loadIframeApi();
8006-                       this.iframeQueue.push(yt);
8007-               }
8008-       },
8009-       createIframe: function(settings) {
8010-               
8011-               var
8012-               pluginMediaElement = settings.pluginMediaElement,       
8013-               player = new YT.Player(settings.containerId, {
8014-                       height: settings.height,
8015-                       width: settings.width,
8016-                       videoId: settings.videoId,
8017-                       playerVars: {controls:0},
8018-                       events: {
8019-                               'onReady': function() {
8020-                                       
8021-                                       // hook up iframe object to MEjs
8022-                                       settings.pluginMediaElement.pluginApi = player;
8023-                                       
8024-                                       // init mejs
8025-                                       mejs.MediaPluginBridge.initPlugin(settings.pluginId);
8026-                                       
8027-                                       // create timer
8028-                                       setInterval(function() {
8029-                                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
8030-                                       }, 250);                                       
8031-                               },
8032-                               'onStateChange': function(e) {
8033-                                       
8034-                                       mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement);
8035-                                       
8036-                               }
8037-                       }
8038-               });
8039-       },
8040-       
8041-       createEvent: function (player, pluginMediaElement, eventName) {
8042-               var obj = {
8043-                       type: eventName,
8044-                       target: pluginMediaElement
8045-               };
8046-
8047-               if (player && player.getDuration) {
8048-                       
8049-                       // time
8050-                       pluginMediaElement.currentTime = obj.currentTime = player.getCurrentTime();
8051-                       pluginMediaElement.duration = obj.duration = player.getDuration();
8052-                       
8053-                       // state
8054-                       obj.paused = pluginMediaElement.paused;
8055-                       obj.ended = pluginMediaElement.ended;                   
8056-                       
8057-                       // sound
8058-                       obj.muted = player.isMuted();
8059-                       obj.volume = player.getVolume() / 100;
8060-                       
8061-                       // progress
8062-                       obj.bytesTotal = player.getVideoBytesTotal();
8063-                       obj.bufferedBytes = player.getVideoBytesLoaded();
8064-                       
8065-                       // fake the W3C buffered TimeRange
8066-                       var bufferedTime = obj.bufferedBytes / obj.bytesTotal * obj.duration;
8067-                       
8068-                       obj.target.buffered = obj.buffered = {
8069-                               start: function(index) {
8070-                                       return 0;
8071-                               },
8072-                               end: function (index) {
8073-                                       return bufferedTime;
8074-                               },
8075-                               length: 1
8076-                       };
8077-                       
8078-               }
8079-               
8080-               // send event up the chain
8081-               pluginMediaElement.dispatchEvent(obj.type, obj);
8082-       },     
8083-       
8084-       iFrameReady: function() {
8085-               
8086-               this.isLoaded = true;
8087-               this.isIframeLoaded = true;
8088-               
8089-               while (this.iframeQueue.length > 0) {
8090-                       var settings = this.iframeQueue.pop();
8091-                       this.createIframe(settings);
8092-               }       
8093-       },
8094-       
8095-       // FLASH!
8096-       flashPlayers: {},
8097-       createFlash: function(settings) {
8098-               
8099-               this.flashPlayers[settings.pluginId] = settings;
8100-               
8101-               /*
8102-               settings.container.innerHTML =
8103-                       '<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" ' +
8104-                               'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; ">' +
8105-                               '<param name="allowScriptAccess" value="always">' +
8106-                               '<param name="wmode" value="transparent">' +
8107-                       '</object>';
8108-               */
8109-
8110-               var specialIEContainer,
8111-                       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';
8112-                       
8113-               if (mejs.MediaFeatures.isIE) {
8114-                       
8115-                       specialIEContainer = document.createElement('div');
8116-                       settings.container.appendChild(specialIEContainer);
8117-                       specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
8118-'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '">' +
8119-       '<param name="movie" value="' + youtubeUrl + '" />' +
8120-       '<param name="wmode" value="transparent" />' +
8121-       '<param name="allowScriptAccess" value="always" />' +
8122-       '<param name="allowFullScreen" value="true" />' +
8123-'</object>';
8124-               } else {
8125-               settings.container.innerHTML =
8126-                       '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' +
8127-                               'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; ">' +
8128-                               '<param name="allowScriptAccess" value="always">' +
8129-                               '<param name="wmode" value="transparent">' +
8130-                       '</object>';
8131-               }               
8132-               
8133-       },
8134-       
8135-       flashReady: function(id) {
8136-               var
8137-                       settings = this.flashPlayers[id],
8138-                       player = document.getElementById(id),
8139-                       pluginMediaElement = settings.pluginMediaElement;
8140-               
8141-               // hook up and return to MediaELementPlayer.success     
8142-               pluginMediaElement.pluginApi =
8143-               pluginMediaElement.pluginElement = player;
8144-               mejs.MediaPluginBridge.initPlugin(id);
8145-               
8146-               // load the youtube video
8147-               player.cueVideoById(settings.videoId);
8148-               
8149-               var callbackName = settings.containerId + '_callback'
8150-               
8151-               window[callbackName] = function(e) {
8152-                       mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement);
8153-               }
8154-               
8155-               player.addEventListener('onStateChange', callbackName);
8156-               
8157-               setInterval(function() {
8158-                       mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
8159-               }, 250);
8160-       },
8161-       
8162-       handleStateChange: function(youTubeState, player, pluginMediaElement) {
8163-               switch (youTubeState) {
8164-                       case -1: // not started
8165-                               pluginMediaElement.paused = true;
8166-                               pluginMediaElement.ended = true;
8167-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata');
8168-                               //createYouTubeEvent(player, pluginMediaElement, 'loadeddata');
8169-                               break;
8170-                       case 0:
8171-                               pluginMediaElement.paused = false;
8172-                               pluginMediaElement.ended = true;
8173-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended');
8174-                               break;
8175-                       case 1:
8176-                               pluginMediaElement.paused = false;
8177-                               pluginMediaElement.ended = false;                               
8178-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play');
8179-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing');
8180-                               break;
8181-                       case 2:
8182-                               pluginMediaElement.paused = true;
8183-                               pluginMediaElement.ended = false;                               
8184-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause');
8185-                               break;
8186-                       case 3: // buffering
8187-                               mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress');
8188-                               break;
8189-                       case 5:
8190-                               // cued?
8191-                               break;                                         
8192-                       
8193-               }                       
8194-               
8195-       }
8196-}
8197-// IFRAME
8198-function onYouTubePlayerAPIReady() {
8199-       mejs.YouTubeApi.iFrameReady();
8200-}
8201-// FLASH
8202-function onYouTubePlayerReady(id) {
8203-       mejs.YouTubeApi.flashReady(id);
8204-}
8205-
8206-window.mejs = mejs;
8207-window.MediaElement = mejs.MediaElement;
8208-
8209-/*!
8210- * Adds Internationalization and localization to objects.
8211- *
8212- * What is the concept beyond i18n?
8213- *   http://en.wikipedia.org/wiki/Internationalization_and_localization
8214- *
8215- *
8216- * This file both i18n methods and locale which is used to translate
8217- * strings into other languages.
8218- *
8219- * Default translations are not available, you have to add them
8220- * through locale objects which are named exactly as the langcode
8221- * they stand for. The default language is always english (en).
8222- *
8223- *
8224- * Wrapper built to be able to attach the i18n object to
8225- * other objects without changing more than one line.
8226- *
8227- *
8228- * LICENSE:
8229- *
8230- *   The i18n file uses methods from the Drupal project (drupal.js):
8231- *     - i18n.methods.t() (modified)
8232- *     - i18n.methods.checkPlain() (full copy)
8233- *     - i18n.methods.formatString() (full copy)
8234- *
8235- *   The Drupal project is (like mediaelementjs) licensed under GPLv2.
8236- *    - http://drupal.org/licensing/faq/#q1
8237- *    - https://github.com/johndyer/mediaelement
8238- *    - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
8239- *
8240- *
8241- * @author
8242- *   Tim Latz (latz.tim@gmail.com)
8243- *
8244- * @see
8245- *   me-i18n-locale.js
8246- *
8247- * @params
8248- *  - $       - zepto || jQuery  ..
8249- *  - context - document, iframe ..
8250- *  - exports - CommonJS, window ..
8251- *
8252- */
8253-;(function($, context, exports, undefined) {
8254-    "use strict";
8255-    var i18n = {
8256-        "locale": {
8257-            "strings" : {}
8258-        },
8259-        "methods" : {}
8260-    };
8261-// start i18n
8262-
8263-
8264-    /**
8265-     * Get the current browser's language
8266-     *
8267-     * @see: i18n.methods.t()
8268-     */
8269-    i18n.locale.getLanguage = function () {
8270-        return {
8271-            "language" : navigator.language
8272-        };
8273-    };
8274-
8275-    /**
8276-     * Store the language the locale object was initialized with
8277-     */
8278-    i18n.locale.INIT_LANGUAGE = i18n.locale.getLanguage();
8279-
8280-
8281-    /**
8282-     * Encode special characters in a plain-text string for display as HTML.
8283-     */
8284-    i18n.methods.checkPlain = function (str) {
8285-        var character, regex,
8286-        replace = {
8287-            '&': '&amp;',
8288-            '"': '&quot;',
8289-            '<': '&lt;',
8290-            '>': '&gt;'
8291-        };
8292-        str = String(str);
8293-        for (character in replace) {
8294-            if (replace.hasOwnProperty(character)) {
8295-                regex = new RegExp(character, 'g');
8296-                str = str.replace(regex, replace[character]);
8297-            }
8298-        }
8299-        return str;
8300-    };
8301-
8302-    /**
8303-     * Replace placeholders with sanitized values in a string.
8304-     *
8305-     * @param str
8306-     *   A string with placeholders.
8307-     * @param args
8308-     *   An object of replacements pairs to make. Incidences of any key in this
8309-     *   array are replaced with the corresponding value. Based on the first
8310-     *   character of the key, the value is escaped and/or themed:
8311-     *    - !variable: inserted as is
8312-     *    - @variable: escape plain text to HTML (i18n.methods.checkPlain)
8313-     *    - %variable: escape text and theme as a placeholder for user-submitted
8314-     *      content (checkPlain + <em class="placeholder" > )
8315-     *
8316-     * @see i18n.methods.t()
8317-     */
8318-    i18n.methods.formatString = function(str, args) {
8319-        // Transform arguments before inserting them.
8320-        for (var key in args) {
8321-            switch (key.charAt(0)) {
8322-                // Escaped only.
8323-                case '@':
8324-                    args[key] = i18n.methods.checkPlain(args[key]);
8325-                    break;
8326-                // Pass-through.
8327-                case '!':
8328-                    break;
8329-                // Escaped and placeholder.
8330-                case '%':
8331-                default:
8332-                    args[key] = '<em class="placeholder">' + i18n.methods.checkPlain(args[key]) + '</em>';
8333-                    break;
8334-            }
8335-            str = str.replace(key, args[key]);
8336-        }
8337-        return str;
8338-    };
8339-
8340-    /**
8341-     * Translate strings to the page language or a given language.
8342-     *
8343-     * See the documentation of the server-side t() function for further details.
8344-     *
8345-     * @param str
8346-     *   A string containing the English string to translate.
8347-     * @param args
8348-     *   An object of replacements pairs to make after translation. Incidences
8349-     *   of any key in this array are replaced with the corresponding value.
8350-     *   See i18n.methods.formatString().
8351-     *
8352-     * @param options
8353-     *   - 'context' (defaults to the default context): The context the source string
8354-     *     belongs to.
8355-     *
8356-     * @return
8357-     *   The translated string.
8358-     */
8359-    i18n.methods.t = function (str, args, options) {
8360-
8361-        // Fetch the localized version of the string.
8362-        if (i18n.locale.strings && i18n.locale.strings[options.context] && i18n.locale.strings[options.context][str]) {
8363-            str = i18n.locale.strings[options.context][str];
8364-        }
8365-
8366-        if (args) {
8367-            str = i18n.methods.formatString(str, args);
8368-        }
8369-        return str;
8370-    };
8371-
8372-
8373-    /**
8374-     * Wrapper for i18n.methods.t()
8375-     *
8376-     * @see i18n.methods.t()
8377-     * @throws InvalidArgumentException
8378-     */
8379-    i18n.t = function(str, args, options) {
8380-
8381-        if (typeof str === 'string' && str.length > 0) {
8382-
8383-            // check every time due languge can change for
8384-            // different reasons (translation, lang switcher ..)
8385-            var lang = i18n.locale.getLanguage();
8386-
8387-            options = options || {
8388-                "context" : lang.language
8389-            };
8390-
8391-            return i18n.methods.t(str, args, options);
8392-        }
8393-        else {
8394-            throw {
8395-                "name" : 'InvalidArgumentException',
8396-                "message" : 'First argument is either not a string or empty.'
8397-            }
8398-        }
8399-    };
8400-
8401-// end i18n
8402-    exports.i18n = i18n;
8403-}(jQuery, document, mejs));
8404-/*!
8405- * This is a i18n.locale language object.
8406- *
8407- *<de> German translation by Tim Latz, latz.tim@gmail.com
8408- *
8409- * @author
8410- *   Tim Latz (latz.tim@gmail.com)
8411- *
8412- * @see
8413- *   me-i18n.js
8414- *
8415- * @params
8416- *  - exports - CommonJS, window ..
8417- */
8418-;(function(exports, undefined) {
8419-
8420-    "use strict";
8421-
8422-    exports.de = {
8423-        "Fullscreen" : "Vollbild",
8424-        "Go Fullscreen" : "Vollbild an",
8425-        "Turn off Fullscreen" : "Vollbild aus",
8426-        "Close" : "Schließen"
8427-    };
8428-
8429-}(mejs.i18n.locale.strings));
8430-
8431-/*!
8432- * MediaElementPlayer
8433- * http://mediaelementjs.com/
8434- *
8435- * Creates a controller bar for HTML5 <video> add <audio> tags
8436- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
8437- *
8438- * Copyright 2010-2012, John Dyer (http://j.hn/)
8439- * Dual licensed under the MIT or GPL Version 2 licenses.
8440- *
8441- */
8442-if (typeof jQuery != 'undefined') {
8443-       mejs.$ = jQuery;
8444-} else if (typeof ender != 'undefined') {
8445-       mejs.$ = ender;
8446-}
8447-(function ($) {
8448-
8449-       // default player values
8450-       mejs.MepDefaults = {
8451-               // url to poster (to fix iOS 3.x)
8452-               poster: '',
8453-               // default if the <video width> is not specified
8454-               defaultVideoWidth: 480,
8455-               // default if the <video height> is not specified
8456-               defaultVideoHeight: 270,
8457-               // if set, overrides <video width>
8458-               videoWidth: -1,
8459-               // if set, overrides <video height>
8460-               videoHeight: -1,
8461-               // default if the user doesn't specify
8462-               defaultAudioWidth: 400,
8463-               // default if the user doesn't specify
8464-               defaultAudioHeight: 30,
8465-
8466-               // default amount to move back when back key is pressed         
8467-               defaultSeekBackwardInterval: function(media) {
8468-                       return (media.duration * 0.05);
8469-               },             
8470-               // default amount to move forward when forward key is pressed                           
8471-               defaultSeekForwardInterval: function(media) {
8472-                       return (media.duration * 0.05);
8473-               },             
8474-               
8475-               // width of audio player
8476-               audioWidth: -1,
8477-               // height of audio player
8478-               audioHeight: -1,               
8479-               // initial volume when the player starts (overrided by user cookie)
8480-               startVolume: 0.8,
8481-               // useful for <audio> player loops
8482-               loop: false,
8483-               // resize to media dimensions
8484-               enableAutosize: true,
8485-               // forces the hour marker (##:00:00)
8486-               alwaysShowHours: false,
8487-
8488-               // show framecount in timecode (##:00:00:00)
8489-               showTimecodeFrameCount: false,
8490-               // used when showTimecodeFrameCount is set to true
8491-               framesPerSecond: 25,
8492-               
8493-               // automatically calculate the width of the progress bar based on the sizes of other elements
8494-               autosizeProgress : true,
8495-               // Hide controls when playing and mouse is not over the video
8496-               alwaysShowControls: false,
8497-               // force iPad's native controls
8498-               iPadUseNativeControls: false,
8499-               // force iPhone's native controls
8500-               iPhoneUseNativeControls: false,
8501-               // force Android's native controls
8502-               AndroidUseNativeControls: false,                       
8503-               // features to show
8504-               features: ['playpause','current','progress','duration','tracks','volume','fullscreen'],
8505-               // only for dynamic
8506-               isVideo: true,
8507-               
8508-               // turns keyboard support on and off for this instance
8509-               enableKeyboard: true,
8510-               
8511-               // whenthis player starts, it will pause other players
8512-               pauseOtherPlayers: true,
8513-               
8514-               // array of keyboard actions such as play pause
8515-               keyActions: [
8516-                               {
8517-                                               keys: [
8518-                                                               32, // SPACE
8519-                                                               179 // GOOGLE play/pause button
8520-                                                         ],
8521-                                               action: function(player, media) {
8522-                                                               if (media.paused || media.ended) {
8523-                                                                               media.play();   
8524-                                                               } else {
8525-                                                                               media.pause();
8526-                                                               }                                                                               
8527-                                               }
8528-                               },
8529-                               {
8530-                                               keys: [38], // UP
8531-                                               action: function(player, media) {
8532-                                                               var newVolume = Math.min(media.volume + 0.1, 1);
8533-                                                               media.setVolume(newVolume);
8534-                                               }
8535-                               },
8536-                               {
8537-                                               keys: [40], // DOWN
8538-                                               action: function(player, media) {
8539-                                                               var newVolume = Math.max(media.volume - 0.1, 0);
8540-                                                               media.setVolume(newVolume);
8541-                                               }
8542-                               },
8543-                               {
8544-                                               keys: [
8545-                                                               37, // LEFT
8546-                                                               227 // Google TV rewind
8547-                                               ],
8548-                                               action: function(player, media) {
8549-                                                               if (!isNaN(media.duration) && media.duration > 0) {
8550-                                                                               if (player.isVideo) {
8551-                                                                                               player.showControls();
8552-                                                                                               player.startControlsTimer();
8553-                                                                               }
8554-                                                                               
8555-                                                                               // 5%
8556-                                                                               var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
8557-                                                                               media.setCurrentTime(newTime);
8558-                                                               }
8559-                                               }
8560-                               },
8561-                               {
8562-                                               keys: [
8563-                                                               39, // RIGHT
8564-                                                               228 // Google TV forward
8565-                                               ],
8566-                                               action: function(player, media) {
8567-                                                               if (!isNaN(media.duration) && media.duration > 0) {
8568-                                                                               if (player.isVideo) {
8569-                                                                                               player.showControls();
8570-                                                                                               player.startControlsTimer();
8571-                                                                               }
8572-                                                                               
8573-                                                                               // 5%
8574-                                                                               var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);                                                                           
8575-                                                                               media.setCurrentTime(newTime);
8576-                                                               }
8577-                                               }
8578-                               },
8579-                               {
8580-                                               keys: [70], // f
8581-                                               action: function(player, media) {
8582-                                                               if (typeof player.enterFullScreen != 'undefined') {
8583-                                                                               if (player.isFullScreen) {
8584-                                                                                               player.exitFullScreen();
8585-                                                                               } else {
8586-                                                                                               player.enterFullScreen();
8587-                                                                               }
8588-                                                               }
8589-                                               }
8590-                               }                                       
8591-               ]               
8592-       };
8593-
8594-       mejs.mepIndex = 0;
8595-       
8596-       mejs.players = [];
8597-
8598-       // wraps a MediaElement object in player controls
8599-       mejs.MediaElementPlayer = function(node, o) {
8600-               // enforce object, even without "new" (via John Resig)
8601-               if ( !(this instanceof mejs.MediaElementPlayer) ) {
8602-                       return new mejs.MediaElementPlayer(node, o);
8603-               }
8604-
8605-               var t = this;
8606-               
8607-               // these will be reset after the MediaElement.success fires
8608-               t.$media = t.$node = $(node);
8609-               t.node = t.media = t.$media[0];         
8610-               
8611-               // check for existing player
8612-               if (typeof t.node.player != 'undefined') {
8613-                       return t.node.player;
8614-               } else {
8615-                       // attach player to DOM node for reference
8616-                       t.node.player = t;
8617-               }
8618-                               
8619-                               
8620-               // try to get options from data-mejsoptions
8621-               if (typeof o == 'undefined') {
8622-                       o = t.$node.data('mejsoptions');       
8623-               }
8624-                       
8625-               // extend default options
8626-               t.options = $.extend({},mejs.MepDefaults,o);
8627-               
8628-               // add to player array (for focus events)
8629-               mejs.players.push(t);
8630-               
8631-               // start up
8632-               t.init();
8633-
8634-               return t;
8635-       };
8636-
8637-       // actual player
8638-       mejs.MediaElementPlayer.prototype = {
8639-               
8640-               hasFocus: false,
8641-               
8642-               controlsAreVisible: true,
8643-               
8644-               init: function() {
8645-
8646-                       var
8647-                               t = this,
8648-                               mf = mejs.MediaFeatures,
8649-                               // options for MediaElement (shim)
8650-                               meOptions = $.extend(true, {}, t.options, {
8651-                                       success: function(media, domNode) { t.meReady(media, domNode); },
8652-                                       error: function(e) { t.handleError(e);}
8653-                               }),
8654-                               tagName = t.media.tagName.toLowerCase();
8655-               
8656-                       t.isDynamic = (tagName !== 'audio' && tagName !== 'video');
8657-                       
8658-                       if (t.isDynamic) {     
8659-                               // get video from src or href?                         
8660-                               t.isVideo = t.options.isVideo;                                         
8661-                       } else {
8662-                               t.isVideo = (tagName !== 'audio' && t.options.isVideo);
8663-                       }
8664-               
8665-                       // use native controls in iPad, iPhone, and Android     
8666-                       if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) {
8667-                               
8668-                               // add controls and stop
8669-                               t.$media.attr('controls', 'controls');
8670-
8671-                               // attempt to fix iOS 3 bug
8672-                               //t.$media.removeAttr('poster');
8673-                                // no Issue found on iOS3 -ttroxell
8674-
8675-                               // override Apple's autoplay override for iPads
8676-                               if (mf.isiPad && t.media.getAttribute('autoplay') !== null) {
8677-                                       t.media.load();
8678-                                       t.media.play();
8679-                               }
8680-                                       
8681-                       } else if (mf.isAndroid && t.AndroidUseNativeControls) {
8682-                               
8683-                               // leave default player
8684-
8685-                       } else {
8686-
8687-                               // DESKTOP: use MediaElementPlayer controls
8688-                               
8689-                               // remove native controls                       
8690-                               t.$media.removeAttr('controls');                                       
8691-                               
8692-                               // unique ID
8693-                               t.id = 'mep_' + mejs.mepIndex++;
8694-
8695-                               // build container
8696-                               t.container =
8697-                                       $('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svg ? 'svg' : 'no-svg') + '">'+
8698-                                               '<div class="mejs-inner">'+
8699-                                                       '<div class="mejs-mediaelement"></div>'+
8700-                                                       '<div class="mejs-layers"></div>'+
8701-                                                       '<div class="mejs-controls"></div>'+
8702-                                                       '<div class="mejs-clear"></div>'+
8703-                                               '</div>' +
8704-                                       '</div>')
8705-                                       .addClass(t.$media[0].className)
8706-                                       .insertBefore(t.$media);       
8707-                                       
8708-                               // add classes for user and content
8709-                               t.container.addClass(
8710-                                       (mf.isAndroid ? 'mejs-android ' : '') +
8711-                                       (mf.isiOS ? 'mejs-ios ' : '') +
8712-                                       (mf.isiPad ? 'mejs-ipad ' : '') +
8713-                                       (mf.isiPhone ? 'mejs-iphone ' : '') +
8714-                                       (t.isVideo ? 'mejs-video ' : 'mejs-audio ')
8715-                               );     
8716-                                       
8717-
8718-                               // move the <video/video> tag into the right spot
8719-                               if (mf.isiOS) {
8720-                               
8721-                                       // sadly, you can't move nodes in iOS, so we have to destroy and recreate it!
8722-                                       var $newMedia = t.$media.clone();
8723-                                       
8724-                                       t.container.find('.mejs-mediaelement').append($newMedia);
8725-                                       
8726-                                       t.$media.remove();
8727-                                       t.$node = t.$media = $newMedia;
8728-                                       t.node = t.media = $newMedia[0]
8729-                                       
8730-                               } else {
8731-                                       
8732-                                       // normal way of moving it into place (doesn't work on iOS)
8733-                                       t.container.find('.mejs-mediaelement').append(t.$media);
8734-                               }
8735-                               
8736-                               // find parts
8737-                               t.controls = t.container.find('.mejs-controls');
8738-                               t.layers = t.container.find('.mejs-layers');
8739-
8740-                               // determine the size
8741-                               
8742-                               /* size priority:
8743-                                       (1) videoWidth (forced),
8744-                                       (2) style="width;height;"
8745-                                       (3) width attribute,
8746-                                       (4) defaultVideoWidth (for unspecified cases)
8747-                               */
8748-                               
8749-                               var tagType = (t.isVideo ? 'video' : 'audio'),
8750-                                       capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1);
8751-                                       
8752-                               
8753-                               if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
8754-                                       t.width = t.options[tagType + 'Width'];
8755-                               } else if (t.media.style.width !== '' && t.media.style.width !== null) {
8756-                                       t.width = t.media.style.width;                                         
8757-                               } else if (t.media.getAttribute('width') !== null) {
8758-                                       t.width = t.$media.attr('width');
8759-                               } else {
8760-                                       t.width = t.options['default' + capsTagName + 'Width'];
8761-                               }
8762-                               
8763-                               if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
8764-                                       t.height = t.options[tagType + 'Height'];
8765-                               } else if (t.media.style.height !== '' && t.media.style.height !== null) {
8766-                                       t.height = t.media.style.height;
8767-                               } else if (t.$media[0].getAttribute('height') !== null) {
8768-                                       t.height = t.$media.attr('height');     
8769-                               } else {
8770-                                       t.height = t.options['default' + capsTagName + 'Height'];
8771-                               }
8772-
8773-                               // set the size, while we wait for the plugins to load below
8774-                               t.setPlayerSize(t.width, t.height);
8775-                               
8776-                               // create MediaElementShim
8777-                               meOptions.pluginWidth = t.height;
8778-                               meOptions.pluginHeight = t.width;                               
8779-                       }
8780-                       
8781-                       
8782-
8783-                       // create MediaElement shim
8784-                       mejs.MediaElement(t.$media[0], meOptions);
8785-               },
8786-               
8787-               showControls: function(doAnimation) {
8788-                       var t = this;
8789-                       
8790-                       doAnimation = typeof doAnimation == 'undefined' || doAnimation;
8791-                       
8792-                       if (t.controlsAreVisible)
8793-                               return;
8794-                       
8795-                       if (doAnimation) {
8796-                               t.controls
8797-                                       .css('visibility','visible')
8798-                                       .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});       
8799-       
8800-                               // any additional controls people might add and want to hide
8801-                               t.container.find('.mejs-control')
8802-                                       .css('visibility','visible')
8803-                                       .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});       
8804-                                       
8805-                       } else {
8806-                               t.controls
8807-                                       .css('visibility','visible')
8808-                                       .css('display','block');
8809-       
8810-                               // any additional controls people might add and want to hide
8811-                               t.container.find('.mejs-control')
8812-                                       .css('visibility','visible')
8813-                                       .css('display','block');
8814-                                       
8815-                               t.controlsAreVisible = true;
8816-                       }
8817-                       
8818-                       t.setControlsSize();
8819-                       
8820-               },
8821-
8822-               hideControls: function(doAnimation) {
8823-                       var t = this;
8824-                       
8825-                       doAnimation = typeof doAnimation == 'undefined' || doAnimation;
8826-                       
8827-                       if (!t.controlsAreVisible)
8828-                               return;
8829-                       
8830-                       if (doAnimation) {
8831-                               // fade out main controls
8832-                               t.controls.stop(true, true).fadeOut(200, function() {
8833-                                       $(this)
8834-                                               .css('visibility','hidden')
8835-                                               .css('display','block');
8836-                                               
8837-                                       t.controlsAreVisible = false;
8838-                               });     
8839-       
8840-                               // any additional controls people might add and want to hide
8841-                               t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() {
8842-                                       $(this)
8843-                                               .css('visibility','hidden')
8844-                                               .css('display','block');
8845-                               });     
8846-                       } else {
8847-                               
8848-                               // hide main controls
8849-                               t.controls
8850-                                       .css('visibility','hidden')
8851-                                       .css('display','block');               
8852-                               
8853-                               // hide others
8854-                               t.container.find('.mejs-control')
8855-                                       .css('visibility','hidden')
8856-                                       .css('display','block');
8857-                                       
8858-                               t.controlsAreVisible = false;
8859-                       }
8860-               },             
8861-
8862-               controlsTimer: null,
8863-
8864-               startControlsTimer: function(timeout) {
8865-
8866-                       var t = this;
8867-                       
8868-                       timeout = typeof timeout != 'undefined' ? timeout : 1500;
8869-
8870-                       t.killControlsTimer('start');
8871-
8872-                       t.controlsTimer = setTimeout(function() {
8873-                               //console.log('timer fired');
8874-                               t.hideControls();
8875-                               t.killControlsTimer('hide');
8876-                       }, timeout);
8877-               },
8878-
8879-               killControlsTimer: function(src) {
8880-
8881-                       var t = this;
8882-
8883-                       if (t.controlsTimer !== null) {
8884-                               clearTimeout(t.controlsTimer);
8885-                               delete t.controlsTimer;
8886-                               t.controlsTimer = null;
8887-                       }
8888-               },             
8889-               
8890-               controlsEnabled: true,
8891-               
8892-               disableControls: function() {
8893-                       var t= this;
8894-                       
8895-                       t.killControlsTimer();
8896-                       t.hideControls(false);
8897-                       this.controlsEnabled = false;
8898-               },
8899-               
8900-               enableControls: function() {
8901-                       var t= this;
8902-                       
8903-                       t.showControls(false);
8904-                       
8905-                       t.controlsEnabled = true;
8906-               },             
8907-               
8908-
8909-               // Sets up all controls and events
8910-               meReady: function(media, domNode) {                     
8911-               
8912-               
8913-                       var t = this,
8914-                               mf = mejs.MediaFeatures,
8915-                               autoplayAttr = domNode.getAttribute('autoplay'),
8916-                               autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'),
8917-                               featureIndex,
8918-                               feature;
8919-
8920-                       // make sure it can't create itself again if a plugin reloads
8921-                       if (t.created)
8922-                               return;
8923-                       else
8924-                               t.created = true;                       
8925-
8926-                       t.media = media;
8927-                       t.domNode = domNode;
8928-                       
8929-                       if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) {                         
8930-                               
8931-                               // two built in features
8932-                               t.buildposter(t, t.controls, t.layers, t.media);
8933-                               t.buildkeyboard(t, t.controls, t.layers, t.media);
8934-                               t.buildoverlays(t, t.controls, t.layers, t.media);
8935-
8936-                               // grab for use by features
8937-                               t.findTracks();
8938-
8939-                               // add user-defined features/controls
8940-                               for (featureIndex in t.options.features) {
8941-                                       feature = t.options.features[featureIndex];
8942-                                       if (t['build' + feature]) {
8943-                                               try {
8944-                                                       t['build' + feature](t, t.controls, t.layers, t.media);
8945-                                               } catch (e) {
8946-                                                       // TODO: report control error
8947-                                                       //throw e;
8948-                                                       //console.log('error building ' + feature);
8949-                                                       //console.log(e);
8950-                                               }
8951-                                       }
8952-                               }
8953-
8954-                               t.container.trigger('controlsready');
8955-                               
8956-                               // reset all layers and controls
8957-                               t.setPlayerSize(t.width, t.height);
8958-                               t.setControlsSize();
8959-                               
8960-
8961-                               // controls fade
8962-                               if (t.isVideo) {
8963-                               
8964-                                       if (mejs.MediaFeatures.hasTouch) {
8965-                                               
8966-                                               // for touch devices (iOS, Android)
8967-                                               // show/hide without animation on touch
8968-                                               
8969-                                               t.$media.bind('touchstart', function() {
8970-                                                       
8971-                                                       
8972-                                                       // toggle controls
8973-                                                       if (t.controlsAreVisible) {
8974-                                                               t.hideControls(false);
8975-                                                       } else {
8976-                                                               if (t.controlsEnabled) {
8977-                                                                       t.showControls(false);
8978-                                                               }
8979-                                                       }
8980-                                               });                                     
8981-                                       
8982-                                       } else {
8983-            // click to play/pause
8984-            t.media.addEventListener('click', function() {
8985-              if (t.media.paused) {
8986-                t.media.play();
8987-              } else {
8988-                t.media.pause();
8989-              }
8990-            });
8991-                                       
8992-                                               // show/hide controls
8993-                                               t.container
8994-                                                       .bind('mouseenter mouseover', function () {
8995-                                                               if (t.controlsEnabled) {
8996-                                                                       if (!t.options.alwaysShowControls) {                                                           
8997-                                                                               t.killControlsTimer('enter');
8998-                                                                               t.showControls();
8999-                                                                               t.startControlsTimer(2500);             
9000-                                                                       }
9001-                                                               }
9002-                                                       })
9003-                                                       .bind('mousemove', function() {
9004-                                                               if (t.controlsEnabled) {
9005-                                                                       if (!t.controlsAreVisible) {
9006-                                                                               t.showControls();
9007-                                                                       }
9008-                                                                       //t.killControlsTimer('move');
9009-                                                                       if (!t.options.alwaysShowControls) {
9010-                                                                               t.startControlsTimer(2500);
9011-                                                                       }
9012-                                                               }
9013-                                                       })
9014-                                                       .bind('mouseleave', function () {
9015-                                                               if (t.controlsEnabled) {
9016-                                                                       if (!t.media.paused && !t.options.alwaysShowControls) {
9017-                                                                               t.startControlsTimer(1000);                                                             
9018-                                                                       }
9019-                                                               }
9020-                                                       });
9021-                                       }
9022-                                       
9023-                                       // check for autoplay
9024-                                       if (autoplay && !t.options.alwaysShowControls) {
9025-                                               t.hideControls();
9026-                                       }
9027-
9028-                                       // resizer
9029-                                       if (t.options.enableAutosize) {
9030-                                               t.media.addEventListener('loadedmetadata', function(e) {
9031-                                                       // if the <video height> was not set and the options.videoHeight was not set
9032-                                                       // then resize to the real dimensions
9033-                                                       if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) {
9034-                                                               t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
9035-                                                               t.setControlsSize();
9036-                                                               t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight);
9037-                                                       }
9038-                                               }, false);
9039-                                       }
9040-                               }
9041-                               
9042-                               // EVENTS
9043-
9044-                               // FOCUS: when a video starts playing, it takes focus from other players (possibily pausing them)
9045-                               media.addEventListener('play', function() {
9046-                                               
9047-                                               // go through all other players
9048-                                               for (var i=0, il=mejs.players.length; i<il; i++) {
9049-                                                       var p = mejs.players[i];
9050-                                                       if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
9051-                                                               p.pause();
9052-                                                       }
9053-                                                       p.hasFocus = false;
9054-                                               }
9055-                                               
9056-                                               t.hasFocus = true;
9057-                               },false);
9058-                                                               
9059-
9060-                               // ended for all
9061-                               t.media.addEventListener('ended', function (e) {
9062-                                       try{
9063-                                               t.media.setCurrentTime(0);
9064-                                       } catch (exp) {
9065-                                               
9066-                                       }
9067-                                       t.media.pause();
9068-                                       
9069-                                       if (t.setProgressRail)
9070-                                               t.setProgressRail();
9071-                                       if (t.setCurrentRail)
9072-                                               t.setCurrentRail();                                             
9073-
9074-                                       if (t.options.loop) {
9075-                                               t.media.play();
9076-                                       } else if (!t.options.alwaysShowControls && t.controlsEnabled) {
9077-                                               t.showControls();
9078-                                       }
9079-                               }, false);
9080-                               
9081-                               // resize on the first play
9082-                               t.media.addEventListener('loadedmetadata', function(e) {
9083-                                       if (t.updateDuration) {
9084-                                               t.updateDuration();
9085-                                       }
9086-                                       if (t.updateCurrent) {
9087-                                               t.updateCurrent();
9088-                                       }
9089-                                       
9090-                                       if (!t.isFullScreen) {
9091-                                               t.setPlayerSize(t.width, t.height);
9092-                                               t.setControlsSize();
9093-                                       }
9094-                               }, false);
9095-
9096-
9097-                               // webkit has trouble doing this without a delay
9098-                               setTimeout(function () {
9099-                                       t.setPlayerSize(t.width, t.height);
9100-                                       t.setControlsSize();
9101-                               }, 50);
9102-                               
9103-                               // adjust controls whenever window sizes (used to be in fullscreen only)
9104-                               $(window).resize(function() {
9105-                                       
9106-                                       // don't resize for fullscreen mode                             
9107-                                       if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) {
9108-                                               t.setPlayerSize(t.width, t.height);
9109-                                       }
9110-                                       
9111-                                       // always adjust controls
9112-                                       t.setControlsSize();
9113-                               });                             
9114-
9115-                               // TEMP: needs to be moved somewhere else
9116-                               if (t.media.pluginType == 'youtube') {
9117-                                       t.container.find('.mejs-overlay-play').hide(); 
9118-                               }
9119-                       }
9120-                       
9121-                       // force autoplay for HTML5
9122-                       if (autoplay && media.pluginType == 'native') {
9123-                               media.load();
9124-                               media.play();
9125-                       }
9126-
9127-
9128-                       if (t.options.success) {
9129-                               
9130-                               if (typeof t.options.success == 'string') {
9131-                                               window[t.options.success](t.media, t.domNode, t);
9132-                               } else {
9133-                                               t.options.success(t.media, t.domNode, t);
9134-                               }
9135-                       }
9136-               },
9137-
9138-               handleError: function(e) {
9139-                       var t = this;
9140-                       
9141-                       t.controls.hide();
9142-               
9143-                       // Tell user that the file cannot be played
9144-                       if (t.options.error) {
9145-                               t.options.error(e);
9146-                       }
9147-               },
9148-
9149-               setPlayerSize: function(width,height) {
9150-                       var t = this;
9151-
9152-                       if (typeof width != 'undefined')
9153-                               t.width = width;
9154-                               
9155-                       if (typeof height != 'undefined')
9156-                               t.height = height;
9157-
9158-      // detect 100% mode - use currentStyle for IE since css() doesn't return percentages
9159-      if (t.height.toString().indexOf('%') > 0 || t.$node.css('max-width') === '100%' || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')) {
9160-                       
9161-                               // do we have the native dimensions yet?
9162-                               var
9163-                                       nativeWidth = t.isVideo ? ((t.media.videoWidth && t.media.videoWidth > 0) ? t.media.videoWidth : t.options.defaultVideoWidth) : t.options.defaultAudioWidth,
9164-                                       nativeHeight = t.isVideo ? ((t.media.videoHeight && t.media.videoHeight > 0) ? t.media.videoHeight : t.options.defaultVideoHeight) : t.options.defaultAudioHeight,
9165-                                       parentWidth = t.container.parent().closest(':visible').width(),
9166-                                       newHeight = parseInt(parentWidth * nativeHeight/nativeWidth, 10);
9167-                                       
9168-                               if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
9169-                                       parentWidth = $(window).width();
9170-                                       newHeight = $(window).height();
9171-                               }
9172-                               
9173-                               if ( newHeight != 0 ) {
9174-                                       // set outer container size
9175-                                       t.container
9176-                                               .width(parentWidth)
9177-                                               .height(newHeight);
9178-                                               
9179-                                       // set native <video> or <audio>
9180-                                       t.$media
9181-                                               .width('100%')
9182-                                               .height('100%');
9183-                                               
9184-                                       // set shims
9185-                                       t.container.find('object, embed, iframe')
9186-                                               .width('100%')
9187-                                               .height('100%');
9188-                                               
9189-                                       // if shim is ready, send the size to the embeded plugin       
9190-                                       if (t.isVideo) {
9191-                                               if (t.media.setVideoSize) {
9192-                                                       t.media.setVideoSize(parentWidth, newHeight);
9193-                                               }
9194-                                       }
9195-                                       
9196-                                       // set the layers
9197-                                       t.layers.children('.mejs-layer')
9198-                                               .width('100%')
9199-                                               .height('100%');
9200-                               }
9201-                       
9202-                       
9203-                       } else {
9204-
9205-                               t.container
9206-                                       .width(t.width)
9207-                                       .height(t.height);
9208-       
9209-                               t.layers.children('.mejs-layer')
9210-                                       .width(t.width)
9211-                                       .height(t.height);
9212-                                       
9213-                       }
9214-               },
9215-
9216-               setControlsSize: function() {
9217-                       var t = this,
9218-                               usedWidth = 0,
9219-                               railWidth = 0,
9220-                               rail = t.controls.find('.mejs-time-rail'),
9221-                               total = t.controls.find('.mejs-time-total'),
9222-                               current = t.controls.find('.mejs-time-current'),
9223-                               loaded = t.controls.find('.mejs-time-loaded'),
9224-                               others = rail.siblings();
9225-                       
9226-
9227-                       // allow the size to come from custom CSS
9228-                       if (t.options && !t.options.autosizeProgress) {
9229-                               // Also, frontends devs can be more flexible
9230-                               // due the opportunity of absolute positioning.
9231-                               railWidth = parseInt(rail.css('width'));
9232-                       }
9233-                       
9234-                       // attempt to autosize
9235-                       if (railWidth === 0 || !railWidth) {
9236-                               
9237-                               // find the size of all the other controls besides the rail
9238-                               others.each(function() {
9239-                                       if ($(this).css('position') != 'absolute') {
9240-                                               usedWidth += $(this).outerWidth(true);
9241-                                       }
9242-                               });
9243-                               
9244-                               // fit the rail into the remaining space
9245-                               railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
9246-                       }
9247-
9248-                       // outer area
9249-                       rail.width(railWidth);
9250-                       // dark space
9251-                       total.width(railWidth - (total.outerWidth(true) - total.width()));
9252-                       
9253-                       if (t.setProgressRail)
9254-                               t.setProgressRail();
9255-                       if (t.setCurrentRail)
9256-                               t.setCurrentRail();                             
9257-               },
9258-
9259-
9260-               buildposter: function(player, controls, layers, media) {
9261-                       var t = this,
9262-                               poster =
9263-                               $('<div class="mejs-poster mejs-layer">' +
9264-                               '</div>')
9265-                                       .appendTo(layers),
9266-                               posterUrl = player.$media.attr('poster');
9267-
9268-                       // prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
9269-                       if (player.options.poster !== '') {
9270-                               posterUrl = player.options.poster;
9271-                       }       
9272-                               
9273-                       // second, try the real poster
9274-                       if (posterUrl !== '' && posterUrl != null) {
9275-                               t.setPoster(posterUrl);
9276-                       } else {
9277-                               poster.hide();
9278-                       }
9279-
9280-                       media.addEventListener('play',function() {
9281-                               poster.hide();
9282-                       }, false);
9283-               },
9284-               
9285-               setPoster: function(url) {
9286-                       var t = this,
9287-                               posterDiv = t.container.find('.mejs-poster'),
9288-                               posterImg = posterDiv.find('img');
9289-                               
9290-                       if (posterImg.length == 0) {
9291-                               posterImg = $('<img width="100%" height="100%" />').appendTo(posterDiv);
9292-                       }       
9293-                       
9294-                       posterImg.attr('src', url);
9295-               },
9296-
9297-               buildoverlays: function(player, controls, layers, media) {
9298-                       if (!player.isVideo)
9299-                               return;
9300-
9301-                       var
9302-                       loading =
9303-                               $('<div class="mejs-overlay mejs-layer">'+
9304-                                       '<div class="mejs-overlay-loading"><span></span></div>'+
9305-                               '</div>')
9306-                               .hide() // start out hidden
9307-                               .appendTo(layers),
9308-                       error =
9309-                               $('<div class="mejs-overlay mejs-layer">'+
9310-                                       '<div class="mejs-overlay-error"></div>'+
9311-                               '</div>')
9312-                               .hide() // start out hidden
9313-                               .appendTo(layers),
9314-                       // this needs to come last so it's on top
9315-                       bigPlay =
9316-                               $('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+
9317-                                       '<div class="mejs-overlay-button"></div>'+
9318-                               '</div>')
9319-                               .appendTo(layers)
9320-                               .click(function() {
9321-                                       if (media.paused) {
9322-                                               media.play();
9323-                                       } else {
9324-                                               media.pause();
9325-                                       }
9326-                               });
9327-                       
9328-                       /*
9329-                       if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) {
9330-                               bigPlay.remove();
9331-                               loading.remove();
9332-                       }
9333-                       */
9334-       
9335-
9336-                       // show/hide big play button
9337-                       media.addEventListener('play',function() {
9338-                               bigPlay.hide();
9339-                               loading.hide();
9340-                               controls.find('.mejs-time-buffering').hide();
9341-                               error.hide();
9342-                       }, false);     
9343-                       
9344-                       media.addEventListener('playing', function() {
9345-                               bigPlay.hide();
9346-                               loading.hide();
9347-                               controls.find('.mejs-time-buffering').hide();
9348-                               error.hide();                   
9349-                       }, false);
9350-
9351-                       media.addEventListener('seeking', function() {
9352-                               loading.show();
9353-                               controls.find('.mejs-time-buffering').show();
9354-                       }, false);
9355-
9356-                       media.addEventListener('seeked', function() {
9357-                               loading.hide();
9358-                               controls.find('.mejs-time-buffering').hide();
9359-                       }, false);
9360-       
9361-                       media.addEventListener('pause',function() {
9362-                               if (!mejs.MediaFeatures.isiPhone) {
9363-                                       bigPlay.show();
9364-                               }
9365-                       }, false);
9366-                       
9367-                       media.addEventListener('waiting', function() {
9368-                               loading.show();
9369-                               controls.find('.mejs-time-buffering').show();
9370-                       }, false);                     
9371-                       
9372-                       
9373-                       // show/hide loading                   
9374-                       media.addEventListener('loadeddata',function() {
9375-                               // for some reason Chrome is firing this event
9376-                               //if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none')
9377-                               //      return;
9378-                                       
9379-                               loading.show();
9380-                               controls.find('.mejs-time-buffering').show();
9381-                       }, false);     
9382-                       media.addEventListener('canplay',function() {
9383-                               loading.hide();
9384-                               controls.find('.mejs-time-buffering').hide();
9385-                       }, false);     
9386-
9387-                       // error handling
9388-                       media.addEventListener('error',function() {
9389-                               loading.hide();
9390-                               controls.find('.mejs-time-buffering').hide();
9391-                               error.show();
9392-                               error.find('mejs-overlay-error').html("Error loading this resource");
9393-                       }, false);                             
9394-               },
9395-               
9396-               buildkeyboard: function(player, controls, layers, media) {
9397-
9398-                               var t = this;
9399-                               
9400-                               // listen for key presses
9401-                               $(document).keydown(function(e) {
9402-                                               
9403-                                               if (player.hasFocus && player.options.enableKeyboard) {
9404-                                                                               
9405-                                                               // find a matching key
9406-                                                               for (var i=0, il=player.options.keyActions.length; i<il; i++) {
9407-                                                                               var keyAction = player.options.keyActions[i];
9408-                                                                               
9409-                                                                               for (var j=0, jl=keyAction.keys.length; j<jl; j++) {
9410-                                                                                               if (e.keyCode == keyAction.keys[j]) {
9411-                                                                                                               e.preventDefault();
9412-                                                                                                               keyAction.action(player, media, e.keyCode);
9413-                                                                                                               return false;
9414-                                                                                               }                                                                                               
9415-                                                                               }
9416-                                                               }
9417-                                               }
9418-                                               
9419-                                               return true;
9420-                               });
9421-                               
9422-                               // check if someone clicked outside a player region, then kill its focus
9423-                               $(document).click(function(event) {
9424-                                               if ($(event.target).closest('.mejs-container').length == 0) {
9425-                                                               player.hasFocus = false;
9426-                                               }
9427-                               });
9428-                       
9429-               },
9430-
9431-               findTracks: function() {
9432-                       var t = this,
9433-                               tracktags = t.$media.find('track');
9434-
9435-                       // store for use by plugins
9436-                       t.tracks = [];
9437-                       tracktags.each(function(index, track) {
9438-                               
9439-                               track = $(track);
9440-                               
9441-                               t.tracks.push({
9442-                                       srclang: track.attr('srclang').toLowerCase(),
9443-                                       src: track.attr('src'),
9444-                                       kind: track.attr('kind'),
9445-                                       label: track.attr('label') || '',
9446-                                       entries: [],
9447-                                       isLoaded: false
9448-                               });
9449-                       });
9450-               },
9451-               changeSkin: function(className) {
9452-                       this.container[0].className = 'mejs-container ' + className;
9453-                       this.setPlayerSize(this.width, this.height);
9454-                       this.setControlsSize();
9455-               },
9456-               play: function() {
9457-                       this.media.play();
9458-               },
9459-               pause: function() {
9460-                       this.media.pause();
9461-               },
9462-               load: function() {
9463-                       this.media.load();
9464-               },
9465-               setMuted: function(muted) {
9466-                       this.media.setMuted(muted);
9467-               },
9468-               setCurrentTime: function(time) {
9469-                       this.media.setCurrentTime(time);
9470-               },
9471-               getCurrentTime: function() {
9472-                       return this.media.currentTime;
9473-               },
9474-               setVolume: function(volume) {
9475-                       this.media.setVolume(volume);
9476-               },
9477-               getVolume: function() {
9478-                       return this.media.volume;
9479-               },
9480-               setSrc: function(src) {
9481-                       this.media.setSrc(src);
9482-               },
9483-               remove: function() {
9484-                       var t = this;
9485-                       
9486-                       if (t.media.pluginType === 'flash') {
9487-                               t.media.remove();
9488-                       } else if (t.media.pluginType === 'native') {
9489-                               t.$media.prop('controls', true);
9490-                       }
9491-                       
9492-                       // grab video and put it back in place
9493-                       if (!t.isDynamic) {
9494-                               t.$node.insertBefore(t.container)
9495-                       }
9496-                       
9497-                       t.container.remove();
9498-               }
9499-       };
9500-
9501-       // turn into jQuery plugin
9502-       if (typeof jQuery != 'undefined') {
9503-               jQuery.fn.mediaelementplayer = function (options) {
9504-                       return this.each(function () {
9505-                               new mejs.MediaElementPlayer(this, options);
9506-                       });
9507-               };
9508-       }
9509-       
9510-       $(document).ready(function() {
9511-               // auto enable using JSON attribute
9512-               $('.mejs-player').mediaelementplayer();
9513-       });
9514-       
9515-       // push out to window
9516-       window.MediaElementPlayer = mejs.MediaElementPlayer;
9517-
9518-})(mejs.$);
9519-
9520-(function($) {
9521-
9522-       $.extend(mejs.MepDefaults, {
9523-               playpauseText: 'Play/Pause'
9524-       });
9525-
9526-       // PLAY/pause BUTTON
9527-       $.extend(MediaElementPlayer.prototype, {
9528-               buildplaypause: function(player, controls, layers, media) {
9529-                       var
9530-                               t = this,
9531-                               play =
9532-                               $('<div class="mejs-button mejs-playpause-button mejs-play" >' +
9533-                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.playpauseText + '"></button>' +
9534-                               '</div>')
9535-                               .appendTo(controls)
9536-                               .click(function(e) {
9537-                                       e.preventDefault();
9538-                               
9539-                                       if (media.paused) {
9540-                                               media.play();
9541-                                       } else {
9542-                                               media.pause();
9543-                                       }
9544-                                       
9545-                                       return false;
9546-                               });
9547-
9548-                       media.addEventListener('play',function() {
9549-                               play.removeClass('mejs-play').addClass('mejs-pause');
9550-                       }, false);
9551-                       media.addEventListener('playing',function() {
9552-                               play.removeClass('mejs-play').addClass('mejs-pause');
9553-                       }, false);
9554-
9555-
9556-                       media.addEventListener('pause',function() {
9557-                               play.removeClass('mejs-pause').addClass('mejs-play');
9558-                       }, false);
9559-                       media.addEventListener('paused',function() {
9560-                               play.removeClass('mejs-pause').addClass('mejs-play');
9561-                       }, false);
9562-               }
9563-       });
9564-       
9565-})(mejs.$);
9566-(function($) {
9567-
9568-       $.extend(mejs.MepDefaults, {
9569-               stopText: 'Stop'
9570-       });
9571-
9572-       // STOP BUTTON
9573-       $.extend(MediaElementPlayer.prototype, {
9574-               buildstop: function(player, controls, layers, media) {
9575-                       var t = this,
9576-                               stop =
9577-                               $('<div class="mejs-button mejs-stop-button mejs-stop">' +
9578-                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '"></button>' +
9579-                               '</div>')
9580-                               .appendTo(controls)
9581-                               .click(function() {
9582-                                       if (!media.paused) {
9583-                                               media.pause();
9584-                                       }
9585-                                       if (media.currentTime > 0) {
9586-                                               media.setCurrentTime(0);
9587-                        media.pause();
9588-                                               controls.find('.mejs-time-current').width('0px');
9589-                                               controls.find('.mejs-time-handle').css('left', '0px');
9590-                                               controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0) );
9591-                                               controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0) );                                   
9592-                                               layers.find('.mejs-poster').show();
9593-                                       }
9594-                               });
9595-               }
9596-       });
9597-       
9598-})(mejs.$);
9599-(function($) {
9600-       // progress/loaded bar
9601-       $.extend(MediaElementPlayer.prototype, {
9602-               buildprogress: function(player, controls, layers, media) {
9603-
9604-                       $('<div class="mejs-time-rail">'+
9605-                               '<span class="mejs-time-total">'+
9606-                                       '<span class="mejs-time-buffering"></span>'+
9607-                                       '<span class="mejs-time-loaded"></span>'+
9608-                                       '<span class="mejs-time-current"></span>'+
9609-                                       '<span class="mejs-time-handle"></span>'+
9610-                                       '<span class="mejs-time-float">' +
9611-                                               '<span class="mejs-time-float-current">00:00</span>' +
9612-                                               '<span class="mejs-time-float-corner"></span>' +
9613-                                       '</span>'+
9614-                               '</span>'+
9615-                       '</div>')
9616-                               .appendTo(controls);
9617-                               controls.find('.mejs-time-buffering').hide();
9618-
9619-                       var
9620-                               t = this,
9621-                               total = controls.find('.mejs-time-total'),
9622-                               loaded  = controls.find('.mejs-time-loaded'),
9623-                               current  = controls.find('.mejs-time-current'),
9624-                               handle  = controls.find('.mejs-time-handle'),
9625-                               timefloat  = controls.find('.mejs-time-float'),
9626-                               timefloatcurrent  = controls.find('.mejs-time-float-current'),
9627-                               handleMouseMove = function (e) {
9628-                                       // mouse position relative to the object
9629-                                       var x = e.pageX,
9630-                                               offset = total.offset(),
9631-                                               width = total.outerWidth(true),
9632-                                               percentage = 0,
9633-                                               newTime = 0,
9634-                                               pos = x - offset.left;
9635-
9636-
9637-                                       if (x > offset.left && x <= width + offset.left && media.duration) {
9638-                                               percentage = ((x - offset.left) / width);
9639-                                               newTime = (percentage <= 0.02) ? 0 : percentage * media.duration;
9640-
9641-                                               // seek to where the mouse is
9642-                                               if (mouseIsDown) {
9643-                                                       media.setCurrentTime(newTime);
9644-                                               }
9645-
9646-                                               // position floating time box
9647-                                               if (!mejs.MediaFeatures.hasTouch) {
9648-                                                               timefloat.css('left', pos);
9649-                                                               timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime) );
9650-                                                               timefloat.show();
9651-                                               }
9652-                                       }
9653-                               },
9654-                               mouseIsDown = false,
9655-                               mouseIsOver = false;
9656-
9657-                       // handle clicks
9658-                       //controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
9659-                       total
9660-                               .bind('mousedown', function (e) {
9661-                                       // only handle left clicks
9662-                                       if (e.which === 1) {
9663-                                               mouseIsDown = true;
9664-                                               handleMouseMove(e);
9665-                                               $(document)
9666-                                                       .bind('mousemove.dur', function(e) {
9667-                                                               handleMouseMove(e);
9668-                                                       })
9669-                                                       .bind('mouseup.dur', function (e) {
9670-                                                               mouseIsDown = false;
9671-                                                               timefloat.hide();
9672-                                                               $(document).unbind('.dur');
9673-                                                       });
9674-                                               return false;
9675-                                       }
9676-                               })
9677-                               .bind('mouseenter', function(e) {
9678-                                       mouseIsOver = true;
9679-                                       $(document).bind('mousemove.dur', function(e) {
9680-                                               handleMouseMove(e);
9681-                                       });
9682-                                       if (!mejs.MediaFeatures.hasTouch) {
9683-                                               timefloat.show();
9684-                                       }
9685-                               })
9686-                               .bind('mouseleave',function(e) {
9687-                                       mouseIsOver = false;
9688-                                       if (!mouseIsDown) {
9689-                                               $(document).unbind('.dur');
9690-                                               timefloat.hide();
9691-                                       }
9692-                               });
9693-
9694-                       // loading
9695-                       media.addEventListener('progress', function (e) {
9696-                               player.setProgressRail(e);
9697-                               player.setCurrentRail(e);
9698-                       }, false);
9699-
9700-                       // current time
9701-                       media.addEventListener('timeupdate', function(e) {
9702-                               player.setProgressRail(e);
9703-                               player.setCurrentRail(e);
9704-                       }, false);
9705-                       
9706-                       
9707-                       // store for later use
9708-                       t.loaded = loaded;
9709-                       t.total = total;
9710-                       t.current = current;
9711-                       t.handle = handle;
9712-               },
9713-               setProgressRail: function(e) {
9714-
9715-                       var
9716-                               t = this,
9717-                               target = (e != undefined) ? e.target : t.media,
9718-                               percent = null;                 
9719-
9720-                       // newest HTML5 spec has buffered array (FF4, Webkit)
9721-                       if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
9722-                               // TODO: account for a real array with multiple values (only Firefox 4 has this so far)
9723-                               percent = target.buffered.end(0) / target.duration;
9724-                       }
9725-                       // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
9726-                       // to be anything other than 0. If the byte count is available we use this instead.
9727-                       // Browsers that support the else if do not seem to have the bufferedBytes value and
9728-                       // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
9729-                       else if (target && target.bytesTotal != undefined && target.bytesTotal > 0 && target.bufferedBytes != undefined) {
9730-                               percent = target.bufferedBytes / target.bytesTotal;
9731-                       }
9732-                       // Firefox 3 with an Ogg file seems to go this way
9733-                       else if (e && e.lengthComputable && e.total != 0) {
9734-                               percent = e.loaded/e.total;
9735-                       }
9736-
9737-                       // finally update the progress bar
9738-                       if (percent !== null) {
9739-                               percent = Math.min(1, Math.max(0, percent));
9740-                               // update loaded bar
9741-                               if (t.loaded && t.total) {
9742-                                       t.loaded.width(t.total.width() * percent);
9743-                               }
9744-                       }
9745-               },
9746-               setCurrentRail: function() {
9747-
9748-                       var t = this;
9749-               
9750-                       if (t.media.currentTime != undefined && t.media.duration) {
9751-
9752-                               // update bar and handle
9753-                               if (t.total && t.handle) {
9754-                                       var
9755-                                               newWidth = t.total.width() * t.media.currentTime / t.media.duration,
9756-                                               handlePos = newWidth - (t.handle.outerWidth(true) / 2);
9757-
9758-                                       t.current.width(newWidth);
9759-                                       t.handle.css('left', handlePos);
9760-                               }
9761-                       }
9762-
9763-               }       
9764-       });
9765-})(mejs.$);
9766-(function($) {
9767-       
9768-       // options
9769-       $.extend(mejs.MepDefaults, {
9770-               duration: -1,
9771-               timeAndDurationSeparator: ' <span> | </span> '
9772-       });
9773-
9774-
9775-       // current and duration 00:00 / 00:00
9776-       $.extend(MediaElementPlayer.prototype, {
9777-               buildcurrent: function(player, controls, layers, media) {
9778-                       var t = this;
9779-                       
9780-                       $('<div class="mejs-time">'+
9781-                                       '<span class="mejs-currenttime">' + (player.options.alwaysShowHours ? '00:' : '')
9782-                                       + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')+ '</span>'+
9783-                                       '</div>')
9784-                                       .appendTo(controls);
9785-                       
9786-                       t.currenttime = t.controls.find('.mejs-currenttime');
9787-
9788-                       media.addEventListener('timeupdate',function() {
9789-                               player.updateCurrent();
9790-                       }, false);
9791-               },
9792-
9793-
9794-               buildduration: function(player, controls, layers, media) {
9795-                       var t = this;
9796-                       
9797-                       if (controls.children().last().find('.mejs-currenttime').length > 0) {
9798-                               $(t.options.timeAndDurationSeparator +
9799-                                       '<span class="mejs-duration">' +
9800-                                               (t.options.duration > 0 ?
9801-                                                       mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
9802-                                                       ((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00'))
9803-                                               ) +
9804-                                       '</span>')
9805-                                       .appendTo(controls.find('.mejs-time'));
9806-                       } else {
9807-
9808-                               // add class to current time
9809-                               controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container');
9810-                               
9811-                               $('<div class="mejs-time mejs-duration-container">'+
9812-                                       '<span class="mejs-duration">' +
9813-                                               (t.options.duration > 0 ?
9814-                                                       mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
9815-                                                       ((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00'))
9816-                                               ) +
9817-                                       '</span>' +
9818-                               '</div>')
9819-                               .appendTo(controls);
9820-                       }
9821-                       
9822-                       t.durationD = t.controls.find('.mejs-duration');
9823-
9824-                       media.addEventListener('timeupdate',function() {
9825-                               player.updateDuration();
9826-                       }, false);
9827-               },
9828-               
9829-               updateCurrent:  function() {
9830-                       var t = this;
9831-
9832-                       if (t.currenttime) {
9833-                               t.currenttime.html(mejs.Utility.secondsToTimeCode(t.media.currentTime, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25));
9834-                       }
9835-               },
9836-               
9837-               updateDuration: function() {   
9838-                       var t = this;
9839-                       
9840-                       if (t.media.duration && t.durationD) {
9841-                               t.durationD.html(mejs.Utility.secondsToTimeCode(t.media.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond || 25));
9842-                       }               
9843-               }
9844-       });
9845-
9846-})(mejs.$);
9847-(function($) {
9848-
9849-       $.extend(mejs.MepDefaults, {
9850-               muteText: 'Mute Toggle',
9851-               hideVolumeOnTouchDevices: true,
9852-               
9853-               audioVolume: 'horizontal',
9854-               videoVolume: 'vertical'
9855-       });
9856-
9857-       $.extend(MediaElementPlayer.prototype, {
9858-               buildvolume: function(player, controls, layers, media) {
9859-                               
9860-                       // Android and iOS don't support volume controls
9861-                       if (mejs.MediaFeatures.hasTouch && this.options.hideVolumeOnTouchDevices)
9862-                               return;
9863-                       
9864-                       var t = this,
9865-                               mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume,
9866-                               mute = (mode == 'horizontal') ?
9867-                               
9868-                               // horizontal version
9869-                               $('<div class="mejs-button mejs-volume-button mejs-mute">'+
9870-                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '"></button>'+
9871-                               '</div>' +
9872-                               '<div class="mejs-horizontal-volume-slider">'+ // outer background
9873-                                       '<div class="mejs-horizontal-volume-total"></div>'+ // line background
9874-                                       '<div class="mejs-horizontal-volume-current"></div>'+ // current volume
9875-                                       '<div class="mejs-horizontal-volume-handle"></div>'+ // handle
9876-                               '</div>'
9877-                               )
9878-                                       .appendTo(controls) :
9879-                               
9880-                               // vertical version
9881-                               $('<div class="mejs-button mejs-volume-button mejs-mute">'+
9882-                                       '<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '"></button>'+
9883-                                       '<div class="mejs-volume-slider">'+ // outer background
9884-                                               '<div class="mejs-volume-total"></div>'+ // line background
9885-                                               '<div class="mejs-volume-current"></div>'+ // current volume
9886-                                               '<div class="mejs-volume-handle"></div>'+ // handle
9887-                                       '</div>'+
9888-                               '</div>')
9889-                                       .appendTo(controls),
9890-                       volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'),
9891-                       volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'),
9892-                       volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'),
9893-                       volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'),
9894-
9895-                       positionVolumeHandle = function(volume, secondTry) {
9896-
9897-                               if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') {
9898-                                       volumeSlider.show();
9899-                                       positionVolumeHandle(volume, true);
9900-                                       volumeSlider.hide()
9901-                                       return;
9902-                               }
9903-                       
9904-                               // correct to 0-1
9905-                               volume = Math.max(0,volume);
9906-                               volume = Math.min(volume,1);                                   
9907-                               
9908-                               // ajust mute button style
9909-                               if (volume == 0) {
9910-                                       mute.removeClass('mejs-mute').addClass('mejs-unmute');
9911-                               } else {
9912-                                       mute.removeClass('mejs-unmute').addClass('mejs-mute');
9913-                               }                               
9914-
9915-                               // position slider
9916-                               if (mode == 'vertical') {
9917-                                       var
9918-                                       
9919-                                               // height of the full size volume slider background
9920-                                               totalHeight = volumeTotal.height(),
9921-                                               
9922-                                               // top/left of full size volume slider background
9923-                                               totalPosition = volumeTotal.position(),
9924-                                               
9925-                                               // the new top position based on the current volume
9926-                                               // 70% volume on 100px height == top:30px
9927-                                               newTop = totalHeight - (totalHeight * volume);
9928-       
9929-                                       // handle
9930-                                       volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2)));
9931-       
9932-                                       // show the current visibility
9933-                                       volumeCurrent.height(totalHeight - newTop );
9934-                                       volumeCurrent.css('top', totalPosition.top + newTop);
9935-                               } else {
9936-                                       var
9937-                                       
9938-                                               // height of the full size volume slider background
9939-                                               totalWidth = volumeTotal.width(),
9940-                                               
9941-                                               // top/left of full size volume slider background
9942-                                               totalPosition = volumeTotal.position(),
9943-                                               
9944-                                               // the new left position based on the current volume
9945-                                               newLeft = totalWidth * volume;
9946-       
9947-                                       // handle
9948-                                       volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2)));
9949-       
9950-                                       // rezize the current part of the volume bar
9951-                                       volumeCurrent.width( Math.round(newLeft) );
9952-                               }
9953-                       },
9954-                       handleVolumeMove = function(e) {
9955-                               
9956-                               var volume = null,
9957-                                       totalOffset = volumeTotal.offset();
9958-                               
9959-                               // calculate the new volume based on the moust position
9960-                               if (mode == 'vertical') {
9961-                               
9962-                                       var
9963-                                               railHeight = volumeTotal.height(),
9964-                                               totalTop = parseInt(volumeTotal.css('top').replace(/px/,''),10),
9965-                                               newY = e.pageY - totalOffset.top;
9966-                                               
9967-                                       volume = (railHeight - newY) / railHeight;
9968-                                               
9969-                                       // the controls just hide themselves (usually when mouse moves too far up)
9970-                                       if (totalOffset.top == 0 || totalOffset.left == 0)
9971-                                               return;
9972-                                       
9973-                               } else {
9974-                                       var
9975-                                               railWidth = volumeTotal.width(),
9976-                                               newX = e.pageX - totalOffset.left;
9977-                                               
9978-                                       volume = newX / railWidth;
9979-                               }
9980-                               
9981-                               // ensure the volume isn't outside 0-1
9982-                               volume = Math.max(0,volume);
9983-                               volume = Math.min(volume,1);
9984-                               
9985-                               // position the slider and handle                       
9986-                               positionVolumeHandle(volume);
9987-                               
9988-                               // set the media object (this will trigger the volumechanged event)
9989-                               if (volume == 0) {
9990-                                       media.setMuted(true);
9991-                               } else {
9992-                                       media.setMuted(false);
9993-                               }
9994-                               media.setVolume(volume);                       
9995-                       },
9996-                       mouseIsDown = false,
9997-                       mouseIsOver = false;
9998-
9999-                       // SLIDER
10000-                       
10001-                       mute
10002-                               .hover(function() {
10003-                                       volumeSlider.show();
10004-                                       mouseIsOver = true;
10005-                               }, function() {
10006-                                       mouseIsOver = false;   
10007-                                               
10008-                                       if (!mouseIsDown && mode == 'vertical') {
10009-                                               volumeSlider.hide();
10010-                                       }
10011-                               });
10012-                       
10013-                       volumeSlider
10014-                               .bind('mouseover', function() {
10015-                                       mouseIsOver = true;     
10016-                               })
10017-                               .bind('mousedown', function (e) {
10018-                                       handleVolumeMove(e);
10019-                                       $(document)
10020-                                               .bind('mousemove.vol', function(e) {
10021-                                                       handleVolumeMove(e);
10022-                                               })
10023-                                               .bind('mouseup.vol', function () {
10024-                                                       mouseIsDown = false;
10025-                                                       $(document).unbind('.vol');
10026-
10027-                                                       if (!mouseIsOver && mode == 'vertical') {
10028-                                                               volumeSlider.hide();
10029-                                                       }
10030-                                               });
10031-                                       mouseIsDown = true;
10032-                                               
10033-                                       return false;
10034-                               });
10035-
10036-
10037-                       // MUTE button
10038-                       mute.find('button').click(function() {
10039-                               media.setMuted( !media.muted );
10040-                       });
10041-
10042-                       // listen for volume change events from other sources
10043-                       media.addEventListener('volumechange', function(e) {
10044-                               if (!mouseIsDown) {
10045-                                       if (media.muted) {
10046-                                               positionVolumeHandle(0);
10047-                                               mute.removeClass('mejs-mute').addClass('mejs-unmute');
10048-                                       } else {
10049-                                               positionVolumeHandle(media.volume);
10050-                                               mute.removeClass('mejs-unmute').addClass('mejs-mute');
10051-                                       }
10052-                               }
10053-                       }, false);
10054-
10055-                       if (t.container.is(':visible')) {
10056-                               // set initial volume
10057-                               positionVolumeHandle(player.options.startVolume);
10058-                               
10059-                               // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
10060-                               if (media.pluginType === 'native') {
10061-                                       media.setVolume(player.options.startVolume);
10062-                               }
10063-                       }
10064-               }
10065-       });
10066-       
10067-})(mejs.$);
10068-
10069-(function($) {
10070-
10071-       $.extend(mejs.MepDefaults, {
10072-               usePluginFullScreen: true,
10073-               newWindowCallback: function() { return '';},
10074-               fullscreenText: mejs.i18n.t('Fullscreen')
10075-       });
10076-
10077-       $.extend(MediaElementPlayer.prototype, {
10078-
10079-               isFullScreen: false,
10080-
10081-               isNativeFullScreen: false,
10082-
10083-               docStyleOverflow: null,
10084-
10085-               isInIframe: false,
10086-
10087-               buildfullscreen: function(player, controls, layers, media) {
10088-
10089-                       if (!player.isVideo)
10090-                               return;
10091-
10092-                       player.isInIframe = (window.location != window.parent.location);
10093-
10094-                       // native events
10095-                       if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
10096-
10097-                               // chrome doesn't alays fire this in an iframe
10098-                               var target = null;
10099-
10100-                               if (mejs.MediaFeatures.hasMozNativeFullScreen) {
10101-                                       target = $(document);
10102-                               } else {
10103-                                       target = player.container;
10104-                               }
10105-
10106-                               target.bind(mejs.MediaFeatures.fullScreenEventName, function(e) {
10107-
10108-                                       if (mejs.MediaFeatures.isFullScreen()) {
10109-                                               player.isNativeFullScreen = true;
10110-                                               // reset the controls once we are fully in full screen
10111-                                               player.setControlsSize();
10112-                                       } else {
10113-                                               player.isNativeFullScreen = false;
10114-                                               // when a user presses ESC
10115-                                               // make sure to put the player back into place
10116-                                               player.exitFullScreen();
10117-                                       }
10118-                               });
10119-                       }
10120-
10121-                       var t = this,
10122-                               normalHeight = 0,
10123-                               normalWidth = 0,
10124-                               container = player.container,
10125-                               fullscreenBtn =
10126-                                       $('<div class="mejs-button mejs-fullscreen-button">' +
10127-                                               '<button type="button" aria-controls="' + t.id + '" title="' + t.options.fullscreenText + '"></button>' +
10128-                                       '</div>')
10129-                                       .appendTo(controls);
10130-
10131-                               if (t.media.pluginType === 'native' || (!t.options.usePluginFullScreen && !mejs.MediaFeatures.isFirefox)) {
10132-
10133-                                       fullscreenBtn.click(function() {
10134-                                               var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen;
10135-
10136-                                               if (isFullScreen) {
10137-                                                       player.exitFullScreen();
10138-                                               } else {
10139-                                                       player.enterFullScreen();
10140-                                               }
10141-                                       });
10142-
10143-                               } else {
10144-
10145-                                       var hideTimeout = null,
10146-                                               supportsPointerEvents = (function() {
10147-                                                       // TAKEN FROM MODERNIZR
10148-                                                       var element = document.createElement('x'),
10149-                                                               documentElement = document.documentElement,
10150-                                                               getComputedStyle = window.getComputedStyle,
10151-                                                               supports;
10152-                                                       if(!('pointerEvents' in element.style)){
10153-                                                               return false;
10154-                                                       }
10155-                                                       element.style.pointerEvents = 'auto';
10156-                                                       element.style.pointerEvents = 'x';
10157-                                                       documentElement.appendChild(element);
10158-                                                       supports = getComputedStyle &&
10159-                                                               getComputedStyle(element, '').pointerEvents === 'auto';
10160-                                                       documentElement.removeChild(element);
10161-                                                       return !!supports;
10162-                                               })();
10163-
10164-                                       //console.log('supportsPointerEvents', supportsPointerEvents);
10165-
10166-                                       if (supportsPointerEvents && !mejs.MediaFeatures.isOpera) { // opera doesn't allow this :(
10167-
10168-                                               // allows clicking through the fullscreen button and controls down directly to Flash
10169-
10170-                                               /*
10171-                                                When a user puts his mouse over the fullscreen button, the controls are disabled
10172-                                                So we put a div over the video and another one on iether side of the fullscreen button
10173-                                                that caputre mouse movement
10174-                                                and restore the controls once the mouse moves outside of the fullscreen button
10175-                                               */
10176-
10177-                                               var fullscreenIsDisabled = false,
10178-                                                       restoreControls = function() {
10179-                                                               if (fullscreenIsDisabled) {
10180-                                                                       // hide the hovers
10181-                                                                       videoHoverDiv.hide();
10182-                                                                       controlsLeftHoverDiv.hide();
10183-                                                                       controlsRightHoverDiv.hide();
10184-
10185-                                                                       // restore the control bar
10186-                                                                       fullscreenBtn.css('pointer-events', '');
10187-                                                                       t.controls.css('pointer-events', '');
10188-
10189-                                                                       // store for later
10190-                                                                       fullscreenIsDisabled = false;
10191-                                                               }
10192-                                                       },
10193-                                                       videoHoverDiv = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls),
10194-                                                       controlsLeftHoverDiv = $('<div class="mejs-fullscreen-hover"  />').appendTo(t.container).mouseover(restoreControls),
10195-                                                       controlsRightHoverDiv = $('<div class="mejs-fullscreen-hover"  />').appendTo(t.container).mouseover(restoreControls),
10196-                                                       positionHoverDivs = function() {
10197-                                                               var style = {position: 'absolute', top: 0, left: 0}; //, backgroundColor: '#f00'};
10198-                                                               videoHoverDiv.css(style);
10199-                                                               controlsLeftHoverDiv.css(style);
10200-                                                               controlsRightHoverDiv.css(style);
10201-
10202-                                                               // over video, but not controls
10203-                                                               videoHoverDiv
10204-                                                                       .width( t.container.width() )
10205-                                                                       .height( t.container.height() - t.controls.height() );
10206-
10207-                                                               // over controls, but not the fullscreen button
10208-                                                               var fullScreenBtnOffset = fullscreenBtn.offset().left - t.container.offset().left;
10209-                                                                       fullScreenBtnWidth = fullscreenBtn.outerWidth(true);
10210-
10211-                                                               controlsLeftHoverDiv
10212-                                                                       .width( fullScreenBtnOffset )
10213-                                                                       .height( t.controls.height() )
10214-                                                                       .css({top: t.container.height() - t.controls.height()});
10215-
10216-                                                               // after the fullscreen button
10217-                                                               controlsRightHoverDiv
10218-                                                                       .width( t.container.width() - fullScreenBtnOffset - fullScreenBtnWidth )
10219-                                                                       .height( t.controls.height() )
10220-                                                                       .css({top: t.container.height() - t.controls.height(),
10221-                                                                                left: fullScreenBtnOffset + fullScreenBtnWidth});
10222-                                                       };
10223-
10224-                                               $(document).resize(function() {
10225-                                                       positionHoverDivs();
10226-                                               });
10227-
10228-                                               // on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash
10229-                                               fullscreenBtn
10230-                                                       .mouseover(function() {
10231-
10232-                                                               if (!t.isFullScreen) {
10233-
10234-                                                                       var buttonPos = fullscreenBtn.offset(),
10235-                                                                               containerPos = player.container.offset();
10236-
10237-                                                                       // move the button in Flash into place
10238-                                                                       media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false);
10239-
10240-                                                                       // allows click through
10241-                                                                       fullscreenBtn.css('pointer-events', 'none');
10242-                                                                       t.controls.css('pointer-events', 'none');
10243-
10244-                                                                       // show the divs that will restore things
10245-                                                                       videoHoverDiv.show();
10246-                                                                       controlsRightHoverDiv.show();
10247-                                                                       controlsLeftHoverDiv.show();
10248-                                                                       positionHoverDivs();
10249-
10250-                                                                       fullscreenIsDisabled = true;
10251-                                                               }
10252-
10253-                                                       });
10254-
10255-                                               // restore controls anytime the user enters or leaves fullscreen
10256-                                               media.addEventListener('fullscreenchange', function(e) {
10257-                                                       restoreControls();
10258-                                               });
10259-
10260-
10261-                                               // the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events
10262-                                               // so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button
10263-                                               /*
10264-                                               $(document).mousemove(function(e) {
10265-
10266-                                                       // if the mouse is anywhere but the fullsceen button, then restore it all
10267-                                                       if (fullscreenIsDisabled) {
10268-
10269-                                                               var fullscreenBtnPos = fullscreenBtn.offset();
10270-
10271-
10272-                                                               if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) ||
10273-                                                                       e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true)
10274-                                                                       ) {
10275-
10276-                                                                       fullscreenBtn.css('pointer-events', '');
10277-                                                                       t.controls.css('pointer-events', '');
10278-
10279-                                                                       fullscreenIsDisabled = false;
10280-                                                               }
10281-                                                       }
10282-                                               });
10283-                                               */
10284-
10285-
10286-                                       } else {
10287-
10288-                                               // the hover state will show the fullscreen button in Flash to hover up and click
10289-
10290-                                               fullscreenBtn
10291-                                                       .mouseover(function() {
10292-
10293-                                                               if (hideTimeout !== null) {
10294-                                                                       clearTimeout(hideTimeout);
10295-                                                                       delete hideTimeout;
10296-                                                               }
10297-
10298-                                                               var buttonPos = fullscreenBtn.offset(),
10299-                                                                       containerPos = player.container.offset();
10300-
10301-                                                               media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true);
10302-
10303-                                                       })
10304-                                                       .mouseout(function() {
10305-
10306-                                                               if (hideTimeout !== null) {
10307-                                                                       clearTimeout(hideTimeout);
10308-                                                                       delete hideTimeout;
10309-                                                               }
10310-
10311-                                                               hideTimeout = setTimeout(function() {
10312-                                                                       media.hideFullscreenButton();
10313-                                                               }, 1500);
10314-
10315-
10316-                                                       });
10317-                                       }
10318-                               }
10319-
10320-                       player.fullscreenBtn = fullscreenBtn;
10321-
10322-                       $(document).bind('keydown',function (e) {
10323-                               if (((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen) && e.keyCode == 27) {
10324-                                       player.exitFullScreen();
10325-                               }
10326-                       });
10327-
10328-               },
10329-               enterFullScreen: function() {
10330-
10331-                       var t = this;
10332-
10333-                       // firefox+flash can't adjust plugin sizes without resetting :(
10334-                       if (t.media.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || t.options.usePluginFullScreen)) {
10335-                               //t.media.setFullscreen(true);
10336-                               //player.isFullScreen = true;
10337-                               return;
10338-                       }
10339-
10340-                       // store overflow
10341-                       docStyleOverflow = document.documentElement.style.overflow;
10342-                       // set it to not show scroll bars so 100% will work
10343-                       document.documentElement.style.overflow = 'hidden';
10344-
10345-                       // store sizing
10346-                       normalHeight = t.container.height();
10347-                       normalWidth = t.container.width();
10348-
10349-                       // attempt to do true fullscreen (Safari 5.1 and Firefox Nightly only for now)
10350-                       if (t.media.pluginType === 'native') {
10351-                               if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
10352-
10353-                                       mejs.MediaFeatures.requestFullScreen(t.container[0]);
10354-                                       //return;
10355-
10356-                                       if (t.isInIframe) {
10357-                                               // sometimes exiting from fullscreen doesn't work
10358-                                               // notably in Chrome <iframe>. Fixed in version 17
10359-                                               setTimeout(function checkFullscreen() {
10360-
10361-                                                       if (t.isNativeFullScreen) {
10362-
10363-                                                               // check if the video is suddenly not really fullscreen
10364-                                                               if ($(window).width() !== screen.width) {
10365-                                                                       // manually exit
10366-                                                                       t.exitFullScreen();
10367-                                                               } else {
10368-                                                                       // test again
10369-                                                                       setTimeout(checkFullscreen, 500);
10370-                                                               }
10371-                                                       }
10372-
10373-
10374-                                               }, 500);
10375-                                       }
10376-
10377-                               } else if (mejs.MediaFeatures.hasSemiNativeFullScreen) {
10378-                                       t.media.webkitEnterFullscreen();
10379-                                       return;
10380-                               }
10381-                       }
10382-
10383-                       // check for iframe launch
10384-                       if (t.isInIframe) {
10385-                               var url = t.options.newWindowCallback(this);
10386-
10387-
10388-                               if (url !== '') {
10389-
10390-                                       // launch immediately
10391-                                       if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
10392-                                               t.pause();
10393-                                               window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
10394-                                               return;
10395-                                       } else {
10396-                                               setTimeout(function() {
10397-                                                       if (!t.isNativeFullScreen) {
10398-                                                               t.pause();
10399-                                                               window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
10400-                                                       }
10401-                                               }, 250);
10402-                                       }
10403-                               }
10404-
10405-                       }
10406-
10407-                       // full window code
10408-
10409-
10410-
10411-                       // make full size
10412-                       t.container
10413-                               .addClass('mejs-container-fullscreen')
10414-                               .width('100%')
10415-                               .height('100%');
10416-                               //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000});
10417-
10418-                       // Only needed for safari 5.1 native full screen, can cause display issues elsewhere
10419-                       // Actually, it seems to be needed for IE8, too
10420-                       //if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
10421-                               setTimeout(function() {
10422-                                       t.container.css({width: '100%', height: '100%'});
10423-                                       t.setControlsSize();
10424-                               }, 500);
10425-                       //}
10426-
10427-                       if (t.pluginType === 'native') {
10428-                               t.$media
10429-                                       .width('100%')
10430-                                       .height('100%');
10431-                       } else {
10432-                               t.container.find('object, embed, iframe')
10433-                                       .width('100%')
10434-                                       .height('100%');
10435-
10436-                               //if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
10437-                                       t.media.setVideoSize($(window).width(),$(window).height());
10438-                               //}
10439-                       }
10440-
10441-                       t.layers.children('div')
10442-                               .width('100%')
10443-                               .height('100%');
10444-
10445-                       if (t.fullscreenBtn) {
10446-                               t.fullscreenBtn
10447-                                       .removeClass('mejs-fullscreen')
10448-                                       .addClass('mejs-unfullscreen');
10449-                       }
10450-
10451-                       t.setControlsSize();
10452-                       t.isFullScreen = true;
10453-               },
10454-
10455-               exitFullScreen: function() {
10456-
10457-                       var t = this;
10458-
10459-                       // firefox can't adjust plugins
10460-                       if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) {
10461-                               t.media.setFullscreen(false);
10462-                               //player.isFullScreen = false;
10463-                               return;
10464-                       }
10465-
10466-                       // come outo of native fullscreen
10467-                       if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) {
10468-                               mejs.MediaFeatures.cancelFullScreen();
10469-                       }
10470-
10471-                       // restore scroll bars to document
10472-                       document.documentElement.style.overflow = docStyleOverflow;
10473-
10474-                       t.container
10475-                               .removeClass('mejs-container-fullscreen')
10476-                               .width(normalWidth)
10477-                               .height(normalHeight);
10478-                               //.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1});
10479-
10480-                       if (t.pluginType === 'native') {
10481-                               t.$media
10482-                                       .width(normalWidth)
10483-                                       .height(normalHeight);
10484-                       } else {
10485-                               t.container.find('object embed')
10486-                                       .width(normalWidth)
10487-                                       .height(normalHeight);
10488-
10489-                               t.media.setVideoSize(normalWidth, normalHeight);
10490-                       }
10491-
10492-                       t.layers.children('div')
10493-                               .width(normalWidth)
10494-                               .height(normalHeight);
10495-
10496-                       t.fullscreenBtn
10497-                               .removeClass('mejs-unfullscreen')
10498-                               .addClass('mejs-fullscreen');
10499-
10500-                       t.setControlsSize();
10501-                       t.isFullScreen = false;
10502-               }
10503-       });
10504-
10505-})(mejs.$);
10506-
10507-(function($) {
10508-
10509-       // add extra default options
10510-       $.extend(mejs.MepDefaults, {
10511-               // this will automatically turn on a <track>
10512-               startLanguage: '',
10513-               
10514-               tracksText: 'Captions/Subtitles'
10515-       });
10516-
10517-       $.extend(MediaElementPlayer.prototype, {
10518-       
10519-               hasChapters: false,
10520-
10521-               buildtracks: function(player, controls, layers, media) {
10522-                       if (!player.isVideo)
10523-                               return;
10524-
10525-                       if (player.tracks.length == 0)
10526-                               return;
10527-
10528-                       var t= this, i, options = '';
10529-
10530-                       player.chapters =
10531-                                       $('<div class="mejs-chapters mejs-layer"></div>')
10532-                                               .prependTo(layers).hide();
10533-                       player.captions =
10534-                                       $('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position"><span class="mejs-captions-text"></span></div></div>')
10535-                                               .prependTo(layers).hide();
10536-                       player.captionsText = player.captions.find('.mejs-captions-text');
10537-                       player.captionsButton =
10538-                                       $('<div class="mejs-button mejs-captions-button">'+
10539-                                               '<button type="button" aria-controls="' + t.id + '" title="' + t.options.tracksText + '"></button>'+
10540-                                               '<div class="mejs-captions-selector">'+
10541-                                                       '<ul>'+
10542-                                                               '<li>'+
10543-                                                                       '<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' +
10544-                                                                       '<label for="' + player.id + '_captions_none">None</label>'+
10545-                                                               '</li>' +
10546-                                                       '</ul>'+
10547-                                               '</div>'+
10548-                                       '</div>')
10549-                                               .appendTo(controls)
10550-                                               
10551-                                               // hover
10552-                                               .hover(function() {
10553-                                                       $(this).find('.mejs-captions-selector').css('visibility','visible');
10554-                                               }, function() {
10555-                                                       $(this).find('.mejs-captions-selector').css('visibility','hidden');
10556-                                               })                                     
10557-                                               
10558-                                               // handle clicks to the language radio buttons
10559-                                               .delegate('input[type=radio]','click',function() {
10560-                                                       lang = this.value;
10561-
10562-                                                       if (lang == 'none') {
10563-                                                               player.selectedTrack = null;
10564-                                                       } else {
10565-                                                               for (i=0; i<player.tracks.length; i++) {
10566-                                                                       if (player.tracks[i].srclang == lang) {
10567-                                                                               player.selectedTrack = player.tracks[i];
10568-                                                                               player.captions.attr('lang', player.selectedTrack.srclang);
10569-                                                                               player.displayCaptions();
10570-                                                                               break;
10571-                                                                       }
10572-                                                               }
10573-                                                       }
10574-                                               });
10575-                                               //.bind('mouseenter', function() {
10576-                                               //      player.captionsButton.find('.mejs-captions-selector').css('visibility','visible')
10577-                                               //});
10578-
10579-                       if (!player.options.alwaysShowControls) {
10580-                               // move with controls
10581-                               player.container
10582-                                       .bind('mouseenter', function () {
10583-                                               // push captions above controls
10584-                                               player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
10585-
10586-                                       })
10587-                                       .bind('mouseleave', function () {
10588-                                               if (!media.paused) {
10589-                                                       // move back to normal place
10590-                                                       player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover');
10591-                                               }
10592-                                       });
10593-                       } else {
10594-                               player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
10595-                       }
10596-
10597-                       player.trackToLoad = -1;
10598-                       player.selectedTrack = null;
10599-                       player.isLoadingTrack = false;
10600-
10601-                       
10602-
10603-                       // add to list
10604-                       for (i=0; i<player.tracks.length; i++) {
10605-                               if (player.tracks[i].kind == 'subtitles') {
10606-                                       player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label);
10607-                               }
10608-                       }
10609-
10610-                       player.loadNextTrack();
10611-
10612-
10613-                       media.addEventListener('timeupdate',function(e) {
10614-                               player.displayCaptions();
10615-                       }, false);
10616-
10617-                       media.addEventListener('loadedmetadata', function(e) {
10618-                               player.displayChapters();
10619-                       }, false);
10620-
10621-                       player.container.hover(
10622-                               function () {
10623-                                       // chapters
10624-                                       if (player.hasChapters) {
10625-                                               player.chapters.css('visibility','visible');
10626-                                               player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight());
10627-                                       }
10628-                               },
10629-                               function () {
10630-                                       if (player.hasChapters && !media.paused) {
10631-                                               player.chapters.fadeOut(200, function() {
10632-                                                       $(this).css('visibility','hidden');
10633-                                                       $(this).css('display','block');
10634-                                               });
10635-                                       }
10636-                               });
10637-                               
10638-                       // check for autoplay
10639-                       if (player.node.getAttribute('autoplay') !== null) {
10640-                               player.chapters.css('visibility','hidden');
10641-                       }
10642-               },
10643-
10644-               loadNextTrack: function() {
10645-                       var t = this;
10646-
10647-                       t.trackToLoad++;
10648-                       if (t.trackToLoad < t.tracks.length) {
10649-                               t.isLoadingTrack = true;
10650-                               t.loadTrack(t.trackToLoad);
10651-                       } else {
10652-                               // add done?
10653-                               t.isLoadingTrack = false;
10654-                       }
10655-               },
10656-
10657-               loadTrack: function(index){
10658-                       var
10659-                               t = this,
10660-                               track = t.tracks[index],
10661-                               after = function() {
10662-
10663-                                       track.isLoaded = true;
10664-
10665-                                       // create button
10666-                                       //t.addTrackButton(track.srclang);
10667-                                       t.enableTrackButton(track.srclang, track.label);
10668-
10669-                                       t.loadNextTrack();
10670-
10671-                               };
10672-
10673-
10674-                       $.ajax({
10675-                               url: track.src,
10676-                               dataType: "text",
10677-                               success: function(d) {
10678-
10679-                                       // parse the loaded file
10680-                                       if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) {
10681-                                               track.entries = mejs.TrackFormatParser.dfxp.parse(d);                                   
10682-                                       } else {       
10683-                                               track.entries = mejs.TrackFormatParser.webvvt.parse(d);
10684-                                       }
10685-                                       
10686-                                       after();
10687-
10688-                                       if (track.kind == 'chapters') {
10689-                                               t.media.addEventListener('play', function(e) {
10690-                                                       if (t.media.duration > 0) {
10691-                                                               t.displayChapters(track);
10692-                                                       }
10693-                                               }, false);
10694-                                       }
10695-                               },
10696-                               error: function() {
10697-                                       t.loadNextTrack();
10698-                               }
10699-                       });
10700-               },
10701-
10702-               enableTrackButton: function(lang, label) {
10703-                       var t = this;
10704-                       
10705-                       if (label === '') {
10706-                               label = mejs.language.codes[lang] || lang;
10707-                       }                       
10708-
10709-                       t.captionsButton
10710-                               .find('input[value=' + lang + ']')
10711-                                       .prop('disabled',false)
10712-                               .siblings('label')
10713-                                       .html( label );
10714-
10715-                       // auto select
10716-                       if (t.options.startLanguage == lang) {
10717-                               $('#' + t.id + '_captions_' + lang).click();
10718-                       }
10719-
10720-                       t.adjustLanguageBox();
10721-               },
10722-
10723-               addTrackButton: function(lang, label) {
10724-                       var t = this;
10725-                       if (label === '') {
10726-                               label = mejs.language.codes[lang] || lang;
10727-                       }
10728-
10729-                       t.captionsButton.find('ul').append(
10730-                               $('<li>'+
10731-                                       '<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' +
10732-                                       '<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+
10733-                               '</li>')
10734-                       );
10735-
10736-                       t.adjustLanguageBox();
10737-
10738-                       // remove this from the dropdownlist (if it exists)
10739-                       t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove();
10740-               },
10741-
10742-               adjustLanguageBox:function() {
10743-                       var t = this;
10744-                       // adjust the size of the outer box
10745-                       t.captionsButton.find('.mejs-captions-selector').height(
10746-                               t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) +
10747-                               t.captionsButton.find('.mejs-captions-translations').outerHeight(true)
10748-                       );
10749-               },
10750-
10751-               displayCaptions: function() {
10752-
10753-                       if (typeof this.tracks == 'undefined')
10754-                               return;
10755-
10756-                       var
10757-                               t = this,
10758-                               i,
10759-                               track = t.selectedTrack;
10760-
10761-                       if (track != null && track.isLoaded) {
10762-                               for (i=0; i<track.entries.times.length; i++) {
10763-                                       if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop){
10764-                                               t.captionsText.html(track.entries.text[i]);
10765-                                               t.captions.show().height(0);
10766-                                               return; // exit out if one is visible;
10767-                                       }
10768-                               }
10769-                               t.captions.hide();
10770-                       } else {
10771-                               t.captions.hide();
10772-                       }
10773-               },
10774-
10775-               displayChapters: function() {
10776-                       var
10777-                               t = this,
10778-                               i;
10779-
10780-                       for (i=0; i<t.tracks.length; i++) {
10781-                               if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) {
10782-                                       t.drawChapters(t.tracks[i]);
10783-                                       t.hasChapters = true;
10784-                                       break;
10785-                               }
10786-                       }
10787-               },
10788-
10789-               drawChapters: function(chapters) {
10790-                       var
10791-                               t = this,
10792-                               i,
10793-                               dur,
10794-                               //width,
10795-                               //left,
10796-                               percent = 0,
10797-                               usedPercent = 0;
10798-
10799-                       t.chapters.empty();
10800-
10801-                       for (i=0; i<chapters.entries.times.length; i++) {
10802-                               dur = chapters.entries.times[i].stop - chapters.entries.times[i].start;
10803-                               percent = Math.floor(dur / t.media.duration * 100);
10804-                               if (percent + usedPercent > 100 || // too large
10805-                                       i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in
10806-                                       {
10807-                                       percent = 100 - usedPercent;
10808-                               }
10809-                               //width = Math.floor(t.width * dur / t.media.duration);
10810-                               //left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration);
10811-                               //if (left + width > t.width) {
10812-                               //      width = t.width - left;
10813-                               //}
10814-
10815-                               t.chapters.append( $(
10816-                                       '<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' +
10817-                                               '<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' +
10818-                                                       '<span class="ch-title">' + chapters.entries.text[i] + '</span>' +
10819-                                                       '<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start) + '&ndash;' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop) + '</span>' +
10820-                                               '</div>' +
10821-                                       '</div>'));
10822-                               usedPercent += percent;
10823-                       }
10824-
10825-                       t.chapters.find('div.mejs-chapter').click(function() {
10826-                               t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) );
10827-                               if (t.media.paused) {
10828-                                       t.media.play();
10829-                               }
10830-                       });
10831-
10832-                       t.chapters.show();
10833-               }
10834-       });
10835-
10836-
10837-
10838-       mejs.language = {
10839-               codes:  {
10840-                       af:'Afrikaans',
10841-                       sq:'Albanian',
10842-                       ar:'Arabic',
10843-                       be:'Belarusian',
10844-                       bg:'Bulgarian',
10845-                       ca:'Catalan',
10846-                       zh:'Chinese',
10847-                       'zh-cn':'Chinese Simplified',
10848-                       'zh-tw':'Chinese Traditional',
10849-                       hr:'Croatian',
10850-                       cs:'Czech',
10851-                       da:'Danish',
10852-                       nl:'Dutch',
10853-                       en:'English',
10854-                       et:'Estonian',
10855-                       tl:'Filipino',
10856-                       fi:'Finnish',
10857-                       fr:'French',
10858-                       gl:'Galician',
10859-                       de:'German',
10860-                       el:'Greek',
10861-                       ht:'Haitian Creole',
10862-                       iw:'Hebrew',
10863-                       hi:'Hindi',
10864-                       hu:'Hungarian',
10865-                       is:'Icelandic',
10866-                       id:'Indonesian',
10867-                       ga:'Irish',
10868-                       it:'Italian',
10869-                       ja:'Japanese',
10870-                       ko:'Korean',
10871-                       lv:'Latvian',
10872-                       lt:'Lithuanian',
10873-                       mk:'Macedonian',
10874-                       ms:'Malay',
10875-                       mt:'Maltese',
10876-                       no:'Norwegian',
10877-                       fa:'Persian',
10878-                       pl:'Polish',
10879-                       pt:'Portuguese',
10880-                       //'pt-pt':'Portuguese (Portugal)',
10881-                       ro:'Romanian',
10882-                       ru:'Russian',
10883-                       sr:'Serbian',
10884-                       sk:'Slovak',
10885-                       sl:'Slovenian',
10886-                       es:'Spanish',
10887-                       sw:'Swahili',
10888-                       sv:'Swedish',
10889-                       tl:'Tagalog',
10890-                       th:'Thai',
10891-                       tr:'Turkish',
10892-                       uk:'Ukrainian',
10893-                       vi:'Vietnamese',
10894-                       cy:'Welsh',
10895-                       yi:'Yiddish'
10896-               }
10897-       };
10898-
10899-       /*
10900-       Parses WebVVT format which should be formatted as
10901-       ================================
10902-       WEBVTT
10903-       
10904-       1
10905-       00:00:01,1 --> 00:00:05,000
10906-       A line of text
10907-
10908-       2
10909-       00:01:15,1 --> 00:02:05,000
10910-       A second line of text
10911-       
10912-       ===============================
10913-
10914-       Adapted from: http://www.delphiki.com/html5/playr
10915-       */
10916-       mejs.TrackFormatParser = {
10917-               webvvt: {
10918-                       // match start "chapter-" (or anythingelse)
10919-                       pattern_identifier: /^([a-zA-z]+-)?[0-9]+$/,
10920-                       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})?)(.*)$/,
10921-
10922-                       parse: function(trackText) {
10923-                               var
10924-                                       i = 0,
10925-                                       lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/),
10926-                                       entries = {text:[], times:[]},
10927-                                       timecode,
10928-                                       text;
10929-                               for(; i<lines.length; i++) {
10930-                                       // check for the line number
10931-                                       if (this.pattern_identifier.exec(lines[i])){
10932-                                               // skip to the next line where the start --> end time code should be
10933-                                               i++;
10934-                                               timecode = this.pattern_timecode.exec(lines[i]);                               
10935-
10936-                                               if (timecode && i<lines.length){
10937-                                                       i++;
10938-                                                       // grab all the (possibly multi-line) text that follows
10939-                                                       text = lines[i];
10940-                                                       i++;
10941-                                                       while(lines[i] !== '' && i<lines.length){
10942-                                                               text = text + '\n' + lines[i];
10943-                                                               i++;
10944-                                                       }
10945-                                                       text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
10946-                                                       // Text is in a different array so I can use .join
10947-                                                       entries.text.push(text);
10948-                                                       entries.times.push(
10949-                                                       {
10950-                                                               start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) == 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]),
10951-                                                               stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]),
10952-                                                               settings: timecode[5]
10953-                                                       });
10954-                                               }
10955-                                       }
10956-                               }
10957-                               return entries;
10958-                       }
10959-               },
10960-               // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
10961-               dfxp: {
10962-                       parse: function(trackText) {
10963-                               trackText = $(trackText).filter("tt");
10964-                               var
10965-                                       i = 0,
10966-                                       container = trackText.children("div").eq(0),
10967-                                       lines = container.find("p"),
10968-                                       styleNode = trackText.find("#" + container.attr("style")),
10969-                                       styles,
10970-                                       begin,
10971-                                       end,
10972-                                       text,
10973-                                       entries = {text:[], times:[]};
10974-
10975-
10976-                               if (styleNode.length) {
10977-                                       var attributes = styleNode.removeAttr("id").get(0).attributes;
10978-                                       if (attributes.length) {
10979-                                               styles = {};
10980-                                               for (i = 0; i < attributes.length; i++) {
10981-                                                       styles[attributes[i].name.split(":")[1]] = attributes[i].value;
10982-                                               }
10983-                                       }
10984-                               }
10985-
10986-                               for(i = 0; i<lines.length; i++) {
10987-                                       var style;
10988-                                       var _temp_times = {
10989-                                               start: null,
10990-                                               stop: null,
10991-                                               style: null
10992-                                       };
10993-                                       if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin"));
10994-                                       if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end"));
10995-                                       if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end"));
10996-                                       if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin"));
10997-                                       if (styles) {
10998-                                               style = "";
10999-                                               for (var _style in styles) {
11000-                                                       style += _style + ":" + styles[_style] + ";";                                   
11001-                                               }
11002-                                       }
11003-                                       if (style) _temp_times.style = style;
11004-                                       if (_temp_times.start == 0) _temp_times.start = 0.200;
11005-                                       entries.times.push(_temp_times);
11006-                                       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>");
11007-                                       entries.text.push(text);
11008-                                       if (entries.times.start == 0) entries.times.start = 2;
11009-                               }
11010-                               return entries;
11011-                       }
11012-               },
11013-               split2: function (text, regex) {
11014-                       // normal version for compliant browsers
11015-                       // see below for IE fix
11016-                       return text.split(regex);
11017-               }
11018-       };
11019-       
11020-       // test for browsers with bad String.split method.
11021-       if ('x\n\ny'.split(/\n/gi).length != 3) {
11022-               // add super slow IE8 and below version
11023-               mejs.TrackFormatParser.split2 = function(text, regex) {
11024-                       var
11025-                               parts = [],
11026-                               chunk = '',
11027-                               i;
11028-
11029-                       for (i=0; i<text.length; i++) {
11030-                               chunk += text.substring(i,i+1);
11031-                               if (regex.test(chunk)) {
11032-                                       parts.push(chunk.replace(regex, ''));
11033-                                       chunk = '';
11034-                               }
11035-                       }
11036-                       parts.push(chunk);
11037-                       return parts;
11038-               }
11039-       }       
11040-
11041-})(mejs.$);
11042-
11043-/*
11044-* ContextMenu Plugin
11045-*
11046-*
11047-*/
11048-
11049-(function($) {
11050-
11051-$.extend(mejs.MepDefaults,
11052-       { 'contextMenuItems': [
11053-               // demo of a fullscreen option
11054-               {
11055-                       render: function(player) {
11056-                               
11057-                               // check for fullscreen plugin
11058-                               if (typeof player.enterFullScreen == 'undefined')
11059-                                       return null;
11060-                       
11061-                               if (player.isFullScreen) {
11062-                                       return "Turn off Fullscreen";
11063-                               } else {
11064-                                       return "Go Fullscreen";
11065-                               }
11066-                       },
11067-                       click: function(player) {
11068-                               if (player.isFullScreen) {
11069-                                       player.exitFullScreen();
11070-                               } else {
11071-                                       player.enterFullScreen();
11072-                               }
11073-                       }
11074-               }
11075-               ,
11076-               // demo of a mute/unmute button
11077-               {
11078-                       render: function(player) {
11079-                               if (player.media.muted) {
11080-                                       return "Unmute";
11081-                               } else {
11082-                                       return "Mute";
11083-                               }
11084-                       },
11085-                       click: function(player) {
11086-                               if (player.media.muted) {
11087-                                       player.setMuted(false);
11088-                               } else {
11089-                                       player.setMuted(true);
11090-                               }
11091-                       }
11092-               },
11093-               // separator
11094-               {
11095-                       isSeparator: true
11096-               }
11097-               ,
11098-               // demo of simple download video
11099-               {
11100-                       render: function(player) {
11101-                               return "Download Video";
11102-                       },
11103-                       click: function(player) {
11104-                               window.location.href = player.media.currentSrc;
11105-                       }
11106-               }       
11107-       ]}
11108-);
11109-
11110-
11111-       $.extend(MediaElementPlayer.prototype, {
11112-               buildcontextmenu: function(player, controls, layers, media) {
11113-                       
11114-                       // create context menu
11115-                       player.contextMenu = $('<div class="mejs-contextmenu"></div>')
11116-                                                               .appendTo($('body'))
11117-                                                               .hide();
11118-                       
11119-                       // create events for showing context menu
11120-                       player.container.bind('contextmenu', function(e) {
11121-                               if (player.isContextMenuEnabled) {
11122-                                       e.preventDefault();
11123-                                       player.renderContextMenu(e.clientX-1, e.clientY-1);
11124-                                       return false;
11125-                               }
11126-                       });
11127-                       player.container.bind('click', function() {
11128-                               player.contextMenu.hide();
11129-                       });     
11130-                       player.contextMenu.bind('mouseleave', function() {
11131-
11132-                               //console.log('context hover out');
11133-                               player.startContextMenuTimer();
11134-                               
11135-                       });             
11136-               },
11137-               
11138-               isContextMenuEnabled: true,
11139-               enableContextMenu: function() {
11140-                       this.isContextMenuEnabled = true;
11141-               },
11142-               disableContextMenu: function() {
11143-                       this.isContextMenuEnabled = false;
11144-               },
11145-               
11146-               contextMenuTimeout: null,
11147-               startContextMenuTimer: function() {
11148-                       //console.log('startContextMenuTimer');
11149-                       
11150-                       var t = this;
11151-                       
11152-                       t.killContextMenuTimer();
11153-                       
11154-                       t.contextMenuTimer = setTimeout(function() {
11155-                               t.hideContextMenu();
11156-                               t.killContextMenuTimer();
11157-                       }, 750);
11158-               },
11159-               killContextMenuTimer: function() {
11160-                       var timer = this.contextMenuTimer;
11161-                       
11162-                       //console.log('killContextMenuTimer', timer);
11163-                       
11164-                       if (timer != null) {                           
11165-                               clearTimeout(timer);
11166-                               delete timer;
11167-                               timer = null;
11168-                       }
11169-               },             
11170-               
11171-               hideContextMenu: function() {
11172-                       this.contextMenu.hide();
11173-               },
11174-               
11175-               renderContextMenu: function(x,y) {
11176-                       
11177-                       // alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly
11178-                       var t = this,
11179-                               html = '',
11180-                               items = t.options.contextMenuItems;
11181-                       
11182-                       for (var i=0, il=items.length; i<il; i++) {
11183-                               
11184-                               if (items[i].isSeparator) {
11185-                                       html += '<div class="mejs-contextmenu-separator"></div>';
11186-                               } else {
11187-                               
11188-                                       var rendered = items[i].render(t);
11189-                               
11190-                                       // render can return null if the item doesn't need to be used at the moment
11191-                                       if (rendered != null) {
11192-                                               html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>';
11193-                                       }
11194-                               }
11195-                       }
11196-                       
11197-                       // position and show the context menu
11198-                       t.contextMenu
11199-                               .empty()
11200-                               .append($(html))
11201-                               .css({top:y, left:x})
11202-                               .show();
11203-                               
11204-                       // bind events
11205-                       t.contextMenu.find('.mejs-contextmenu-item').each(function() {
11206-                                                       
11207-                               // which one is this?
11208-                               var $dom = $(this),
11209-                                       itemIndex = parseInt( $dom.data('itemindex'), 10 ),
11210-                                       item = t.options.contextMenuItems[itemIndex];
11211-                               
11212-                               // bind extra functionality?
11213-                               if (typeof item.show != 'undefined')
11214-                                       item.show( $dom , t);
11215-                               
11216-                               // bind click action
11217-                               $dom.click(function() {                 
11218-                                       // perform click action
11219-                                       if (typeof item.click != 'undefined')
11220-                                               item.click(t);
11221-                                       
11222-                                       // close
11223-                                       t.contextMenu.hide();                           
11224-                               });                             
11225-                       });     
11226-                       
11227-                       // stop the controls from hiding
11228-                       setTimeout(function() {
11229-                               t.killControlsTimer('rev3');   
11230-                       }, 100);
11231-                                               
11232-               }
11233-       });
11234-       
11235-})(mejs.$);
11236-/**
11237- * Postroll plugin
11238- */
11239-(function($) {
11240-
11241-       $.extend(mejs.MepDefaults, {
11242-               postrollCloseText: mejs.i18n.t('Close')
11243-       });
11244-
11245-       // Postroll
11246-       $.extend(MediaElementPlayer.prototype, {
11247-               buildpostroll: function(player, controls, layers, media) {
11248-                       var
11249-                               t = this,
11250-                               postrollLink = t.container.find('link[rel="postroll"]').attr('href');
11251-
11252-                       if (typeof postrollLink !== 'undefined') {
11253-                               player.postroll =
11254-                                       $('<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();
11255-
11256-                               t.media.addEventListener('ended', function (e) {
11257-                                       $.ajax({
11258-                                               dataType: 'html',
11259-                                               url: postrollLink,
11260-                                               success: function (data, textStatus) {
11261-                                                       layers.find('.mejs-postroll-layer-content').html(data);
11262-                                               }
11263-                                       });
11264-                                       player.postroll.show();
11265-                               }, false);
11266-                       }
11267-               }
11268-       });
11269-
11270-})(mejs.$);
11271-
11272Index: wp-includes/mediaelement/mediaelement-and-player.min.js
11273===================================================================
11274--- wp-includes/mediaelement/mediaelement-and-player.min.js     (revision 23731)
11275+++ wp-includes/mediaelement/mediaelement-and-player.min.js     (working copy)
11276@@ -1,86 +0,0 @@
11277-/*!
11278-* MediaElement.js
11279-* HTML5 <video> and <audio> shim and player
11280-* http://mediaelementjs.com/
11281-*
11282-* Creates a JavaScript object that mimics HTML5 MediaElement API
11283-* for browsers that don't understand HTML5 or can't play the provided codec
11284-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
11285-*
11286-* Copyright 2010-2012, John Dyer (http://j.hn)
11287-* Dual licensed under the MIT or GPL Version 2 licenses.
11288-*
11289-*/
11290-var mejs=mejs||{};mejs.version="2.10.1";mejs.meIndex=0;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"]}]};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(h){var e=0,c,k="",a="",f,b=document.getElementsByTagName("script"),g=b.length,d=h.length;for(;e<g;e++){f=b[e].src;for(c=0;c<d;c++){a=h[c];if(f.indexOf(a)>-1){k=f.substring(0,f.indexOf(a));break}}if(k!==""){break}}return k},secondsToTimeCode:function(c,g,a,b){if(typeof a=="undefined"){a=false}else{if(typeof b=="undefined"){b=25}}var f=Math.floor(c/3600)%24,d=Math.floor(c/60)%60,h=Math.floor(c%60),e=Math.floor(((c%1)*b).toFixed(3)),j=((g||f>0)?(f<10?"0"+f:f)+":":"")+(d<10?"0"+d:d)+":"+(h<10?"0"+h:h)+((a)?":"+(e<10?"0"+e:e):"");return j},timeCodeToSeconds:function(c,k,d,e){if(typeof d=="undefined"){d=false}else{if(typeof e=="undefined"){e=25}}var f=c.split(":"),a=parseInt(f[0],10),b=parseInt(f[1],10),h=parseInt(f[2],10),j=0,g=0;if(d){j=parseInt(f[3])/e}g=(a*3600)+(b*60)+h+j;return g},convertSMPTEtoSeconds:function(a){if(typeof a!="string"){return false}a=a.replace(",",".");var d=0,b=(a.indexOf(".")!=-1)?a.split(".")[1].length:0,e=1;a=a.split(":").reverse();for(var c=0;c<a.length;c++){e=1;if(c>0){e=Math.pow(60,c)}d+=Number(a[c])*e}return Number(d.toFixed(b))},removeSwf:function(b){var a=document.getElementById(b);if(a&&a.nodeName=="OBJECT"){if(mejs.MediaFeatures.isIE){a.style.display="none";(function(){if(a.readyState==4){mejs.Utility.removeObjectInIE(b)}else{setTimeout(arguments.callee,10)}})()}else{a.parentNode.removeChild(a)}}},removeObjectInIE:function(c){var b=document.getElementById(c);if(b){for(var a in b){if(typeof b[a]=="function"){b[a]=null}}b.parentNode.removeChild(b)}}};mejs.PluginDetector={hasPluginVersion:function(c,a){var b=this.plugins[c];a[1]=a[1]||0;a[2]=a[2]||0;return(b[0]>a[0]||(b[0]==a[0]&&b[1]>a[1])||(b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]))?true:false},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(d,c,e,a,b){this.plugins[d]=this.detectPlugin(c,e,a,b)},detectPlugin:function(g,b,c,k){var h=[0,0,0],j,d,a;if(typeof(this.nav.plugins)!="undefined"&&typeof this.nav.plugins[g]=="object"){j=this.nav.plugins[g].description;if(j&&!(typeof this.nav.mimeTypes!="undefined"&&this.nav.mimeTypes[b]&&!this.nav.mimeTypes[b].enabledPlugin)){h=j.replace(g,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(d=0;d<h.length;d++){h[d]=parseInt(h[d].match(/\d+/),10)}}}else{if(typeof(window.ActiveXObject)!="undefined"){try{a=new ActiveXObject(c);if(a){h=k(a)}}catch(f){}}}return h}};mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(b){var a=[],c=b.GetVariable("$version");if(c){c=c.split(" ")[1].split(",");a=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]}return a});mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(b){var a=[0,0,0,0],c=function(f,d,e,g){while(f.isVersionSupported(d[0]+"."+d[1]+"."+d[2]+"."+d[3])){d[e]+=g}d[e]-=g};c(b,a,0,1);c(b,a,1,1);c(b,a,2,10000);c(b,a,2,1000);c(b,a,2,100);c(b,a,2,10);c(b,a,2,1);c(b,a,3,1);return a});mejs.MediaFeatures={init:function(){var e=this,h=document,g=mejs.PluginDetector.nav,c=mejs.PluginDetector.ua.toLowerCase(),b,a,f=["source","track","audio","video"];e.isiPad=(c.match(/ipad/i)!==null);e.isiPhone=(c.match(/iphone/i)!==null);e.isiOS=e.isiPhone||e.isiPad;e.isAndroid=(c.match(/android/i)!==null);e.isBustedAndroid=(c.match(/android 2\.[12]/)!==null);e.isIE=(g.appName.toLowerCase().indexOf("microsoft")!=-1);e.isChrome=(c.match(/chrome/gi)!==null);e.isFirefox=(c.match(/firefox/gi)!==null);e.isWebkit=(c.match(/webkit/gi)!==null);e.isGecko=(c.match(/gecko/gi)!==null)&&!e.isWebkit;e.isOpera=(c.match(/opera/gi)!==null);e.hasTouch=("ontouchstart" in window);e.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(b=0;b<f.length;b++){a=document.createElement(f[b])}e.supportsMediaTag=(typeof a.canPlayType!=="undefined"||e.isBustedAndroid);e.hasSemiNativeFullScreen=(typeof a.webkitEnterFullscreen!=="undefined");e.hasWebkitNativeFullScreen=(typeof a.webkitRequestFullScreen!=="undefined");e.hasMozNativeFullScreen=(typeof a.mozRequestFullScreen!=="undefined");e.hasTrueNativeFullScreen=(e.hasWebkitNativeFullScreen||e.hasMozNativeFullScreen);e.nativeFullScreenEnabled=e.hasTrueNativeFullScreen;if(e.hasMozNativeFullScreen){e.nativeFullScreenEnabled=a.mozFullScreenEnabled}if(this.isChrome){e.hasSemiNativeFullScreen=false}if(e.hasTrueNativeFullScreen){e.fullScreenEventName=(e.hasWebkitNativeFullScreen)?"webkitfullscreenchange":"mozfullscreenchange";e.isFullScreen=function(){if(a.mozRequestFullScreen){return h.mozFullScreen}else{if(a.webkitRequestFullScreen){return h.webkitIsFullScreen}}};e.requestFullScreen=function(d){if(e.hasWebkitNativeFullScreen){d.webkitRequestFullScreen()}else{if(e.hasMozNativeFullScreen){d.mozRequestFullScreen()}}};e.cancelFullScreen=function(){if(e.hasWebkitNativeFullScreen){document.webkitCancelFullScreen()}else{if(e.hasMozNativeFullScreen){document.mozCancelFullScreen()}}}}if(e.hasSemiNativeFullScreen&&c.match(/mac os x 10_5/i)){e.hasNativeFullScreen=false;e.hasSemiNativeFullScreen=false}}};mejs.MediaFeatures.init();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){var c=this.getElementsByTagName("source");while(c.length>0){this.removeChild(c[0])}if(typeof a=="string"){this.src=a}else{var b,d;for(b=0;b<a.length;b++){d=a[b];if(this.canPlayType(d.type)){this.src=d.src;break}}}},setVideoSize:function(b,a){this.width=b;this.height=a}};mejs.PluginMediaElement=function(b,c,a){this.id=b;this.pluginType=c;this.src=a;this.events={}};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){if(this.pluginType=="youtube"){this.pluginApi.playVideo()}else{this.pluginApi.playMedia()}this.paused=false}},load:function(){if(this.pluginApi!=null){if(this.pluginType=="youtube"){}else{this.pluginApi.loadMedia()}this.paused=false}},pause:function(){if(this.pluginApi!=null){if(this.pluginType=="youtube"){this.pluginApi.pauseVideo()}else{this.pluginApi.pauseMedia()}this.paused=true}},stop:function(){if(this.pluginApi!=null){if(this.pluginType=="youtube"){this.pluginApi.stopVideo()}else{this.pluginApi.stopMedia()}this.paused=true}},canPlayType:function(e){var d,c,a,b=mejs.plugins[this.pluginType];for(d=0;d<b.length;d++){a=b[d];if(mejs.PluginDetector.hasPluginVersion(this.pluginType,a.version)){for(c=0;c<a.types.length;c++){if(e==a.types[c]){return true}}}}return false},positionFullscreenButton:function(a,c,b){if(this.pluginApi!=null&&this.pluginApi.positionFullscreenButton){this.pluginApi.positionFullscreenButton(a,c,b)}},hideFullscreenButton:function(){if(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));this.src=mejs.Utility.absolutizeUrl(a);break}}}},setCurrentTime:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){this.pluginApi.seekTo(a)}else{this.pluginApi.setCurrentTime(a)}this.currentTime=a}},setVolume:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){this.pluginApi.setVolume(a*100)}else{this.pluginApi.setVolume(a)}this.volume=a}},setMuted:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){if(a){this.pluginApi.mute()}else{this.pluginApi.unMute()}this.muted=a;this.dispatchEvent("volumechange")}else{this.pluginApi.setMuted(a)}this.muted=a}},setVideoSize:function(b,a){if(this.pluginElement.style){this.pluginElement.style.width=b+"px";this.pluginElement.style.height=a+"px"}if(this.pluginApi!=null&&this.pluginApi.setVideoSize){this.pluginApi.setVideoSize(b,a)}},setFullscreen:function(a){if(this.pluginApi!=null&&this.pluginApi.setFullscreen){this.pluginApi.setFullscreen(a)}},enterFullScreen:function(){if(this.pluginApi!=null&&this.pluginApi.setFullscreen){this.setFullscreen(true)}},exitFullScreen:function(){if(this.pluginApi!=null&&this.pluginApi.setFullscreen){this.setFullscreen(false)}},addEventListener:function(b,c,a){this.events[b]=this.events[b]||[];this.events[b].push(c)},removeEventListener:function(a,c){if(!a){this.events={};return true}var b=this.events[a];if(!b){return true}if(!c){this.events[a]=[];return true}for(i=0;i<b.length;i++){if(b[i]===c){this.events[a].splice(i,1);return true}}return false},dispatchEvent:function(a){var c,b,d=this.events[a];if(d){b=Array.prototype.slice.call(arguments,1);for(c=0;c<d.length;c++){d[c].apply(null,b)}}},attributes:{},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)}};mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(c,a,b){this.pluginMediaElements[c]=a;this.htmlMediaElements[c]=b},initPlugin:function(c){var a=this.pluginMediaElements[c],b=this.htmlMediaElements[c];if(a){switch(a.pluginType){case"flash":a.pluginElement=a.pluginApi=document.getElementById(c);break;case"silverlight":a.pluginElement=document.getElementById(a.id);a.pluginApi=a.pluginElement.Content.MediaElementJS;break}if(a.pluginApi!=null&&a.success){a.success(a,b)}}},fireEvent:function(h,c,b){var g,f,a,d=this.pluginMediaElements[h];g={type:c,target:d};for(f in b){d[f]=b[f];g[f]=b[f]}a=b.bufferedTime||0;g.target.buffered=g.buffered={start:function(e){return 0},end:function(e){return a},length:1};d.dispatchEvent(g.type,g)}};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,success:function(){},error:function(){}};mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)};mejs.HtmlMediaElementShim={create:function(e,d){var n=mejs.MediaElementDefaults,k=(typeof(e)=="string")?document.getElementById(e):e,h=k.tagName.toLowerCase(),g=(h==="audio"||h==="video"),b=(g)?k.getAttribute("src"):k.getAttribute("href"),l=k.getAttribute("poster"),f=k.getAttribute("autoplay"),j=k.getAttribute("preload"),m=k.getAttribute("controls"),a,c;for(c in d){n[c]=d[c]}b=(typeof b=="undefined"||b===null||b=="")?null:b;l=(typeof l=="undefined"||l===null)?"":l;j=(typeof j=="undefined"||j===null||j==="false")?"none":j;f=!(typeof f=="undefined"||f===null||f==="false");m=!(typeof m=="undefined"||m===null||m==="false");a=this.determinePlayback(k,n,mejs.MediaFeatures.supportsMediaTag,g,b);a.url=(a.url!==null)?mejs.Utility.absolutizeUrl(a.url):"";if(a.method=="native"){if(mejs.MediaFeatures.isBustedAndroid){k.src=a.url;k.addEventListener("click",function(){k.play()},false)}return this.updateNative(a,n,f,j)}else{if(a.method!==""){return this.createPlugin(a,n,l,f,j,m)}else{this.createErrorMessage(a,n,l);return this}}},determinePlayback:function(t,c,h,v,f){var o=[],s,r,q,p,m,d,g={method:"",url:"",htmlMediaElement:t,isVideo:(t.tagName.toLowerCase()!="audio")},a,b,u,w,e;if(typeof c.type!="undefined"&&c.type!==""){if(typeof c.type=="string"){o.push({type:c.type,url:f})}else{for(s=0;s<c.type.length;s++){o.push({type:c.type[s],url:f})}}}else{if(f!==null){d=this.formatType(f,t.getAttribute("type"));o.push({type:d,url:f})}else{for(s=0;s<t.childNodes.length;s++){m=t.childNodes[s];if(m.nodeType==1&&m.tagName.toLowerCase()=="source"){f=m.getAttribute("src");d=this.formatType(f,m.getAttribute("type"));e=m.getAttribute("media");if(!e||!window.matchMedia||(window.matchMedia&&window.matchMedia(e).matches)){o.push({type:d,url:f})}}}}}if(!v&&o.length>0&&o[0].url!==null&&this.getTypeFromFile(o[0].url).indexOf("audio")>-1){g.isVideo=false}if(mejs.MediaFeatures.isBustedAndroid){t.canPlayType=function(j){return(j.match(/video\/(mp4|m4v)/gi)!==null)?"maybe":""}}if(h&&(c.mode==="auto"||c.mode==="auto_plugin"||c.mode==="native")){if(!v){w=document.createElement(g.isVideo?"video":"audio");t.parentNode.insertBefore(w,t);t.style.display="none";g.htmlMediaElement=t=w}for(s=0;s<o.length;s++){if(t.canPlayType(o[s].type).replace(/no/,"")!==""||t.canPlayType(o[s].type.replace(/mp3/,"mpeg")).replace(/no/,"")!==""){g.method="native";g.url=o[s].url;break}}if(g.method==="native"){if(g.url!==null){t.src=g.url}if(c.mode!=="auto_plugin"){return g}}}if(c.mode==="auto"||c.mode==="auto_plugin"||c.mode==="shim"){for(s=0;s<o.length;s++){d=o[s].type;for(r=0;r<c.plugins.length;r++){a=c.plugins[r];b=mejs.plugins[a];for(q=0;q<b.length;q++){u=b[q];if(u.version==null||mejs.PluginDetector.hasPluginVersion(a,u.version)){for(p=0;p<u.types.length;p++){if(d==u.types[p]){g.method=a;g.url=o[s].url;return g}}}}}}}if(c.mode==="auto_plugin"&&g.method==="native"){return g}if(g.method===""&&o.length>0){g.url=o[0].url}return g},formatType:function(a,c){var b;if(a&&!c){return this.getTypeFromFile(a)}else{if(c&&~c.indexOf(";")){return c.substr(0,c.indexOf(";"))}else{return c}}},getTypeFromFile:function(a){a=a.split("?")[0];var b=a.substring(a.lastIndexOf(".")+1);return(/(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi.test(b)?"video":"audio")+"/"+this.getTypeFromExtension(b)},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(c,b,g){var d=c.htmlMediaElement,a=document.createElement("div");a.className="me-cannotplay";try{a.style.width=d.width+"px";a.style.height=d.height+"px"}catch(f){}a.innerHTML=(g!=="")?'<a href="'+c.url+'"><img src="'+g+'" width="100%" height="100%" /></a>':'<a href="'+c.url+'"><span>'+mejs.i18n.t("Download File")+"</span></a>";d.parentNode.insertBefore(a,d);d.style.display="none";b.error(d)},createPlugin:function(n,a,c,e,d,h){var r=n.htmlMediaElement,m=1,l=1,s="me_"+n.method+"_"+(mejs.meIndex++),o=new mejs.PluginMediaElement(s,n.method,n.url),g=document.createElement("div"),b,p,j;o.tagName=r.tagName;for(var q=0;q<r.attributes.length;q++){var f=r.attributes[q];if(f.specified==true){o.setAttribute(f.name,f.value)}}p=r.parentNode;while(p!==null&&p.tagName.toLowerCase()!="body"){if(p.parentNode.tagName.toLowerCase()=="p"){p.parentNode.parentNode.insertBefore(p,p.parentNode);break}p=p.parentNode}if(n.isVideo){m=(a.videoWidth>0)?a.videoWidth:(r.getAttribute("width")!==null)?r.getAttribute("width"):a.defaultVideoWidth;l=(a.videoHeight>0)?a.videoHeight:(r.getAttribute("height")!==null)?r.getAttribute("height"):a.defaultVideoHeight;m=mejs.Utility.encodeUrl(m);l=mejs.Utility.encodeUrl(l)}else{if(a.enablePluginDebug){m=320;l=240}}o.success=a.success;mejs.MediaPluginBridge.registerPluginElement(s,o,r);g.className="me-plugin";g.id=s+"_container";if(n.isVideo){r.parentNode.insertBefore(g,r)}else{document.body.insertBefore(g,document.body.childNodes[0])}j=["id="+s,"isvideo="+((n.isVideo)?"true":"false"),"autoplay="+((e)?"true":"false"),"preload="+d,"width="+m,"startvolume="+a.startVolume,"timerrate="+a.timerRate,"flashstreamer="+a.flashStreamer,"height="+l];if(n.url!==null){if(n.method=="flash"){j.push("file="+mejs.Utility.encodeUrl(n.url))}else{j.push("file="+n.url)}}if(a.enablePluginDebug){j.push("debug=true")}if(a.enablePluginSmoothing){j.push("smoothing=true")}if(h){j.push("controls=true")}if(a.pluginVars){j=j.concat(a.pluginVars)}switch(n.method){case"silverlight":g.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+s+'" name="'+s+'" width="'+m+'" height="'+l+'"><param name="initParams" value="'+j.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="'+a.pluginPath+a.silverlightName+'" /></object>';break;case"flash":if(mejs.MediaFeatures.isIE){b=document.createElement("div");g.appendChild(b);b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+s+'" width="'+m+'" height="'+l+'"><param name="movie" value="'+a.pluginPath+a.flashName+"?x="+(new Date())+'" /><param name="flashvars" value="'+j.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{g.innerHTML='<embed id="'+s+'" name="'+s+'" 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="'+a.pluginPath+a.flashName+'" flashvars="'+j.join("&")+'" width="'+m+'" height="'+l+'"></embed>'}break;case"youtube":var k=n.url.substr(n.url.lastIndexOf("=")+1);youtubeSettings={container:g,containerId:g.id,pluginMediaElement:o,pluginId:s,videoId:k,height:l,width:m};if(mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])){mejs.YouTubeApi.createFlash(youtubeSettings)}else{mejs.YouTubeApi.enqueueIframe(youtubeSettings)}break;case"vimeo":o.vimeoid=n.url.substr(n.url.lastIndexOf("/")+1);g.innerHTML='<iframe src="http://player.vimeo.com/video/'+o.vimeoid+'?portrait=0&byline=0&title=0" width="'+m+'" height="'+l+'" frameborder="0"></iframe>';break}r.style.display="none";return o},updateNative:function(d,c,f,b){var e=d.htmlMediaElement,a;for(a in mejs.HtmlMediaElement){e[a]=mejs.HtmlMediaElement[a]}c.success(e,e);return e}};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(c){var b=c.pluginMediaElement,a=new YT.Player(c.containerId,{height:c.height,width:c.width,videoId:c.videoId,playerVars:{controls:0},events:{onReady:function(){c.pluginMediaElement.pluginApi=a;mejs.MediaPluginBridge.initPlugin(c.pluginId);setInterval(function(){mejs.YouTubeApi.createEvent(a,b,"timeupdate")},250)},onStateChange:function(d){mejs.YouTubeApi.handleStateChange(d.data,a,b)}}})},createEvent:function(d,c,b){var e={type:b,target:c};if(d&&d.getDuration){c.currentTime=e.currentTime=d.getCurrentTime();c.duration=e.duration=d.getDuration();e.paused=c.paused;e.ended=c.ended;e.muted=d.isMuted();e.volume=d.getVolume()/100;e.bytesTotal=d.getVideoBytesTotal();e.bufferedBytes=d.getVideoBytesLoaded();var a=e.bufferedBytes/e.bytesTotal*e.duration;e.target.buffered=e.buffered={start:function(f){return 0},end:function(f){return a},length:1}}c.dispatchEvent(e.type,e)},iFrameReady:function(){this.isLoaded=true;this.isIframeLoaded=true;while(this.iframeQueue.length>0){var a=this.iframeQueue.pop();this.createIframe(a)}},flashPlayers:{},createFlash:function(c){this.flashPlayers[c.pluginId]=c;var b,a="http://www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+c.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";if(mejs.MediaFeatures.isIE){b=document.createElement("div");c.container.appendChild(b);b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+c.pluginId+'" width="'+c.width+'" height="'+c.height+'"><param name="movie" value="'+a+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'}else{c.container.innerHTML='<object type="application/x-shockwave-flash" id="'+c.pluginId+'" data="'+a+'" width="'+c.width+'" height="'+c.height+'" style="visibility: visible; "><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>'}},flashReady:function(e){var c=this.flashPlayers[e],b=document.getElementById(e),a=c.pluginMediaElement;a.pluginApi=a.pluginElement=b;mejs.MediaPluginBridge.initPlugin(e);b.cueVideoById(c.videoId);var d=c.containerId+"_callback";window[d]=function(f){mejs.YouTubeApi.handleStateChange(f,b,a)};b.addEventListener("onStateChange",d);setInterval(function(){mejs.YouTubeApi.createEvent(b,a,"timeupdate")},250)},handleStateChange:function(c,b,a){switch(c){case -1:a.paused=true;a.ended=true;mejs.YouTubeApi.createEvent(b,a,"loadedmetadata");break;case 0:a.paused=false;a.ended=true;mejs.YouTubeApi.createEvent(b,a,"ended");break;case 1:a.paused=false;a.ended=false;mejs.YouTubeApi.createEvent(b,a,"play");mejs.YouTubeApi.createEvent(b,a,"playing");break;case 2:a.paused=true;a.ended=false;mejs.YouTubeApi.createEvent(b,a,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,a,"progress");break;case 5:break}}};function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}window.mejs=mejs;window.MediaElement=mejs.MediaElement;
11291-/*!
11292- * Adds Internationalization and localization to objects.
11293- *
11294- * What is the concept beyond i18n?
11295- *   http://en.wikipedia.org/wiki/Internationalization_and_localization
11296- *
11297- *
11298- * This file both i18n methods and locale which is used to translate
11299- * strings into other languages.
11300- *
11301- * Default translations are not available, you have to add them
11302- * through locale objects which are named exactly as the langcode
11303- * they stand for. The default language is always english (en).
11304- *
11305- *
11306- * Wrapper built to be able to attach the i18n object to
11307- * other objects without changing more than one line.
11308- *
11309- *
11310- * LICENSE:
11311- *
11312- *   The i18n file uses methods from the Drupal project (drupal.js):
11313- *     - i18n.methods.t() (modified)
11314- *     - i18n.methods.checkPlain() (full copy)
11315- *     - i18n.methods.formatString() (full copy)
11316- *
11317- *   The Drupal project is (like mediaelementjs) licensed under GPLv2.
11318- *    - http://drupal.org/licensing/faq/#q1
11319- *    - https://github.com/johndyer/mediaelement
11320- *    - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11321- *
11322- *
11323- * @author
11324- *   Tim Latz (latz.tim@gmail.com)
11325- *
11326- * @see
11327- *   me-i18n-locale.js
11328- *
11329- * @params
11330- *  - $       - zepto || jQuery  ..
11331- *  - context - document, iframe ..
11332- *  - exports - CommonJS, window ..
11333- *
11334- */
11335-(function(d,b,a,e){var c={locale:{strings:{}},methods:{}};c.locale.getLanguage=function(){return{language:navigator.language}};c.locale.INIT_LANGUAGE=c.locale.getLanguage();c.methods.checkPlain=function(j){var h,g,f={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};j=String(j);for(h in f){if(f.hasOwnProperty(h)){g=new RegExp(h,"g");j=j.replace(g,f[h])}}return j};c.methods.formatString=function(h,f){for(var g in f){switch(g.charAt(0)){case"@":f[g]=c.methods.checkPlain(f[g]);break;case"!":break;case"%":default:f[g]='<em class="placeholder">'+c.methods.checkPlain(f[g])+"</em>";break}h=h.replace(g,f[g])}return h};c.methods.t=function(h,g,f){if(c.locale.strings&&c.locale.strings[f.context]&&c.locale.strings[f.context][h]){h=c.locale.strings[f.context][h]}if(g){h=c.methods.formatString(h,g)}return h};c.t=function(j,g,f){if(typeof j==="string"&&j.length>0){var h=c.locale.getLanguage();f=f||{context:h.language};return c.methods.t(j,g,f)}else{throw {name:"InvalidArgumentException",message:"First argument is either not a string or empty."}}};a.i18n=c}(jQuery,document,mejs));
11336-/*!
11337- * This is a i18n.locale language object.
11338- *
11339- *<de> German translation by Tim Latz, latz.tim@gmail.com
11340- *
11341- * @author
11342- *   Tim Latz (latz.tim@gmail.com)
11343- *
11344- * @see
11345- *   me-i18n.js
11346- *
11347- * @params
11348- *  - exports - CommonJS, window ..
11349- */
11350-(function(a,b){a.de={Fullscreen:"Vollbild","Go Fullscreen":"Vollbild an","Turn off Fullscreen":"Vollbild aus",Close:"Schließen"}}(mejs.i18n.locale.strings));
11351-/*!
11352- * MediaElementPlayer
11353- * http://mediaelementjs.com/
11354- *
11355- * Creates a controller bar for HTML5 <video> add <audio> tags
11356- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
11357- *
11358- * Copyright 2010-2012, John Dyer (http://j.hn/)
11359- * Dual licensed under the MIT or GPL Version 2 licenses.
11360- *
11361- */
11362-if(typeof jQuery!="undefined"){mejs.$=jQuery}else{if(typeof ender!="undefined"){mejs.$=ender}}(function(a){mejs.MepDefaults={poster:"",defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(b){return(b.duration*0.05)},defaultSeekForwardInterval:function(b){return(b.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,iPhoneUseNativeControls:false,AndroidUseNativeControls:false,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:true,enableKeyboard:true,pauseOtherPlayers:true,keyActions:[{keys:[32,179],action:function(b,c){if(c.paused||c.ended){c.play()}else{c.pause()}}},{keys:[38],action:function(b,d){var c=Math.min(d.volume+0.1,1);d.setVolume(c)}},{keys:[40],action:function(b,d){var c=Math.max(d.volume-0.1,0);d.setVolume(c)}},{keys:[37,227],action:function(b,d){if(!isNaN(d.duration)&&d.duration>0){if(b.isVideo){b.showControls();b.startControlsTimer()}var c=Math.max(d.currentTime-b.options.defaultSeekBackwardInterval(d),0);d.setCurrentTime(c)}}},{keys:[39,228],action:function(b,d){if(!isNaN(d.duration)&&d.duration>0){if(b.isVideo){b.showControls();b.startControlsTimer()}var c=Math.min(d.currentTime+b.options.defaultSeekForwardInterval(d),d.duration);d.setCurrentTime(c)}}},{keys:[70],action:function(b,c){if(typeof b.enterFullScreen!="undefined"){if(b.isFullScreen){b.exitFullScreen()}else{b.enterFullScreen()}}}}]};mejs.mepIndex=0;mejs.players=[];mejs.MediaElementPlayer=function(c,d){if(!(this instanceof mejs.MediaElementPlayer)){return new mejs.MediaElementPlayer(c,d)}var b=this;b.$media=b.$node=a(c);b.node=b.media=b.$media[0];if(typeof b.node.player!="undefined"){return b.node.player}else{b.node.player=b}if(typeof d=="undefined"){d=b.$node.data("mejsoptions")}b.options=a.extend({},mejs.MepDefaults,d);mejs.players.push(b);b.init();return b};mejs.MediaElementPlayer.prototype={hasFocus:false,controlsAreVisible:true,init:function(){var d=this,e=mejs.MediaFeatures,h=a.extend(true,{},d.options,{success:function(k,j){d.meReady(k,j)},error:function(j){d.handleError(j)}}),c=d.media.tagName.toLowerCase();d.isDynamic=(c!=="audio"&&c!=="video");if(d.isDynamic){d.isVideo=d.options.isVideo}else{d.isVideo=(c!=="audio"&&d.options.isVideo)}if((e.isiPad&&d.options.iPadUseNativeControls)||(e.isiPhone&&d.options.iPhoneUseNativeControls)){d.$media.attr("controls","controls");if(e.isiPad&&d.media.getAttribute("autoplay")!==null){d.media.load();d.media.play()}}else{if(e.isAndroid&&d.AndroidUseNativeControls){}else{d.$media.removeAttr("controls");d.id="mep_"+mejs.mepIndex++;d.container=a('<div id="'+d.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(d.$media[0].className).insertBefore(d.$media);d.container.addClass((e.isAndroid?"mejs-android ":"")+(e.isiOS?"mejs-ios ":"")+(e.isiPad?"mejs-ipad ":"")+(e.isiPhone?"mejs-iphone ":"")+(d.isVideo?"mejs-video ":"mejs-audio "));if(e.isiOS){var g=d.$media.clone();d.container.find(".mejs-mediaelement").append(g);d.$media.remove();d.$node=d.$media=g;d.node=d.media=g[0]}else{d.container.find(".mejs-mediaelement").append(d.$media)}d.controls=d.container.find(".mejs-controls");d.layers=d.container.find(".mejs-layers");var f=(d.isVideo?"video":"audio"),b=f.substring(0,1).toUpperCase()+f.substring(1);if(d.options[f+"Width"]>0||d.options[f+"Width"].toString().indexOf("%")>-1){d.width=d.options[f+"Width"]}else{if(d.media.style.width!==""&&d.media.style.width!==null){d.width=d.media.style.width}else{if(d.media.getAttribute("width")!==null){d.width=d.$media.attr("width")}else{d.width=d.options["default"+b+"Width"]}}}if(d.options[f+"Height"]>0||d.options[f+"Height"].toString().indexOf("%")>-1){d.height=d.options[f+"Height"]}else{if(d.media.style.height!==""&&d.media.style.height!==null){d.height=d.media.style.height}else{if(d.$media[0].getAttribute("height")!==null){d.height=d.$media.attr("height")}else{d.height=d.options["default"+b+"Height"]}}}d.setPlayerSize(d.width,d.height);h.pluginWidth=d.height;h.pluginHeight=d.width}}mejs.MediaElement(d.$media[0],h)},showControls:function(b){var c=this;b=typeof b=="undefined"||b;if(c.controlsAreVisible){return}if(b){c.controls.css("visibility","visible").stop(true,true).fadeIn(200,function(){c.controlsAreVisible=true});c.container.find(".mejs-control").css("visibility","visible").stop(true,true).fadeIn(200,function(){c.controlsAreVisible=true})}else{c.controls.css("visibility","visible").css("display","block");c.container.find(".mejs-control").css("visibility","visible").css("display","block");c.controlsAreVisible=true}c.setControlsSize()},hideControls:function(b){var c=this;b=typeof b=="undefined"||b;if(!c.controlsAreVisible){return}if(b){c.controls.stop(true,true).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block");c.controlsAreVisible=false});c.container.find(".mejs-control").stop(true,true).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block")})}else{c.controls.css("visibility","hidden").css("display","block");c.container.find(".mejs-control").css("visibility","hidden").css("display","block");c.controlsAreVisible=false}},controlsTimer:null,startControlsTimer:function(c){var b=this;c=typeof c!="undefined"?c:1500;b.killControlsTimer("start");b.controlsTimer=setTimeout(function(){b.hideControls();b.killControlsTimer("hide")},c)},killControlsTimer:function(c){var b=this;if(b.controlsTimer!==null){clearTimeout(b.controlsTimer);delete b.controlsTimer;b.controlsTimer=null}},controlsEnabled:true,disableControls:function(){var b=this;b.killControlsTimer();b.hideControls(false);this.controlsEnabled=false},enableControls:function(){var b=this;b.showControls(false);b.controlsEnabled=true},meReady:function(c,f){var k=this,j=mejs.MediaFeatures,g=f.getAttribute("autoplay"),d=!(typeof g=="undefined"||g===null||g==="false"),b,l;if(k.created){return}else{k.created=true}k.media=c;k.domNode=f;if(!(j.isAndroid&&k.options.AndroidUseNativeControls)&&!(j.isiPad&&k.options.iPadUseNativeControls)&&!(j.isiPhone&&k.options.iPhoneUseNativeControls)){k.buildposter(k,k.controls,k.layers,k.media);k.buildkeyboard(k,k.controls,k.layers,k.media);k.buildoverlays(k,k.controls,k.layers,k.media);k.findTracks();for(b in k.options.features){l=k.options.features[b];if(k["build"+l]){try{k["build"+l](k,k.controls,k.layers,k.media)}catch(h){}}}k.container.trigger("controlsready");k.setPlayerSize(k.width,k.height);k.setControlsSize();if(k.isVideo){if(mejs.MediaFeatures.hasTouch){k.$media.bind("touchstart",function(){if(k.controlsAreVisible){k.hideControls(false)}else{if(k.controlsEnabled){k.showControls(false)}}})}else{k.media.addEventListener("click",function(){if(k.media.paused){k.media.play()}else{k.media.pause()}});k.container.bind("mouseenter mouseover",function(){if(k.controlsEnabled){if(!k.options.alwaysShowControls){k.killControlsTimer("enter");k.showControls();k.startControlsTimer(2500)}}}).bind("mousemove",function(){if(k.controlsEnabled){if(!k.controlsAreVisible){k.showControls()}if(!k.options.alwaysShowControls){k.startControlsTimer(2500)}}}).bind("mouseleave",function(){if(k.controlsEnabled){if(!k.media.paused&&!k.options.alwaysShowControls){k.startControlsTimer(1000)}}})}if(d&&!k.options.alwaysShowControls){k.hideControls()}if(k.options.enableAutosize){k.media.addEventListener("loadedmetadata",function(m){if(k.options.videoHeight<=0&&k.domNode.getAttribute("height")===null&&!isNaN(m.target.videoHeight)){k.setPlayerSize(m.target.videoWidth,m.target.videoHeight);k.setControlsSize();k.media.setVideoSize(m.target.videoWidth,m.target.videoHeight)}},false)}}c.addEventListener("play",function(){for(var m=0,e=mejs.players.length;m<e;m++){var n=mejs.players[m];if(n.id!=k.id&&k.options.pauseOtherPlayers&&!n.paused&&!n.ended){n.pause()}n.hasFocus=false}k.hasFocus=true},false);k.media.addEventListener("ended",function(m){try{k.media.setCurrentTime(0)}catch(n){}k.media.pause();if(k.setProgressRail){k.setProgressRail()}if(k.setCurrentRail){k.setCurrentRail()}if(k.options.loop){k.media.play()}else{if(!k.options.alwaysShowControls&&k.controlsEnabled){k.showControls()}}},false);k.media.addEventListener("loadedmetadata",function(m){if(k.updateDuration){k.updateDuration()}if(k.updateCurrent){k.updateCurrent()}if(!k.isFullScreen){k.setPlayerSize(k.width,k.height);k.setControlsSize()}},false);setTimeout(function(){k.setPlayerSize(k.width,k.height);k.setControlsSize()},50);a(window).resize(function(){if(!(k.isFullScreen||(mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen))){k.setPlayerSize(k.width,k.height)}k.setControlsSize()});if(k.media.pluginType=="youtube"){k.container.find(".mejs-overlay-play").hide()}}if(d&&c.pluginType=="native"){c.load();c.play()}if(k.options.success){if(typeof k.options.success=="string"){window[k.options.success](k.media,k.domNode,k)}else{k.options.success(k.media,k.domNode,k)}}},handleError:function(c){var b=this;b.controls.hide();if(b.options.error){b.options.error(c)}},setPlayerSize:function(g,b){var e=this;if(typeof g!="undefined"){e.width=g}if(typeof b!="undefined"){e.height=b}if(e.height.toString().indexOf("%")>0||e.$node.css("max-width")==="100%"||(e.$node[0].currentStyle&&e.$node[0].currentStyle.maxWidth==="100%")){var h=e.isVideo?((e.media.videoWidth&&e.media.videoWidth>0)?e.media.videoWidth:e.options.defaultVideoWidth):e.options.defaultAudioWidth,d=e.isVideo?((e.media.videoHeight&&e.media.videoHeight>0)?e.media.videoHeight:e.options.defaultVideoHeight):e.options.defaultAudioHeight,f=e.container.parent().closest(":visible").width(),c=parseInt(f*d/h,10);if(e.container.parent()[0].tagName.toLowerCase()==="body"){f=a(window).width();c=a(window).height()}if(c!=0){e.container.width(f).height(c);e.$media.width("100%").height("100%");e.container.find("object, embed, iframe").width("100%").height("100%");if(e.isVideo){if(e.media.setVideoSize){e.media.setVideoSize(f,c)}}e.layers.children(".mejs-layer").width("100%").height("100%")}}else{e.container.width(e.width).height(e.height);e.layers.children(".mejs-layer").width(e.width).height(e.height)}},setControlsSize:function(){var c=this,g=0,j=0,h=c.controls.find(".mejs-time-rail"),e=c.controls.find(".mejs-time-total"),f=c.controls.find(".mejs-time-current"),b=c.controls.find(".mejs-time-loaded"),d=h.siblings();if(c.options&&!c.options.autosizeProgress){j=parseInt(h.css("width"))}if(j===0||!j){d.each(function(){if(a(this).css("position")!="absolute"){g+=a(this).outerWidth(true)}});j=c.controls.width()-g-(h.outerWidth(true)-h.width())}h.width(j);e.width(j-(e.outerWidth(true)-e.width()));if(c.setProgressRail){c.setProgressRail()}if(c.setCurrentRail){c.setCurrentRail()}},buildposter:function(e,b,g,f){var d=this,h=a('<div class="mejs-poster mejs-layer"></div>').appendTo(g),c=e.$media.attr("poster");if(e.options.poster!==""){c=e.options.poster}if(c!==""&&c!=null){d.setPoster(c)}else{h.hide()}f.addEventListener("play",function(){h.hide()},false)},setPoster:function(c){var d=this,e=d.container.find(".mejs-poster"),b=e.find("img");if(b.length==0){b=a('<img width="100%" height="100%" />').appendTo(e)}b.attr("src",c)},buildoverlays:function(e,b,g,f){if(!e.isVideo){return}var h=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(g),c=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(g),d=a('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(g).click(function(){if(f.paused){f.play()}else{f.pause()}});f.addEventListener("play",function(){d.hide();h.hide();b.find(".mejs-time-buffering").hide();c.hide()},false);f.addEventListener("playing",function(){d.hide();h.hide();b.find(".mejs-time-buffering").hide();c.hide()},false);f.addEventListener("seeking",function(){h.show();b.find(".mejs-time-buffering").show()},false);f.addEventListener("seeked",function(){h.hide();b.find(".mejs-time-buffering").hide()},false);f.addEventListener("pause",function(){if(!mejs.MediaFeatures.isiPhone){d.show()}},false);f.addEventListener("waiting",function(){h.show();b.find(".mejs-time-buffering").show()},false);f.addEventListener("loadeddata",function(){h.show();b.find(".mejs-time-buffering").show()},false);f.addEventListener("canplay",function(){h.hide();b.find(".mejs-time-buffering").hide()},false);f.addEventListener("error",function(){h.hide();b.find(".mejs-time-buffering").hide();c.show();c.find("mejs-overlay-error").html("Error loading this resource")},false)},buildkeyboard:function(d,b,f,e){var c=this;a(document).keydown(function(n){if(d.hasFocus&&d.options.enableKeyboard){for(var m=0,g=d.options.keyActions.length;m<g;m++){var l=d.options.keyActions[m];for(var h=0,k=l.keys.length;h<k;h++){if(n.keyCode==l.keys[h]){n.preventDefault();l.action(d,e,n.keyCode);return false}}}}return true});a(document).click(function(g){if(a(g.target).closest(".mejs-container").length==0){d.hasFocus=false}})},findTracks:function(){var b=this,c=b.$media.find("track");b.tracks=[];c.each(function(e,d){d=a(d);b.tracks.push({srclang:d.attr("srclang").toLowerCase(),src:d.attr("src"),kind:d.attr("kind"),label:d.attr("label")||"",entries:[],isLoaded:false})})},changeSkin:function(b){this.container[0].className="mejs-container "+b;this.setPlayerSize(this.width,this.height);this.setControlsSize()},play:function(){this.media.play()},pause:function(){this.media.pause()},load:function(){this.media.load()},setMuted:function(b){this.media.setMuted(b)},setCurrentTime:function(b){this.media.setCurrentTime(b)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(b){this.media.setVolume(b)},getVolume:function(){return this.media.volume},setSrc:function(b){this.media.setSrc(b)},remove:function(){var b=this;if(b.media.pluginType==="flash"){b.media.remove()}else{if(b.media.pluginType==="native"){b.$media.prop("controls",true)}}if(!b.isDynamic){b.$node.insertBefore(b.container)}b.container.remove()}};if(typeof jQuery!="undefined"){jQuery.fn.mediaelementplayer=function(b){return this.each(function(){new mejs.MediaElementPlayer(this,b)})}}a(document).ready(function(){a(".mejs-player").mediaelementplayer()});window.MediaElementPlayer=mejs.MediaElementPlayer})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{playpauseText:"Play/Pause"});a.extend(MediaElementPlayer.prototype,{buildplaypause:function(d,b,g,f){var c=this,e=a('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+c.id+'" title="'+c.options.playpauseText+'"></button></div>').appendTo(b).click(function(h){h.preventDefault();if(f.paused){f.play()}else{f.pause()}return false});f.addEventListener("play",function(){e.removeClass("mejs-play").addClass("mejs-pause")},false);f.addEventListener("playing",function(){e.removeClass("mejs-play").addClass("mejs-pause")},false);f.addEventListener("pause",function(){e.removeClass("mejs-pause").addClass("mejs-play")},false);f.addEventListener("paused",function(){e.removeClass("mejs-pause").addClass("mejs-play")},false)}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{stopText:"Stop"});a.extend(MediaElementPlayer.prototype,{buildstop:function(e,b,g,f){var d=this,c=a('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+d.id+'" title="'+d.options.stopText+'"></button></div>').appendTo(b).click(function(){if(!f.paused){f.pause()}if(f.currentTime>0){f.setCurrentTime(0);f.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));b.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0));g.find(".mejs-poster").show()}})}})})(mejs.$);(function(a){a.extend(MediaElementPlayer.prototype,{buildprogress:function(n,o,f,c){a('<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(o);o.find(".mejs-time-buffering").hide();var p=this,l=o.find(".mejs-time-total"),g=o.find(".mejs-time-loaded"),k=o.find(".mejs-time-current"),j=o.find(".mejs-time-handle"),m=o.find(".mejs-time-float"),b=o.find(".mejs-time-float-current"),e=function(u){var q=u.pageX,v=l.offset(),s=l.outerWidth(true),r=0,t=0,w=q-v.left;if(q>v.left&&q<=s+v.left&&c.duration){r=((q-v.left)/s);t=(r<=0.02)?0:r*c.duration;if(h){c.setCurrentTime(t)}if(!mejs.MediaFeatures.hasTouch){m.css("left",w);b.html(mejs.Utility.secondsToTimeCode(t));m.show()}}},h=false,d=false;l.bind("mousedown",function(q){if(q.which===1){h=true;e(q);a(document).bind("mousemove.dur",function(r){e(r)}).bind("mouseup.dur",function(r){h=false;m.hide();a(document).unbind(".dur")});return false}}).bind("mouseenter",function(q){d=true;a(document).bind("mousemove.dur",function(r){e(r)});if(!mejs.MediaFeatures.hasTouch){m.show()}}).bind("mouseleave",function(q){d=false;if(!h){a(document).unbind(".dur");m.hide()}});c.addEventListener("progress",function(q){n.setProgressRail(q);n.setCurrentRail(q)},false);c.addEventListener("timeupdate",function(q){n.setProgressRail(q);n.setCurrentRail(q)},false);p.loaded=g;p.total=l;p.current=k;p.handle=j},setProgressRail:function(f){var b=this,d=(f!=undefined)?f.target:b.media,c=null;if(d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration){c=d.buffered.end(0)/d.duration}else{if(d&&d.bytesTotal!=undefined&&d.bytesTotal>0&&d.bufferedBytes!=undefined){c=d.bufferedBytes/d.bytesTotal}else{if(f&&f.lengthComputable&&f.total!=0){c=f.loaded/f.total}}}if(c!==null){c=Math.min(1,Math.max(0,c));if(b.loaded&&b.total){b.loaded.width(b.total.width()*c)}}},setCurrentRail:function(){var b=this;if(b.media.currentTime!=undefined&&b.media.duration){if(b.total&&b.handle){var d=b.total.width()*b.media.currentTime/b.media.duration,c=d-(b.handle.outerWidth(true)/2);b.current.width(d);b.handle.css("left",c)}}}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:" <span> | </span> "});a.extend(MediaElementPlayer.prototype,{buildcurrent:function(d,b,f,e){var c=this;a('<div class="mejs-time"><span class="mejs-currenttime">'+(d.options.alwaysShowHours?"00:":"")+(d.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(b);c.currenttime=c.controls.find(".mejs-currenttime");e.addEventListener("timeupdate",function(){d.updateCurrent()},false)},buildduration:function(d,b,f,e){var c=this;if(b.children().last().find(".mejs-currenttime").length>0){a(c.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(c.options.duration>0?mejs.Utility.secondsToTimeCode(c.options.duration,c.options.alwaysShowHours||c.media.duration>3600,c.options.showTimecodeFrameCount,c.options.framesPerSecond||25):((d.options.alwaysShowHours?"00:":"")+(d.options.showTimecodeFrameCount?"00:00:00":"00:00")))+"</span>").appendTo(b.find(".mejs-time"))}else{b.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container");a('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(c.options.duration>0?mejs.Utility.secondsToTimeCode(c.options.duration,c.options.alwaysShowHours||c.media.duration>3600,c.options.showTimecodeFrameCount,c.options.framesPerSecond||25):((d.options.alwaysShowHours?"00:":"")+(d.options.showTimecodeFrameCount?"00:00:00":"00:00")))+"</span></div>").appendTo(b)}c.durationD=c.controls.find(".mejs-duration");e.addEventListener("timeupdate",function(){d.updateDuration()},false)},updateCurrent:function(){var b=this;if(b.currenttime){b.currenttime.html(mejs.Utility.secondsToTimeCode(b.media.currentTime,b.options.alwaysShowHours||b.media.duration>3600,b.options.showTimecodeFrameCount,b.options.framesPerSecond||25))}},updateDuration:function(){var b=this;if(b.media.duration&&b.durationD){b.durationD.html(mejs.Utility.secondsToTimeCode(b.media.duration,b.options.alwaysShowHours,b.options.showTimecodeFrameCount,b.options.framesPerSecond||25))}}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{muteText:"Mute Toggle",hideVolumeOnTouchDevices:true,audioVolume:"horizontal",videoVolume:"vertical"});a.extend(MediaElementPlayer.prototype,{buildvolume:function(n,o,j,d){if(mejs.MediaFeatures.hasTouch&&this.options.hideVolumeOnTouchDevices){return}var p=this,l=(p.isVideo)?p.options.videoVolume:p.options.audioVolume,f=(l=="horizontal")?a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+p.id+'" title="'+p.options.muteText+'"></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(o):a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+p.id+'" title="'+p.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(o),q=p.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),b=p.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),h=p.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),g=p.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),m=function(w,x){if(!q.is(":visible")&&typeof x=="undefined"){q.show();m(w,true);q.hide();return}w=Math.max(0,w);w=Math.min(w,1);if(w==0){f.removeClass("mejs-mute").addClass("mejs-unmute")}else{f.removeClass("mejs-unmute").addClass("mejs-mute")}if(l=="vertical"){var u=b.height(),t=b.position(),s=u-(u*w);g.css("top",Math.round(t.top+s-(g.height()/2)));h.height(u-s);h.css("top",t.top+s)}else{var r=b.width(),t=b.position(),v=r*w;g.css("left",Math.round(t.left+v-(g.width()/2)));h.width(Math.round(v))}},c=function(w){var u=null,s=b.offset();if(l=="vertical"){var t=b.height(),r=parseInt(b.css("top").replace(/px/,""),10),v=w.pageY-s.top;u=(t-v)/t;if(s.top==0||s.left==0){return}}else{var y=b.width(),x=w.pageX-s.left;u=x/y}u=Math.max(0,u);u=Math.min(u,1);m(u);if(u==0){d.setMuted(true)}else{d.setMuted(false)}d.setVolume(u)},k=false,e=false;f.hover(function(){q.show();e=true},function(){e=false;if(!k&&l=="vertical"){q.hide()}});q.bind("mouseover",function(){e=true}).bind("mousedown",function(r){c(r);a(document).bind("mousemove.vol",function(s){c(s)}).bind("mouseup.vol",function(){k=false;a(document).unbind(".vol");if(!e&&l=="vertical"){q.hide()}});k=true;return false});f.find("button").click(function(){d.setMuted(!d.muted)});d.addEventListener("volumechange",function(r){if(!k){if(d.muted){m(0);f.removeClass("mejs-mute").addClass("mejs-unmute")}else{m(d.volume);f.removeClass("mejs-unmute").addClass("mejs-mute")}}},false);if(p.container.is(":visible")){m(n.options.startVolume);if(d.pluginType==="native"){d.setVolume(n.options.startVolume)}}}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{usePluginFullScreen:true,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")});a.extend(MediaElementPlayer.prototype,{isFullScreen:false,isNativeFullScreen:false,docStyleOverflow:null,isInIframe:false,buildfullscreen:function(q,p,g,f){if(!q.isVideo){return}q.isInIframe=(window.location!=window.parent.location);if(mejs.MediaFeatures.hasTrueNativeFullScreen){var u=null;if(mejs.MediaFeatures.hasMozNativeFullScreen){u=a(document)}else{u=q.container}u.bind(mejs.MediaFeatures.fullScreenEventName,function(t){if(mejs.MediaFeatures.isFullScreen()){q.isNativeFullScreen=true;q.setControlsSize()}else{q.isNativeFullScreen=false;q.exitFullScreen()}})}var o=this,e=0,c=0,n=q.container,b=a('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+o.id+'" title="'+o.options.fullscreenText+'"></button></div>').appendTo(p);if(o.media.pluginType==="native"||(!o.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)){b.click(function(){var t=(mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen())||q.isFullScreen;if(t){q.exitFullScreen()}else{q.enterFullScreen()}})}else{var m=null,h=(function(){var v=document.createElement("x"),w=document.documentElement,x=window.getComputedStyle,t;if(!("pointerEvents" in v.style)){return false}v.style.pointerEvents="auto";v.style.pointerEvents="x";w.appendChild(v);t=x&&x(v,"").pointerEvents==="auto";w.removeChild(v);return !!t})();if(h&&!mejs.MediaFeatures.isOpera){var l=false,r=function(){if(l){j.hide();d.hide();k.hide();b.css("pointer-events","");o.controls.css("pointer-events","");l=false}},j=a('<div class="mejs-fullscreen-hover" />').appendTo(o.container).mouseover(r),d=a('<div class="mejs-fullscreen-hover"  />').appendTo(o.container).mouseover(r),k=a('<div class="mejs-fullscreen-hover"  />').appendTo(o.container).mouseover(r),s=function(){var v={position:"absolute",top:0,left:0};j.css(v);d.css(v);k.css(v);j.width(o.container.width()).height(o.container.height()-o.controls.height());var t=b.offset().left-o.container.offset().left;fullScreenBtnWidth=b.outerWidth(true);d.width(t).height(o.controls.height()).css({top:o.container.height()-o.controls.height()});k.width(o.container.width()-t-fullScreenBtnWidth).height(o.controls.height()).css({top:o.container.height()-o.controls.height(),left:t+fullScreenBtnWidth})};a(document).resize(function(){s()});b.mouseover(function(){if(!o.isFullScreen){var t=b.offset(),v=q.container.offset();f.positionFullscreenButton(t.left-v.left,t.top-v.top,false);b.css("pointer-events","none");o.controls.css("pointer-events","none");j.show();k.show();d.show();s();l=true}});f.addEventListener("fullscreenchange",function(t){r()})}else{b.mouseover(function(){if(m!==null){clearTimeout(m);delete m}var t=b.offset(),v=q.container.offset();f.positionFullscreenButton(t.left-v.left,t.top-v.top,true)}).mouseout(function(){if(m!==null){clearTimeout(m);delete m}m=setTimeout(function(){f.hideFullscreenButton()},1500)})}}q.fullscreenBtn=b;a(document).bind("keydown",function(t){if(((mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen())||o.isFullScreen)&&t.keyCode==27){q.exitFullScreen()}})},enterFullScreen:function(){var c=this;if(c.media.pluginType!=="native"&&(mejs.MediaFeatures.isFirefox||c.options.usePluginFullScreen)){return}docStyleOverflow=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";normalHeight=c.container.height();normalWidth=c.container.width();if(c.media.pluginType==="native"){if(mejs.MediaFeatures.hasTrueNativeFullScreen){mejs.MediaFeatures.requestFullScreen(c.container[0]);if(c.isInIframe){setTimeout(function d(){if(c.isNativeFullScreen){if(a(window).width()!==screen.width){c.exitFullScreen()}else{setTimeout(d,500)}}},500)}}else{if(mejs.MediaFeatures.hasSemiNativeFullScreen){c.media.webkitEnterFullscreen();return}}}if(c.isInIframe){var b=c.options.newWindowCallback(this);if(b!==""){if(!mejs.MediaFeatures.hasTrueNativeFullScreen){c.pause();window.open(b,c.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");return}else{setTimeout(function(){if(!c.isNativeFullScreen){c.pause();window.open(b,c.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no")}},250)}}}c.container.addClass("mejs-container-fullscreen").width("100%").height("100%");setTimeout(function(){c.container.css({width:"100%",height:"100%"});c.setControlsSize()},500);if(c.pluginType==="native"){c.$media.width("100%").height("100%")}else{c.container.find("object, embed, iframe").width("100%").height("100%");c.media.setVideoSize(a(window).width(),a(window).height())}c.layers.children("div").width("100%").height("100%");if(c.fullscreenBtn){c.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen")}c.setControlsSize();c.isFullScreen=true},exitFullScreen:function(){var b=this;if(b.media.pluginType!=="native"&&mejs.MediaFeatures.isFirefox){b.media.setFullscreen(false);return}if(mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||b.isFullScreen)){mejs.MediaFeatures.cancelFullScreen()}document.documentElement.style.overflow=docStyleOverflow;b.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight);if(b.pluginType==="native"){b.$media.width(normalWidth).height(normalHeight)}else{b.container.find("object embed").width(normalWidth).height(normalHeight);b.media.setVideoSize(normalWidth,normalHeight)}b.layers.children("div").width(normalWidth).height(normalHeight);b.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen");b.setControlsSize();b.isFullScreen=false}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{startLanguage:"",tracksText:"Captions/Subtitles"});a.extend(MediaElementPlayer.prototype,{hasChapters:false,buildtracks:function(f,b,h,g){if(!f.isVideo){return}if(f.tracks.length==0){return}var e=this,d,c="";f.chapters=a('<div class="mejs-chapters mejs-layer"></div>').prependTo(h).hide();f.captions=a('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position"><span class="mejs-captions-text"></span></div></div>').prependTo(h).hide();f.captionsText=f.captions.find(".mejs-captions-text");f.captionsButton=a('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+e.id+'" title="'+e.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+f.id+'_captions" id="'+f.id+'_captions_none" value="none" checked="checked" /><label for="'+f.id+'_captions_none">None</label></li></ul></div></div>').appendTo(b).hover(function(){a(this).find(".mejs-captions-selector").css("visibility","visible")},function(){a(this).find(".mejs-captions-selector").css("visibility","hidden")}).delegate("input[type=radio]","click",function(){lang=this.value;if(lang=="none"){f.selectedTrack=null}else{for(d=0;d<f.tracks.length;d++){if(f.tracks[d].srclang==lang){f.selectedTrack=f.tracks[d];f.captions.attr("lang",f.selectedTrack.srclang);f.displayCaptions();break}}}});if(!f.options.alwaysShowControls){f.container.bind("mouseenter",function(){f.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("mouseleave",function(){if(!g.paused){f.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")}})}else{f.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}f.trackToLoad=-1;f.selectedTrack=null;f.isLoadingTrack=false;for(d=0;d<f.tracks.length;d++){if(f.tracks[d].kind=="subtitles"){f.addTrackButton(f.tracks[d].srclang,f.tracks[d].label)}}f.loadNextTrack();g.addEventListener("timeupdate",function(j){f.displayCaptions()},false);g.addEventListener("loadedmetadata",function(j){f.displayChapters()},false);f.container.hover(function(){if(f.hasChapters){f.chapters.css("visibility","visible");f.chapters.fadeIn(200).height(f.chapters.find(".mejs-chapter").outerHeight())}},function(){if(f.hasChapters&&!g.paused){f.chapters.fadeOut(200,function(){a(this).css("visibility","hidden");a(this).css("display","block")})}});if(f.node.getAttribute("autoplay")!==null){f.chapters.css("visibility","hidden")}},loadNextTrack:function(){var b=this;b.trackToLoad++;if(b.trackToLoad<b.tracks.length){b.isLoadingTrack=true;b.loadTrack(b.trackToLoad)}else{b.isLoadingTrack=false}},loadTrack:function(c){var d=this,b=d.tracks[c],e=function(){b.isLoaded=true;d.enableTrackButton(b.srclang,b.label);d.loadNextTrack()};a.ajax({url:b.src,dataType:"text",success:function(f){if(typeof f=="string"&&(/<tt\s+xml/ig).exec(f)){b.entries=mejs.TrackFormatParser.dfxp.parse(f)}else{b.entries=mejs.TrackFormatParser.webvvt.parse(f)}e();if(b.kind=="chapters"){d.media.addEventListener("play",function(g){if(d.media.duration>0){d.displayChapters(b)}},false)}},error:function(){d.loadNextTrack()}})},enableTrackButton:function(d,b){var c=this;if(b===""){b=mejs.language.codes[d]||d}c.captionsButton.find("input[value="+d+"]").prop("disabled",false).siblings("label").html(b);if(c.options.startLanguage==d){a("#"+c.id+"_captions_"+d).click()}c.adjustLanguageBox()},addTrackButton:function(d,b){var c=this;if(b===""){b=mejs.language.codes[d]||d}c.captionsButton.find("ul").append(a('<li><input type="radio" name="'+c.id+'_captions" id="'+c.id+"_captions_"+d+'" value="'+d+'" disabled="disabled" /><label for="'+c.id+"_captions_"+d+'">'+b+" (loading)</label></li>"));c.adjustLanguageBox();c.container.find(".mejs-captions-translations option[value="+d+"]").remove()},adjustLanguageBox:function(){var b=this;b.captionsButton.find(".mejs-captions-selector").height(b.captionsButton.find(".mejs-captions-selector ul").outerHeight(true)+b.captionsButton.find(".mejs-captions-translations").outerHeight(true))},displayCaptions:function(){if(typeof this.tracks=="undefined"){return}var d=this,c,b=d.selectedTrack;if(b!=null&&b.isLoaded){for(c=0;c<b.entries.times.length;c++){if(d.media.currentTime>=b.entries.times[c].start&&d.media.currentTime<=b.entries.times[c].stop){d.captionsText.html(b.entries.text[c]);d.captions.show().height(0);return}}d.captions.hide()}else{d.captions.hide()}},displayChapters:function(){var c=this,b;for(b=0;b<c.tracks.length;b++){if(c.tracks[b].kind=="chapters"&&c.tracks[b].isLoaded){c.drawChapters(c.tracks[b]);c.hasChapters=true;break}}},drawChapters:function(f){var c=this,b,d,e=0,g=0;c.chapters.empty();for(b=0;b<f.entries.times.length;b++){d=f.entries.times[b].stop-f.entries.times[b].start;e=Math.floor(d/c.media.duration*100);if(e+g>100||b==f.entries.times.length-1&&e+g<100){e=100-g}c.chapters.append(a('<div class="mejs-chapter" rel="'+f.entries.times[b].start+'" style="left: '+g.toString()+"%;width: "+e.toString()+'%;"><div class="mejs-chapter-block'+((b==f.entries.times.length-1)?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+f.entries.text[b]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(f.entries.times[b].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(f.entries.times[b].stop)+"</span></div></div>"));g+=e}c.chapters.find("div.mejs-chapter").click(function(){c.media.setCurrentTime(parseFloat(a(this).attr("rel")));if(c.media.paused){c.media.play()}});c.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",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})?)(.*)$/,parse:function(g){var e=0,d=mejs.TrackFormatParser.split2(g,/\r?\n/),c={text:[],times:[]},b,f;for(;e<d.length;e++){if(this.pattern_identifier.exec(d[e])){e++;b=this.pattern_timecode.exec(d[e]);if(b&&e<d.length){e++;f=d[e];e++;while(d[e]!==""&&e<d.length){f=f+"\n"+d[e];e++}f=a.trim(f).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");c.text.push(f);c.times.push({start:(mejs.Utility.convertSMPTEtoSeconds(b[1])==0)?0.2:mejs.Utility.convertSMPTEtoSeconds(b[1]),stop:mejs.Utility.convertSMPTEtoSeconds(b[3]),settings:b[5]})}}}return c}},dfxp:{parse:function(l){l=a(l).filter("tt");var j=0,c=l.children("div").eq(0),p=c.find("p"),h=l.find("#"+c.attr("style")),o,d,f,n,k={text:[],times:[]};if(h.length){var g=h.removeAttr("id").get(0).attributes;if(g.length){o={};for(j=0;j<g.length;j++){o[g[j].name.split(":")[1]]=g[j].value}}}for(j=0;j<p.length;j++){var b;var m={start:null,stop:null,style:null};if(p.eq(j).attr("begin")){m.start=mejs.Utility.convertSMPTEtoSeconds(p.eq(j).attr("begin"))}if(!m.start&&p.eq(j-1).attr("end")){m.start=mejs.Utility.convertSMPTEtoSeconds(p.eq(j-1).attr("end"))}if(p.eq(j).attr("end")){m.stop=mejs.Utility.convertSMPTEtoSeconds(p.eq(j).attr("end"))}if(!m.stop&&p.eq(j+1).attr("begin")){m.stop=mejs.Utility.convertSMPTEtoSeconds(p.eq(j+1).attr("begin"))}if(o){b="";for(var e in o){b+=e+":"+o[e]+";"}}if(b){m.style=b}if(m.start==0){m.start=0.2}k.times.push(m);n=a.trim(p.eq(j).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");k.text.push(n);if(k.times.start==0){k.times.start=2}}return k}},split2:function(c,b){return c.split(b)}};if("x\n\ny".split(/\n/gi).length!=3){mejs.TrackFormatParser.split2=function(f,d){var e=[],b="",c;for(c=0;c<f.length;c++){b+=f.substring(c,c+1);if(d.test(b)){e.push(b.replace(d,""));b=""}}e.push(b);return e}}})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(b){if(typeof b.enterFullScreen=="undefined"){return null}if(b.isFullScreen){return"Turn off Fullscreen"}else{return"Go Fullscreen"}},click:function(b){if(b.isFullScreen){b.exitFullScreen()}else{b.enterFullScreen()}}},{render:function(b){if(b.media.muted){return"Unmute"}else{return"Mute"}},click:function(b){if(b.media.muted){b.setMuted(false)}else{b.setMuted(true)}}},{isSeparator:true},{render:function(b){return"Download Video"},click:function(b){window.location.href=b.media.currentSrc}}]});a.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(c,b,e,d){c.contextMenu=a('<div class="mejs-contextmenu"></div>').appendTo(a("body")).hide();c.container.bind("contextmenu",function(f){if(c.isContextMenuEnabled){f.preventDefault();c.renderContextMenu(f.clientX-1,f.clientY-1);return false}});c.container.bind("click",function(){c.contextMenu.hide()});c.contextMenu.bind("mouseleave",function(){c.startContextMenuTimer()})},isContextMenuEnabled:true,enableContextMenu:function(){this.isContextMenuEnabled=true},disableContextMenu:function(){this.isContextMenuEnabled=false},contextMenuTimeout:null,startContextMenuTimer:function(){var b=this;b.killContextMenuTimer();b.contextMenuTimer=setTimeout(function(){b.hideContextMenu();b.killContextMenuTimer()},750)},killContextMenuTimer:function(){var b=this.contextMenuTimer;if(b!=null){clearTimeout(b);delete b;b=null}},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(b,j){var g=this,f="",d=g.options.contextMenuItems;for(var e=0,c=d.length;e<c;e++){if(d[e].isSeparator){f+='<div class="mejs-contextmenu-separator"></div>'}else{var h=d[e].render(g);if(h!=null){f+='<div class="mejs-contextmenu-item" data-itemindex="'+e+'" id="element-'+(Math.random()*1000000)+'">'+h+"</div>"}}}g.contextMenu.empty().append(a(f)).css({top:j,left:b}).show();g.contextMenu.find(".mejs-contextmenu-item").each(function(){var k=a(this),l=parseInt(k.data("itemindex"),10),m=g.options.contextMenuItems[l];if(typeof m.show!="undefined"){m.show(k,g)}k.click(function(){if(typeof m.click!="undefined"){m.click(g)}g.contextMenu.hide()})});setTimeout(function(){g.killControlsTimer("rev3")},100)}})})(mejs.$);(function(a){a.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")});a.extend(MediaElementPlayer.prototype,{buildpostroll:function(e,c,g,f){var d=this,b=d.container.find('link[rel="postroll"]').attr("href");if(typeof b!=="undefined"){e.postroll=a('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+d.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(g).hide();d.media.addEventListener("ended",function(h){a.ajax({dataType:"html",url:b,success:function(j,k){g.find(".mejs-postroll-layer-content").html(j)}});e.postroll.show()},false)}}})})(mejs.$);
11363\ No newline at end of file
11364Index: wp-includes/mediaelement/mediaelementplayer.css
11365===================================================================
11366--- wp-includes/mediaelement/mediaelementplayer.css     (revision 23731)
11367+++ wp-includes/mediaelement/mediaelementplayer.css     (working copy)
11368@@ -1,839 +0,0 @@
11369-.mejs-container {
11370-       position: relative;
11371-       background: #000;
11372-       font-family: Helvetica, Arial;
11373-       text-align: left;
11374-       vertical-align: top;
11375-       text-indent: 0;
11376-}
11377-
11378-.me-plugin {
11379-       position: absolute;
11380-}
11381-
11382-.mejs-embed, .mejs-embed body {
11383-       width: 100%;
11384-       height: 100%;
11385-       margin: 0;
11386-       padding: 0;
11387-       background: #000;
11388-       overflow: hidden;
11389-}
11390-
11391-.mejs-container-fullscreen {
11392-       position: fixed;
11393-       left: 0;
11394-       top: 0;
11395-       right: 0;
11396-       bottom: 0;
11397-       overflow: hidden;
11398-       z-index: 1000;
11399-}
11400-.mejs-container-fullscreen .mejs-mediaelement,
11401-.mejs-container-fullscreen video {
11402-       width: 100%;
11403-       height: 100%;
11404-}
11405-
11406-/* Start: LAYERS */
11407-.mejs-background {
11408-       position: absolute;
11409-       top: 0;
11410-       left: 0;
11411-}
11412-.mejs-mediaelement {
11413-       position: absolute;
11414-       top: 0;
11415-       left: 0;
11416-       width: 100%;
11417-       height: 100%;
11418-}
11419-.mejs-poster {
11420-       position: absolute;
11421-       top: 0;
11422-       left: 0;
11423-}
11424-.mejs-poster img {
11425-       border: 0;
11426-       padding: 0;
11427-       border: 0;
11428-       display: block;
11429-}
11430-.mejs-overlay {
11431-       position: absolute;
11432-       top: 0;
11433-       left: 0;
11434-}
11435-.mejs-overlay-play {
11436-       cursor: pointer;
11437-}
11438-.mejs-overlay-button {
11439-       position: absolute;
11440-       top: 50%;
11441-       left: 50%;
11442-       width: 100px;
11443-       height: 100px;
11444-       margin: -50px 0 0 -50px;
11445-       background: url(bigplay.svg) no-repeat;
11446-}
11447-.no-svg .mejs-overlay-button {
11448-       background-image: url(bigplay.png);
11449-}
11450-.mejs-overlay:hover .mejs-overlay-button {
11451-       background-position: 0 -100px ;
11452-}
11453-.mejs-overlay-loading {
11454-       position: absolute;
11455-       top: 50%;
11456-       left: 50%;
11457-       width: 80px;
11458-       height: 80px;
11459-       margin: -40px 0 0 -40px;
11460-       background: #333;
11461-       background: url(background.png);
11462-       background: rgba(0, 0, 0, 0.9);
11463-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.9)), to(rgba(0,0,0,0.9)));
11464-       background: -webkit-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
11465-       background: -moz-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
11466-       background: -o-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
11467-       background: -ms-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
11468-       background: linear-gradient(rgba(50,50,50,0.9), rgba(0,0,0,0.9));
11469-}
11470-.mejs-overlay-loading span {
11471-       display: block;
11472-       width: 80px;
11473-       height: 80px;
11474-       background: transparent url(loading.gif) 50% 50% no-repeat;
11475-}
11476-
11477-/* End: LAYERS */
11478-
11479-/* Start: CONTROL BAR */
11480-.mejs-container .mejs-controls {
11481-       position: absolute;
11482-       background: none;
11483-       list-style-type: none;
11484-       margin: 0;
11485-       padding: 0;
11486-       bottom: 0;
11487-       left: 0;
11488-       background: url(background.png);
11489-       background: rgba(0, 0, 0, 0.7);
11490-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
11491-       background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11492-       background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11493-       background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11494-       background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));     
11495-       background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));       
11496-       height: 30px;
11497-       width: 100%;
11498-}
11499-.mejs-container .mejs-controls  div {
11500-       list-style-type: none;
11501-       background-image: none;
11502-       display: block;
11503-       float: left;
11504-       margin: 0;
11505-       padding: 0;
11506-       width: 26px;
11507-       height: 26px;
11508-       font-size: 11px;
11509-       line-height: 11px;
11510-       background: 0;
11511-       font-family: Helvetica, Arial;
11512-       border: 0;
11513-}
11514-
11515-.mejs-controls .mejs-button button {
11516-       cursor: pointer;
11517-       display: block;
11518-       font-size: 0;
11519-       line-height: 0;
11520-       text-decoration: none;
11521-       margin: 7px 5px;
11522-       padding: 0;
11523-       position: absolute;
11524-       height: 16px;
11525-       width: 16px;
11526-       border: 0;
11527-       background: transparent url(controls.svg) no-repeat;
11528-}
11529-
11530-.no-svg .mejs-controls .mejs-button button {
11531-       background-image: url(controls.png);
11532-}
11533-
11534-/* :focus for accessibility */
11535-.mejs-controls .mejs-button button:focus {
11536-       outline: solid 1px yellow;
11537-}
11538-
11539-/* End: CONTROL BAR */
11540-
11541-/* Start: Time (current / duration) */
11542-.mejs-container .mejs-controls .mejs-time {
11543-       color: #fff;
11544-       display: block;
11545-       height: 17px;
11546-       width: auto;
11547-       padding: 8px 3px 0 3px ;
11548-       overflow: hidden;
11549-       text-align: center;
11550-       padding: auto 4px;
11551-       -moz-box-sizing: content-box;
11552-       -webkit-box-sizing: content-box;
11553-       box-sizing: content-box;
11554-}
11555-.mejs-container .mejs-controls .mejs-time span {
11556-       font-size: 11px;
11557-       color: #fff;
11558-       line-height: 12px;
11559-       display: block;
11560-       float: left;
11561-       margin: 1px 2px 0 0;
11562-       width: auto;
11563-}
11564-/* End: Time (current / duration) */
11565-
11566-
11567-/* Start: Play/pause */
11568-.mejs-controls .mejs-play button {
11569-       background-position: 0 0;
11570-}
11571-.mejs-controls .mejs-pause button {
11572-       background-position: 0 -16px;
11573-}
11574-/* End: Play/pause */
11575-
11576-
11577-/* Stop */
11578-.mejs-controls .mejs-stop button {
11579-       background-position: -112px 0;
11580-}
11581-/* End: Play/pause */
11582-
11583-/* Start: Progress bar */
11584-.mejs-controls div.mejs-time-rail {
11585-       width: 200px;
11586-       padding-top: 5px;
11587-}
11588-.mejs-controls .mejs-time-rail span {
11589-       display: block;
11590-       position: absolute;
11591-       width: 180px;
11592-       height: 10px;
11593-       -webkit-border-radius: 2px;
11594-       -moz-border-radius: 2px;
11595-       border-radius: 2px;
11596-       cursor: pointer;
11597-}
11598-.mejs-controls .mejs-time-rail .mejs-time-total {
11599-       margin: 5px;
11600-       background: #333;
11601-       background: rgba(50,50,50,0.8);
11602-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
11603-       background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11604-       background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11605-       background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11606-       background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11607-       background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11608-}
11609-.mejs-controls .mejs-time-rail .mejs-time-buffering {
11610-       width: 100%;
11611-       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);
11612-       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));
11613-       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);
11614-       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);
11615-       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);
11616-       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);
11617-       -webkit-background-size: 15px 15px;
11618-       -moz-background-size: 15px 15px;
11619-       -o-background-size: 15px 15px;
11620-       background-size: 15px 15px;
11621-       -webkit-animation: buffering-stripes 2s linear infinite;
11622-       -moz-animation: buffering-stripes 2s linear infinite;
11623-       -ms-animation: buffering-stripes 2s linear infinite;
11624-       -o-animation: buffering-stripes 2s linear infinite;
11625-       animation: buffering-stripes 2s linear infinite;
11626-}
11627-
11628-@-webkit-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
11629-@-moz-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
11630-@-ms-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
11631-@-o-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
11632-@keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
11633-
11634-.mejs-controls .mejs-time-rail .mejs-time-loaded {
11635-       background: #3caac8;
11636-       background: rgba(60,170,200,0.8);
11637-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(44,124,145,0.8)), to(rgba(78,183,212,0.8)));
11638-       background: -webkit-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
11639-       background: -moz-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
11640-       background: -o-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
11641-       background: -ms-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
11642-       background: linear-gradient(rgba(44,124,145,0.8), rgba(78,183,212,0.8));
11643-       width: 0;
11644-}
11645-.mejs-controls .mejs-time-rail .mejs-time-current {
11646-       width: 0;
11647-       background: #fff;
11648-       background: rgba(255,255,255,0.8);
11649-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
11650-       background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11651-       background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11652-       background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11653-       background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11654-       background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11655-}
11656-
11657-.mejs-controls .mejs-time-rail .mejs-time-handle {
11658-       display: none;
11659-       position: absolute;
11660-       margin: 0;
11661-       width: 10px;
11662-       background: #fff;
11663-       -webkit-border-radius: 5px;
11664-       -moz-border-radius: 5px;
11665-       border-radius: 5px;
11666-       cursor: pointer;
11667-       border: solid 2px #333;
11668-       top: -2px;
11669-       text-align: center;
11670-}
11671-
11672-.mejs-controls .mejs-time-rail .mejs-time-float {
11673-       position: absolute;
11674-       display: none;
11675-       background: #eee;
11676-       width: 36px;
11677-       height: 17px;
11678-       border: solid 1px #333;
11679-       top: -26px;
11680-       margin-left: -18px;
11681-       text-align: center;
11682-       color: #111;
11683-}
11684-
11685-.mejs-controls .mejs-time-rail .mejs-time-float-current {
11686-       margin: 2px;
11687-       width: 30px;
11688-       display: block;
11689-       text-align: center;
11690-       left: 0;
11691-}
11692-.mejs-controls .mejs-time-rail .mejs-time-float-corner {
11693-       position: absolute;
11694-       display: block;
11695-       width: 0;
11696-       height: 0;
11697-       line-height: 0;
11698-       border: solid 5px #eee;
11699-       border-color: #eee transparent transparent transparent;
11700-       -webkit-border-radius: 0;
11701-       -moz-border-radius: 0;
11702-       border-radius: 0;
11703-       top: 15px;
11704-       left: 13px;
11705-
11706-}
11707-
11708-
11709-
11710-
11711-/*
11712-.mejs-controls .mejs-time-rail:hover .mejs-time-handle {
11713-       visibility:visible;
11714-}
11715-*/
11716-/* End: Progress bar */
11717-
11718-/* Start: Fullscreen */
11719-.mejs-controls .mejs-fullscreen-button button {
11720-       background-position: -32px 0;
11721-}
11722-.mejs-controls .mejs-unfullscreen button {
11723-       background-position: -32px -16px;
11724-}
11725-/* End: Fullscreen */
11726-
11727-
11728-/* Start: Mute/Volume */
11729-.mejs-controls .mejs-volume-button {
11730-}
11731-
11732-.mejs-controls .mejs-mute button {
11733-       background-position: -16px -16px;
11734-}
11735-
11736-.mejs-controls .mejs-unmute button {
11737-       background-position: -16px 0;
11738-}
11739-
11740-.mejs-controls .mejs-volume-button {
11741-       position: relative;
11742-}
11743-
11744-.mejs-controls .mejs-volume-button .mejs-volume-slider {
11745-       display: none;
11746-       height: 115px;
11747-       width: 25px;
11748-       background: url(background.png);
11749-       background: rgba(50, 50, 50, 0.7);
11750-       -webkit-border-radius: 0;
11751-       -moz-border-radius: 0;
11752-       border-radius: 0;
11753-       top: -115px;
11754-       left: 0;
11755-       z-index: 1;
11756-       position: absolute;
11757-       margin: 0;
11758-}
11759-.mejs-controls .mejs-volume-button:hover {
11760-       -webkit-border-radius: 0 0 4px 4px;
11761-       -moz-border-radius: 0 0 4px 4px;
11762-       border-radius: 0 0 4px 4px;
11763-}
11764-/*
11765-.mejs-controls .mejs-volume-button:hover .mejs-volume-slider {
11766-       display: block;
11767-}
11768-*/
11769-
11770-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total {
11771-       position: absolute;
11772-       left: 11px;
11773-       top: 8px;
11774-       width: 2px;
11775-       height: 100px;
11776-       background: #ddd;
11777-       background: rgba(255, 255, 255, 0.5);
11778-       margin: 0;
11779-}
11780-
11781-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current {
11782-       position: absolute;
11783-       left: 11px;
11784-       top: 8px;
11785-       width: 2px;
11786-       height: 100px;
11787-       background: #ddd;
11788-       background: rgba(255, 255, 255, 0.9);
11789-       margin: 0;
11790-}
11791-
11792-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle {
11793-       position: absolute;
11794-       left: 4px;
11795-       top: -3px;
11796-       width: 16px;
11797-       height: 6px;
11798-       background: #ddd;
11799-       background: rgba(255, 255, 255, 0.9);
11800-       cursor: N-resize;
11801-       -webkit-border-radius: 1px;
11802-       -moz-border-radius: 1px;
11803-       border-radius: 1px;
11804-       margin: 0;
11805-}
11806-
11807-
11808-/* horizontal version */
11809-
11810-.mejs-controls div.mejs-horizontal-volume-slider {
11811-       height: 26px;
11812-       width: 60px;
11813-       position: relative;
11814-}
11815-
11816-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
11817-       position: absolute;
11818-       left: 0;
11819-       top: 11px;
11820-       width: 50px;
11821-       height: 8px;
11822-       margin: 0;
11823-       padding: 0;
11824-       font-size: 1px;
11825-       
11826-       -webkit-border-radius: 2px;
11827-       -moz-border-radius: 2px;
11828-       border-radius: 2px;     
11829-
11830-       background: #333;
11831-       background: rgba(50,50,50,0.8);
11832-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
11833-       background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11834-       background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11835-       background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11836-       background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11837-       background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
11838-
11839-}
11840-
11841-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
11842-       position: absolute;
11843-       left: 0;
11844-       top: 11px;
11845-       width: 50px;
11846-       height: 8px;
11847-       margin: 0;
11848-       padding: 0;
11849-       font-size: 1px;
11850-
11851-       -webkit-border-radius: 2px;
11852-       -moz-border-radius: 2px;
11853-       border-radius: 2px;
11854-
11855-       background: #fff;
11856-       background: rgba(255,255,255,0.8);
11857-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
11858-       background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11859-       background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11860-       background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11861-       background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11862-       background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
11863-
11864-}
11865-
11866-
11867-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle {
11868-       display: none;
11869-}
11870-
11871-/* End: Mute/Volume */
11872-
11873-
11874-
11875-
11876-/* Start: TRACK (Captions and Chapters) */
11877-.mejs-controls .mejs-captions-button {
11878-       position: relative;
11879-}
11880-
11881-.mejs-controls .mejs-captions-button button {
11882-       background-position: -48px 0;
11883-}
11884-.mejs-controls .mejs-captions-button .mejs-captions-selector {
11885-       visibility: hidden;
11886-       position: absolute;
11887-       bottom: 26px;
11888-       right: -10px;
11889-       width: 130px;
11890-       height: 100px;
11891-       background: url(background.png);
11892-       background: rgba(50,50,50,0.7);
11893-       border: solid 1px transparent;
11894-       padding: 10px;
11895-       overflow: hidden;
11896-       -webkit-border-radius: 0;
11897-       -moz-border-radius: 0;
11898-       border-radius: 0;
11899-}
11900-/*
11901-.mejs-controls .mejs-captions-button:hover  .mejs-captions-selector {
11902-       visibility: visible;
11903-}
11904-*/
11905-
11906-.mejs-controls .mejs-captions-button .mejs-captions-selector ul {
11907-       margin: 0;
11908-       padding: 0;
11909-       display: block;
11910-       list-style-type: none !important;
11911-       overflow: hidden;
11912-}
11913-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li {
11914-       margin: 0 0 6px 0;
11915-       padding: 0;
11916-       list-style-type: none !important;
11917-       display: block;
11918-       color: #fff;
11919-       overflow: hidden;
11920-}
11921-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input {
11922-       clear: both;
11923-       float: left;
11924-       margin: 3px 3px 0 5px;
11925-}
11926-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label {
11927-       width: 100px;
11928-       float: left;
11929-       padding: 4px 0 0 0;
11930-       line-height: 15px;
11931-       font-family: helvetica, arial;
11932-       font-size: 10px;
11933-}
11934-
11935-.mejs-controls .mejs-captions-button .mejs-captions-translations {
11936-       font-size: 10px;
11937-       margin: 0 0 5px 0;
11938-}
11939-
11940-
11941-.mejs-chapters {
11942-       position: absolute;
11943-       top: 0;
11944-       left: 0;
11945-       -xborder-right: solid 1px #fff;
11946-       width: 10000px;
11947-       z-index: 1;
11948-}
11949-.mejs-chapters .mejs-chapter {
11950-       position: absolute;
11951-       float: left;
11952-       background: #222;
11953-       background: rgba(0, 0, 0, 0.7);
11954-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
11955-       background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11956-       background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11957-       background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11958-       background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11959-       background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
11960-       filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232,endColorstr=#000000);         
11961-       overflow: hidden;
11962-       border: 0;
11963-}
11964-.mejs-chapters .mejs-chapter .mejs-chapter-block {
11965-       font-size: 11px;
11966-       color: #fff;
11967-       padding: 5px;
11968-       display: block;
11969-       border-right: solid 1px #333;
11970-       border-bottom: solid 1px #333;
11971-       cursor: pointer;
11972-}
11973-.mejs-chapters .mejs-chapter .mejs-chapter-block-last {
11974-       border-right: none;
11975-}
11976-
11977-.mejs-chapters .mejs-chapter .mejs-chapter-block:hover {
11978-       /*background: #333;*/
11979-       background: #666;
11980-       background: rgba(102,102,102, 0.7);
11981-       background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(102,102,102,0.7)), to(rgba(50,50,50,0.6)));
11982-       background: -webkit-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
11983-       background: -moz-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
11984-       background: -o-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
11985-       background: -ms-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
11986-       background: linear-gradient(rgba(102,102,102,0.7), rgba(50,50,50,0.6));
11987-       filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666,endColorstr=#323232);         
11988-}
11989-.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title {
11990-       font-size: 12px;
11991-       font-weight: bold;
11992-       display: block;
11993-       white-space: nowrap;
11994-       text-overflow: ellipsis;
11995-       margin: 0 0 3px 0;
11996-       line-height: 12px;
11997-}
11998-.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan {
11999-       font-size: 12px;
12000-       line-height: 12px;
12001-       margin: 3px 0 4px 0;
12002-       display: block;
12003-       white-space: nowrap;
12004-       text-overflow: ellipsis;
12005-}
12006-
12007-
12008-.mejs-captions-layer {
12009-       position: absolute;
12010-       bottom: 0;
12011-       left: 0;
12012-       text-align:center;
12013-       /*font-weight: bold;*/
12014-       line-height: 22px;
12015-       font-size: 12px;
12016-       color: #fff;
12017-}
12018-.mejs-captions-layer  a {
12019-       color: #fff;
12020-       text-decoration: underline;
12021-}
12022-.mejs-captions-layer[lang=ar] {
12023-       font-size: 20px;
12024-       font-weight: normal;
12025-}
12026-
12027-.mejs-captions-position {
12028-       position: absolute;
12029-       width: 100%;
12030-       bottom: 15px;
12031-       left: 0;
12032-}
12033-
12034-.mejs-captions-position-hover {
12035-       bottom: 45px;
12036-}
12037-
12038-.mejs-captions-text {
12039-       padding: 3px 5px;
12040-       background: url(background.png);
12041-       background: rgba(20, 20, 20, 0.8);
12042-
12043-}
12044-/* End: TRACK (Captions and Chapters) */
12045-
12046-
12047-
12048-.mejs-clear {
12049-       clear: both;
12050-}
12051-
12052-/* Start: ERROR */
12053-.me-cannotplay {
12054-}
12055-.me-cannotplay a {
12056-       color: #fff;
12057-       font-weight: bold;
12058-}
12059-.me-cannotplay span {
12060-       padding: 15px;
12061-       display: block;
12062-}
12063-/* End: ERROR */
12064-
12065-
12066-/* Start: Loop */
12067-.mejs-controls .mejs-loop-off button {
12068-       background-position: -64px -16px;
12069-}
12070-.mejs-controls .mejs-loop-on button {
12071-       background-position: -64px 0;
12072-}
12073-/* End: Loop */
12074-
12075-/* Start: backlight */
12076-.mejs-controls .mejs-backlight-off button {
12077-       background-position: -80px -16px;
12078-}
12079-.mejs-controls .mejs-backlight-on button {
12080-       background-position: -80px 0;
12081-}
12082-/* End: backlight */
12083-
12084-
12085-/* Start: picture controls */
12086-.mejs-controls .mejs-picturecontrols-button {
12087-       background-position: -96px 0;
12088-}
12089-/* End: picture controls */
12090-
12091-
12092-/* context menu */
12093-.mejs-contextmenu {
12094-       position: absolute;
12095-       width: 150px;
12096-       padding: 10px;
12097-       border-radius: 4px;
12098-       top: 0;
12099-       left: 0;
12100-       background: #fff;
12101-       border: solid 1px #999;
12102-       z-index: 1001; /* make sure it shows on fullscreen */
12103-}
12104-.mejs-contextmenu .mejs-contextmenu-separator {
12105-       height: 1px;
12106-       font-size: 0;
12107-       margin: 5px 6px;
12108-       background: #333;       
12109-}
12110-
12111-.mejs-contextmenu .mejs-contextmenu-item {
12112-       font-family: Helvetica, Arial;
12113-       font-size: 12px;
12114-       padding: 4px 6px;
12115-       cursor: pointer;
12116-       color: #333;   
12117-}
12118-.mejs-contextmenu .mejs-contextmenu-item:hover {
12119-       background: #2C7C91;
12120-       color: #fff;
12121-}
12122-
12123-
12124-/* Start: SourceChooser */
12125-.mejs-controls .mejs-sourcechooser-button {
12126-       position: relative;
12127-}
12128-
12129-.mejs-controls .mejs-sourcechooser-button button {
12130-       background-position: -128px 0;
12131-}
12132-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector {
12133-       visibility: hidden;
12134-       position: absolute;
12135-       bottom: 26px;
12136-       right: -10px;
12137-       width: 130px;
12138-       height: 100px;
12139-       background: url(background.png);
12140-       background: rgba(50,50,50,0.7);
12141-       border: solid 1px transparent;
12142-       padding: 10px;
12143-       overflow: hidden;
12144-       -webkit-border-radius: 0;
12145-       -moz-border-radius: 0;
12146-       border-radius: 0;
12147-}
12148-
12149-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul {
12150-       margin: 0;
12151-       padding: 0;
12152-       display: block;
12153-       list-style-type: none !important;
12154-       overflow: hidden;
12155-}
12156-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li {
12157-       margin: 0 0 6px 0;
12158-       padding: 0;
12159-       list-style-type: none !important;
12160-       display: block;
12161-       color: #fff;
12162-       overflow: hidden;
12163-}
12164-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input {
12165-       clear: both;
12166-       float: left;
12167-       margin: 3px 3px 0 5px;
12168-}
12169-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label {
12170-       width: 100px;
12171-       float: left;
12172-       padding: 4px 0 0 0;
12173-       line-height: 15px;
12174-       font-family: helvetica, arial;
12175-       font-size: 10px;
12176-}
12177-/* End: SourceChooser */
12178-
12179-
12180-/* Start: Postroll */
12181-.mejs-postroll-layer {
12182-       position: absolute;
12183-       bottom: 0;
12184-       left: 0;
12185-       width: 100%;
12186-       height: 100%;
12187-       background: url(background.png);
12188-       background: rgba(50,50,50,0.7);
12189-       z-index: 1000;
12190-       overflow: hidden;
12191-}
12192-.mejs-postroll-layer-content {
12193-       width: 100%;
12194-       height: 100%;
12195-}
12196-.mejs-postroll-close {
12197-       position: absolute;
12198-       right: 0;
12199-       top: 0;
12200-       background: url(background.png);
12201-       background: rgba(50,50,50,0.7);
12202-       color: #fff;
12203-       padding: 4px;
12204-       z-index: 100;
12205-       cursor: pointer;
12206-}
12207-/* End: Postroll */
12208Index: wp-includes/mediaelement/mediaelementplayer.min.css
12209===================================================================
12210--- wp-includes/mediaelement/mediaelementplayer.min.css (revision 23731)
12211+++ wp-includes/mediaelement/mediaelementplayer.min.css (working copy)
12212@@ -1 +0,0 @@
12213-.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:0;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:0}.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}
12214\ No newline at end of file
12215Index: wp-includes/mediaelement/silverlightmediaelement.xap
12216===================================================================
12217--- wp-includes/mediaelement/silverlightmediaelement.xap        (revision 23731)
12218+++ wp-includes/mediaelement/silverlightmediaelement.xap        (working copy)
12219@@ -1,110 +0,0 @@
12220-PKxƒf@P>&ëԑAppManifest.xaml…ÁJ1E÷‚ÿòI(Zep
12221-»TŠ÷1óêÞKBòª™osá'ùNÔ.´n÷pï}}»º†„q ,*a(­ì™S£uq=-Š¼Ë±Ä-+I;ôcTό¹ÐÝ·*'·©ÿØ/>lë^žëj      ¥XÎÃ:úÀËR€qhåÆã3dôO=ß@çí
12222-aêø    ß      þªeJRÜí{‚ÈÅÇÐÊ3eÔ¹¹œÍ•‘‹Ó!ž«µÍ\>éÈ¿–졨ͭ%82jwÙÓáxSOú—ÊC¸øPKxƒf@()ëÕ.˜SilverlightMediaElement.dllí}
12223-x\Wuàyo¤iä‘4²eùGŽÇc;‘mi4ÿ?Žmlý8V"Ŋ%;q0(£™'iâ™yۑmEq°—@JI?¾t?ZJÚ¦„åk›lùiڅýè.ÛÒ²t),ÝÍGh,t×ì9ç¾÷æÍ¯e“P¶ÍHsß½çž{î¹çž{î¹÷Ý÷fêîw€
12224-Zðûӟ|Äç0\ýs        ¿Ûÿ žnÿҎOK“_Ú1»”)z
12225-šº¨%sžT2ŸWKžyÅ£-ç=™¼gìøŒ'§¦ŸËåܥӘ˜”l~ôÔqƒîó ïèÚގ‰6ëüü>£sGqYð
12226-P¾H§
12227-¿ ›ÿËW󟧟¸ÝxKF>°/~Äë‡køxLÖùӆéc–´¯¤\(áuÃÃz»Þ&ß÷ø´¢–7j»¿ï¨ÄCiöiJVM     ^‰g¦õÞ¼‘j6_zR\q‘VøôYŠ¢¢KÇÖÞìõþØ'zÁ
12228-ò*^Z6^‘œö!ìÛ,÷]$€¬aXØTìp¬Çö‚
12229-ËݪӐ6dùŠuÓ^ì%č#Pú´Éµh3¶0h@bAí=r‹ºAEìû@?ׅÿ7ÈÛ0Nù«7G«7a8`§R{¹
12230-³B„î
12231-Îb¡Ž–‹„â/>܀Å×µ
12232-ÁÁEûÔíD{»Ì©îÀÀ>Ôå¸b_^L:÷]݉,½w+Òë'Êlê.*´=z#5ä&*eßîÝ~“:€Qí4ŠL›Ã@ÝC9{        ¨`Ú®}Á}TrkøF+RøVDýÐ-ÆÄÉSÐÁµm^2û§Ûì;ħhèô]ìæ.úNUɲ6!a=Ø(¡ ¤‹4ú:gBµ   èYÚFÐ}Ȅ¶´U@«Äµèg+ksè7M¨“ múÓJÜvm—
12233-hA2¡ëÚ! wTâ®ÐórEm.}¤’B§€~X®hEB±¶ú°ÔÊöÉ-o¼ØC¸/®—>qÙ$.›Åe‹¸l¥ËNcX]ì¯Ln³$_zÍÅD™íââ¡KßÅ"嗝â²K\vÓeÀ/†Ù€ƒô^{ ¸³W¹¯Ø×“IµBð
12234-&<\ï1á‘
12235-¸Û„G+àݏ<^ï0ñðv‚ï'øÍ¿bßgZƒÓÁÃñ %lÚw°Mê!Œ%wË:è5ºˆ¥Å¦½X‹ò¢‰²Q~d nє©µÛ°Ç‹’û¤>,ì@±÷q‘õ6KN4)²‰‹l·U0²IÖATP=BÜ lÙ×!kÃæÄæGPœR‡c£@Ў>íf¾nÒ¦ø*¯YÃ}HÑ2ãqQΝ•öéªO¾Ÿ´q`”ì‰MKÕ ¦Êˆ[,ˆo¨A|Sq«ñ}5ˆï+#’6Œ¢¼ºU(Ö!{~BÚÏc£8N"q³õ¦p#~~ñ(Iì¡n¡8ë5Q•áꄈoæJdQÉ ¼Ê–M¨œÈÌî^7p+á¶í^§Šˆ¸È«[š•Ý¢—½Í(+"â"¯²ý[¥Þ²õí“6
12236-­ðêd9±Õìçßý,¯’òRG†›åÕ
12237-Ø¢=ǀ)jëí–Á³JŠ©·BHÐ관Pñ;xҊ£µ€mdDÑ¡^¡M¬B'ÞÈ:LS1š^sœ:Íq:Ãóâ,EORpŠºøŠÝköǝWC¸‹­”˜ð¾„u‹¶k½-õg=Ø+æ¼­»îimõñœ'*z7<ç‹êiné¦ÓãäWmÔý¥rÈð»o›<ÐG
12238-Ú·A&¿#ûÚ
12239-ìݏiUßËÃz¿
12240-V„kæ&Éqw“Iz-©èv¡=cB=¦ž¨è8;z¤×Oò*Í=öl”]ÞŒ_ôMv}Å{¨ÉIÎÐö”™ žn©H
12241-ŸgŸg…Æï}@׫Ýä2:m¬3B–¬1{‘ß”&^µ·“_ O$<­h¯3«’:…Û$‡A´5–ƒ–i¡¾2¥ý0HI%ßf K4ÊÒ}§Ç[E7Á—õ^¡5y¨ñ¿¤.ÒΛµÆ¿@€Léóꀋ)ko+³¨½§\ðKAs’äyYûsLDÆ*
12242-(>×CÔáj])Œ¦Ëڟ˜ä÷ªh×A锵¯”SB&ÅR§¬?4ÊúáìÖғE¼Þ-\c‰4Š]e¦{é¶¿tWÉ@‡w6å¿[ûãr¼}¨`ýŸ6xZâŒú7)û®í­è`>âvm»°pëÚ6jÛþD›aáÚ6i
12243-6۞hÛ¢å8¾ãýÚCߦ³z/Òtõظë[zpÅØm7hO2ÞövK«×·ö´r³ë•ØîÔ¾(ŠtÈ÷Sdaë´oŠL—N/GÅí=ö
12244-¬Ní«K¾ß[M¢[ë°s¦['‘¯æ GÛ)0ÖË÷÷³9Ð36h"£W¾›5c£–}òýdpTߤ="à›åû=øíwÎóN(Æ¥¡ô„C-T.!Žô›«jø—ÄvÕd®õ´OÙkÇ{Å¢…}ž=7êÈ&6­NQ7i“Ì։…颰Ú#£@î%•úõjDA£D‰
12245-e¥¨1¤¨6lË)ý–µGó¶TŽq¸,ŒugÙXo¬®£³Ž>c1Àž¹vÓUjԎ0ɰ¾y}¼dSÏéUV·kâ*µTZyx¾y»¾ŒdSH¶K¸P/›îahou”Íó5^æëƒ‚@¶>á¢ÐòËV1ÿUÄùǧÅ4NúøÅºLÙĪéð£‡ï¸'\íG&Q!y’váD®Šzmf=7‚lãeM’«vöÔ
12246-iÓÚ×,´cÚ[[v·S¸ŠváAêð‚ß&à·éE~J·1žZ…G‰îÉ>tMöÎW»H}êýF¯÷·Âª¥Þ²ZUF½ˆÉO-c>
12247-Þf´r®û'{ÏÕsQl-»Êý#ü0—ðÃZÊ5QP}£>!]"óЎ‘ËASŸw
12248-_Ì¡{bFÛ§hPÐÜ%NTZ/vZñß!…û,–ŸþëõjÈðÛîÎt½î(¾Éìsƒ_\CѶ•pÅ)Q£¤5¾žX¦€
12249-Wl¢Î¿µóŽ@Ç>pìÕ÷ÂÞ"öÝÔÔ7óšt™ŠjØà‚J»œtêÐG+ -võ-Æìòm89ìê/áÕ¡¾•Ã_¦­·Ï[Ñ\mí¯]ß"ÛІÛ×·º[Ý-ê#C¯’&c”—@‘Wi„e,ï;f1[|ݖÔVÝàŠÞè}öõ’ÝØ]ey<Ȱµ¼¸ÛÜkZg5Îogo—‰'ïë‘sêÛiï6öçdøâ÷0~ŸØÓhÜÅæ®Éi}‹»e(
12250-—=Âґ_Û!*t‰Y0Ù#GÎiI}mÆ"ˆ©ºDN›ðÙAßja,dìõiÂþ킁w Êöwc읻‹§^L¼‹,2ÅÞ­oŠ¶Ò¼^Û.ë8ùbk«éëyÅòÅ]m*œv»úÁªn4n4-Ñ?hȾzÔ¿§¼+¢o¬è¶öuUî´ðx¡O—×_þ³ïýùØ8ÈάKJÎwB)ªËZJ)š±J2­hƒž\1¥jÙÌü ç”¢3jþ`Øç§¿AÏèr¶´¬)óÊrIKf=ÓËóÙLê6eeV=«äÎÇbÉH*
12251-$BaÅO쬭l9_Êä0£”dË>ûô‘1úÿóߺ7ÓóÏ;
12252-½:øӘMBÿ|p’ƒ,glÉa"yÌHÂ"Îååìalð޽|ï³|àH¡€l&KØÏ…\6_<è]*•
12253-û‡‡‹©%%—,úr™”¦Õ…’/¥æ†Ïgò†ƒ~tøB2—.hJQɗ˜€×é±~˜Üþ×FÐë©"²4›,"W3™ì9…¿¸TšRҙäxVÉaÅ>l@U½‡8imYYʇLT4Ü«"ãsGœ¦Ø'‹Š6ªæKššå¯ÊÝT2“ŸN.*z³^    _Ÿ`-EÓW)ª\ JIÁ‡ç³J>MTâ^g»(KÕWJ3T-—,aR[Î%µ³Ë…!$W@Öç3ÙLi…¹±2r®˜;èMeµ¡|2§É”²_wfòiõ|ñf”®’›Ï®¬„"¹Ôþ‰Å¼ª%‘˃޴ޙI—–z£a¿×sL¡9è
12254-Eý^]-,}XO-̔V²
12255-v,ŽÜƒ^M]Χg—–sóözf“Ú¢Rš])`}÷ªP¾8lKŠæ™ÖP$Z  IÌ*¹B6YRª-ȾSÉì²R›Í(:«•«2PQx<›ÍŠŠgIœÅ;ê¯š]Ê¤ÎæÒà ×s4“Í2R8NÞá<
12256-W1U§e͛fäYd>ÌÒ=älÐ3ٚß:= 2þ%» .¥oÑ2ilÈí¨à½'TµäõŒ$SgYµ7-™GÅ×p„7¡bRª§²
12257-T3®‹ó‰JAI–F–K%5ßD>uéžPR¥d~;È_q¯g
12258-¥’ÉôEýôçõ0¿£jv9‡àÊôL!‰°Pµ±oþ©QY¿/âõœH¦3ËÅÓ½#~ÇרÌרØk•ñ¤²ðʉ˜äKbþ…ñþ{D|`øZ”¾r¬SµÌ}XY2{
12259-Â?`‘à˜²ÉghÚ-®±×ªËsё咺é¼òDö®­“IÁ¹Å-+}½®ÐÐöM’]BýVƔ”¦$‹ŠµX­Z_ƒ
12260-Og“8Y«…ƒÞ£Él‘&½÷zWgȋJÚäi4H/®IHå!j4“èqõœPÏ[ljßoL¾£ËZQÕP.É|‡µº\T¨¬àbL=Ÿ·Ðš«“½&þØ;¨˜k,V%€Ò­ÓKìX:XcTôZ€\Œ•l©WùT‘³â#èAçÉqX[½cZrëÐJJº¦s–L/cŽ¢CšUâšÙÞµT=šÌŸC÷÷î‰|Z¹@^›â\әÈ_uˆ_±!ÒÐW¸Þ1­ƒÄ҆ÙA#¬^O®IþÏÃ%nàiLg“+U>Få"A]DùëjSUmÅ|¹ˆ‰kñMàâmÿ©Lq9™%¥Q¦’y\èbûÊ [P¡ÁäY]œqMfŽª©å"Ë͜ë*•Åq_¥Çqh+ójRK_M5ւy`¸Šë`üd~áZYþ™9ªA㾸žnCë™Só×ßo·ÓBöçÙö¦ì°9~®éïT‘¦içÿ[5ZRRg¯_‹¸øË7úyL]žÏ*Gò™oĝ,fò‹hj´qåQpa6›¡ÊýþýüÞƲƸe˜Ïïøýþkóhë,Ò¾}ÂЋV£í_™YÉͫٗ™|y#eà䄱±y¼LeJ+{Öº )d3yEHѐ›‡vÇ«„Ƴ#9ýkZ§4핽šDô¯¦[¯x·þ<§êÔ/¾Y‹Výð/«f¬u®«Á»/Y¸çƦ_ 0ûªM–˧°Û2©ŠŒQс©g;ô.å喡ÕÖYD_ÿåý‚`°Aÿ˜N––̃°e‡!Â7”R
12261-3hQgÙ7Œñ_C»6–,%±LÀ3å   D|D"6ú"áà¤'˜ðÅb±è` ì‹'&);óÇ£¾D"NVá{îöÔS¯F+ºÁ…àMyY6M*F’ÞüP ¢ù
12262-V^_M<;¼™Â[w‹™}ãÆXÃû:?#Gz¡æÓ”ÁUy
12263-„®ÆV½ª†ÕY{_uÑ<µ\R~¦Es£erå.Å«‹æWͯ.š_]4¿ºhþE]^£ÝgåÕeó«ë«WUòÕ%ÿÏuawm˸YµPWŒW¬éº¬I]•®~ñÕ,,K³`ÈGp©õEü\{€P×fá0"¾Xý2 î‹C‘ÁP̎q9òû"¡p´F‘–?
12264-‰"‰„ñÅ£±Dmµ:€Ö|
12265-Z£Ëë².mq)Š'¼ž“Ee2¹¢.—N{jhÞ&u^m¡…5rH:ïl|D¥nwðQo™9¿?T^fV…r³¹¾qßë•ÕQ4c×dÈû¾P"ÞÔB     -™ò“X|ϨÁEy"”ˆDâƒA_,Œ£ŽFÃñAlzĎcŽ0Š¡fX[ âyŠ?1\@úâñãºÀ¦¬U­p-'$
12266-¯8må§¶Òjµ¡v_W?˜kf£¶ /ŒB      Å9`k|‘x¸iG­½üü‰šý`¤8èâф?„u‚1=„‘ƒ°/‰²G        ‹F"ì£p4æ#(ùP$ˆÅBÁÁÑ`ܯó®Aâ/³l…}+w#ŽoÚu!ëÍjØTÚ:º.ýøüa$Z'”Ê5°`0†6ŽÌªz„䉰D< ÞñD(J²C»‡C´›åÆ#‰@ .p-Mï¥å¥xÐˍk|´·ÁŽØ+´Ólæ:v_ê0NcÖ´8D¯hÍNÓ­¡EÜä¹³ö`…¡ÓÕGG²|
12267-¦ñyõ2#Ög
12268-,ÇdêœmDÍYïð:ØSjšd)å’x=$:Urл æ=ьñP%b‹¨¬,ZDXuÌi>³X>°ÒìàQõi£ŠjG³™ÔYâÚBlށÞJé 3¦?z@Û,Ùl²P»¼? q•O»ù­Çãêͯ•{ÝÕøÆ¡02?̄žž¥WþšQëlèmÅbÂ@{+7Âý“ž8†£žDȌ‡Cƒ~֋†!ˆÄBD&ùŒòUÇ4K Œhà…¶Êé:êÑËs^¹Ñ˜ôÅQO¹×Ïü4Ú^·Š)ì÷Åñ`YTá˜/
12269-Æ«Ä
12270-û¢áP¢®X¬rÆ|QvíT§ÆœMo+Ä"8ƒ‘€/ÆÐïõêôˀX؅“ÕEê´Ísj5$BG-YåBiD½Pž÷ѵˆ}z1RJ!PžªfRho²#IͪÕlÇ,>l´ñê¡É$ixt¡ˆ×3\;zu#zÐkµ)Þ¦ž¥¹©¼œÍSš¢ä1_‡½³r÷Oô!^]ÜåÖ[1UG\ASy^ÐêWšçO ªVÒ-z±)‹¦úVW|ô¨^±³êD¬q ÑSg&[ËIóæÂ=Ã×Pbﵡû¯
12271-ýÚù%¦2yËI㗹üϲØ14ä¡{Ÿž"¯±<Å%õ<z žLÑ£oCyzx>ôLÓ=¿¦ˆ%mYªâÄzS©â~+Ó»ú”X{Òóbí´®›éJ²Æ°™(êÛ¼æÜ^1JªW­U%“S¼5§¼›/kߐn°-²Ög/êD¸¾]ǸhZ$pÕ4`­±ŠVcÖåi$«¦Îš½”ZÖȦÝ83³bÇÀGó=Í3åY£É*ç(víÑd.“E[‹™Næ“^ÎdîS„¨}ãO$îԒ…/ß(֌¶¦Xì§1e3uñì€~k«ÙLӈ81R;-U¹ËÃk‘±xƯbШþèŸE´tL`(PŸ£©ä…Ln9×ìÁËcŽkÆY]¢¼Å*ž •PcsÖÌ&Å닡™¦UêR­*]]ešõ9õ”¨²4ÓÛµ(‘q<¦®º8×ò¤K°®ï[;0K*=ÜÑlXֈò”¯Ð˜lz*e
12272-C2ÔhMÞd*­ÔªHš]3}4TœÆÓo홑‹¦›ZÎÓgÚԛœÏ²n7FýW›™u£TÑÒ°w›Œ!ãHóš,[°ªmiÝÖP«rcüY£ýÓçÌH].…áZÉð6¡Gßv`žx›bÐÃû³çÕ;“+ä°!©SÌë çd!}7ÃuÎj™ÅEE;ˆ³nr9[ºX+ç*wm×#3˙Šˆ”e§Y6LôÖµÌLíZƹv¬Q¿&ÝuµƒHbßÔrï#¹Žs]MVJ'”<v'oÏÑ{!Ž£¨Y¿}Á@0O„b‰X(‹âG‘h„îªÆüñ&«ö©€ßˆBX,N,{&A_<Bt‹ÀïÃa†}\N'|±p ÅLˆh¨g2á‹Æ"±¨ÇC!DñûþhÀ¦[H<C`\óûÂþx(a¬
12273-îóL…|‰h4Dž¢\ DXžÉ/ÅÊ¢|gŸ V=“a_4BÊq“#9†Íðh{=ŒaAâkFÉEc´…Œ-
12274-DˆS¢^Y7²“ð…ÜêA¿Ùn#F-ûÂá®õYx        ?5t0„ÄãñD$&Z¡ÆFöc-áP4”àÌX„„Œ3V0îÄ£1’f¹FdÀOՕê͉ƣt÷fÒ¬hÐl        Ìl7‰+£êõJbƒ¦IR¦ô(Uzk¸eÙx·ÜØ1¨}ú½Îr²f'DzilÄ+vˆÌÜ:"éo©§wޟúèæ¶ø¢ôž`ÆÎ6¸§ãÈZ¶"¿[;ÀçÚvr¾u“øM€·œœÃë?aúÁL£C1o¼¢@º³Wnk§wÄþdwˆÞNJµÏê¿=€EøÝoGðûünÓ_%Û¢¿;±U¿_zi’¸Úán¸
12275-Ã`ÃO`Ü       ÿ^ WÕI¿["ø½^äð]~Wú‚d‡™â{9||¿ì„ÏØ~Íf‡¯Û¾ˆá΢Pàð;áçðA;Õòßì/`ø7ŽgN°·ý†Û8ÜÏái5߯áorø,‡?nûë6'¸Ú)ÜÚN0‡éö;څíÔ¾·?Ôî„/røwïÙùt‚ÝI­ëwœÄà  †<ĐO0ä»Î;Úíàê Îwqé Öï ÌS?×A˜¿ƒa|½ãó=ðw:±³jë>ßa‡Ð:*»Àá×‘L¹ö¸ìðz×m؅Ÿq}Üå„Ϲ~͆rpµ¿wý$ÏÇ;¹ÓÀáK{sOåNwŸ÷uþ“¶t¯Ë  Ánâät7q’ë¦Ú=nªëf7Õ{«›x˜gÈ£î/H`j‚ÄÝp#ìE=1R#˜jG½s tðYŸAŒæý2½Fæ¤AÏK~”ÂþªÇðƒšs(ÀÐ.S¼W>Œa@£ßÅàøŒL¹¯gÈY9¬S–àCò1?&SüSþ¹<‰áW9ü‡ßføKþH>Žáí6
12276-ݶz8ôqeø‡ÇmTê4‡ó8¼„!ÊÛٍ:íØ MÓïbÀ[à1paî/‰Ô¦sꜺŸ7¦þQOýl¶lØ!R{¥í(ϒžšnDY¾´£L³
12277-îÙiÐ<‰©o
12278-ÌïÛæPò‘="ÕÑ20¦§B-Xò9=5Þ²   ºà¯ôÔt‹¹ùŽžz-§~¨§”–¦6î©·¶h¨)7꩏47À¤žú¦6ƒûDê˜Ú_×S‡©-pÏ HÙZsÐ|¢E®VZ¶a‘êãTVOy9õ¼žäԈ_¤¢­+˜º §·>7ÀÔS˜·‘ºëóÀÍzj1wÀ¤žÊµ¾      ¼ð°žº¯õ­°>|¾»uíãçôÔoµn‚=p[P¤žÅ¼}ÕS_ÅÔ<£§þ'Ö>ý!‘z©õà‡3z
12279-ìs8^ÒS!û{!gÂ"µ`?DàA=õ!ûo@žÖSÏÚ7AŸîÛö߆›á‘÷#û€?ÕSmŽ8?ÔSۛè÷S¢"•p¸p|þТ‘#pE×ÖÏ9]ü3+L8hޘv4‹‹ð„c­øÖøë®«”5>Ïá"‡yÏqøFßÄá;ÿ½?ÇÝAï3|üºj|ʄülœÛåµ`>‡ÚM
12280-Ÿåð9¿Âá×8|Ãïrø}Œá IoçÐÍáfŸ†=~õz‚Ã#~-F§óKä„|
12281-ã~ç7ᴟp~=O:›á½vx§³]zÓY‘þÁ¹IÚRÇpYÚÔÑ/½U:Üá•c
12282-ï”îíÀÜKû¥J¿ÒqÃ`ø”ôûcþaÇ­NKŸ‘^ê8Åð3Ò³Ò?w¤¤ç˜þW8üš4¶.%¹™ÏÏHSë²ÒL?+ë4)ïåð÷8ü37€ÈýÚºËù.B¾ËøÉízXú¾4íz·”‘2®_•úá‚ë#>èúm¬ý×'1|ÌuX’ä¿p}VrË/¸¾$mÆð¿H®ý£þ
12283-Æ¿ïú†W\߆8:‰Ãu+nÄp‡¼§ó ¶ü½4±Îrr!       ˜Âܧ¤»:_ÂZ:?‰<”:Fynêø†OuþDÚ#ÿt9ò—;¿óÞ·0L€Ü咰¾k³|DtmÃxã        8Ýå•'ä\׀|škم¼…å;àÍ]ûå¼»ËðX×aì©'º„Ì'±Ô'ºN˅?ÅåƒaRîîÎc|w÷€¼Y~¢«$Ÿ– ?#Ý«¿½û´ìfÈä…î7Ê+2k<Ôý>ùJìýˆó®n‚¼Ã÷w!$“Í:t?Äùo#üéîoIùY„ä¿@Êùo1¼þ±û³ò.ÜŸÃp½{Uþ(k/Iû?˗å€û[ò
12284-ëØ[åi÷åwÊgܧåŒTtÿTþšDt¾&w"om¶Çä7»;mË¹Wàqùƒˆyšå€Ôܛ±íŸâðO0|JúOîý¶]ðA¬7 ÿW¬×oƒgÀ«pw‹Šp†o‚†ûàE›gÕi×û1Ü
12285-¿‹áNø†£ž…1ļþÆCŒ3Ãð×––¥gÖYŸçZž‘ßfÃ8‡`£ÐÃáaïáð‡àðŸçZ(ü*Žé%É.¯—ÇäòëdE~‹ü ùSòsò_Ë/Ê}¶ÛíˆíVۋ8N—†ä–Kå_ɟ½ú«E[Í_"»ÍX;X`UöBØç;ja»,¿rßqó‹ÎáÍðœ`äÀ”š^Î*‡ Ñ›3ÓÙ,)åƒñfM¨|1$XÞÛY•å3nð‚eus)qs{RM¦•4LÐ͗d6sŸBoRóT•/UR5à·-ÆÏ!舶XQӜž        Æbõª¡>öø…LÉ
12286-8™_JæÓY%=~!¥R¿\-œPèÖõ¸¦©Ú¬:v|
12287-h
12288-å#GP!4Þ±„…г8 HãÜTßz‡šåäë›Ö29ã9¥ÖZ¨ºÙ        t+Ìíp¨wë
12289-Ä® TÞuÚÍt(oî‚u[ª·ìª¹ž]Ҕ$m#ÂX¦XH–RKŠF”5˜+‰K¦HÊA=RÂÂ(ûüâ,Ÿ’‚9êI
12290-U©@¿l—LÃÜR)‡•Ã\r¹¤)­Ì/cù󴫉ù¼ï¦Wp"YR`n~yaAєôÈJ     Åf&‰˜
12291-Â+¶H½SÐàø1P¦ÈrMSl<OŠ<·Áâ£É<3™^¦í„ÙLê,k÷Ä)&¶¤ä… èíWE:)hHˆNL))¾é»EÉ+Z&c†$µ•{‚Õ¢œÈ–QãT³‡ËjÌBª÷Z¦ú9'p55½š…ÇÈMšuB›£F‰Á)zÞl%bwj™’2Ƃ7LªG“ZVˆ¤Œ
12292-åäƒýú]5=g„»
12293-Å;M¿&©‹•ÙÔHҊêÜ%Ÿ.w×ü4±ˆR+bƒô˜R»Ø£{iŠŒ–‡
12294-%g´]Ê׋Q_ÓÝ!(¨E¾½\3¼ëµáAAτcى¼xÁ/ٝ:gï î¡l§rnA¾X˦ù¤&4}SX^ÚVî©&ovƒŠ7·5/b¢é
12295-f<£w‹Yøž4¹¡
12296-<;IŠC«sb¿›¬•£×oš‘YUlçAõ}"¨OôWsål£^q÷¢ÜE® S(Üd®È&èÊº!„LQ(‹Á1,£µZT-*"ì’n–.À
12297-œ£3fô@NúȼzÕFÑRȑ!=cäë/-÷éïCçÖ³8øÁóªví¥–™_¶Qt«Gô—;ÏfJX•‰h€Çä.Ãö6E´YÔͪ—CÁ¯Ôf`§—S¥z%
12298-+µ¿655­Ð­ë”ï}¯m¥.˜ º£fí\&…†ù:¥‹Ö,rËr&]KYimÆQ4S5™zµc™äb^-–2©"°å[LVT%`ØMt¬XÍ, 
12299-‰kVnÀ">¡d“8V,“ÓŽZ_ò]]™¢ÝNÏs‘Ç•¶prRËÐ÷6œ:€¦×²»eu´Ž±¿£A26}¬šv§¬P»¯ã.Ñ@(ó)8²‘sä/‰Ç·àÀ¡ÔܜnúøïA8>/ª-æ„çæJK™"hŸ›ó›25“èè5Ûí9Á-Z/¥UW˜
12300-ÂÒí9ipçS+zÕeÿ„ñ,É#b<•!8Cjº¡¦G'òçÔ³
12301-TÊÁLéä 6…9ÕGy§Î’‘FíæÇ6—|Î,C+gÿ
12302-Cdæ:?ì™SDd2==:~åkh»hÐ,ú?ÃcžÔ–ž(ÃM‹btÙQ¤Gwe‘ŸÅr¢•Kê-²LöV}i8aSf£éšòêù·8fR÷&Ì´î³T;GV¾êM…U2~@ÍäÃÅËPù€0ë™%I.œŠ·)+B#i‘¢æÆß€ZO³ê¤zÞêjf?Ofòo€ñ<N(üÂ}˜(ÇqÀ”qU
12303-aVCW@+¢à;™¶…ÔûÄ­î¶©Î>-
12304-1Ë3.‡.-Õ"F
12305-yü1žSm3ÝDñvœÔŽkã袯PÃ&òŠÑ´:"F7³Æ…e{m]vC{ÊÂâˆ>5‹‘ªÇ‰ríT-ú¤ˆ³tºbÆêcéeÀíIœL’ÙSe7«@>JØ/B®ÕXº¸Œg”­ù0Ó'!ùè]&d«žfWà’„MŸeDU³JRP©Öb3
12306-®£ÓP3¾!ߒUçim-ØÒ§Nò*u»|.©e’èdˆN.ËÄQö=‘ä9^Ö        {*üšÅ² Ýì•íÂN ŠV¶)læøl;¯ÀÞ+ËE‡-µ­ìˆŒr§3)4èk¢ãÊi½‹+¤1û“Ç5ýì‰Ð°d‘¡ ¦¡Y¤|LÉ¢-'|Ýuf.û¸Ój”m°F„îaY³æù0c³ª>ɕóNÆŽ$õ¶+bÇP¢w§2ùeZ¢²ìô^}£7Ñ"”F›;‹>Íxl
12307-î†È@Ρ«á5‹°ØTL§1•„q„*Ãoá7C
12308-TL0Ìë°a8Rý38­.ú¹ŸÖ3˜+%¤¨!þyðpºŽ#„`€N"|   Ëæ±Î,×lÅðð¯éxpêÑk'H
12309-i”ðª2>8¼°9†äËÓÊ)ýw}¦k~×z'1†V–ó^U¼BGΤ[ç¹ÖiÄ&ÌÆ,1}p—ï¦F0}~MlÇQÌÏâ_9¡5ñPQfg  á$±"s©!|”sJ,5*  ÛzmÄñ2B”Jí$+âö¤®qMDaV‡Ïš|e±D
12310-Îl3ÊdY8Ä9–fÉÂî·×ÐÍhô昋*n6Ÿc¾—¹TÕº4fIc[£ž¼Ë@+Q‚öÖl­;ÉeU0äC’ІyTç<ƺ
12311-\ñ$
12312-´çu7ÕPbx’¯ÐnP…ŽóÌ;é=¸–h…¨ëõ´ŠÆ¥Îú2Ąõ™"õ©U&ÐNT÷“fw9Áh
12313-§m8Ún!œ{±—}½žæÒ‹ÜW#H‘(Ý%Hk°bÀM 9nâQ#u¤ô1E½nȀèÖ´¼×hÃ2J4m´¢CáñL%À%ZTb~a½A­ÜNh7û¢ËˆGØÛ
12314-¦ö’]PxSßRË]Ö\pXû¹ßŠ4z­œ›w¥xì˜uö¹M†ÎŠqã×&QêªwÜäАç ]7Óu­]ž­†‚1ê;/H;½Ü/ԅ„[Fš1ÊVŽóúDžUïpc´UB˽c¥aÕ7†ïpø§0wilù
12315-Ó,
12316-¬õ±*Z°Ý¨AŒkî4G       çï¨Î?f9Œá¸(ìùf¡KˆCãÁèEԆD‘G ¦ëŽæ0VÄ¢ÄܒE/éy³ˆ7].¹µš¦!KOM}†FÑã!¼JUEݺ Æîê¥jTóø­°})}.$­‚õʗ{”K×í«KÂzنž5F˜ËHóRF¹ö›xnM±-Ïòì+p°h§ùœzLÌz7éX‹\·‡)ˆy{Á´4$Ë,ύÖObz9#}ó    ³¿-Э«àG¾ýøw¯«8?)úüÙâ‹O½ïٟþý‡ýC?™ø½‡¡íþÿõæ¿ü£¯¼]¶Ë6ì»G–ú{\ââ—ÞV$õôÚì=›ñ»
12317-¿;ð»¿{ð;„ß~#²½S¶·ÉvW;¢÷ö$äÎNQþ ¸iA¸§¸‹¹mmv
12318-CLH=~3!.Sítéí¹Crµ‚Ôé>iÇRîKï¤Âm-t—΁îKrá_zÜæTû7jÏ¥ŠËǽ=—žÂ†8™?޶yÀà”P>‰íhÃo¯
12319-@nè¹ôl«Ãçڐ¯K_é¹ô¥6‡
12320-Þn™á_E‘u¶–ïÄ
12321-;m6
12322-1N%_°ƒ
12323-ãÈg'²DxRg¿¨èû:/ãe^ÆEÎìÀ̊Vþ_»`å"¯„­—ÖB«[’åޞ˭Ò
12324-pÎi(Z‚w·‰‹«ÍӊÅõžû$Én[gH2ÐÓJü_îåp³Ýa“·uº0á¾¼­Õ!aˆ
12325-kCd*ÀÝ-ž´÷º/ï!ÑJÈw2§Ù}qHýývL]ÞFºä¢ŒË»Ý'Qf|e‰^`+:{.GCÆîïÜÖßíp |[ÿ6ì]¢
12326-á>ގ
12327-ÁþÑ<N¹P”møuQ×qýȲãEJšÔÖîhÁš‰6À²ŸÇî»{2ö¦ûòv7uëå)Œº¸\ŽÿÄb^zÑårõÐâeyÃŽüuƒ(êÝþþ6‡.JrD‚M–ÅÄ ñû›çÂ>¿³ÌÝ!}ӎ6†\–žp¿}n&CT‚€›H(šGý§ùfŽ"ðï-òÏ$¢OÇ7³;Ñ%»U]Ê{ưº
12328-È«¹™ì  ú~%w»‚‰%æO„‡ÒÿÂP8IœóóCT,šˆ¡P2°NG@ü¾(@&¸2Œ´±É¹Î^ÎÊéqžÛÕ¼¹›7»Dûpúíþô£§Ž÷æé÷¼'ŸÄï#'fÆf.'Ý3þ¾ß¼å7ÞÿÇ/¼ëèòÇgtÿÚª-ž19>3¦Ï–Ô™bY<gÔù{ÏðÎæ™F+¼Bš#ýÉò™ƒ+÷@ÝÏKOփ΍ªÚX6K·úŝuEásôùénð†W?ÿV?Ÿƒßp©Nªï¯§Ï1üÞõÀó¶rÎó6:py
12329-}‹9Çqå<pnÇô†G‡üaË÷®XOÅ××è©ËÏõŸ1Æ:Å닣úZi‚ý•ówq©YsµxÕâó»-‡mDc†×ÔÂWª¥ÔÏ8~ó/Œ^0Œ½‚å}c5J[.v1/Vá}çc‰=×z<ÃøWÞOP*V¹b"ö,èøn˜Ohê{Ô¾”¦XuÐçVÌYbmL¯û{T2Û7ƾ}ŠÛ]¨Ëµí¤>´YèžârE½rî7¿ÄG?Íä҄›g´ÌýµÕïã¥,Ó݌tÉë\dŠ£ì‡®põÕy˜{я<ú1VOj÷0¿Çõ2_£½ùŸ™ïiî—i^×Òê/…¹Ö¾¼ÖþsTÒ«î•ê>‰s™#¼¢&ZóH“VMW+÷êç_Éçâù©î¯ŠâßâçÿPKxƒf@P>&ëԑAppManifest.xamlPKxƒf@()ëÕ.˜SilverlightMediaElement.dllPK‡0
12330\ No newline at end of file
12331Index: wp-includes/mediaelement/wp-mediaelement.css
12332===================================================================
12333--- wp-includes/mediaelement/wp-mediaelement.css        (revision 23731)
12334+++ wp-includes/mediaelement/wp-mediaelement.css        (working copy)
12335@@ -1,11 +0,0 @@
12336-.mejs-container, .mejs-embed, .mejs-embed body {
12337-       background: #464646;
12338-}
12339-
12340-.mejs-controls .mejs-time-rail .mejs-time-loaded {
12341-       background: #21759b;
12342-}
12343-
12344-.mejs-controls .mejs-time-rail .mejs-time-current {
12345-       background: #d54e21;
12346-}
12347\ No newline at end of file
12348Index: wp-includes/mediaelement/wp-mediaelement.js
12349===================================================================
12350--- wp-includes/mediaelement/wp-mediaelement.js (revision 23731)
12351+++ wp-includes/mediaelement/wp-mediaelement.js (working copy)
12352@@ -1,10 +0,0 @@
12353-(function ($) {
12354-       // add mime-type aliases to MediaElement plugin support
12355-       mejs.plugins.silverlight[0].types.push('video/x-ms-wmv');
12356-       mejs.plugins.silverlight[0].types.push('audio/x-ms-wma');
12357-
12358-    $(function () {
12359-               $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer();
12360-       });
12361-
12362-}(jQuery));
12363\ No newline at end of file