1 | Index: wp-includes/js/mediaelement/background.png |
---|
2 | =================================================================== |
---|
3 | Cannot display: file marked as a binary type. |
---|
4 | svn:mime-type = application/octet-stream |
---|
5 | Index: 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 | |
---|
10 | Property changes on: wp-includes/js/mediaelement/background.png |
---|
11 | ___________________________________________________________________ |
---|
12 | Added: svn:mime-type |
---|
13 | ## -0,0 +1 ## |
---|
14 | +application/octet-stream |
---|
15 | \ No newline at end of property |
---|
16 | Index: wp-includes/js/mediaelement/bigplay.png |
---|
17 | =================================================================== |
---|
18 | Cannot display: file marked as a binary type. |
---|
19 | svn:mime-type = application/octet-stream |
---|
20 | Index: 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 | |
---|
25 | Property changes on: wp-includes/js/mediaelement/bigplay.png |
---|
26 | ___________________________________________________________________ |
---|
27 | Added: svn:mime-type |
---|
28 | ## -0,0 +1 ## |
---|
29 | +application/octet-stream |
---|
30 | \ No newline at end of property |
---|
31 | Index: 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 |
---|
87 | Index: wp-includes/js/mediaelement/controls.png |
---|
88 | =================================================================== |
---|
89 | Cannot display: file marked as a binary type. |
---|
90 | svn:mime-type = application/octet-stream |
---|
91 | Index: 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 | |
---|
96 | Property changes on: wp-includes/js/mediaelement/controls.png |
---|
97 | ___________________________________________________________________ |
---|
98 | Added: svn:mime-type |
---|
99 | ## -0,0 +1 ## |
---|
100 | +application/octet-stream |
---|
101 | \ No newline at end of property |
---|
102 | Index: 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 |
---|
280 | Index: wp-includes/js/mediaelement/flashmediaelement.swf |
---|
281 | =================================================================== |
---|
282 | Cannot display: file marked as a binary type. |
---|
283 | svn:mime-type = application/octet-stream |
---|
284 | Index: 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 | |
---|
289 | Property changes on: wp-includes/js/mediaelement/flashmediaelement.swf |
---|
290 | ___________________________________________________________________ |
---|
291 | Added: svn:mime-type |
---|
292 | ## -0,0 +1 ## |
---|
293 | +application/octet-stream |
---|
294 | \ No newline at end of property |
---|
295 | Index: wp-includes/js/mediaelement/loading.gif |
---|
296 | =================================================================== |
---|
297 | Cannot display: file marked as a binary type. |
---|
298 | svn:mime-type = application/octet-stream |
---|
299 | Index: 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 | |
---|
304 | Property changes on: wp-includes/js/mediaelement/loading.gif |
---|
305 | ___________________________________________________________________ |
---|
306 | Added: svn:mime-type |
---|
307 | ## -0,0 +1 ## |
---|
308 | +application/octet-stream |
---|
309 | \ No newline at end of property |
---|
310 | Index: 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('&').split('<').join('<').split('"').join('"'); |
---|
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('&') + '" />' + |
---|
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 + '&server=vimeo.com&show_title=0&show_byline=0&show_portrait=0&color=00adef&fullscreen=1&autoplay=0&loop=0" />' + |
---|
1612 | + '<embed src="//vimeo.com/moogaloop.swf?api=1&clip_id=' + pluginMediaElement.vimeoid + '&server=vimeo.com&show_title=0&show_byline=0&show_portrait=0&color=00adef&fullscreen=1&autoplay=0&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&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&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&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&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 | + '&': '&', |
---|
1980 | + '"': '"', |
---|
1981 | + '<': '<', |
---|
1982 | + '>': '>' |
---|
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) + '–' + 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 | + |
---|
4964 | Index: 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("&").split("<").join("<").split('"').join(""")},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("&")+'" /><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&playerapiid="+a.pluginId+"&version=3&autoplay=0&controls=0&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={"&":"&",'"':""","<":"<",">":">"};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)+"–"+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 | + |
---|
5127 | Index: 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 */ |
---|
5971 | Index: 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 |
---|
5978 | Index: wp-includes/js/mediaelement/silverlightmediaelement.xap |
---|
5979 | =================================================================== |
---|
5980 | Cannot display: file marked as a binary type. |
---|
5981 | svn:mime-type = application/octet-stream |
---|
5982 | Index: 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 | |
---|
5987 | Property changes on: wp-includes/js/mediaelement/silverlightmediaelement.xap |
---|
5988 | ___________________________________________________________________ |
---|
5989 | Added: svn:mime-type |
---|
5990 | ## -0,0 +1 ## |
---|
5991 | +application/octet-stream |
---|
5992 | \ No newline at end of property |
---|
5993 | Index: 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 |
---|
6010 | Index: 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 |
---|
6026 | Index: 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¸ïyIEND®B` |
---|
6035 | \ No newline at end of file |
---|
6036 | Index: 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.o73I&³Ïcþji&¿¼÷äM>ÆÇpϹ±BÕ¾^-7*ä B |
---|
6045 | -Ä©]_'íÑį́#AçÆ [°{7[o:Ò$Ù®g_ûS£#~m43íüJǬr<Ùf0âíäcJ×K,ÃU×gy1è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¦Ç(OBQ²&L¾î´Æ´ñYnQnÆ> 1 *æ¨('ô³d2'DB·¬J·¦Z¡²vûR^D«3eÝñ¹Òþ{vêÄÀNnÂlI½li9|i |
---|
6047 | -Z4*¾KzVÒÁˬ4§FúfFPé¢ÀDVw¡ $o\[1òÈmo¡iq{."s)®Fûï9]ØËu=I¥i Bmtm¢ Å$§Â×s.Ìø¾K7ùhXΨÓÝ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¦©©ºjxÅi8ä+ùñ7ä!:ûª(¸håÓBLð °Zÿ¶HüÝ~âÐù»C<$iÛ$£®®¤·«á¯ÓBÈÛÍ®.üBñv×`¤ [0¾KZ¡§´IÕáJ4Õo»¤zrt§z^´´sy`Ñ¢s/SëQµºòKk¹üâ»$ZVH£|§+ "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-PNÞµ
vj!µ:yÒí·l¯ »ÛôRNyâ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ÉzrB5!
vëûüù¿f&Û×çù÷³¶(ÁÐ1uëiaÌ\Ê#TÉPõQU tÎþý%f¿ÿ}qò£:S5ác|ñ1þ¥ãSnìP5¯wrá |
---|
6052 | -Ä©]_'íÑ̨#AçÆ [0MW47«é0Òq>ÝÄÙw¼tLi1È*ñÆ|s qcJ
&Uö÷Åc)D¼Î!¢sbõû4 |
---|
6053 | -ba©øe|u-b'SA5µ{íhn+ÿ<Â&6Ü4ÞÅ16£E
ü·&Å£b,Ô× |
---|
6054 | -p¨e1YøS$#ZñO#-à!1U Egp1´$%äÐ#&Ì*?Fã
1/Y*(ôCöÑ |
---|
6055 | -¹9ÙJdæ+®1·Â Ìæ9Ô¡) 1&bi±(1Î1liã |
---|
6056 | -\NRØ `ÁPEÑ¥!ÝRÜYnMµBe$ϰÍV¿GbsHã^å@#v2R_Ú Z@¦"mM#:e¹DA¨gÅ*x¦TC»0Â68uÕ¥ o`Å`¿$¶·a!Î~æÊSFgb7Ìiì¢XÑ 2£ç
¢VA
9H¾1ð}D79¶Å |
---|
6057 | -,'æ@ÊC ûç0x?¾@Ü¡&BLcrg
9ÅôH[/(f1¸3Î÷f}Áj¤;ì$ïÎ
úÂÑSB5cáÅ«Áö#<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Ù²-Û"¢ð&;xZé÷ÔâAü^½ùd Î}®îÁÐ^ Å/ |
---|
6063 | -ã8ä
?;5ÔÓFºf6¢¡zÚ Ú¡Q:âñ¾¡,ÆÃA5¢ÁÇôHÓ(ÁÐ&e¯Mú½ZúP>É0Fù§9 ¬F®à/
éK¯Æ»=Ja·§ |
---|
6064 | -Í7E%:æÈìÂ:1sp (8P%CÕGmTÐ9û{ôýþ÷ÄÉê6NÕñ1þ_ÇÿIþ¥JIEND®B` |
---|
6065 | \ No newline at end of file |
---|
6066 | Index: 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 |
---|
6122 | Index: 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ÿÿÿþþþûûûúúúùùùøøø÷÷÷öööõõõôôôòòòñññðððïïïîîîíííìììëëëêêêéééèèèæææäääãããâââáááàààßßßÞÞÞÜÜÜÛÛÛÚÚÚÙÙÙ×××ÖÖÖÓÓÓÒÒÒÑÑÑÐÐÐÎÎÎÍÍÍËËËÆÆÆÅÅÅÄÄÄÃÃÃÂÂÂÁÁÁÀÀÀ¿¿¿½½½¸¸¸···¶¶¶´´´²²²¯¯¯®®®¬¬¬«««¨¨·§§§¥¥¥¤¤¤¢¢¢ ¬¡yyyxxxwwwuurrrpppnnnmmwiisiiigggdddccc```___^^^]]]\\\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)Ûdhã¡ ¡8µ TTc$ªôú»óú|\1ùÚÆUtγsn·Ûk0Ö©±NÍj!æzJ³oî¤[S]/õ?dÐoÐÚ8ñ¸ÃÁìv:WÏoN§Ó¹G%{ä¤ÓXdÄ=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»ÝׯWP§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£Á`I0xg¼õ¹*ĽÒSáòá»R-õ±]±ú³»BM@B¦X²lÙºky»zmU9çååå 5ÖIò¬Ô-Qúf/á{èìü¦Ú
ÚB(ÔÔDòPÐÆ®ü#^ïàt¹@3@3F¢:dÅ»þùóýÞo3AT`ÿ |
---|
6134 | -4ùèæa2àÿ$¨/ýê¿ÓÁ zP~(Ó¼E{lªy0A2"ɨUÈìù¡Ö-Å¥UQ®È' dtØ"Ad~ýPßÅ!ðJ¶W}Øåa4*îD-Ø#Dææ2;³ñý½ÏårÑzYd¤á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ÖÌ)FBR4iÙ§£î´âÿSÎ~|ÎÑ"DâIEND®B` |
---|
6137 | \ No newline at end of file |
---|
6138 | Index: 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 |
---|
6316 | Index: 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±&À@DCI@Qw7bï½aYÄF³®mQWÖµ·ÅÞ]{/Ñ]Ûîº>gî |
---|
6322 | -MÑõ»ç¾ÞSÏÌ9sæÌËÍA"BêF `Ë$ÐwÖyÕÊ3ücC¥#³Uj?äº;eéõ9þ#Fpáã®ÑfzxuéÒÅÃÓÛÃÛ»PtÐå«õ²ÔºVN=¤tÁ |
---|
6323 | -]ºV£WjÔR¥irõÝLÝÌΩíVsÉ5i |
---|
6324 | -÷tM¶ÇHY»§îü´ |
---|
6325 | -^£×hT=14T%Ó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ÿÎv2[®ê³Ò°ø¨H_f¦ HcÂ¥zT¡¥©Ò6*}×<¥\¡i©ï*©åt,W®dJj©F%Wh¥iZÍB«û¼²úßÖÔ(*êË;*;Û£Z§Ud|Z£ðUè4¹Út·2íȨ(ÿ`Mz.Ixp(p+å Ó=½¼ü:zúy{vêìåÕÙ³³ON¡Þ½B:ùúv¡½aÓÞÂÕ:½L®0õ¦ü?ôV¯iMo}µÊL%ØÆxíåêåäãåêåÕÅ«w]B»ø
vöëåWÓk#]ÔÎ\¡Uæ)ä¡ZM6½ |
---|
6327 | -92N%ÕÝ©FTXL´|ýLÌëß&öIÓÞäL¨óG½yu |
---|
6328 | -òêóò éUÓ¼þD"Íÿ"¦Ïv!]æ:9ý/*«ÌÌÒ뾬¨Z¦æ¼`Zø÷W¤ÅéÁb¾zZgãÍl2Cut4»5igÓÉØCH8/[rörÎñsÖg¤©}sÔ~Cê`¿ð̬w´×VdKW¨R/zò¥tAæ+»7Eòöö>Ķ©qïîM½8:¶²}°R5CDã n V)S¡p4ê½èdËÏ.dß`wæ¤p¦sVp6röss§smyyfü9ü$j15A Ìn¾ÚÖÍÓÍXt²èce1Ù¢Ðb£
·¸R|\ìjYaùÂòõuk£õ®-ß¶íw¶slWÛ±%%i{»L»b»ßìÄöã¬lòSþ+ÄHl¶~æÌÞÅgòNtÝò0¹bËKKcÉX2_ùZ¾ |
---|
6329 | -%OáÑÆ$X¼½èÉÞ7CºN:5ø±ðXú òYÁ¼Ëã¶|¸V:äY5:½c´(½Å»pXuaCõ¯ó'ÇêÝïϾ´qð!½£ìòâçíܵjMõûkOµ½±û¯â»ßuh'²{âü7!Vù/"÷£¶ú |
---|
6330 | -ÒÊvý1üÀ5qîéÊd3ßûGV»øÛåØÍIÚ¹þâþgï?ï:m®y/þæáÌåÓÎ-<T1¬âoY" |
---|
6331 | -/½r¶ðMÊ#Mî³E]+ÆhFÌ¿Èúnι ¡DÀøåÉÖ®/¨Øínå>ØS¾0Vr¿ýà²3ͦmF |
---|
6332 | -9/éliáZæJç$uÜVö¦G^^äúgçf¹¯Qo¾êºå´ÛZv7vñ¸X?[® ú½{Y/¿Y4¹ì÷7:Ì_û÷ÂÁYæ{%L(v±[sßgOì9óM¯¬´ÛñJcP«×öËdS|#aûÅ %W-ò# |
---|
6333 | -änµøç©3»²¤+âO=tܼ٦©ëYæDþPjÉeWí·ê:çnLM|ç`=6AmZw~ç` ¢TÈþÏÛ ®D6ïcPßÙ7³ï¶¹uÝå±ñ('òîF²Ùë1û
´ýsÒa+õcGuè\Ó±Ï]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@ãw5ËíÙËÃÆ÷7ì^½mL«.qUÉvdÅj0îÜÔÒ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[XmTöNzS½¹ö]T
á|;ÄIn8뻼qôí;Ùø¤cÅ{ÊÛ8±D#¦LÀé7ÂÕá¾?â%mBì-[cû°Vö*wuå;¦ ÛìÒCoü||Ç
æM\ÓÏ>ë¦6îU¨[{rÚµØ_ÚUmºôôY©W÷SÝÔmt[°ÌÏî@[nzm©Ý#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¡MX$ÙÚ~{âÿ0e_·*`T[\»[ØÓuCÒß%Y+y¯ |
---|
6341 | -{²ÚùRÄìa |
---|
6342 | -A{E÷ÄL}çÞYX¦G^ß"Ñ9?ôíëâÃ3uþJ¶Îm]ÜQ1(üÕ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Ä Cnýâ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ý64FÐÑÅ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_ñlWvµéów辺²;p4OïµyDÿÎV'lpZåÐV§/è#ÙáQ¤oyø,$ÐHwLÙQy»;"·vGhí TYSq*7Þwtëc¡ëã¹®Áî'¬ÖP1Sª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äQXG@×îë"¶Ç®×³l[Å?kP%"w.èµGeøÛ+?§,Â5ú@»áU¨Tl@ý*
äמּÅé`HÏs%\~CDçDù).mÚ}Èæ!ÂýÜ ])áËåoÛ¹Üܪó+'äUâ°¦¾³'15>/A68YWkôÛ#KKBp1â~®ÉÊCÅG¢æË¸x>·õyé»gg<)_²Ûïøh ml@P1ÙüÓ¶ùîY ]Ë^ÿÓÓuP§ñÞ¶þ+gÃ1ü£;½mCg¡õ£y»w_r dÿÌ%ä¬0CÛ>a£û\ |
---|
6350 | -¸ æ´¿õM{ýÖIÅÉæKr8æt7j çC¥EpesZâæmòùæ²ÕoïNÿv=Eà~¼ÇÁ®úo¶î¹ò²RÝäãKÒOp<¤Ò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 r3á"¿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úHNuka-.hðã.Ge6Â?;x®¡âع\B. AJJV¯p·XÀúûÅËåo(¿ö¶Kv .[&¸>@Ð |
---|
6354 | -gÖçUPÙPË
Cþn3âLý»Ó_þ×¾X¦sºµ48ïyö×7ôóoOÓ'ºF'$$µô-±HH,ê&ilc7¡þÛ«R® +«P¯D`Y¢ÍüÒ³Û+\ü·w«¸Ùï®Î{ ×ÌóìÎ[oGÍç!çOo>hÐd×O«²ÊÃ7Wu½þmÊQ$xvv[æt¨xûVWá`p¬Êx¾äfÓ3§þc.3gi6"Æø9¬1^9°p篺ý:õï3x¤#vblyâ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}K4M:XöGëÐ3ÅS1åÚÀµÅÒÉÁȵâ:¬J)wÜ<ú¾sùÏÏÍ¥ñàä¯oß²Ù^+BËÜCF-s@6/M·âêÄòs²íRZwê?ÿâ[?ëóÝnÈè,5¤tüq.tÎâðMÈÖµ9ÜâÇrºYòonغf1^6wÞ÷~ð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&_¶Ñ37ËY4õð!)¾Ú?¾{t:²
ëi3Çâ5½ï E'ý0ûл$¸ACrà ·ElvÓó<<?¸å\ |
---|
6357 | -ó»ÍþAìÒDÒîñP×èíëÈíÍÊ¢æ¾ß1ç0K3pÞv°ÕälUûêOì>?ªt#¤YG¶ÎñÝ/׿b]¿ëò:¬W\Ù|ËÎ=f5 |
---|
6358 | -¾Fár41vJ°µÕúâöÊýúÙf |
---|
6359 | -h½'4\lm¥äSG·ý(· |
---|
6360 | -6fGÄÜeþªU[4Yxã
`ÏÀvþYzè|¬«rêæökÝF2G¿ÙQ¥çécã//-w"ÓÖ |
---|
6361 | -jm@KÈóp»²HoãÅo%v·XøvðÃÝ\z
Dm\Èm¼?×´ìÓ *#ßôáeg|]~ú±cW̧ðiöpBßë¥ï}hê¡8ò^dÅmøúwf¯¯ã+nF]>~màòÝÍûÛ½ßù2µ2ú8Ö>1hzõÖØ£Ó*íÊ0ľxèPÞ[±~ºf,tVîÒÓÞµÀPapÙçÖñù$«»y¥¸tô.À|hTUÑ(k½þäÎÈÔ·~Ç¢MåÍ?lÖªüÂá±DûË·ÞHôð¼\¹áJÕÖ=®U×ÎÞ@ýÐã<·R:[«\¿Sis4XÉjí£,Èñ\fñªýQs~{;yqùû¦GWTUl&f¯Ú+ÿæø LÜã¸þÝÖ'?¿9z¢¾U|¸Niþs¢ëk³èYoË߯º}˧lÅ{ÿ-wß®sOFq9Ò¼@Ìû¬<½0µÍý"²)n Û¤ïbn(èrqMJºiùvJé\Î1±Ë£5ÝÇÚ¿÷\g@Ë"DïÊM©®~ÖîEèÆÊ¤isìc/±}¿Ê¼j`§5ÂùßÎ%bKÖÈi\\$XTTtnj'ºû}ó~^fo÷äa¡kæ'û`gd¿>Òl½zB®^CPDUi[~Øïù[YU¡5
ã²»´ß #g^¹oíyölY²ç¿üaåoz%d.}±~Åú(ÕÃ
E(Á£§È.\ï=è0ÂOïhÚmÕòöe§ÄÍK7ïçæ~4eFTßLiçõ¾xN\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Î-kZ8Ædßuþ´åõ³ÑÚ]HôjtÙ}³gH .AmçlogWôì=Õov³}Äé
8ùãlïY"¶[<_¥/ªD<~.³ß>ĺØÈ Øãz°ìhDbÇ(9¬<_3e²{TDǶqÍ#öm sÏÊùÍFí¡c÷] |
---|
6367 | -Hy*/'@'@ȶÁñIÁH¼9eä¤/ðóLжÿ&¹òPÂòÞ|d1öÛ8E¾yUXîâtªÄV!×IWîlS
RËÄØ.aK/ò`Ø&ô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#wqÓã~DrKÐÍ''ÄpýúCøÈ#GîL¾wÈߺëîÜÕ#· |
---|
6369 | -¯^ÚÂÓVßëÐ |
---|
6370 | -ó%êß÷®>,ÝúgG¯áHj
QkÔµEírEíêÜòD^Èù ÈuB~¨3êüQWÔ |
---|
6371 | -uG=POBQo4 |
---|
6372 | -FÉ(¥¢!() |
---|
6373 | -©iå¢Ñhú}ÐAò*i-µÚKH¤Í¤Í¥-¤R©£ÔIÚFê)í"õVHUaKÈ`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ðògq?®K-ªMîù%ºÆRè |
---|
6374 | -¤~«M}LÇjP¶ vnK|jREµµßÔ5md4òGµ©Vþ5©PVè]ÃKVmê½OMªÐéS¡¶uOuúΦªíWzì×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¦íåÚCuMÀ
ÉÈ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ð}à´'+'Ewlj:¶®2æìnfɼ |
---|
6377 | -¨í5rÀÛzËe~½mLGLWº+é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"ÝtAn7ºCÃÊV!½ö,àHSuÜ{³Ù<3ÐÄ&EP
7CïU±Ùæ´ø&e3!KÔ/qæØÆæÜÑGgØwê¼ÑöØ«gG)Cû³3kìò$@uç^tNº |
---|
6380 | -Zmó=¥\òÐÍf~åà DÞ%å¾¥=ïÊr |
---|
6381 | -ºayäÀ V4£ |
---|
6382 | -áYÒÌÛ¬:¶?âWD3ZÃoO~ôbúÿSjÕèYD&×*ÕÉ>§ |
---|
6383 | -O¯¾Ðú§³6²ï<\Úµ]ÞIôîÞ¤rúÕÐL
ï×ï^¾ãÍå;;.=sÑGÞ(ï<ô$'nB<
7MíXÑìåÛ@±-®ãYÓâÓï¨9P(A©ZgxÚÍNk³Û!Ô-G*S)3ÕÝèztËШõÒYº¢»mp¤:å(Èxy:IÓ5*¶»S«úT¥ÐëÚ¸Yº¿èéîIÿsShÕtSOOúmQÜon9=L6ERϦ0Úý¿É¨]}ãGoX{
&á7k´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*örmP:ªÕ¨t©i©ÙéPe«X`Ä&µ6Ñmð6oÃl5Ýå¨dù¦rúP¢À\c¤òdÂNQuv®^!gºsÀµf`# peM(UçªëÕãØÆ6Ú_öß¼ÕeDµ¡î`îjfjºÝlSÄ Ïedz¦{¹Mp¥ôIRÄ)JÏÕjajaª¶î\Ë]ç¦ÅkeéÃjØkòIu¤F&WÈknZ¯>®ï%Ó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 | -®ÝzikLA®lulÐM þ^LºÓä³No[#Ö'©'¥ªµ%ýçõ§×æómëgDô߸+ðuf5ÝÑ"èôùÔä
ÉÔrBË¡{}ec¥ÜÇÔNg¬¥wþÊÆúÚ¦>º~eC&W-ÒdçÀi¯0µõþʶY4yNéDÞâóØ~¡ö_¨ÆÆûͱm÷Eîê°/¬UV'Ó+üå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ÖïÿÒþ» Øû¯k7N¿µ_.Ü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î'klGdÁä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¾þÓØØø¨AB7kõÉMÃãÇOi°H§%Á}V#½dã!ÓõÊ<P×(Mª}øâü/Ô |
---|
6394 | -Y¢é§DJÐ:úVÑHýØó¹:üHÈásu¹úf© |
---|
6395 | -R)Óµø´R¯ÉÌT)L«ýåjüMçô)MF§ÄÏ$H]#£èô²LÍBÞòÓj°`ÝMÛ±URডµó¤PTê뺮¾õ§õøQa\í£BÕF©{ HSXÖ¶¢°Ýgf^GÆxZòFo}º :leèFV¶ t}£³ûÕ*¥`>¢Ðø¨35®Ùúé¡iË7¦Ðog|»~^ê©W®^¯Q·ù4ºù¬ÕÒ*jú¤Çmt&&«Órs䨷6)u#{Î0ZÞ,SF®07=´ Úª©Y,üeü üh_TßÌ5xäðùGEl¬%zÉÙX)ØôcKfy&'ɼáú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?@ÁEÌ{Qj=ÁP©5â1Æ,5-7û°rL$¬i7*UkÆÇãã§VJûa&6W¯Té8ô¡`¡¾dôÏâ£ÇXº'S<g²iì°Þ!ËTÌL`¹Û*Õ=Bá2O/¨ÚaÞÐÉçÆÁ)¬W4ýÂ=À¦akEÇ.Ô¸º)@| |
---|
6397 | -I^!Ù9ú|ajg-Jç¥Ö¿sg*´0Åá¦%¤æ×\ö¸L°^Wº!J|§K)¤Í`¹²àÒéì>s÷7kp¯7kpg·nä>ÞìKwmQ}'\Tÿ²jÛè׺û¬¨¾sÔä³nUë,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ø¢(N7süP©ô
*W¤åfbcÈH^ëXPa*íN3º(Ne¾ýÑè³@6©2J3%7S©ÖdËj¼lu®ÝÖdÑÍRM|ÆéóU |
---|
6399 | -ÆîÁè©j0XyÄÚ`U¿ªÉÕçäêÌâc£IÅCªT¨Àdd|tÒ1S5iE¤&]¦ªÓ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å}CSã*Zð÷Úø1±}{ÇÄÅñkpA|xTHBÐ
°M`ÆàÆ
ô /N"fÇDàá <º7/1À¸sf¨ø@<93T¶éóph¨ä(ð1/JìÝ;DÄ(t:-Lv\|ß |
---|
6404 | -wO6#¼ À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¡ÓÇõMN |
---|
6405 | -êbUd©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ü¥í_ï àÔësMHYqÌ{ÂÉ?ÌÙݧMoÖÝ« |
---|
6407 | -èxwÏ6:p2Ð$y©XëSs4p´äw÷âÐêÏ¡ù¡uQa¯2]JñUgâ{!(K©ó4jÚÕVXpùë¹÷vËÿgoG¥Ï^ùárQz®¢6çK:66ØBpéMZ'1]Ø¥´+Îtè½~SëÚ½hÕ Ö6óÌ7þÚ»?W |
---|
6408 | -æV£ zò ¶#ûfpÀÇÕëàøÄ·1XN¡äÀª)õ@VO´aªb0ÑÈ#<°úp¦5¥ËMÓÑ/I AxÌsv.M>³dy~-ç¿/½ãv.ôáÏøÑô¤ôY¯aã½ Vì©qSéÊ3]ê
nµ×M[Ýý¶w½¡¿ÅÇzùKßÿ?Øó®e,0l¬£æõ+=ù5)¾FÝ«°FফP%OÅgbBy\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ãutÕ¾»«Ë`ví2Tyc²s:|\ü¡ì1(e°Gr{g¸ *0KpvåØÔÞD¥¤W0+)ÿ4⿹*<µ4VèìizÿJgk¶]C3_{7¶þ¤-¨kÍÏ«¾Â2WWA¥gkáËøÉL>C 7VPEì,9[¯ÍUpè+4lfZI92NÁø/xQù´t`«òkl |
---|
6409 | -¥«¹83¾ |
---|
6410 | -s6hºP |
---|
6411 | -ÑD¯Ç´koô½vLè÷ù#}èftEL[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°åñNM÷í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 | -?³§WbC]_]å&ù2/í8ÀîGøÉ³£ba5ÁgU)¬>zÓÎE@ÕVf*4Ù¢ Y, |
---|
6422 | -Ì^©ÐYÖt¢kçôIɺÇ>q¦Ï}§ë-ió\O¹Ñ}c£#-<2S(SS·ýVúKèÄN(4£^U]FJ;ü°ûê1«ÿÕC?íàà](àÒDÀg[)?ZÐÞ&h¿éÂ*H_ ¥æõ7Áwãã_Y¬h ZjcVsÍÆ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ÙJ5NÇÅÕ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æðÈ ³àqV¾V««kkëQmK j AðD½â |
---|
6425 | -oxÄ!Þñ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*ØLx:``&``6``.`øÌx`!ɳ[ñ@!O})ÄËË+ß+ÅUÕ5µuVVRéR@ PXؼod!Ùñ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?@veã`7(`éðØX°Jý &BÝÀTÀ4ÀtÀÀLÀ,Ø´Ù,1Em¡æBÙ<À|LOÁ&§@»)6;ûB±SØ ª%E-j0Ô"AP(¡À¼P`2(0Ôb sB-¸f½C`©¥³AP)$§@ðZu+°·(<Ť`Q¥ ÖºD¨"Àoós] HZE yZ¢¨E ju0£.@¼%¢Z¨ÝìXoB¼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¶â·bu¯!ÿ'`)´4S l*`àän$¬`C@#³¤f@ªb`¾Íì,À;Ü`9`äoCÝCÀ\Ho²~
ë¡b÷M-©P{JBü6G5aKèÉøµ£V°%T`% ° |
---|
6434 | -p%i*¡Ö@'¡&ñ^BBMx* §A¼0°òs ®¹ÏÃ4 |
---|
6435 | -ÀzÀ(ÏP?]%``7`à'À^@`:ÐþñöAþ |
---|
6436 | -Äo¿@z?àà Û:ñQÜú>ñqÀ$ [8é u7ìX ùÒÕ8M4=(}ulPï!®ìoHBÑxh¾ð=`% PX¸tp.ÁJe]µu8 |
---|
6437 | -}UVCz |
---|
6438 | -à´Ùq%à6¤wB|â!n)¡îBr$·6ö äÊQv_Bm¢Bw~ô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÷`kHËèìMqØ$ÕÔo)q[$pUBøNhÅku3梵A6khpR+.mSnbuÀ¹ã2<¦§¡Êæ¡£Á×±:Áø~Î.ÿ^ºÖðÂëfð
°;ö Ãt!âw$ÙËa0@H¡_DôÂáÌ[Ü u¬(Ìa4îì[ÇAú1Rñ"aðèH¤?7Åeø$0^/(¯Ù§áPCRëC(0 È(1WCé×O
¹ÊÆCj,wRS7dAL!BÃIDhÚBgÐ4rqÈÏáÅ:Iùt8GCXcpìo&nþ-Ýü;!g,]@àÆ1§#ñDzàIj2¦`Rr*]: |
---|
6441 | -§YÓiBÖ:bÏD,Ö,LÁ{6Á,ë,iö\3¡'IÎñ°rÍ' |
---|
6442 | -ôÉZ@Â*ÈEA¯§ÀµÕ07³Ö0ª |
---|
6443 | -ccrì`5ìAGÀ8jJ A3X¼æµ YKÅCH* ø£}{'DbþÆ"ýEú+E°ÚCH²Üb |
---|
6444 | -Ýé´zÒµ^tèM>tØ}¨5ÑnåG§;ã/Rã/4âöÝdÓ@¶=$éI »5 $C/5 |
---|
6445 | -"P³`5!PPµìM·#4@rêC Vr"PëhµéK ¶1j×@.±q9ïã@HóÐN'aФÃAx%ÓÉô)ôÌSéôDFitNË!Íb)è0OÔ7)DCiaôh*¹Á,;dÈ]M"'ÌÔfìÁçà`8ÝBK :ùJvÊ%_: PòÏ'P×QêÒèÒèrè r9z@Á Ñ |
---|
6446 | -GYßÄvúæâ;zvX!3 G+hÆC4@ üI4¬ÈF±*c1L%èYOÃNÐÍ`zÉPÌbr³Â9L4æ1uó ZPh!¶©ZÌ0µÉ2ÑR&ZFàO·-2XA¨2AöAÆ|qEį ¡ÄUôi%´¬Ì@Ù Ù`Y2,D |
---|
6447 | -""´µ¤sÖ-Ê/±×¨¢2c.Qýá®õtzÞH° |
---|
6448 | -Gim¡Ãèp+]»¦ßÎLi]±.úf%#]Äv3Ñ~"Ð^fxü>Kô3ûôÝx?Ý÷ËLt3Ñ&:Ê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æß¼àÛß!øîÄ+ǯ!, Þ@8xK`EáâOkû_N"þp2ñÂ)Ä?N%>@u],6ÀiB&±Ø%°ÛäyG"6y$ÆC.% $âWHb"xä2D">y$&"oÄ È[$1DBrAL#¼KÓIdFÞ'$2ÇãÌ$ù$fHL>! kÔ;ää3CrIKrYxO\6l»ù$Ãb³\.à |
---|
6450 | -C |
---|
6451 | -ĵ ,Á;²"Z²áJHÙìMIJKNa#ötà°ç;ìG±°#`ZGZU{¾ø4rÒ$ei$¡FÇ=ûw¢Úó9q |
---|
6452 | -¦b ÝN2ù8Cܱ¤ÛYR6²çHR@º'e½@²ø)ãH·¤ld/l*e<é¶ìe#H@º]!e {ä |
---|
6453 | -S&nËÙDÈ^#y¢I¤ÛuR6 ²¿|³É¤Û |
---|
6454 | -R6²7IÊ<e |
---|
6455 | -évMìmR`2t[AȦBö)´JFºÝ%eÓ 7zëé¤Û}R6²H3Ûôf@ö!in2t{DÊfBö1iÑ4eéöÍÂs·c#¬ö¬G/þ - È |
---|
6456 | -Å ÏJ^DxYL&ͳð©d |
---|
6457 | -lVµ'$m żxM½±ìÞÈû9ñ$¼¡Ö÷lk;U{ýª3àIjKý¡´kuF!.µcAis\ÚJ{YJVg,,'W9ËCWسgqÙi¦ê
ÇûD½ïÁ|NüC² ü@²{`BÆàêSY߯êÓYE¤1´:µ4ö®>ULëWiìU$µ4FTg¬&¬!3Ö¸ëȾ%$i¬N.
ÜJ2¢ÊHcTur9QN¢¬ |
---|
6458 | -Ò |
---|
6459 | -lBlf©f©
úãªOe¬'³ÆxHm ³ÆÄê!ÉMdßÍ$aì |
---|
6460 | -Ä6o=ÕRÃò¼cÁºÆ4õuòsb"pL1&Wgl%3¶¸ÛdÛDÛqÈéí¤ÛTQv:cé6eL;±tÎ2¦ÎøtÁ2ÊOgTn3YFÅé]¤Û,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ºZAc¬G¸ÀX¹Éí¿«î»DƱxç7#`bÖÇ&ÞÇÆñC24'A;aI@bL`mè{ª§ÕÎÏj*QÝ&ë iNÐlbØ[·ÀZÐ |
---|
6462 | -·G°
æÆù¨ßaÒ¸¨nu4.Ĥ-±¦¡å¸´F:Lº6`ÊËÞÆDuòQ2â(èØVÒXD`É |
---|
6463 | -9u§:ã8£+ÂdÆI(ü),¦«IÜ_D5Iô=ìªá~ |
---|
6464 | -Ãõiëux.ÀR)Sz)-crg\9¦9G×CÇçI+¸X7à'At@6ñ¤ÑlzFÛðvýÒ/âNÜÐÿô`Y0¿=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½¥Ó¸Jv4'«±Ý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^Îf2ULªÐ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ÉÄ`Êýù^û!²È$ Ù;8GhCøÁ»Ëø¢R; |
---|
6473 | -j;þ´cøÓÎþ-Åù"ÔKj: |
---|
6474 | -3ýk¥Ó_"Ð@¿ÿ )å]ð/Ô_õåwÔ6õ7D%,pÔPDý¨¥D-KyרcËéPzùÔMBRö52ðPè+¬Õú]Ê»Y_UáæÛÈoû ëmYo3ÈzAÖÛ²Þ¶Èzºr[ÒáIÜöÏYw¥ý¬{Nilêï_ñIîB§[V¶ËÒéV®l-åråuQ¥ÊëªR^7¯Tä×]~zÐYJªTl±jW¥D¼8Kz*Ân=HêéML½Tl Ièí$ôaJ¼ |
---|
6475 | -¹úl^PÍÝêÏ{Êû*Ô_ØjQÒWŪx_Jg·w[²FýT¼¿â(ñ$eðb+¨j×ÊиqX@\EÄA8< ®&â`GÍþ fÍFå4% |
---|
6476 | -Ð8Dø5¸èPO3Þh.!Sø( |
---|
6477 | -@Á |
---|
6478 | -X`o8ü½¡*&ý:O Ìɬ¼a |
---|
6479 | -eñáJúäH#¨ãSóÃ7 |
---|
6480 | -J~MBÇ9gTô¬¦U°M¢lN®l°sydש*]<R oYÚùèÏYLGY⪠|
---|
6481 | -
;0F&´JUö}:Æ)/©â´
`× |
---|
6482 | -×Jkµãªq\k\®ÖåÖèÔÙà×Ù¨ÎfÇ5ÁqmÑàJ9êDGÝ!¢ï5Úeh =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¦+<Md¿"çrxø¸ ¶*qø di?KÊt\t\éØvU<[ Ú¸nÐa_<G¡ì¶È<®ºâ\£Èf¬Ú»þ·4/XÎ@'~§*^ |
---|
6484 | -sÛð·©mxÒi%áAgç\§49Ê Éè%YyJÏ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ð)æ%´ÑÅ[ |
---|
6486 | -`Nw5´ðï±Ldn>À{H2vP%ÝzÐoI:m¾
6È,çÆ¹w%K-ü,IZ%nMvµö¡ÍòmY²ÍU1l0å8-çóçpîÌsÖ;ÎóCp~'àÜνyÎ}yÎàÄ{)hÎCÒãhÙ0WúéøRZGÁ÷=ðµß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#ÉîHQ$«¾ëd¤«IöDþC½¾ádo¤×Ï)eû }
è§íôeFýæ
Ó°×xjE}mK³ÙWaRg/Ù 07ª6¥ÍÛn¢ÍôïgmJ·¨Õü_â§àÄöUlî¢^ßÇd<~ñ¼B\§ |
---|
6491 | -}Í>Ks¹UÙ¯Sq;ì}Qü |
---|
6492 | -cTø]ÛTºl»²ß@*SRöTãQoÓÜ?2óê÷ú/)/ |
---|
6493 | -êj[¢¾ò2 þ( ¾HÔ¦¼:Pã
_õÇDýIÊÛ¡Z< |
---|
6494 | -Oä§¥;r^½ûØ¥~¨¾ÄØðǰǧPõeªú«Z@UÅv«ìoñ'!QPãRO~ª|bDöõT_¶~5B#pQ
_ï(ÒDGé$;ºNª£è ;iúi:úîf ù:Í×h¾Î@óuôó2¯N%¸ù»TGñHìQö_½ÊþR&±OÙ7RýÊ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¯sh¨ððF |
---|
6498 | - »ÇP·B£Et j©x¤¾| |
---|
6499 | -+sZ ⸦8vE"*X]Q®«ËM'%»éGþ§Y¡ ÒÌr¹î.7O`âUÔä{"ú¬pX=Ãb} |
---|
6500 | -ÔÐyjs©+íéJ¨BéJf]åk¶ÚíEb z÷-¨ë3WRº¿ð»>v[S]Éõ¼£ÈÍÈAÌ?á.Ä,# |
---|
6501 | -çx?&©2É'hÀÔX¹&èê05ÖEÈv0`j¬B¾vHS1LmF0õWÙl3y/»õîeߺí}/{ê^6{/ûd6Ke³É¢~cïs0¨Í9Ú,ìî`ÅmÆÜÄùçNçöçvaÓ(ú%@²\vC
vÄØÒ^o¨S´¥½>:ÑW#Ðö¶«DQrÚK©DZÙ}nú¹I:ĦPø, |
---|
6502 | -3\²Äx£þÃuÓ5°ÇÖÒièõ20ÓPËæ |yt Ú¡Þbàp9ßÐ5Dªµ½ePKêXwý]Q<H¡C[?Òë 'mÚÐÄ` |
---|
6503 | -ÜÛ*1@Ûø¢í-´ý |
---|
6504 | -Æd7 Aà6-Êvrì¾r8×2cª]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{ã©jfâYR«ÛÕêz8= Ë&jÏ9MÇ.qlðN¢N ¿_Åèi¬~úJÈmk¯Lµ. |
---|
6506 | -µOѳ³L4þKñIóÐåäü|!Y)ªDn¬íÖ¯açØÖIß6H®«?@»kOõ6©Q´Cͺðû>j¾¦ |
---|
6507 | -£dÊéö.1¥e°-f¤ÛÒêdÃ]tl°FÛ¤ÙlñÍf·´»Í7ÞMýq1}ÁøD;hõ ßê!hO«àzý`ߢӧOsí|orzu.?¶çý 0v »e°-_ñ9®Êûù54Sf^@37ÐÌÍÍÜ¢fîäWÕ]_Ë{y¹Y'oWÌÙõÈ«P¾ÓP ÛMµ%P̧»U\Ï aé¡îE=!ò·ØhK!²·òýÞÀ¦!êÐWae¤sË¢j¸,ªmI©Öbä3µâÚå4vJE§vì0Ss|¤B|´B}BePè`L*ß?IÒòdþ4÷±ú8Q¥¿BéI*å:O_Ê;Ãma0N{stçÄlm'+Ççú»ÇTÔ·Ó¡=é;v¹Î+a¶òÙ´QÍ@-0qMbó²P!ÇÎË"8 |
---|
6508 | -}5;/Æ~ÂWg·ª*ÄìÐ,AùLÍÍûì8椳ΡYô>ÅÍ2¤«uàÐ,Gþªbf;.HÏÓìЬB:£Ø¡YtZÁ¡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õËÚ÷ÆþNaÎó|è¡Ï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ÒxAéÃ: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_:Èàñ700ØAPûöç%1ìñy÷QâHüÈç=çjøQÉÐïë9ÞSLm
utÚ¯vÐU;JÕ{ƧÊS<0aêÁh0¸6Jy#Lìpu¤±çÜÂNâ-ª"Y[$XYÉ´Viõ]åi£q´pÇ}"d#^cs#ÞI"wÄ[DÌèÂ×ø2 |
---|
6514 | -;_ñj©x+¾Ë4¿ÅFzË5&&øæ%©`i7ÙÄÃ.úS:Õxï}«Ð
ñé&d+ñæKþ÷àxéE»Ð'ÛP¦JÌ0±ã¼F±ªfв"àiOOÇHEcü¤¥!ÿI¿óópöe~®Z-1h¹Aä7Î$MHÞBOù»\2FÜÆFPäÍ"yCÏYí+OæÈç4VwñlÊ |
---|
6515 | -wExÑ7.á¬ÆVÙ¸h¤+º¨±¿4.å.¹£«QÑhWt=]ÑÅshÌ0Î1\Ó¥s7Ï4.LºÂ\8ß´¨pIðUÅnë|
ɸ#%ð°Äߣ²I4¨hPñ¶´¬u¡áHC?=C: |
---|
6516 | -ÿJ'Ä,×2m;Gú |
---|
6517 | - ì£"¯BH
©µùà£zL|1í:ï1a=pL@Èà}GXÈDøÀ3GßRGXÂtËá}&à[î0ÏV8Â2&àFo¥#,gÂ&"¬rLØLÕ° [°ÆÖ2!ë{|-6¸ébx@6Éè+xºÆãÕz~»j7ËRb¨0åÂ[gIy²´[dô_äø·2·&ù3¶IñÑ4´u<ñõ4y¸Q\¯EçsDòc!TøØî<ÿÉþÖ±ÖÙF·êKëØD´Ívi[·hÛí#ÙVNþô¢Ç?¾Ý¤R_*SF¤MH~'EÁC_c?ÑS²!Ø9írUsg\î+;ØÇ¿*YðÐpv¬ô³Vòb±©Çap²ÒÙÑq¤Ý~0Ó/«kPVgÜ1³ð;4×måÖø1Kó¶ëÅì4·
õC.´î2¸{á(øo|úÝËéwO"ê]Q¬rjøÐ Ö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½ vrÇk/ãÝÔùSÑëD*iRâFPOEþ]ÓÀ½þLË |
---|
6519 | -Ü4
XMbüÓzó©3SÑ æciäýò¾ ysròæ(;·iyI_Þ<àòÚ<´
GyQNÊ"Åcº>ù}6j);kh?PL=hBGø¸Æ/UØ¿õÁñõ*!Xô/6Äd±¡¦À´©?åÂr ªÍh£ÏtÐoáïÙ#¬Cø!ÍèÔ¤ÊѹNmUv wØxG1Ú |
---|
6520 | -/Òd£ñT5£¢¿aJ=Í*ú#\?qXùë l"ä_?ábh¶uÁ§ÜÅä!ÙL>±"c³ÙYÙ,¥ì.(øG¬Ñ^äÜì&ð'{USö©¦`·< @rPä0þgz=¯<,u Uö8±ïtN¿QfZpbÞ*üÙ<è£y<ì)Õ$b<òñ¥{Ó%³)*Kcñ"Å Yµ®§#:ÓLâ ¾Ø~éǽÐ!,¤¯'ø©ñE$qßÐà¦f¯4æ>¡|Å¢ÇßMæ#U¯ñÞã»Ê²¶åPÁ^æõ|7w®ù/Õ;T4,§ðL |
---|
6521 | -¸ÚÝ|Ù Wz®¥²á¦·rtÀ7¼!_
ãÈàäGX~W&EÀW©1±Ñ¢HÃwoLzÚC;¯ Toã<,jøkÿ¸N6Áû?!·gõ}ý{:ý½ÿí÷ÖësmûãdzrܯÃô3ZM×_ÃàÆ:KrfË×MZ_Î[_nza8_ô÷0À.âèA.MuÞÕ9Ó) |
---|
6522 | - |
---|
6523 | -sZcz`3òôF1SÿÿLP62Á¹¾1qÂùc ï9Khg¦õ²¡BòQÐP%ÚYíÀu1¬Ëû>OSVÛPÖÒ¿iekeËþ¦5ÿX+[ñ±VVа[M]É«ÝÙÁ*ýà&ÖiÚ;ߨis³öl¦ÃC§bIñè$Ú¾Îø_*ÇÒv§NÅn©Ë[Xzòá³yÆÐ~m÷2ÆÕ8H¾_ ½Z4Þ)§M»F1;íø_é²³ÆBªôÐmÙych:Sõ£ÚyGÇtªôñ¬_$êqî'3±ÃØSÐèÿð~ |
---|
6524 | -!
ì¹ÐK,Ôê®OØ |
---|
6525 | -µ.£ÖÛJ?Äý¸ªö¯§¾L3âªæJ!Ϋ´µº~Í06vïpè軤ðe6þ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¤vx¾-·ó_@wo¢)¹v¦;ÕðhÏ"sí>÷{zf0x³o"±9\)ÉÆìÒü(j®iÌohêÿiÉÚ¶]£sé.1ö>ÿ0/ó2Ç<Ï1/7s·Ìÿ/`^æÕ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¤.*3K1é~çq»ÞiߤÏ:i0mÊLθ/Öd¡_¥Pää¥Y¿K¬ßvºDú¥´ÀÇR#/{Å ^Ss»¾_Í»¦®ðó¤Ò=^i Úñ³Ëä®`Ý%Ì|`ªàd'AwNòÃI4KXnúþ¢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ë2g9½
.UÞÚø=Úf³x'¶ß¾BáLËvÂ;~³5ÜK³¬y¬S,çLÀo¨Ézìq\è4Ð+/!ºqeôkI£~-C¿¾ï´øºâQÆg>ç®zìQ\ä G²*è]b)«Ã¹ë£û7kÐ|mbm]\Ýh17
ý¬yü®o3æî |·é®CÒö$Ùa·¶ëa±=ðk¢u¡M`Ø5Fîç/óûÝdkضûÂÀ8²yçs#9îàÌ:Ó[çLïp#ÇKÄpþF<¸CÛUJpâ®±
áçÚÔ5øZ¾=&¸¬Àß'h{*ì.2ï¸X0m#¼Fí$gÃXãçMl¶y¯Î¡MgqZnö|ØädlØíWÂ|qÌ ìføã£Ïý±MaPd~qå4=c»DøÎóDt »²G©1ÚHù¥MLTÐIW8&¬ì$m%±ÆÖ~ÉdlI©:¡jÛd\ëÉØfÉØNëV, |
---|
6533 | -Å×eGÚ_ôÄRY]Ã!!CÝÂ!)C=@ ñaÜfÄ0jôóx©ÎHf|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ñ©4OäÈ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 |
---|
6538 | Index: 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
) ¹òFKBS'kð)` |
---|
6553 | -PnTpÐ@B |
---|
6554 | -9ÈX2§D4KÖ<¸(g +T©8ºA¶n2¨½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''J8¾¡ |
---|
6555 | -=nðcCiäIÎx¢Dêøa1x¢@)®Ø¢@Rh![ |
---|
6556 | -´a%¸` ÑnÆ)'A©dRxs:2ÀP m$J$Ò%< è -¼_ODÆ' )dzBxv$JJÊ>fzi J0ÁZ*O¤ªéTI±ÎÚE§É¡BªN¡' |
---|
6557 | -åF*h̪ÄF$ÊÇbÊC$9ò:<áAÀEÇ(r8TÊ8ÔÃÄGJ¾©Bã@a/AT'A1ð<|:Ô«Ãæ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+6ltÐÀÖ z"pm@űx4ðóp¶5àÓªS |
---|
6564 | -®LÈE)>äT«83YB9t1^P |
---|
6565 | -§VªÔpØÚ Pj<ã°ÆáÒlMÄ¥)Le=V~$"¼à*fPàCQ'ØÓÃôBÿªÁp3¨:B! JDNjø°´cÀøÄQe¡ÀX(PÄi0½¤ |
---|
6566 | -"YðÀÔg*TBJ¶I3Ä` fX+§4'P%< â -ð%bA¥0ÒÇ¤× |
---|
6567 | -(Â'qá©ro¼AG$ ;æ(C%@ |
---|
6568 | -ôIoÈA䧨Ò<Î^ÐQ%}¤G |
---|
6569 | -Lª8
@¢HU*"(R ©#D9'ÐQ!£JMA%ztJ'°ÓcF*é¤V*';5!*G8CO4`&qaÆ &BTÊ8ÄDJ]äúE!U¬81ÉKk®p8ê&D{&Ä{ìʬ9¬¢@¡@B ¤±qì®ÇTÈQ+Atá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ÓbUVÅQ!Á8çÉ2^)ºáÀ5+bGQST8FHÐ,¨U¤có6Àá3¢µ)R¬J *3"D8´½c+¨Ê ÛÀgdÉ'AúÜlåòXh"¦Br9ðY ¢âÄ)ÕÀU9Lu@fãÁOé»Qîöl¬´cíÚLª ;
'¤ÈQäÒ¨<ÿÖkAÉT,7Ê õ±ÚÀo8Ð?¼üÉCf |
---|
6572 | -¢õôô °àG'yD(al´&Â
F á@p@¥¬aX4²¡@,âðpÓ:à`#¬¸
/Jh%¦Pa£:²b=~¨!¦L1$:²"IJ¸d+rä0ä×mEþØ |
---|
6573 | -)&q
#+¶`îðÝ
*ETù@]i>ÔÈ@
yBôI@¬] ]rÇþÂè¤ BI$ 8Û'¶ô Q@áÅ[/yv BI«ÀÁ°v éI§üñÆr02ÚF¤d¡¯>ÉKÐ!DZoôG¥pñë«QPòÒ'v¼ìrä°2ƲI$ |
---|
6574 | - U·Ò1¬I¨øÑ
p|bP&mT |
---|
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¤*MFsr§R!ñø A -RC$F+íàȱÅjT]«á'qpÈÅñ¤SAHRdÄ0ò'Õ@5ØVõ°¦¢©)sqäd0Õ¥JP¦"xU |
---|
6579 | -'^UÊU`nwn]V@k¸¢U¯`E"QÙ¡G²Te&[hFÛj,ôñ;Üæ)NT6Þª1i |
---|
6580 | -¢R4ÿ¨pCAT }âNPMñðX$Ð(PºdåCüø7¢ÊL(a`ëqÇÿÁW!¤d¡:ñ{=4fÂÅF1 wªÜ ¡xÑMÆvÜIqbìÑ |
---|
6581 | -*}p±°×J B" âÿY òÄ{(~Ð1ƶ]`IPO`@@ ÀbÔÉÄ)' |
---|
6582 | -°q)DRTwCÌé'·5 `áÆ%!!¢sÀp¡Gv!)eÁ¨P´Ð'cTÚÅvYÄæs*ÀØB£!ª¡\t*ªqªÊ+|Aé@**xÊ@Ò |
---|
6583 | -@§ |
---|
6584 | -¡bÈpiABG(Õ¢´:ê«BªkÐ)¼!®`¦J¨J]'tÈáî}<ÛÖÉÝ'u¼ñî϶ò ¦lXâÒ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´¢'J0AÊ §A:L%%k |
---|
6586 | -¬*âT,ÕE,%Q(Ä$ãÄÛ·'Ôt¨Å®(DZá÷ï%§²s7¬P"Ki5ÐDyÒÒÊ?-²få!Óâ)J0¯\õ§HSL¯Ü-°T¥LeyN¼ ªÁÅ/ªBtå5j²õ)xòVªÌØÀ½ÄP ÿ23&N¦ëøàÎ~C¾tßTrTAÚ³ÿðGÕùóq° {aø`&WàÜ
ÑJ|ºÑq©äw 7yr\^ëéçCW¬âIBè©rF ìypnè)´ |
---|
6587 | -sA±'5ÚHÐ*Èõ(*H](ä@¡8QAP:ÐÁG©òI'¤@éeÈÕP)
ØAÇÈ_z©B1"ÇsbvdÁC[(Óm~)Á¡ÒsÒÁ£@¡°iî¨|¶P* úMµòiüpii4$ 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ɱ˧
¦LD%¨Ì8zBÅIIÅ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¤(NH!Åw«ErÞDsu*)ÊQ$O§ª>Ò£ÓÿáÔúÚµh¢êÔðoê_])úô'ØDçtDÕ©F÷mG@¨DòG8æÚ-(§Tl¥ò2Ð T·5D |
---|
6593 | -%ض*dÁY au2ÔCÆ*©\ô6 Àqtf=¡y |
---|
6594 | -Q!¤O`$h`%5X&<$ídjÀbÙQ6`lDd~ÐÇ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¤ªOzÒ©j°E:´fÌK±WþYq@@ªÎí |
---|
6601 | -È!8CDKÀHHç¥*iº¾jÇôé9ÿwt%È5+Uø.=@âà¯CN«A ØKïAùóQQ |
---|
6602 | -~ú%Ç_nþ¦¨W uZÀ'}ö©â]áWk"túUwvl2¢@Æ}'@9ÇÐn½ýùÈ)¬AxÄSÒ¹ñAH6` ¬&¯9$I&é]´ÊEÄ0ÃXäI |
---|
6603 | -UVYA Ò lÀC%ñ!AUJqQ)EÂzáPtV©Ã©pÂIU{¦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Ë@T8Á%¨jÐ.]¾bÕpº@y\e0à2£ |
---|
6611 | -FìS±ÅNcws¡\Ê>íZ4%G3½¹zEöä%7`À°Éd±)å¨:EEDê$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
o4Ê |
---|
6612 | -)rÉ@ÒP@`jà(Ð'PZ+Üb¤F.TJ!i¡pUêt |
---|
6613 | -'¤×%C©ô,±G*c¦Ä©AfPyÑ(hb'C §$²T#Xa½YtÅZ¡S'Oà )Ë9¤JÊÙà |
---|
6614 | -ä8Dg©Æ9RÉ%¨ä)¨¢:´rP¤@©üaD2Hq#AZ©CÜi |
---|
6615 | -ôG'4{ÂDhD z$=ç<üÚ |
---|
6616 | -)F¸âaz.%Ê`xÑ(Q"¸ã¢pb¶)&4ÐKn{yͰú )4ß%\P%d$GÄtJÀ; |
---|
6617 | \ No newline at end of file |
---|
6618 | Index: 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('&').split('<').join('<').split('"').join('"'); |
---|
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('&') + '" />' + |
---|
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 + '&server=vimeo.com&show_title=0&show_byline=0&show_portrait=0&color=00adef&fullscreen=1&autoplay=0&loop=0" />' + |
---|
7920 | - '<embed src="//vimeo.com/moogaloop.swf?api=1&clip_id=' + pluginMediaElement.vimeoid + '&server=vimeo.com&show_title=0&show_byline=0&show_portrait=0&color=00adef&fullscreen=1&autoplay=0&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&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&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&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&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 | - '&': '&', |
---|
8288 | - '"': '"', |
---|
8289 | - '<': '<', |
---|
8290 | - '>': '>' |
---|
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) + '–' + 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 | - |
---|
11272 | Index: 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("&").split("<").join("<").split('"').join(""")},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("&")+'" /><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&playerapiid="+c.pluginId+"&version=3&autoplay=0&controls=0&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={"&":"&",'"':""","<":"<",">":">"};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)+"–"+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 |
---|
11364 | Index: 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 */ |
---|
12208 | Index: 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 |
---|
12215 | Index: 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 | -PKxf@P>&ëÔAppManifest.xaml
ÁJ1E÷ÿòI(Zep |
---|
12221 | -»T÷1óêÞKBòªosá'ùNÔ.´n÷pï}}»ºq ,*a(ìS£uq=-¼Ë±Ä-+I;ôcTϹÐÝ·*'·©ÿØ/>lë^ëj ¥XÎÃ:úÀËRqhåÆã3dôO=ß@çí |
---|
12222 | -aêø ß þªeJRÜí{ÈÅÇÐÊ3eÔ¹¹ÍÓ!«µÍ\>éȿ졨Í%82jwÙÓáxSOúÊC¸øPKxf@()ëÕ.SilverlightMediaElement.dllí} |
---|
12223 | -x\Wuàyo¤iä4²eùGÇc;mi4ÿ?mlý8V"Å%;q0(£'iâyÃmEq°@JI?¾t?ZJÚ¦åklùiÚ
ýè.ÛÒ²t),ÝÍGh,t×ì9ç¾÷æÍ¯eP¶ÍHsß½ç{î¹ç{î¹÷Ý÷fêîw |
---|
12224 | -ZðûÓ|Äç0\ýs ¿Ûÿ nÿÒOK_Ú1»)z |
---|
12225 | -º¨%sT2WKyÅ£-ç=¼gìø'§¦ËåÜ¥Ól~ôÔqîó ïèÚÞ6ëüü>£sGqYð |
---|
12226 | -P¾H§ |
---|
12227 | -¿ ÿËWó§¸ÝxKF>°/~ÄëkøxLÖùÓéc´¯¤\(áuÃÃz»Þ&ß÷ø´¢7j»¿ï¨ÄCiöiJVM ^g¦õÞ¼j6_zR\qVøô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í4LÃ@ÝC9{ ¨`Ú®}Ã}TrkøF+RøVDýÐ-ÆÄÉSÐÁµm^2û§Ûì;ħhèô]ìæ.úNUɲ6!a=Ã(¡ ¤4ú:gBµ èYÚFÐ}ȶ´U@«Äµèg+ksè7M¨ múÓJÜvm |
---|
12233 | -hA2¡ëÚ! 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ÃæÄæGPRc£@Ð>í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 | -Vkæ&ÉqwIz-©èv¡=cB=¦¨è8;z¤×Oò*Í=öl]Þ_ôMv}Å{¨ÉIÎÐö n©H |
---|
12241 | -gg
Æï}@׫Ýä2:m¬3B¬1{ß&^µ·_ O$<h¯3«:
Û$A´5i¡¾2¥ý0HI%ßf K4ÊÒ}§Ç[E7Áõ^¡5y¨ñ¿¤.Òεƿ@Léóê)ko+³¨½§\ðKAsäyYûsLDÆ* |
---|
12242 | -(>×CÔáj])¦ËÚä÷ªh×A鵯SB&ÅR§¬?4ÊúáìÖÒE¼Þ-\c4]e¦{é¶¿tWÉ@w6å¿[ûãr¼}¨`ý6xZâú7)û®íè`>âvm»°pëÚ6jÛþDaáÚ6i |
---|
12243 | -6ÛhÛ¢å8¾ãýÚCߦ³z/Òtõظë[zpÅØm7hO2ÞövK«×·ö´r³ëØîÔ¾(tÈ÷Sdaë´oLN/GÅí=ö |
---|
12244 | -¬Ní«K¾ß[M¢[ë°s¦['¯æ GÛ)0ÖË÷÷³9Ð36h"£W¾5c£}òýdpTߤ="àåû=øíwÎóN(Æ¥¡ôC-T.!ô«jøÄvÕd®õ´OÙkÇ{Å¢
}=7êÈ&6NQ7iÌÖ
颰Ú#£@î%úõjDA£D |
---|
12245 | -e¥¨1¤¨6lË)ýµGó¶Tq¸,ugÙXo¬®£³>c1À¹vÓUjÔ0ɰ¾y}¼dSÏéUV·kâ*µTZyx¾y»¾dSH¶K¸P/îahouÍó5^æë@¶>á¢ÐòËV1ÿUÄùǧÅ4NúøÅºLÙĪéð£ï¸'\íG&Q!yváD®zmf=7lãeM«vöÔ |
---|
12246 | -iÓÚ×,´cÚ[[v·S¸váAêðß&à·éE~J·1Z
GîÉ>tMöÎW»H}êýF¯÷·Âª¥Þ²ZUF½ÉO-c> |
---|
12247 | -Þf´r®û'{ÏÕsQl-»Êý#ü0ðÃZÊ5QP}£>!]"óÐËASw |
---|
12248 | -_Ì¡{bFÛ§hPÐÜ%NTZ/vZñß!
û,þëõjÈðÛîÎt½î(¾Éìs_\CѶpÅ)Q£¤5¾X¦ |
---|
12249 | -Wl¢Î¿µó@Ç>pìÕ÷ÂÞ"öÝÔÔ7ótjØàJ»têÐG+ -võ-Æìòm89ìê/áÕ¡¾Ã_¦·Ï[Ñ\mí¯]ß"ÛÐÛ×·º[Ý-ê#C¯&c@Wie,ï;f1[|ÝÔVÝàÞè}öõÝØ]ey<Ȱµ¼¸ÛÜkZg5Îogo'ïësêÛiï6öçdøâ÷0~ØÓhÜÅæ®Éi}»e( |
---|
12250 | -=ÂÒ_Û!*tY0Ù#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)±J2h\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
¿¸TRÒäxVÉaÅ>l@U½8imYYÊLT4Ü«"ãsG¦Ø'6ªæKå¯ÊÝT2N.*z³^ _`-EÓW)ª\ JIÁç³J>MTâ^g»(KÕWJ3T-,aR[Î%µ³Ë
!$W@Öç3ÙLi
¹±2r®;èMeµ¡|2§É²_wfòiõ|ñf®Ï®¬"¹Ôþżª%ËÞ´ÞIz£a¿×sL¡9è |
---|
12254 | -Eý^]-,}XO-ÌV² |
---|
12255 | -v,Ü^M]Χgsóö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Å×p7¡bRª§² |
---|
12257 | -T3®óJAIFK%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Ʀ$µXZ_ |
---|
12260 | -Og8Y«
Þ£Él&½÷zWgÈJÚäi4H/®IHå!j4èqõPÏ[ÇßoL¾£ËZQÕP.É|µº\T¨¬àbL=·Ð«½&þØ;¨k,V%ÒÓKìX:XcTôZ\l©WùT³â#èAçÉqX[½cZrëÐJJº¦sL/c¢CUâÙÞµ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òhj´qåQpa6¡ÊýþýüÞÆ²Æ¸eÏïøýþkóhë,Ò¾}ÂÐV£í_YÉÍ«Ù|y#eàä±±y¼LeJ+{Öº )d3yEHÑvǫƳ#9ýkZ§4í½Dô¯¦[¯x·þ<§êÔ/¾YVýð/«f¬u®«Á»/Y¸çƦ_ 0ûªM˧°Û2©QÑ©g;ô.åå¡ÕÖYD_ÿåý`°AÿN̰e!Â7R |
---|
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µPWW¬éº¬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ðQo9¿?T^fV
r³¹¾qßëÕQ4c×dÈû¾P"ÞÔB -òX|ϨÁEy"DâA_,£FÃñAlzÄc0¡fX[ ây?1\@úâñãºÀ¦¬Up-'$ |
---|
12266 | -¯8må§¶Òjµ¡v_W?kf£¶ /B Å9`k|x¸iG½üüý`¤8èâÑ?u1=°/²G F"ì£p4æ#(ùP$ÅBÁÁÑ`ܯó®Aâ/³l
}+w#oÚu!ëÍjØTÚ:º.ýøüa$Z'Ê5°`06̪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ïð:ØSjd)åx=$:Urл æ=ÑñP%b¨¬,ZDXuÌi>³X>°ÒìàQõi£jG³ÔYâÚBlÞJé 3¦?z@Û,Ùl²P»¼? qO»ùÇãêͯ{ÝÕøÆ¡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ªWU%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×ìÁËckÆ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ýWu£TÑÒ°w!ãHó,[°ªmiÝÖP«rcüY£ýÓçÌH].
áZÉð6¡Gßv`xbÐÃû³çÕ;+ä°!©SÌë çd!}7ÃuÎjÅEE;³nr9[ºX+ç*wm×#3Ëe§Y6LôÖµÌLíZƹv¬Q¿&ÝuµHbßÔrï#¹s]MVJ'<v'oÏÑ{!£¨Y¿}Á@0ObX(âGhîªÆüñ&«ö©ßBX,N,{&A_<BtÀïÃa}\N'|±p ÅLh¨g2áÆ"±¨ÇC!DñûþhÀ¦[H<C`\óûÂþx(a¬ |
---|
12273 | -îóL
|h4D¢\ DXÉ/ÅÊ¢|g V=a_4BÊq#9Íðh{=aAâkFÉEc´
- |
---|
12274 | -DS¢^Y7²ð
ÜêA¿Ùn#F-ûÂá®õYx ?5t0ÄãñD$&Z¡ÆFöc-áP4àÌX3V0îÄ£1f¹FdÀOÕêÍÆ£t÷fÒ¬hÐl Ìl7+£êõJb¦IR¦ô(Uzk¸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;Õòßì/`ø7gN°·ýÛ8ÜÏái5߯áorø,?nûë6'¸Ú)ÜÚN0éö;Ú
íÔ¾·?Ôî/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Õ{«xgÈ£î/H`jÄÝp#ìE=1R#jG½s tðYAæý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î¿îÛößá÷#û?ÕSm8?Ô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¬×ogÀ«pwpoûàEgÕi×û1Ü |
---|
12285 | -¿áNø£
1ļþÆC3Ãð×Â¥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ÐÍd6sBoRó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¦XHRKF5+K¦HÊA=RÂÂ(ûüâ,9êI |
---|
12290 | -U©@¿lLÃÜR)Ã\r¹¤)Ì/cùó´«ù¼ï¦Wp"YR`n~yaAÑôÈJ Åf& |
---|
12291 | -Â+¶H½SÐàø1P¦ÈrMSl<O<·Áâ£É<3^¦íÙLê,k÷Ä)&¶¤ä
èíWE:)hHNL))¾é»EÉ+Z&c$µ{Õ¢ÈQãT³ËjÌBª÷Z¦ú9'p55½
ÇÈMuB£FÁ)zÞl%bwj2Æ7LªGZV¤ |
---|
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î©&ov7·5/b¢é |
---|
12295 | -f<£wYø4¹¡ |
---|
12296 | -<;IC«sb¿¬£×oYUlçAõ}"¨OôWsål£^q÷¢ÜE® S(Üd®È&èʺ!LQ(Á1,£µZT-*"ìn.À |
---|
12297 | -£3fô@NúȼzÕFÑRÈ!=cäë/-÷éïCçÖ³8øÁóªví¥_¶Qt«Gô;ÏfJXhÇä.Ãö6E´YÔͪCÁ¯Ôf`§S¥z% |
---|
12298 | -+µ¿655Ðëï}¯m¥. º£fí\&
ù:¥Ö,rËr&]KYimÆQ4S5zµcäb^-2©"°å[LVT%`ØMt¬XÍ, |
---|
12299 | -kVnÀ">¡d8V,ÓZ_ò]]¢ÝNÏsǶprRËÐ÷6:¦×²»eu´±¿£A26}¬v§¬P»¯ã.Ñ@(ó)8²sä/Ç·àÀ¡ÔÜnúøïA8>/ª-æçæJK"hîó25èè5Ûí9Á-Z/¥UW |
---|
12300 | -ÂÒí9ipçS+zÕeÿñ,É#b<!8Cjº¡¦G'òçÔ³ |
---|
12301 | -TÊÁLéä 6
9ÕGy§ÎFíæÇ6|Î,C+gÿ |
---|
12302 | -Cdæ:?ìSDd2==:~åkh»hÐ,ú?ÃcÔ(ÃMbtÙ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ü1Sm3ÝDñvÔkã袯PÃ&òÑ´:"F7³Æ
e{m]vC{ÊÂâ>5ªÇríT-ú¤³tºbÆêcéeÀíILÙSe7«@>JØ/B®ÕXº¸gù0Ó'!ùè]&d«fWàMeDU³JRP©Öb3 |
---|
12306 | -®£ÓP3¾!ßUçim-ØÒ§Nò*u»|.©eèdN.ËÄQö=ä9^Ö {*üŲ ÝìíÂN V¶)læøl;¯ÀÞ+ËE-µìr§3)4èk¢ãÊi½+¤1ûÇ5ýìаd¡ ¦¡Y¤|LÉ¢-'|Ýuf.û¸Ójm°FîaY³æù0c³ª>ÉóNÆ$õ¶+bÇP¢w§2ùeZ¢²ìô^}£7Ñ"F;>Íxl |
---|
12307 | -îÈ@Ρ«á5°ØTL§1q*Ãoá7C |
---|
12308 | -TL0Ìë°a8Rý38.ú¹Ö3+%¤¨!þyðpº#`N"| Ëæ±Î,×lÅðð¯éxpêÑk'H |
---|
12309 | -iðª2>8¼°9äËÓÊ)ýw}¦k~×z'1Vó^U¼BGΤ[ç¹ÖiÄ&ÌÆ,1}pï¦F0}~MlÇQÌÏâ_9¡5ñPQfg á$±"s©!|sJ,5* ÛzmÄñ2BJí$+âö¤®qMDaVÏ|e±D |
---|
12310 | -Îl3ÊdY8Ä9fÉÂî·×ÐÍhôæ*n6c¾¹TÕº4fIc[£¼Ë@+QöÖl;ÉeU0äCÐyTç<ƺ |
---|
12311 | -\ñ$ |
---|
12312 | -´çu7Õ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û¹ß4zw¥xìuö¹MÎqã×&QêªwÜäÐç ]7Óu]1ê;/H;½Ü/Ô
[F1ÊVóúDUïpc´UB˽c¥aÕ7ïpø§0wilù |
---|
12315 | -Ó, |
---|
12316 | -¬õ±*Z°Ý¨Akî4G çï¨Î?f9á¸(ìùf¡KCãÁèEÔDG ¦ëæ0VÄ¢ÄÜE/éy³7].¹µ¦!KOM}FÑã!¼JUEݺ Æîê¥jTóø°})}.$õÊ{K×ëKÂzÙ5FËHóRF¹öxnM±-Ïòì+p°h§ùzLÌz7éX\·)y{Á´4$Ë,ÏÖObz9#}󠳿-Ыà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á_Eu¶ïÄ |
---|
12321 | -;m6 |
---|
12322 | -1N%_° |
---|
12323 | -ãÈg'²DxRg¿¨èû:/ãe^ÆEÎìÀÌVþ_»`å"¯ÖB«[åÞËÒ |
---|
12324 | -pÎi(Zw·«ÍÓÅõû$Én[gH2ÐÓJü_îåp³Ýa·uº0á¾¼Õ!a |
---|
12325 | -kCd*ÀÝ-´÷º/ï!ÑJÈw2§Ù}qHýývL]ÞFºä¢Ë»Ý'Qf|e^`+:{.GCÆîïÜÖßíp |[ÿ6ì]¢ |
---|
12326 | -á>Þ |
---|
12327 | -ÁþÑ<N¹PmøuQ×qýȲãEJÔÖîhÁ6À²Çî»{2ö¦ûòv7uëå)º¸\ÿÄb^zÑårõÐâeyÃüu(êÝþþ6.JrDMÅÄ ñûçÂ>¿³ÌÝ!}Ó6\p¿}n&CTH(Gý§ùf"ðï-òÏ$¢OÇ7³;Ñ%»U]Ê{ưº |
---|
12328 | -È«¹ì ú~%w»%æOÒÿÂP8IÅóóCT,¡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"ö,èønOhê{Ô¾¦XuÐçVÌYbmL¯û{T2Û7ƾ}Û]¨Ëµí¤>´YèârE½rî7¿ÄG?ÍäÒg´ÌýµÕïã¥,ÓÝtÉë\d£ì®põÕy{Ñ<ú1VOj÷0¿Çõ2_£½ùïiîi^×Òê/
¹Ö¾¼ÖþsTÒ«îê>s#¼¢&ZóHVMW+÷êç_Éçâù©î¯âßâçÿPKxf@P>&ëÔAppManifest.xamlPKxf@()ëÕ.SilverlightMediaElement.dllPK0 |
---|
12330 | \ No newline at end of file |
---|
12331 | Index: 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 |
---|
12348 | Index: 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 |
---|