| 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 |
|---|