Changeset 2174
- Timestamp:
- 04/23/12 05:01:37 (13 months ago)
- Location:
- branches/jw6
- Files:
-
- 5 added
- 7 edited
-
bin-debug/jwplayer.js (modified) (29 diffs)
-
jwplayer.min.js (modified) (1 diff)
-
src/js/events (added)
-
src/js/events/jwplayer.events.eventdispatcher.js (added)
-
src/js/events/jwplayer.events.js (added)
-
src/js/html5/jwplayer.html5.controlbar.js (modified) (8 diffs)
-
src/js/html5/jwplayer.html5.controller.js (modified) (4 diffs)
-
src/js/html5/jwplayer.html5.model.js (added)
-
src/js/html5/jwplayer.html5.player.js (modified) (2 diffs)
-
src/js/html5/jwplayer.html5.video.js (modified) (12 diffs)
-
src/js/html5/jwplayer.html5.view.js (added)
-
test/controller.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/jw6/bin-debug/jwplayer.js
r2173 r2174 758 758 } 759 759 } 760 for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { 760 var globalListenerIndex; 761 for (globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { 761 762 try { 762 763 _globallisteners[globalListenerIndex].listener(data); … … 819 820 html5.controlbar = function(api, config) { 820 821 var _api, 821 822 _skin, 822 823 _defaults = { 823 824 backgroundcolor : "", … … 901 902 _id, 902 903 _duration, 904 _currentVolume, 903 905 904 906 _toggles = { … … 933 935 934 936 _api = api; 935 936 937 937 938 config = _utils.extend({}, config); … … 947 948 window.addEventListener('mouseup', _sliderMouseEvent, false); 948 949 949 (new html5.skinloader(config.skin, function(skin) { 950 _api.skin = skin; 951 _settings = _utils.extend({}, _defaults, _api.skin.controlbar.settings, _api.settings.controlbar); 952 _layout = (skin.controlbar.layout.left || skin.controlbar.layout.right || skin.controlbar.layout.center) ? skin.controlbar.layout : _defaults.layout; 953 _createStyles(); 954 _buildControlbar(); 955 _addEventListeners(); 956 }, function(err) { _utils.log(err); })); 950 _skin = _api.skin; 951 952 _settings = _utils.extend({}, _defaults, _skin.controlbar.settings, _api.settings.controlbar); 953 _layout = (_skin.controlbar.layout.left || _skin.controlbar.layout.right || _skin.controlbar.layout.center) ? _skin.controlbar.layout : _defaults.layout; 954 _createStyles(); 955 _buildControlbar(); 956 _addEventListeners(); 957 957 } 958 958 959 959 function _addEventListeners() { 960 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME, _timeUpdated);961 _api. addEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE, _stateHandler);962 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE, _muteHandler);963 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME, _volumeHandler);964 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER, _bufferHandler);960 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME, _timeUpdated); 961 _api.jwAddEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE, _stateHandler); 962 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE, _muteHandler); 963 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME, _volumeHandler); 964 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER, _bufferHandler); 965 965 } 966 966 … … 1015 1015 function _muteHandler(evt) { 1016 1016 _toggleButton("mute", evt.mute); 1017 } 1017 _setVolume(evt.mute ? 0 : _currentVolume) 1018 } 1018 1019 1019 1020 function _volumeHandler(evt) { 1020 _setVolume(evt.volume / 100); 1021 _currentVolume = evt.volume / 100; 1022 _setVolume(_currentVolume); 1021 1023 } 1022 1024 … … 1192 1194 function _mute() { 1193 1195 _api.jwSetMute(); 1196 _muteHandler({mute:_toggleStates.mute}); 1194 1197 } 1195 1198 … … 1197 1200 if (pct < 0.1) pct = 0; 1198 1201 if (pct > 0.9) pct = 1; 1199 _api.jwSetVolume(pct * 100) 1202 _api.jwSetVolume(pct * 100); 1203 _setVolume(pct); 1200 1204 } 1201 1205 … … 1479 1483 } 1480 1484 1481 this.getSkin = function() { return _api.skin; }1482 1483 1485 function _getSkinElement(name) { 1484 if (_ api.skin.controlbar.elements[name]) {1485 return _ api.skin.controlbar.elements[name];1486 if (_skin.controlbar.elements[name]) { 1487 return _skin.controlbar.elements[name]; 1486 1488 } else { 1487 1489 return { … … 1576 1578 */ 1577 1579 (function(html5) { 1578 var _utils = jwplayer.utils; 1579 1580 html5.controller = function(model, view) { 1580 var _jw = jwplayer, 1581 _utils = _jw.utils, 1582 _events = _jw.events, 1583 _states = _events.state; 1584 1585 html5.controller = function(model) { 1581 1586 var _model = model, 1582 _view = view, 1583 _video = model.video, 1587 _video = model.getVideo(), 1584 1588 _debug = 'console', 1585 _eventDispatcher = new jwplayer.events.eventdispatcher(_model.id, _debug);1589 _eventDispatcher = new _events.eventdispatcher(_model.id, _debug); 1586 1590 1587 1591 _utils.extend(this, _eventDispatcher); … … 1589 1593 function _init() { 1590 1594 _model.addGlobalListener(_forward); 1595 _model.addEventListener(_events.JWPLAYER_MEDIA_BUFFER_FULL, _bufferFullHandler); 1591 1596 } 1592 1597 1593 1598 function _forward(evt) { 1594 1599 _eventDispatcher.sendEvent(evt.type, evt); 1600 } 1601 1602 function _bufferFullHandler(evt) { 1603 _video.play(); 1595 1604 } 1596 1605 … … 1608 1617 1609 1618 this.play = function() { 1610 if (_model.state == jwplayer.events.state.IDLE) {1619 if (_model.state == _states.IDLE) { 1611 1620 _video.load(file); 1612 } 1613 _video.play(); 1621 } else if (_model.state == _states.PAUSED) { 1622 _video.play(); 1623 } 1614 1624 } 1615 1625 … … 1619 1629 1620 1630 this.pause = function() { 1621 if (_model.state == jwplayer.events.state.PLAYING || _model.state == jwplayer.events.state.BUFFERING) {1631 if (_model.state == _states.PLAYING || _model.state == _states.BUFFERING) { 1622 1632 _video.pause(); 1623 1633 } … … 1677 1687 })(jwplayer); 1678 1688 /** 1689 * jwplayer.html5 model 1690 * 1691 * @author pablo 1692 * @version 6.0 1693 */ 1694 (function(html5) { 1695 var _utils = jwplayer.utils; 1696 1697 html5.model = function(config) { 1698 var _model = this, 1699 // Video provider 1700 _video, 1701 // HTML5 <video> tag 1702 _videoTag; 1703 1704 jwplayer.utils.extend(_model, new jwplayer.events.eventdispatcher()); 1705 1706 function _parseConfig(config) { 1707 return config; 1708 } 1709 1710 function _init() { 1711 _utils.extend(_model, { 1712 id : config.id, 1713 settings : _parseConfig(config), 1714 volume : 0, 1715 state : jwplayer.events.state.IDLE, 1716 mute : false 1717 }); 1718 1719 _videoTag = document.createElement("video"); 1720 _video = new html5.video(_videoTag); 1721 _video.addGlobalListener(_videoEventHandler); 1722 } 1723 1724 function _videoEventHandler(evt) { 1725 switch (evt.type) { 1726 case jwplayer.events.JWPLAYER_MEDIA_MUTE: 1727 if (_model.mute == evt.mute) 1728 return; 1729 _model.mute = evt.mute; 1730 break; 1731 case jwplayer.events.JWPLAYER_MEDIA_VOLUME: 1732 if (_model.volume == evt.volume) 1733 return; 1734 _model.volume = evt.volume; 1735 break; 1736 case jwplayer.events.JWPLAYER_PLAYER_STATE: 1737 if (_model.state == evt.newstate) 1738 return; 1739 _model.state = evt.newstate; 1740 } 1741 _model.sendEvent(evt.type, evt); 1742 } 1743 1744 this.getVideo = function() { 1745 return _video; 1746 } 1747 1748 _init(); 1749 } 1750 })(jwplayer.html5); 1751 /** 1679 1752 * Main HTMl5 player class 1680 1753 * … … 1688 1761 1689 1762 function _init() { 1690 _model = { 1691 id: "player", 1692 video: new html5.video(document.createElement("video")), 1693 settings: config, 1694 volume: 0, 1695 state: jwplayer.events.state.IDLE, 1696 mute: false 1697 }; 1698 1699 jwplayer.utils.extend(_model, new jwplayer.events.eventdispatcher()); 1700 _model.video.addGlobalListener(function(evt) { 1701 switch (evt.type) { 1702 case jwplayer.events.JWPLAYER_MEDIA_MUTE: 1703 if (_model.mute == evt.mute) return; 1704 _model.mute = evt.mute; 1705 break; 1706 case jwplayer.events.JWPLAYER_MEDIA_VOLUME: 1707 if (_model.volume == evt.volume) return; 1708 _model.volume = evt.volume; 1709 break; 1710 case jwplayer.events.JWPLAYER_PLAYER_STATE: 1711 if (_model.state == evt.newstate) return; 1712 _model.state = evt.newstate; 1713 } 1714 _model.sendEvent(evt.type, evt); 1715 }); 1716 1763 _model = new html5.model(config); 1764 1717 1765 _api.id = _model.id; 1718 1766 _api.settings = _model.settings; 1719 1720 _view = {}; 1721 1722 _controller = new html5.controller(_model, _view); 1723 _api.addEventListener = _controller.addEventListener; 1724 _api.removeEventListener = _controller.removeEventListener; 1725 1726 _view.container = document.getElementById(_api.id), 1727 _view.controlbar = new html5.controlbar(_api, _model.settings) 1728 1729 1730 jwplayer.utils.appendStylesheet("#"+_api.id+" video", { 1731 width: "100%", 1732 height: "100%", 1733 background: "#000", 1734 opacity: 0, 1735 '-webkit-transition': 'opacity .15s ease' 1736 }); 1737 1738 _view.container.appendChild(_model.video.getTag()); 1739 _view.container.appendChild(_view.controlbar.getDisplayElement()); 1740 1767 1768 _controller = new html5.controller(_model); 1741 1769 _controller.load(); 1770 1771 (new html5.skinloader(config.skin, function(skin) { 1772 _api.skin = skin; 1773 _view = new html5.view(_api, _model); 1774 }, function(err) { _utils.log(err); })); 1775 1742 1776 } 1743 1777 … … 1759 1793 this.jwGetFullscreen = function(){ return false }; 1760 1794 1761 1762 1795 this.jwAddEventListener = function(type, handler) { _controller.addEventListener(type, handler); }; 1796 this.jwRemoveEventListener = function(type, handler) { _controller.removeEventListener(type, handler); }; 1763 1797 1764 1798 _init(); … … 2023 2057 (function(jwplayerhtml5) { 2024 2058 2025 var _ utils = jwplayer.utils;2059 var _jw = jwplayer, _utils = _jw.utils, _events = _jw.events, _states = _events.state; 2026 2060 2027 2061 /** HTML5 video class * */ … … 2061 2095 _delayedSeek, 2062 2096 // Current media state 2063 _state = jwplayer.events.state.IDLE,2097 _state = _states.IDLE, 2064 2098 // Save the volume state before muting 2065 2099 _lastVolume = 0, … … 2069 2103 _bufferPercent = -1, 2070 2104 // Event dispatcher 2071 _eventDispatcher = new jwplayer.events.eventdispatcher();2105 _eventDispatcher = new _events.eventdispatcher(); 2072 2106 2073 2107 _utils.extend(this, _eventDispatcher); … … 2100 2134 2101 2135 function _timeUpdateHandler(evt) { 2102 if (_state == jwplayer.events.state.PLAYING) {2103 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_TIME, {2136 if (_state == _states.PLAYING) { 2137 _sendEvent(_events.JWPLAYER_MEDIA_TIME, { 2104 2138 position : _video.currentTime, 2105 2139 duration : _duration … … 2113 2147 function _canPlayHandler(evt) { 2114 2148 _canSeek = true; 2115 _ generalHandler(evt);2149 _sendEvent(_events.JWPLAYER_MEDIA_BUFFER_FULL); 2116 2150 if (_delayedSeek > 0) { 2117 2151 _seek(_delayedSeek); … … 2121 2155 function _playHandler(evt) { 2122 2156 if (_video.paused) { 2123 _setState( jwplayer.events.state.PAUSED);2157 _setState(_states.PAUSED); 2124 2158 } else { 2125 _setState( jwplayer.events.state.PLAYING);2159 _setState(_states.PLAYING); 2126 2160 } 2127 2161 } … … 2149 2183 _video.style.opacity = 0; 2150 2184 clearInterval(_bufferInterval); 2151 _setState( jwplayer.events.state.IDLE);2185 _setState(_states.IDLE); 2152 2186 } 2153 2187 … … 2178 2212 2179 2213 function _volumeHandler(evt) { 2180 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_VOLUME, {2214 _sendEvent(_events.JWPLAYER_MEDIA_VOLUME, { 2181 2215 volume: Math.round(_video.volume * 100) 2182 2216 }); 2183 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_MUTE, {2217 _sendEvent(_events.JWPLAYER_MEDIA_MUTE, { 2184 2218 mute: _video.muted 2185 2219 }); … … 2200 2234 function _setState(newstate) { 2201 2235 // Handles a FF 3.5 issue 2202 if (newstate == jwplayer.events.state.PAUSED && _state == jwplayer.events.state.IDLE) {2236 if (newstate == _states.PAUSED && _state == _states.IDLE) { 2203 2237 return; 2204 2238 } … … 2207 2241 var oldstate = _state; 2208 2242 _state = newstate; 2209 _sendEvent( jwplayer.events.JWPLAYER_PLAYER_STATE, {2243 _sendEvent(_events.JWPLAYER_PLAYER_STATE, { 2210 2244 oldstate : oldstate, 2211 2245 newstate : newstate … … 2218 2252 if (newBuffer != _bufferPercent) { 2219 2253 _bufferPercent = newBuffer; 2220 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_BUFFER, {2254 _sendEvent(_events.JWPLAYER_MEDIA_BUFFER, { 2221 2255 bufferPercent: Math.round(_bufferPercent * 100) 2222 2256 }); … … 2237 2271 function _complete() { 2238 2272 _stop(); 2239 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_COMPLETE);2273 _sendEvent(_events.JWPLAYER_MEDIA_COMPLETE); 2240 2274 } 2241 2275 … … 2250 2284 2251 2285 } 2286 2287 })(jwplayer.html5);/** 2288 * jwplayer.html5 namespace 2289 * 2290 * @author pablo 2291 * @version 6.0 2292 */ 2293 (function(html5) { 2294 var _jw = jwplayer, _utils = _jw.utils, 2295 2296 VIEW_VIDEO_CONTAINER_CLASS = "jwvideocontainer", 2297 VIEW_CONTROLS_CONTAINER_CLASS = "jwcontrolscontainer"; 2298 2299 html5.view = function(api, model) { 2300 var _api = api, 2301 _model = model, 2302 _controls = {}, 2303 _container, 2304 _videoLayer; 2305 2306 function _init() { 2307 _container = document.getElementById(_api.id); 2308 _controls.controlbar = new html5.controlbar(_api); 2309 2310 _videoLayer = document.createElement("span"); 2311 _videoLayer.className = VIEW_VIDEO_CONTAINER_CLASS; 2312 2313 _controlsLayer = document.createElement("span"); 2314 _controlsLayer.className = VIEW_CONTROLS_CONTAINER_CLASS; 2315 2316 _videoLayer.appendChild(_model.getVideo().getTag()); 2317 _controlsLayer.appendChild(_controls.controlbar.getDisplayElement()); 2318 2319 _container.appendChild(_videoLayer); 2320 _container.appendChild(_controlsLayer); 2321 } 2322 2323 _init(); 2324 } 2325 2326 _utils.appendStylesheet('.'+VIEW_VIDEO_CONTAINER_CLASS + ' ,.'+VIEW_CONTROLS_CONTAINER_CLASS, { 2327 width: "100%", 2328 height: "100%", 2329 display: "inline-block", 2330 position: "absolute" 2331 }); 2332 _utils.appendStylesheet('.'+VIEW_VIDEO_CONTAINER_CLASS + " video", { 2333 width: "100%", 2334 height: "100%", 2335 background: "#000", 2336 opacity: 0, 2337 '-webkit-transition': 'opacity .15s ease' 2338 }); 2252 2339 2253 2340 })(jwplayer.html5);/** -
branches/jw6/jwplayer.min.js
r2173 r2174 1 if(typeof jwplayer=="undefined"){jwplayer=function(a){if(jwplayer.api){return jwplayer.api.selectPlayer(a)}};var $jw=jwplayer;jwplayer.version="6.0";jwplayer.vid=document.createElement("video");jwplayer.audio=document.createElement("audio");jwplayer.source=document.createElement("source");(function(c){var b=c.utils=function(){};b.exists=function(h){switch(typeof(h)){case"string":return(h.length>0);break;case"object":return(h!==null);case"undefined":return false}return true};var e;var d={};b.css=function(h,k){if(b.exists(h)){for(var i in k){try{if(typeof k[i]==="undefined"){continue}else{if(typeof k[i]=="number"&&!(i=="zIndex"||i=="opacity")){if(isNaN(k[i])){continue}if(i.match(/color/i)){k[i]="#"+b.strings.pad(k[i].toString(16),6)}else{k[i]=Math.ceil(k[i])+"px"}}}if(k[i]){h.style[i]=k[i]}}catch(j){}}}};b.appendStylesheet=function(h,j){if(!e){e=document.createElement("style");e.type="text/css";document.getElementsByTagName("head")[0].appendChild(e)}if(!d[h]){d[h]={}}for(var i in j){var k=g(i,j[i]);if(b.exists(d[h][i])&&!b.exists(k)){delete d[h][i]}else{d[h][i]=k}}f()};function g(h,i){if(typeof i==="undefined"){return undefined}if(typeof i=="number"){if(isNaN(i)){return undefined}switch(h){case"z-index":case"opacity":return i;break;default:if(h.match(/color/i)){return"#"+b.strings.pad(i.toString(16),6)}else{return Math.ceil(i)+"px"}break}}else{return i}}function f(){if(e){var h="";for(var k in d){var j=d[k];h+=k+"{\n";for(var i in j){h+=" "+i+": "+j[i]+";\n"}h+="}\n"}e.innerHTML=h}}b.clearCss=function(h){for(var i in d){if(i.indexOf(h)>=0){delete d[i]}}f()};b.getAbsolutePath=function(o,n){if(!b.exists(n)){n=document.location.href}if(!b.exists(o)){return undefined}if(a(o)){return o}var p=n.substring(0,n.indexOf("://")+3);var m=n.substring(p.length,n.indexOf("/",p.length+1));var j;if(o.indexOf("/")===0){j=o.split("/")}else{var k=n.split("?")[0];k=k.substring(p.length+m.length+1,k.lastIndexOf("/"));j=k.split("/").concat(o.split("/"))}var h=[];for(var l=0;l<j.length;l++){if(!j[l]||!b.exists(j[l])||j[l]=="."){continue}else{if(j[l]==".."){h.pop()}else{h.push(j[l])}}}return p+m+"/"+h.join("/")};function a(i){if(!b.exists(i)){return}var j=i.indexOf("://");var h=i.indexOf("?");return(j>0&&(h<0||(h>j)))}b.extend=function(){var h=b.extend["arguments"];if(h.length>1){for(var k=1;k<h.length;k++){for(var j in h[k]){h[0][j]=h[k][j]}}return h[0]}return null};b.parseDimension=function(h){if(typeof h=="string"){if(h===""){return 0}else{if(h.lastIndexOf("%")>-1){return h}else{return parseInt(h.replace("px",""),10)}}}return h};b.timeFormat=function(h){if(h>0){str=Math.floor(h/60)<10?"0"+Math.floor(h/60)+":":Math.floor(h/60)+":";str+=Math.floor(h%60)<10?"0"+Math.floor(h%60):Math.floor(h%60);return str}else{return"00:00"}};c.utils.log=function(i,h){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(h){console.log(i,h)}else{console.log(i)}}};c.utils.getBoundingClientRect=function(h){if(typeof h.getBoundingClientRect=="function"){return h.getBoundingClientRect()}else{return{left:h.offsetLeft+document.body.scrollLeft,top:h.offsetTop+document.body.scrollTop,width:h.offsetWidth,height:h.offsetHeight}}}})(jwplayer);(function(a){a.ajax=function(f,e,b){var d;if(window.XMLHttpRequest){d=new XMLHttpRequest()}else{d=new ActiveXObject("Microsoft.XMLHTTP")}d.onreadystatechange=function(){if(d.readyState===4){if(d.status===200){if(e){if(!jwplayer.utils.exists(d.responseXML)){try{if(window.DOMParser){var g=(new DOMParser()).parseFromString(d.responseText,"text/xml");if(g){d=jwplayer.utils.extend({},d,{responseXML:g})}}else{g=new ActiveXObject("Microsoft.XMLDOM");g.async="false";g.loadXML(d.responseText);d=jwplayer.utils.extend({},d,{responseXML:g})}}catch(h){if(b){b(f)}}}e(d)}}else{if(b){b(f)}}}};try{d.open("GET",f,true);d.send(null)}catch(c){if(b){b(f)}}return d}})(jwplayer.utils);(function(a){jwplayer.utils.strings=function(){};jwplayer.utils.strings.trim=function(b){return b.replace(/^\s*/,"").replace(/\s*$/,"")};jwplayer.utils.strings.pad=function(c,d,b){if(!b){b="0"}while(c.length<d){c=b+c}return c};jwplayer.utils.strings.serialize=function(b){if(b==null){return null}else{if(b=="true"){return true}else{if(b=="false"){return false}else{if(isNaN(Number(b))||b.length>5||b.length==0){return b}else{return Number(b)}}}}};jwplayer.utils.strings.seconds=function(d){d=d.replace(",",".");var b=d.split(":");var c=0;if(d.substr(-1)=="s"){c=Number(d.substr(0,d.length-1))}else{if(d.substr(-1)=="m"){c=Number(d.substr(0,d.length-1))*60}else{if(d.substr(-1)=="h"){c=Number(d.substr(0,d.length-1))*3600}else{if(b.length>1){c=Number(b[b.length-1]);c+=Number(b[b.length-2])*60;if(b.length==3){c+=Number(b[b.length-3])*3600}}else{c=Number(d)}}}}return c};jwplayer.utils.strings.xmlAttribute=function(b,c){for(var d=0;d<b.attributes.length;d++){if(b.attributes[d].name&&b.attributes[d].name.toLowerCase()==c.toLowerCase()){return b.attributes[d].value.toString()}}return""};jwplayer.utils.strings.jsonToString=function(f){var h=h||{};if(h&&h.stringify){return h.stringify(f)}var c=typeof(f);if(c!="object"||f===null){if(c=="string"){f='"'+f.replace(/"/g,'\\"')+'"'}else{return String(f)}}else{var g=[],b=(f&&f.constructor==Array);for(var d in f){var e=f[d];switch(typeof(e)){case"string":e='"'+e.replace(/"/g,'\\"')+'"';break;case"object":if(jwplayer.utils.exists(e)){e=jwplayer.utils.strings.jsonToString(e)}break}if(b){if(typeof(e)!="function"){g.push(String(e))}}else{if(typeof(e)!="function"){g.push('"'+d+'":'+String(e))}}}if(b){return"["+String(g)+"]"}else{return"{"+String(g)+"}"}}}})(jwplayer.utils);(function(b){var d=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);jwplayer.utils.typechecker=function(g,f){f=!jwplayer.utils.exists(f)?c(g):f;return e(g,f)};function c(f){var g=["true","false","t","f"];if(g.toString().indexOf(f.toLowerCase().replace(" ",""))>=0){return"boolean"}else{if(d.test(f)){return"color"}else{if(!isNaN(parseInt(f,10))&&parseInt(f,10).toString().length==f.length){return"integer"}else{if(!isNaN(parseFloat(f))&&parseFloat(f).toString().length==f.length){return"float"}}}}return"string"}function e(g,f){if(!jwplayer.utils.exists(f)){return g}switch(f){case"color":if(g.length>0){return a(g)}return null;case"integer":return parseInt(g,10);case"float":return parseFloat(g);case"boolean":if(g.toLowerCase()=="true"){return true}else{if(g=="1"){return true}}return false}return g}function a(f){switch(f.toLowerCase()){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:f=f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(f.length==3){f=f.charAt(0)+f.charAt(0)+f.charAt(1)+f.charAt(1)+f.charAt(2)+f.charAt(2)}return parseInt(f,16)}return parseInt("000000",16)}})(jwplayer.utils);(function(a){a.events={COMPLETE:"COMPLETE",ERROR:"ERROR",API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_MEDIA_BEFOREPLAY:"jwplayerMediaBeforePlay",JWPLAYER_MEDIA_BEFORECOMPLETE:"jwplayerMediaBeforeComplete",JWPLAYER_COMPONENT_SHOW:"jwplayerComponentShow",JWPLAYER_COMPONENT_HIDE:"jwplayerComponentHide",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_SEEK:"jwplayerMediaSeek",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",state:{BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING",COMPLETED:"COMPLETED"},JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem",JWPLAYER_INSTREAM_CLICK:"jwplayerInstreamClicked",JWPLAYER_INSTREAM_DESTROYED:"jwplayerInstreamDestroyed"}})(jwplayer);(function(jwplayer){jwplayer.events.eventdispatcher=function(id,debug){var _id=id,_debug=debug,_listeners,_globallisteners;this.resetEventListeners=function(){_listeners={};_globallisteners=[]};this.resetEventListeners();this.addEventListener=function(type,listener,count){try{if(!jwplayer.utils.exists(_listeners[type])){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){if(!_listeners[type]){return}try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][listenerIndex].listener.toString()==listener.toString()){_listeners[type].splice(listenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){if(!listener){return}try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].listener.toString()==listener.toString()){_globallisteners.splice(globalListenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(!jwplayer.utils.exists(data)){data={}}jwplayer.utils.extend(data,{id:_id,version:jwplayer.version,type:type});if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_listeners[type][listenerIndex].listener)}if(_listeners[type][listenerIndex]){if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}} for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_globallisteners[globalListenerIndex].listener)}if(_globallisteners[globalListenerIndex]){if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}}})(jwplayer);(function(a){a.html5={}})(jwplayer);(function(h){var i=jwplayer.utils,g=i.appendStylesheet,b="button",m="text",d="divider",n="slider",e="relative",f="absolute",a="none",l="block",p="inline",k="inline-block",c="left",r="right",j="100%",o="width .25s linear 0s, left .25s linear 0s, opacity .25s ease 0s";CB_CLASS=".jwcontrolbar";h.controlbar=function(y,ah){var w,x={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:"OVER",idlehide:false,hideplaylistcontrols:false,forcenextprev:false,layout:{left:{position:"left",elements:[{name:"play",type:b},{name:"divider",type:d},{name:"prev",type:b},{name:"divider",type:d},{name:"next",type:b},{name:"divider",type:d},{name:"elapsed",type:m}]},center:{position:"center",elements:[{name:"time",type:n}]},right:{position:"right",elements:[{name:"duration",type:m},{name:"blank",type:b},{name:"divider",type:d},{name:"mute",type:b},{name:"volume",type:n},{name:"divider",type:d},{name:"fullscreen",type:b}]}}},K,ap,ab,an,ae,ay,O={play:"pause",mute:"unmute",fullscreen:"normalscreen"},ao={play:false,mute:false,fullscreen:false},v={play:T,mute:F,fullscreen:Q,next:u,prev:W},z={time:N,volume:at};function ar(){ab={};w=y;ah=i.extend({},ah);ae=w.id+"_controlbar";ay=0;an=G();an.id=ae;an.className="jwcontrolbar";window.addEventListener("mousemove",ax,false);window.addEventListener("mouseup",ax,false);(new h.skinloader(ah.skin,function(aA){w.skin=aA;K=i.extend({},x,w.skin.controlbar.settings,w.settings.controlbar);ap=(aA.controlbar.layout.left||aA.controlbar.layout.right||aA.controlbar.layout.center)?aA.controlbar.layout:x.layout;M();aj();s()},function(aA){i.log(aA)}))}function s(){w.addEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME,az);w.addEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE,B);w.addEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE,au);w.addEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME,A);w.addEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER,D)}function az(aA){ay=aA.duration;if(ab.elapsed){ab.elapsed.innerHTML=i.timeFormat(aA.position)}if(ab.duration){ab.duration.innerHTML=i.timeFormat(aA.duration)}if(aA.duration>0){am(aA.position/aA.duration)}else{am(0)}}function B(aA){switch(aA.newstate){case jwplayer.events.state.PLAYING:case jwplayer.events.state.BUFFERING:if(ab.timeSliderThumb){ab.timeSliderThumb.style.opacity=1}if(ab.timeRail){ab.timeRail.className="jwrail jwsmooth"}J("play",true);break;case jwplayer.events.state.PAUSED:if(!Y){J("play",false)}break;case jwplayer.events.state.IDLE:case jwplayer.events.state.COMPLETED:J("play",false);if(ab.timeSliderThumb){ab.timeSliderThumb.style.opacity=0}aq(0);az({position:0,duration:0});if(ab.timeRail){ab.timeRail.className="jwrail"}break}}function au(aA){J("mute",aA.mute)}function A(aA){t(aA.volume/100)}function D(aA){aq(aA.bufferPercent/100)}function M(){i.clearCss("#"+ae);g("#"+ae,{height:S("background").height,bottom:K.position=="OVER"?K.margin:0,left:K.position=="OVER"?K.margin:0,right:K.position=="OVER"?K.margin:0});g(ai(".jwtext"),{font:K.fontsize+"px/"+S("background").height+"px "+K.font,color:K.fontcolor,"font-weight":K.fontweight,"font-style":K.fontstyle,"text-align":"center",padding:"0 5px"})}function ai(aA){return"#"+ae+" "+aA}function G(){return document.createElement("span")}function aj(){var aC=ac("capLeft");var aB=ac("capRight");var aA=ac("background",{position:f,left:S("capLeft").width,right:S("capRight").width,"background-repeat":"repeat-x"},true);an.style.opacity=0;if(aA){an.appendChild(aA)}if(aC){an.appendChild(aC)}ak();if(aB){an.appendChild(aB)}setTimeout(function(){X();h.utils.animations.fadeIn(an,250)},1000)}function H(aA){switch(aA.type){case d:return V(aA);break;case m:return ad(aA.name);break;case b:if(aA.name!="blank"){return U(aA.name)}break;case n:return I(aA.name);break}}function ac(aC,aF,aB,aH){var aE=G();aE.className="jw"+aC;var aA=aH?" left center":" center";var aD=S(aC);aE.innerHTML=" ";if(!aD||aD.src==""){return}var aG;if(aB){aG={background:"url('"+aD.src+"') repeat-x "+aA}}else{aG={background:"url('"+aD.src+"') no-repeat"+aA,width:aD.width}}g(ai(".jw"+aC),i.extend(aG,aF));ab[aC]=aE;return aE}function U(aC){if(!S(aC+"Button").src){return null}var aD=document.createElement("button");aD.className="jw"+aC;aD.addEventListener("click",Z(aC),false);var aE=S(aC+"Button");var aB=S(aC+"ButtonOver");aD.innerHTML=" ";L(ai(".jw"+aC),aE,aB);var aA=O[aC];if(aA){L(ai(".jw"+aC+".jwtoggle"),S(aA+"Button"),S(aA+"ButtonOver"))}ab[aC]=aD;return aD}function L(aA,aB,aC){if(!aB.src){return}g(aA,{width:aB.width,background:"url("+aB.src+") center no-repeat"});if(aC.src){g(aA+":hover",{background:"url("+aC.src+") center no-repeat"})}}function Z(aA){return function(){if(v[aA]){v[aA]()}}}function T(){if(ao.play){w.jwPause()}else{w.jwPlay()}}function F(){w.jwSetMute()}function at(aA){if(aA<0.1){aA=0}if(aA>0.9){aA=1}w.jwSetVolume(aA*100)}function N(aA){if(!Y){w.jwPlay()}w.jwSeek(aA*ay)}function Q(){J("fullscreen")}function u(){w.jwPlaylistNext()}function W(){w.jwPlaylistNext()}function J(aA,aB){if(!i.exists(aB)){aB=!ao[aA]}if(ab[aA]){ab[aA].className="jw"+aA+(aB?" jwtoggle":"")}ao[aA]=aB}function E(aA){return ae+"_"+aA}function ad(aA,aE){var aC=G();aC.id=E(aA);aC.className="jwtext jw"+aA;var aB={};var aD=S(aA+"Background");if(aD.src){aB.background="url("+aD.src+") no-repeat center";aB["background-size"]="100% "+S("background").height+"px"}g(ai(".jw"+aA),aB);aC.innerHTML="00:00";ab[aA]=aC;return aC}function V(aB){if(aB.width){var aA=G();aA.className="jwblankDivider";g(aA,{width:parseInt(aB.width)});return aA}else{if(aB.element){return ac(aB.element)}else{return ac(aB.name)}}}function I(aA){var aD=G();aD.className="jwslider jw"+aA;var aC=ac(aA+"SliderCapLeft");var aB=ac(aA+"SliderCapRight");if(aB){aB.className+=" jwcapRight"}var aE=af(aA);if(aC){aD.appendChild(aC)}aD.appendChild(aE);if(aC){aD.appendChild(aB)}g(ai(".jw"+aA+" .jwrail"),{left:S(aA+"SliderCapLeft").width,right:S(aA+"SliderCapRight").width,});ab[aA]=aD;if(aA=="time"){aw(aD);am(0);aq(0)}else{if(aA=="volume"){al(aD)}}return aD}function af(aC){var aF=G();aF.className="jwrail jwsmooth";var aA=["Rail","Buffer","Progress"];for(var aE=0;aE<aA.length;aE++){var aD=ac(aC+"Slider"+aA[aE],null,true,(aC=="volume"));if(aD){aD.className+=" jwstretch";aF.appendChild(aD)}}var aB=ac(aC+"SliderThumb");if(aB){aB.className+=" jwthumb";aB.style.opacity=0;aF.appendChild(aB)}aF.addEventListener("mousedown",C(aC),false);ab[aC+"Rail"]=aF;return aF}var Y;function C(aA){return(function(aB){if(aB.button!=0){return}ab[aA+"Rail"].className="jwrail";if(aA=="time"){if(w.jwGetState()!=jwplayer.events.state.IDLE){w.jwPause();Y=aA}}else{Y=aA}})}var ag=0;function ax(aA){if(!Y||aA.button!=0){return}var aE=ab[Y].getElementsByClassName("jwrail")[0],aF=i.getBoundingClientRect(aE),aD=(aA.clientX-aF.left)/aF.width;if(aA.type=="mouseup"){var aB=Y;ab[aB+"Rail"].className="jwrail jwsmooth";Y=null;z[aB](aD)}else{if(Y=="time"){am(aD)}else{t(aD)}var aC=(new Date()).getTime();if(aC-ag>500){ag=aC;z[Y](aD)}}}function aw(aA){if(ab.timeSliderThumb){g(ai(".jwtimeSliderThumb"),{"margin-left":(S("timeSliderThumb").width/-2)})}aq(0);am(0)}function al(aC){var aB=S("volumeSliderCapLeft").width,aA=S("volumeSliderCapRight").width,aD=S("volumeSliderRail").width;g(ai(".jwvolume"),{width:(aB+aD+aA)})}var P={};function ak(){av("left");av("center");av("right");an.appendChild(P.left);an.appendChild(P.center);an.appendChild(P.right);g(ai(".jwright"),{right:S("capRight").width})}function av(aB){var aA=G();aA.className="jwgroup jw"+aB;P[aB]=aA;if(ap[aB]){R(ap[aB],P[aB])}}function R(aD,aA){if(aD&&aD.elements.length>0){for(var aC=0;aC<aD.elements.length;aC++){var aB=H(aD.elements[aC]);if(aB){aA.appendChild(aB)}}}}var X=this.resize=function(aB,aA){g(ai(".jwgroup.jwcenter"),{left:Math.round(i.parseDimension(P.left.offsetWidth)+S("capLeft").width),right:Math.round(i.parseDimension(P.right.offsetWidth)+S("capRight").width)})};this.getDisplayElement=function(){return an};var aq=this.setBuffer=function(aA){aA=Math.min(Math.max(0,aA),1);ab.timeSliderBuffer.style.width=aA*i.getBoundingClientRect(ab.timeSliderRail).width+"px"};function aa(aC,aE,aF){if(!ab[aC]){return}aE=Math.min(Math.max(0,aE),1);var aB=ab[aC+"SliderProgress"];var aA=ab[aC+"SliderThumb"];var aD=aE*i.getBoundingClientRect(ab[aC+"SliderRail"]).width+"px";if(aB){aB.style.width=aD}if(aA){aA.style.left=aD}}function t(aA){aa("volume",aA,true)}function am(aA){aa("time",aA)}this.getSkin=function(){return w.skin};function S(aA){if(w.skin.controlbar.elements[aA]){return w.skin.controlbar.elements[aA]}else{return{width:0,height:0,src:"",image:undefined,ready:false}}}ar()};function q(){g(CB_CLASS,{position:f,overflow:"hidden"});g(CB_CLASS+" span",{height:j,"-webkit-user-select":a,"-webkit-user-drag":a,"user-select":a,"user-drag":a});g(CB_CLASS+" .jwgroup",{display:p});g(CB_CLASS+" span, "+CB_CLASS+" .jwgroup button,"+CB_CLASS+" .jwleft",{position:e,"float":c});g(CB_CLASS+" .jwright",{position:f});g(CB_CLASS+" .jwcenter",{position:f});g(CB_CLASS+" button",{display:k,height:j,border:a,cursor:"pointer","-webkit-transition":"background-image .25s","-moz-transition":"background-image .25s","-o-transition":"background-image .25s"});g(CB_CLASS+" .jwcapRight",{right:0,position:f});g(CB_CLASS+" .jwtime,"+CB_CLASS+" .jwgroup span.jwstretch",{position:f,height:j,width:j,left:0});g(CB_CLASS+" .jwrail,"+CB_CLASS+" .jwthumb",{position:f,height:j,cursor:"pointer"});g(CB_CLASS+" .jwtime .jwsmooth span",{"-webkit-transition":o,"-moz-transition":o,"-o-transition":o});g(CB_CLASS+" .jwdivider+.jwdivider",{display:a});g(CB_CLASS+" .jwtext",{padding:"0 5px","text-align":"center"})}q()})(jwplayer.html5);(function(a){var b=jwplayer.utils;a.controller=function(i,l){var j=i,h=l,f=i.video,e="console",c=new jwplayer.events.eventdispatcher(j.id,e);b.extend(this,c);function k(){j.addGlobalListener(g)}function g(m){c.sendEvent(m.type,m)}var d;this.load=function(m){if(f.getTag().canPlayType("video/mp4")){d="http://playertest.longtailvideo.com/bunny.mp4"}else{if(f.getTag().canPlayType("video/webm")){d="http://playertest.longtailvideo.com/bunny.webm"}else{d="http://playertest.longtailvideo.com/bunny.ogv"}}};this.play=function(){if(j.state==jwplayer.events.state.IDLE){f.load(d)}f.play()};this.stop=function(){f.stop()};this.pause=function(){if(j.state==jwplayer.events.state.PLAYING||j.state==jwplayer.events.state.BUFFERING){f.pause()}};this.seek=function(m){f.seek(m)};this.volume=function(m){f.volume(m)};this.mute=function(m){if(!b.exists(m)){m=!j.mute}f.mute(m)};this.prev=function(){};this.next=function(){};this.item=function(m){};this.fullscreen=function(m){};k()}})(jwplayer.html5);(function(a){a.html5.defaultskin=function(){this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.1"><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/><setting name="fontcolor" value="0x000000"/></settings><layout><group position="left"><button name="play"/><divider name="divider"/><button name="prev"/><divider name="divider"/><button name="next"/><divider name="divider"/><text name="elapsed"/></group><group position="center"><slider name="time"/></group><group position="right"><text name="duration"/><divider name="divider"/><button name="blank"/><divider name="divider"/><button name="mute"/><slider name="volume"/><divider name="divider"/><button name="fullscreen"/></group></layout><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUOI3t1LERACAMQlFgGvcfxNIhHMK4gsUvUviOmgtNsiAZkBSEKxKEnCYkkQrJn/YwbUNiSDDYRZaQRDaShv+oX9GBZEIuK+8hXVLs+/YAAAAASUVORK5CYII="/><element name="blankButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAYCAYAAAAyJzegAAAAFElEQVQYV2P8//8/AzpgHBUc7oIAGZdH0RjKN8EAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAQElEQVQIWz3LsRGAMADDQJ0XB5bMINABZ9GENGrszxhjT2WLSqxEJG2JQrTMdV2q5LpOAvyRaVmsi7WdeZ/7+AAaOTq7BVrfOQAAAABJRU5ErkJggg=="/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAQElEQVQIWz3LsRGAMADDQJ0XB5bMINABZ9GENGrszxhjT2WLSqxEJG2JQrTMdV2q5LpOAvyRaVmsi7WdeZ/7+AAaOTq7BVrfOQAAAABJRU5ErkJggg=="/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUCB0FwcENgEAAw7Aq+893g8APUILNOQcbFRktVGqUVFRkWNz3xTa2sUaLNUosKlRUvvf5AdbWOTtzmzyWAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAANUlEQVR42u2RsQkAAAjD/NTTPaW6dXLrINJA1kBpGPMAjDWmOgp1HFQXx+b1KOefO4oxY57R73YnVYCQUCQAAAAASUVORK5CYII="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAIUlEQVQ4jWNgGAWjYOiD/0gYG3/U0FFDB4Oho2AUDAYAAEwiL9HrpdMVAAAAAElFTkSuQmCC"/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAQklEQVQ4y2NgGAWjYOiD/1AMA/JAfB5NjCJD/YH4PRaLyDa0H4lNNUP/DxlD59PCUBCIp3ZEwYA+NZLUKBgFgwEAAN+HLX9sB8u8AAAAAElFTkSuQmCC"/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAQElEQVQ4y2NgGAWjYOiD/0B8Hojl0cT+U2ooCL8HYn9qGwrD/bQw9P+QMXQ+tSMqnpoRBUpS+tRMUqNgFAwGAADxZy1/mHvFnAAAAABJRU5ErkJggg=="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOElEQVRIDe3BwQkAIRADwAhhw/nU/kWwUK+KPITMABFh19Y+F0acY8CJvX9wYpXgRElwolSIiMf9ZWEDhtwurFsAAAAASUVORK5CYII="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAN0lEQVRIDe3BwQkAMQwDMBcc55mRe9zi7RR+FCwBEWG39vcfGHFm4MTuhhMlwYlVBSdKhYh43AW/LQMKm1spzwAAAABJRU5ErkJggg=="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAIElEQVRIiWNgGAWjYBTQBfynMR61YCRYMApGwSigMQAAiVWPcbq6UkIAAAAASUVORK5CYII="/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAYCAYAAAA/OUfnAAAAO0lEQVQYlWP4//8/Awwz0JgDBP/BeN6Cxf/hnI2btiI4u/fsQ3AOHjqK4Jw4eQbBOX/hEoKDYjSd/AMA4cS4mfLsorgAAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAJklEQVQ4y2NgGAUjDcwH4v/kaPxPikZkxcNVI9mBQ5XoGAWDFwAAsKAXKQQmfbUAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAMklEQVQ4y2NgGAWDHPyntub5xBr6Hwv/Pzk2/yfVG/8psRFE25Oq8T+tQnsIaB4FVAcAi2YVysVY52AAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAACmpqampqbBXAu8AAAAAnRSTlMAgJsrThgAAAArSURBVAhbY2AgErBAyA4I2QEhOyBkB4TsYOhAoaCCUCUwDTDtMMNgRuMHAFB5FoGH5T0UAAAAAElFTkSuQmCC"/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAAnRSTlMAgJsrThgAAAArSURBVAhbY2AgErBAyA4I2QEhOyBkB4TsYOhAoaCCUCUwDTDtMMNgRuMHAFB5FoGH5T0UAAAAAElFTkSuQmCC"/><element name="volumeSliderCapRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAYCAYAAAAyJzegAAAAFElEQVQYV2P8//8/AzpgHBUc7oIAGZdH0RjKN8EAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAQklEQVRIiWNgGAWjYMiD/0iYFDmSLbDHImdPLQtgBpEiR7Zl2NijAA5oEkT/0Whi5UiyAJ8BVMsHNMtoo2AUDAIAAGdcIN3IDNXoAAAAAElFTkSuQmCC"/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAP0lEQVRIx2NgGAWjYMiD/1RSQ5QB/wmIUWzJfzx8qhj+n4DYCAY0DyJ7PBbYU8sHMEvwiZFtODXUjIJRMJgBACpWIN2ZxdPTAAAAAElFTkSuQmCC"/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlOZpuml+rYAAAASSURBVBhXY2AYJuA/GBwY6jQAyDyoK8QcL4QAAAAASUVORK5CYII="/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiUlEQVR42u3XSw2AMBREURwgAQlIQAISKgUpSEFKJeCg5b0E0kWBTVcD9ySTsL0Jn9IBAAAA+K2UUrBlW/Rr5ZDoIeeuoFkxJD9ss03aIXXQqB9SttoG7ZA6qNcOKdttiwcJh9RB+iFl4SshkRBuLR72+9cvH0SOKI2HRo7x/Fi1/uoCAAAAwLsD8ki99IlO2dQAAAAASUVORK5CYII="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAVUlEQVR42u3WMQrAIAxAUW/g/SdvGmvpoOBeSHgPsjj5QTANAACARCJilIhYM0tEvJM+Ik3Id9E957kQIb+F3OdCPC0hPkQriqWx9hp/x/QGAABQyAPLB22VGrpLDgAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAA/0lEQVR42u2U0QmEMBAF7cASLMESUoIlpARLSCkpwRJSgiWkhOvAXD4WsgRkyaG5DbyB+Yvg8KITAAAAAAAYk+u61mwk15EjPtlEfihmqIiZR1Qx80ghjgdUuiHXGHSVsoag0x6x8DUoyjD5KovmEJ9NTDMRPIT0mtdIUkjlonuNohO+Ha99DTmkuGgKCTcvebAzx82ZoCWC3/3aIMWSRucaxcjORSFY4xpFdjYJGp1rFGcyCYZ/RVh6AUnfcNZ2zih3/mGj1jVCdiNDwyrq1rA/xMdeEXvDVdnYc1vDc3uPkDObXrlaxbNHSOohQhr/WOeLEWfWTgAAAAAAADzNF9sHJ7PJ57MlAAAAAElFTkSuQmCC"/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACBklEQVR42u3Zv0sCYRzH8USTzOsHHEWGkC1HgaDgkktGDjUYtDQ01RDSljQ1BLU02+rk1NTm2NLq4Nx/0L/h9fnCd3j4cnZe1/U8xiO8h3uurufF0/3COd/3/0UWYiEWYiEWYiGJQ+J8xuPxKhXjEMZANinjIZhkGuVRNioE4wVURo4JkHm0xKWmhRAc1bh1EyCUw5BcBIjHiApKa4CErko6DEJwuRo6IRKzyJD8FJAyI3Zp2zRImiBcRhlfo5RtlxCcE3CcDNpGrhYIT2IhAJKilO0VRmzJ32fAMTpBTS0QMfGwlcuKMRftE0DJ0wCJdcOsCkBdXP3Mh9CEFUBTPS9mDZJBG6io4aqVzMdCokCw9H3kT6j/C/9iDdSeUMNC7DkyyxAs/Rk6Qss8FPWRZgdVtUH4DjxEn1zxh+/zj1wHlf4MQhNGrwqA6sY40U8JonRJwEQh+AO3AvCG6gHv4U7IY4krxkroWoAOkoQMGfCBrgIm+YBGqPENpIJ66CJg3x66Y0gnSUidAEEnNr9jjLiWMn5DiWP0OC/oAsCgkq43xBdGDMQr7YASP/vEkHvdl1+JOCcEV5sC4hGEOzTlPuKgd0b0xD4JkRcOgnRRTjdErkYhAsQVq6IdUuPJtmk7BCL3t/h88cx91pKQkI/pkDx6pmYTIjEoxiHsN1YWYiEWYiEWknhflZ5IErA5nr8AAAAASUVORK5CYII="/></elements></component><component name="dock"><settings><setting name="fontcolor" value="0xffffff"/></settings><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlOZpuml+rYAAAASSURBVBhXY2AYJuA/GBwY6jQAyDyoK8QcL4QAAAAASUVORK5CYII="/></elements></component><component name="playlist"><settings><setting name="backgroundcolor" value="0xe8e8e8"/></settings><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUaN7t2MENwCAMBEEe9N8wSKYC/D8YV7CyJoRkVtVImxkZPQInMxoP0XiIxkM0HsGbjjSNBx544IEHHnjggUe/6UQeey0PIh7XTftGxKPj4eXCtLsHHh+ZxkO0Iw8PR55Ni8ZD9Hu/EAoP0dc5RRg9qeRjVF8AAAAASUVORK5CYII="/><element name="sliderCapTop" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAHCAYAAADnCQYGAAAAFUlEQVQokWP8//8/A7UB46ihI9hQAKt6FPPXhVGHAAAAAElFTkSuQmCC"/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAYAAABiS3YzAAAAKElEQVQ4y2P4//8/Az68bNmy/+iYkB6GUUNHDR01dNTQUUNHDaXcUABUDOKhcxnsSwAAAABJRU5ErkJggg=="/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAYAAABiS3YzAAAAJUlEQVQ4T2P4//8/Ay4MBP9xYbz6Rg0dNXTU0FFDRw0dNZRyQwHH4NBa7GJsXAAAAABJRU5ErkJggg=="/><element name="sliderCapBottom" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAHCAYAAADnCQYGAAAAFUlEQVQokWP8//8/A7UB46ihI9hQAKt6FPPXhVGHAAAAAElFTkSuQmCC"/></elements></component></components></skin>';this.xml=null;if(window.DOMParser){parser=new DOMParser();this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(a){a.player=function(b){var f,g,e,c=this;function d(){f={id:"player",video:new a.video(document.createElement("video")),settings:b,volume:0,state:jwplayer.events.state.IDLE,mute:false};jwplayer.utils.extend(f,new jwplayer.events.eventdispatcher());f.video.addGlobalListener(function(h){switch(h.type){case jwplayer.events.JWPLAYER_MEDIA_MUTE:if(f.mute==h.mute){return}f.mute=h.mute;break;case jwplayer.events.JWPLAYER_MEDIA_VOLUME:if(f.volume==h.volume){return}f.volume=h.volume;break;case jwplayer.events.JWPLAYER_PLAYER_STATE:if(f.state==h.newstate){return}f.state=h.newstate}f.sendEvent(h.type,h)});c.id=f.id;c.settings=f.settings;g={};e=new a.controller(f,g);c.addEventListener=e.addEventListener;c.removeEventListener=e.removeEventListener;g.container=document.getElementById(c.id),g.controlbar=new a.controlbar(c,f.settings);jwplayer.utils.appendStylesheet("#"+c.id+" video",{width:"100%",height:"100%",background:"#000",opacity:0,"-webkit-transition":"opacity .15s ease"});g.container.appendChild(f.video.getTag());g.container.appendChild(g.controlbar.getDisplayElement());e.load()}this.jwPlay=function(){e.play()};this.jwPause=function(){e.pause()};this.jwStop=function(){e.stop()};this.jwSeek=function(h){e.seek(h)};this.jwSetVolume=function(h){e.volume(h)};this.jwSetMute=function(h){e.mute(h)};this.jwLoad=function(h){e.load(h)};this.jwPlaylistNext=function(){e.next()};this.jwPlaylistPrev=function(){e.prev()};this.jwPlaylistItem=function(h){e.item(h)};this.jwFullscreen=function(h){e.fullscreen(h)};this.jwGetState=function(){return f.state};this.jwGetVolume=function(){return f.volume};this.jwGetMute=function(){return f.mute};this.jwGetFullscreen=function(){return false};d()}})(jwplayer.html5);(function(a){a.html5.skin=function(){var b={};var c=false;this.load=function(d,e){new a.html5.skinloader(d,function(f){c=true;b=f;e()},function(){new a.html5.skinloader("",function(f){c=true;b=f;e()})})};this.getSkinElement=function(d,e){if(c){try{return b[d].elements[e]}catch(f){a.utils.log("No such skin component / element: ",[d,e])}}return null};this.getComponentSettings=function(d){if(c&&b&&b[d]){return b[d].settings}return null};this.getComponentLayout=function(d){if(c){var e=b[d].layout;if(e&&(e.left||e.right||e.center)){return b[d].layout}}return null}}})(jwplayer);(function(a){a.html5.skinloader=function(f,o,j){var n={};var c=o;var k=j;var e=true;var i;var m=f;var r=false;function l(){if(typeof m!="string"||m===""){d(a.html5.defaultskin().xml)}else{a.utils.ajax(a.utils.getAbsolutePath(m),function(s){try{if(a.utils.exists(s.responseXML)){d(s.responseXML);return}}catch(t){h()}d(a.html5.defaultskin().xml)},function(s){d(a.html5.defaultskin().xml)})}}function d(x){var D=x.getElementsByTagName("component");if(D.length===0){return}for(var G=0;G<D.length;G++){var B=D[G].getAttribute("name");var A={settings:{},elements:{},layout:{}};n[B]=A;var F=D[G].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var E=0;E<F.length;E++){b(F[E],B)}var y=D[G].getElementsByTagName("settings")[0];if(y&&y.childNodes.length>0){var J=y.getElementsByTagName("setting");for(var O=0;O<J.length;O++){var P=J[O].getAttribute("name");var H=J[O].getAttribute("value");var w=/color$/.test(P)?"color":null;n[B].settings[P]=a.utils.typechecker(H,w)}}var K=D[G].getElementsByTagName("layout")[0];if(K&&K.childNodes.length>0){var L=K.getElementsByTagName("group");for(var v=0;v<L.length;v++){var z=L[v];n[B].layout[z.getAttribute("position")]={elements:[]};for(var N=0;N<z.attributes.length;N++){var C=z.attributes[N];n[B].layout[z.getAttribute("position")][C.name]=C.value}var M=z.getElementsByTagName("*");for(var u=0;u<M.length;u++){var s=M[u];n[B].layout[z.getAttribute("position")].elements.push({type:s.tagName});for(var t=0;t<s.attributes.length;t++){var I=s.attributes[t];n[B].layout[z.getAttribute("position")].elements[u][I.name]=I.value}if(!a.utils.exists(n[B].layout[z.getAttribute("position")].elements[u].name)){n[B].layout[z.getAttribute("position")].elements[u].name=s.tagName}}}}e=false;q()}}function q(){clearInterval(i);if(!r){i=setInterval(function(){p()},100)}}function b(x,w){var v=new Image();var s=x.getAttribute("name");var u=x.getAttribute("src");var z;if(u.indexOf("data:image/png;base64,")===0){z=u}else{var t=a.utils.getAbsolutePath(m);var y=t.substr(0,t.lastIndexOf("/"));z=[y,w,u].join("/")}n[w].elements[s]={height:0,width:0,src:"",ready:false,image:v};v.onload=function(A){g(v,s,w)};v.onerror=function(A){r=true;q();k()};v.src=z}function h(){for(var t in n){var v=n[t];for(var s in v.elements){var w=v.elements[s];var u=w.image;u.onload=null;u.onerror=null;delete w.image;delete v.elements[s]}delete n[t]}}function p(){for(var s in n){if(s!="properties"){for(var t in n[s].elements){if(!n[s].elements[t].ready){return}}}}if(e===false){clearInterval(i);c(n)}}function g(s,u,t){if(n[t]&&n[t].elements[u]){n[t].elements[u].height=s.height;n[t].elements[u].width=s.width;n[t].elements[u].src=s.src;n[t].elements[u].ready=true;q()}else{a.utils.log("Loaded an image for a missing element: "+t+"."+u)}}l()}})(jwplayer);(function(a){var b=jwplayer.utils;a.video=function(w){var q={abort:n,canplay:B,canplaythrough:n,durationchange:d,emptied:n,ended:n,error:t,loadeddata:n,loadedmetadata:n,loadstart:n,pause:i,play:i,playing:n,progress:n,ratechange:n,readystatechange:n,seeked:n,seeking:n,stalled:n,suspend:n,timeupdate:g,volumechange:y,waiting:n},m,r,p,z=jwplayer.events.state.IDLE,l=0,h=-1,s=-1,j=new jwplayer.events.eventdispatcher();b.extend(this,j);function o(D){m=D;C()}function C(){for(var D in q){m.addEventListener(D,q[D],false)}}function v(D,E){j.sendEvent(D,E)}function n(D){}function d(D){_duration=m.duration;g()}function g(D){if(z==jwplayer.events.state.PLAYING){v(jwplayer.events.JWPLAYER_MEDIA_TIME,{position:m.currentTime,duration:_duration});if(m.currentTime>=_duration){x()}}}function B(D){r=true;n(D);if(p>0){u(p)}}function i(D){if(m.paused){A(jwplayer.events.state.PAUSED)}else{A(jwplayer.events.state.PLAYING)}}function t(D){console.log("Error: %o",m.error);n(D)}this.load=function(D){r=false;p=0;_duration=0;m.src=D;m.load();h=setInterval(e,100)};var k=this.stop=function(){m.removeAttribute("src");m.load();m.style.opacity=0;clearInterval(h);A(jwplayer.events.state.IDLE)};this.play=function(){m.style.opacity=1;m.play()};this.pause=function(){m.pause()};var u=this.seek=function(D){if(r){p=0;m.currentTime=D}else{p=D}};var f=this.volume=function(D){if(m.muted){m.muted=false}m.volume=D/100};function y(D){v(jwplayer.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(m.volume*100)});v(jwplayer.events.JWPLAYER_MEDIA_MUTE,{mute:m.muted})}this.mute=function(D){if(!b.exists(D)){D=!m.mute}if(D){l=m.volume*100;f(0);m.muted=true}else{f(l)}};function A(D){if(D==jwplayer.events.state.PAUSED&&z==jwplayer.events.state.IDLE){return}if(z!=D){var E=z;z=D;v(jwplayer.events.JWPLAYER_PLAYER_STATE,{oldstate:E,newstate:D})}}function e(){var D=c();if(D!=s){s=D;v(jwplayer.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(s*100)})}if(D>=1){clearInterval(h)}}function c(){if(m.buffered.length==0||m.duration==0){return 0}else{return m.buffered.end(m.buffered.length-1)/m.duration}}function x(){k();v(jwplayer.events.JWPLAYER_MEDIA_COMPLETE)}this.getTag=function(){return w};o(w)}})(jwplayer.html5);(function(a){a.utils={}})(jwplayer.html5);(function(a){a.animations=function(d,j,t,e,b,q){var p,o,l,r,h,k,i,g;var s,w,f,w,c;function m(){k=q?q:a.animations.easing.quint.easeOut;p=d;o=j;if(p.id&&!a.animations.active[p.id]){a.animations.active[p.id]={}}if(isNaN(t)){if(t.indexOf("%")>0){i="%"}else{if(t.indexOf("px")){i="px"}}l=parseFloat(t.replace(i,""));r=parseFloat(e.replace(i,""))}else{i="";l=parseFloat(t);r=parseFloat(e)}h=parseFloat(b);this.id=Math.random()}this.start=function(){if(p.id){if(a.animations.active[p.id][o]&&a.animations.active[p.id][o]!=g){a.animations.active[p.id][o].stop();newFrom=parseFloat(p.style[o].toString().replace(i,""));w=h*(l/newFrom)}a.animations.active[p.id][o]=g}if(c){clearInterval(c)}f=(new Date()).valueOf();n();c=setInterval(n,a.animations.INTERVAL_SPEED)};this.stop=function(){clearInterval(c);if(p.id){a.animations.active[p.id][o]=null}};function n(){w=(new Date()).valueOf();if(w-f>=h){u();return}value=k((w-f),0,1,h);v(value)}function u(){v(1);g.stop()}function v(x){var y=(l+(r-l)*x);p.style[o]=y+i}g=this;m()};a.animations.INTERVAL_SPEED=10;a.animations.easing={};a.animations.easing.quint={easeIn:function(f,e,h,g){return h*(f/=g)*f*f*f*f+e},easeOut:function(f,e,h,g){return h*((f=f/g-1)*f*f*f*f+1)+e},easeInOut:function(f,e,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+e}return h/2*((f-=2)*f*f*f*f+2)+e}};a.animations.easing.linear={easeIn:function(f,e,h,g){return h*f/g+e},easeOut:function(f,e,h,g){return h*f/g+e},easeInOut:function(f,e,h,g){return h*f/g+e}};a.animations.active={};a.animations.fadeIn=function(b,d,e){var c=new a.animations(b,"opacity",0,1,d,e);c.start()};a.animations.fadeOut=function(b,d,e){var c=new a.animations(b,"opacity",1,0,d,e);c.start()};a.animations.transform=function(c,h,f,i,g,b,e){var j=new a.animations(c,"left",h,i,b,e);var d=new a.animations(c,"top",f,g,b,e);j.start();d.start()}})(jwplayer.html5.utils)};1 if(typeof jwplayer=="undefined"){jwplayer=function(a){if(jwplayer.api){return jwplayer.api.selectPlayer(a)}};var $jw=jwplayer;jwplayer.version="6.0";jwplayer.vid=document.createElement("video");jwplayer.audio=document.createElement("audio");jwplayer.source=document.createElement("source");(function(c){var b=c.utils=function(){};b.exists=function(h){switch(typeof(h)){case"string":return(h.length>0);break;case"object":return(h!==null);case"undefined":return false}return true};var e;var d={};b.css=function(h,k){if(b.exists(h)){for(var i in k){try{if(typeof k[i]==="undefined"){continue}else{if(typeof k[i]=="number"&&!(i=="zIndex"||i=="opacity")){if(isNaN(k[i])){continue}if(i.match(/color/i)){k[i]="#"+b.strings.pad(k[i].toString(16),6)}else{k[i]=Math.ceil(k[i])+"px"}}}if(k[i]){h.style[i]=k[i]}}catch(j){}}}};b.appendStylesheet=function(h,j){if(!e){e=document.createElement("style");e.type="text/css";document.getElementsByTagName("head")[0].appendChild(e)}if(!d[h]){d[h]={}}for(var i in j){var k=g(i,j[i]);if(b.exists(d[h][i])&&!b.exists(k)){delete d[h][i]}else{d[h][i]=k}}f()};function g(h,i){if(typeof i==="undefined"){return undefined}if(typeof i=="number"){if(isNaN(i)){return undefined}switch(h){case"z-index":case"opacity":return i;break;default:if(h.match(/color/i)){return"#"+b.strings.pad(i.toString(16),6)}else{return Math.ceil(i)+"px"}break}}else{return i}}function f(){if(e){var h="";for(var k in d){var j=d[k];h+=k+"{\n";for(var i in j){h+=" "+i+": "+j[i]+";\n"}h+="}\n"}e.innerHTML=h}}b.clearCss=function(h){for(var i in d){if(i.indexOf(h)>=0){delete d[i]}}f()};b.getAbsolutePath=function(o,n){if(!b.exists(n)){n=document.location.href}if(!b.exists(o)){return undefined}if(a(o)){return o}var p=n.substring(0,n.indexOf("://")+3);var m=n.substring(p.length,n.indexOf("/",p.length+1));var j;if(o.indexOf("/")===0){j=o.split("/")}else{var k=n.split("?")[0];k=k.substring(p.length+m.length+1,k.lastIndexOf("/"));j=k.split("/").concat(o.split("/"))}var h=[];for(var l=0;l<j.length;l++){if(!j[l]||!b.exists(j[l])||j[l]=="."){continue}else{if(j[l]==".."){h.pop()}else{h.push(j[l])}}}return p+m+"/"+h.join("/")};function a(i){if(!b.exists(i)){return}var j=i.indexOf("://");var h=i.indexOf("?");return(j>0&&(h<0||(h>j)))}b.extend=function(){var h=b.extend["arguments"];if(h.length>1){for(var k=1;k<h.length;k++){for(var j in h[k]){h[0][j]=h[k][j]}}return h[0]}return null};b.parseDimension=function(h){if(typeof h=="string"){if(h===""){return 0}else{if(h.lastIndexOf("%")>-1){return h}else{return parseInt(h.replace("px",""),10)}}}return h};b.timeFormat=function(h){if(h>0){str=Math.floor(h/60)<10?"0"+Math.floor(h/60)+":":Math.floor(h/60)+":";str+=Math.floor(h%60)<10?"0"+Math.floor(h%60):Math.floor(h%60);return str}else{return"00:00"}};c.utils.log=function(i,h){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(h){console.log(i,h)}else{console.log(i)}}};c.utils.getBoundingClientRect=function(h){if(typeof h.getBoundingClientRect=="function"){return h.getBoundingClientRect()}else{return{left:h.offsetLeft+document.body.scrollLeft,top:h.offsetTop+document.body.scrollTop,width:h.offsetWidth,height:h.offsetHeight}}}})(jwplayer);(function(a){a.ajax=function(f,e,b){var d;if(window.XMLHttpRequest){d=new XMLHttpRequest()}else{d=new ActiveXObject("Microsoft.XMLHTTP")}d.onreadystatechange=function(){if(d.readyState===4){if(d.status===200){if(e){if(!jwplayer.utils.exists(d.responseXML)){try{if(window.DOMParser){var g=(new DOMParser()).parseFromString(d.responseText,"text/xml");if(g){d=jwplayer.utils.extend({},d,{responseXML:g})}}else{g=new ActiveXObject("Microsoft.XMLDOM");g.async="false";g.loadXML(d.responseText);d=jwplayer.utils.extend({},d,{responseXML:g})}}catch(h){if(b){b(f)}}}e(d)}}else{if(b){b(f)}}}};try{d.open("GET",f,true);d.send(null)}catch(c){if(b){b(f)}}return d}})(jwplayer.utils);(function(a){jwplayer.utils.strings=function(){};jwplayer.utils.strings.trim=function(b){return b.replace(/^\s*/,"").replace(/\s*$/,"")};jwplayer.utils.strings.pad=function(c,d,b){if(!b){b="0"}while(c.length<d){c=b+c}return c};jwplayer.utils.strings.serialize=function(b){if(b==null){return null}else{if(b=="true"){return true}else{if(b=="false"){return false}else{if(isNaN(Number(b))||b.length>5||b.length==0){return b}else{return Number(b)}}}}};jwplayer.utils.strings.seconds=function(d){d=d.replace(",",".");var b=d.split(":");var c=0;if(d.substr(-1)=="s"){c=Number(d.substr(0,d.length-1))}else{if(d.substr(-1)=="m"){c=Number(d.substr(0,d.length-1))*60}else{if(d.substr(-1)=="h"){c=Number(d.substr(0,d.length-1))*3600}else{if(b.length>1){c=Number(b[b.length-1]);c+=Number(b[b.length-2])*60;if(b.length==3){c+=Number(b[b.length-3])*3600}}else{c=Number(d)}}}}return c};jwplayer.utils.strings.xmlAttribute=function(b,c){for(var d=0;d<b.attributes.length;d++){if(b.attributes[d].name&&b.attributes[d].name.toLowerCase()==c.toLowerCase()){return b.attributes[d].value.toString()}}return""};jwplayer.utils.strings.jsonToString=function(f){var h=h||{};if(h&&h.stringify){return h.stringify(f)}var c=typeof(f);if(c!="object"||f===null){if(c=="string"){f='"'+f.replace(/"/g,'\\"')+'"'}else{return String(f)}}else{var g=[],b=(f&&f.constructor==Array);for(var d in f){var e=f[d];switch(typeof(e)){case"string":e='"'+e.replace(/"/g,'\\"')+'"';break;case"object":if(jwplayer.utils.exists(e)){e=jwplayer.utils.strings.jsonToString(e)}break}if(b){if(typeof(e)!="function"){g.push(String(e))}}else{if(typeof(e)!="function"){g.push('"'+d+'":'+String(e))}}}if(b){return"["+String(g)+"]"}else{return"{"+String(g)+"}"}}}})(jwplayer.utils);(function(b){var d=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);jwplayer.utils.typechecker=function(g,f){f=!jwplayer.utils.exists(f)?c(g):f;return e(g,f)};function c(f){var g=["true","false","t","f"];if(g.toString().indexOf(f.toLowerCase().replace(" ",""))>=0){return"boolean"}else{if(d.test(f)){return"color"}else{if(!isNaN(parseInt(f,10))&&parseInt(f,10).toString().length==f.length){return"integer"}else{if(!isNaN(parseFloat(f))&&parseFloat(f).toString().length==f.length){return"float"}}}}return"string"}function e(g,f){if(!jwplayer.utils.exists(f)){return g}switch(f){case"color":if(g.length>0){return a(g)}return null;case"integer":return parseInt(g,10);case"float":return parseFloat(g);case"boolean":if(g.toLowerCase()=="true"){return true}else{if(g=="1"){return true}}return false}return g}function a(f){switch(f.toLowerCase()){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:f=f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(f.length==3){f=f.charAt(0)+f.charAt(0)+f.charAt(1)+f.charAt(1)+f.charAt(2)+f.charAt(2)}return parseInt(f,16)}return parseInt("000000",16)}})(jwplayer.utils);(function(a){a.events={COMPLETE:"COMPLETE",ERROR:"ERROR",API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_MEDIA_BEFOREPLAY:"jwplayerMediaBeforePlay",JWPLAYER_MEDIA_BEFORECOMPLETE:"jwplayerMediaBeforeComplete",JWPLAYER_COMPONENT_SHOW:"jwplayerComponentShow",JWPLAYER_COMPONENT_HIDE:"jwplayerComponentHide",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_SEEK:"jwplayerMediaSeek",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",state:{BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING",COMPLETED:"COMPLETED"},JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem",JWPLAYER_INSTREAM_CLICK:"jwplayerInstreamClicked",JWPLAYER_INSTREAM_DESTROYED:"jwplayerInstreamDestroyed"}})(jwplayer);(function(jwplayer){jwplayer.events.eventdispatcher=function(id,debug){var _id=id,_debug=debug,_listeners,_globallisteners;this.resetEventListeners=function(){_listeners={};_globallisteners=[]};this.resetEventListeners();this.addEventListener=function(type,listener,count){try{if(!jwplayer.utils.exists(_listeners[type])){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){if(!_listeners[type]){return}try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][listenerIndex].listener.toString()==listener.toString()){_listeners[type].splice(listenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){if(!listener){return}try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].listener.toString()==listener.toString()){_globallisteners.splice(globalListenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(!jwplayer.utils.exists(data)){data={}}jwplayer.utils.extend(data,{id:_id,version:jwplayer.version,type:type});if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_listeners[type][listenerIndex].listener)}if(_listeners[type][listenerIndex]){if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}}var globalListenerIndex;for(globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_globallisteners[globalListenerIndex].listener)}if(_globallisteners[globalListenerIndex]){if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}}})(jwplayer);(function(a){a.html5={}})(jwplayer);(function(h){var i=jwplayer.utils,g=i.appendStylesheet,b="button",m="text",d="divider",n="slider",e="relative",f="absolute",a="none",l="block",p="inline",k="inline-block",c="left",r="right",j="100%",o="width .25s linear 0s, left .25s linear 0s, opacity .25s ease 0s";CB_CLASS=".jwcontrolbar";h.controlbar=function(y,aj){var w,M,x={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:"OVER",idlehide:false,hideplaylistcontrols:false,forcenextprev:false,layout:{left:{position:"left",elements:[{name:"play",type:b},{name:"divider",type:d},{name:"prev",type:b},{name:"divider",type:d},{name:"next",type:b},{name:"divider",type:d},{name:"elapsed",type:m}]},center:{position:"center",elements:[{name:"time",type:n}]},right:{position:"right",elements:[{name:"duration",type:m},{name:"blank",type:b},{name:"divider",type:d},{name:"mute",type:b},{name:"volume",type:n},{name:"divider",type:d},{name:"fullscreen",type:b}]}}},L,ar,ad,ap,ag,aA,F,Q={play:"pause",mute:"unmute",fullscreen:"normalscreen"},aq={play:false,mute:false,fullscreen:false},v={play:V,mute:G,fullscreen:S,next:u,prev:Y},z={time:P,volume:av};function au(){ad={};w=y;aj=i.extend({},aj);ag=w.id+"_controlbar";aA=0;ap=H();ap.id=ag;ap.className="jwcontrolbar";window.addEventListener("mousemove",az,false);window.addEventListener("mouseup",az,false);M=w.skin;L=i.extend({},x,M.controlbar.settings,w.settings.controlbar);ar=(M.controlbar.layout.left||M.controlbar.layout.right||M.controlbar.layout.center)?M.controlbar.layout:x.layout;O();al();s()}function s(){w.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME,aB);w.jwAddEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE,B);w.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE,aw);w.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME,A);w.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER,D)}function aB(aC){aA=aC.duration;if(ad.elapsed){ad.elapsed.innerHTML=i.timeFormat(aC.position)}if(ad.duration){ad.duration.innerHTML=i.timeFormat(aC.duration)}if(aC.duration>0){ao(aC.position/aC.duration)}else{ao(0)}}function B(aC){switch(aC.newstate){case jwplayer.events.state.PLAYING:case jwplayer.events.state.BUFFERING:if(ad.timeSliderThumb){ad.timeSliderThumb.style.opacity=1}if(ad.timeRail){ad.timeRail.className="jwrail jwsmooth"}K("play",true);break;case jwplayer.events.state.PAUSED:if(!aa){K("play",false)}break;case jwplayer.events.state.IDLE:case jwplayer.events.state.COMPLETED:K("play",false);if(ad.timeSliderThumb){ad.timeSliderThumb.style.opacity=0}at(0);aB({position:0,duration:0});if(ad.timeRail){ad.timeRail.className="jwrail"}break}}function aw(aC){K("mute",aC.mute);t(aC.mute?0:F)}function A(aC){F=aC.volume/100;t(F)}function D(aC){at(aC.bufferPercent/100)}function O(){i.clearCss("#"+ag);g("#"+ag,{height:U("background").height,bottom:L.position=="OVER"?L.margin:0,left:L.position=="OVER"?L.margin:0,right:L.position=="OVER"?L.margin:0});g(ak(".jwtext"),{font:L.fontsize+"px/"+U("background").height+"px "+L.font,color:L.fontcolor,"font-weight":L.fontweight,"font-style":L.fontstyle,"text-align":"center",padding:"0 5px"})}function ak(aC){return"#"+ag+" "+aC}function H(){return document.createElement("span")}function al(){var aE=ae("capLeft");var aD=ae("capRight");var aC=ae("background",{position:f,left:U("capLeft").width,right:U("capRight").width,"background-repeat":"repeat-x"},true);ap.style.opacity=0;if(aC){ap.appendChild(aC)}if(aE){ap.appendChild(aE)}am();if(aD){ap.appendChild(aD)}setTimeout(function(){Z();h.utils.animations.fadeIn(ap,250)},1000)}function I(aC){switch(aC.type){case d:return X(aC);break;case m:return af(aC.name);break;case b:if(aC.name!="blank"){return W(aC.name)}break;case n:return J(aC.name);break}}function ae(aE,aH,aD,aJ){var aG=H();aG.className="jw"+aE;var aC=aJ?" left center":" center";var aF=U(aE);aG.innerHTML=" ";if(!aF||aF.src==""){return}var aI;if(aD){aI={background:"url('"+aF.src+"') repeat-x "+aC}}else{aI={background:"url('"+aF.src+"') no-repeat"+aC,width:aF.width}}g(ak(".jw"+aE),i.extend(aI,aH));ad[aE]=aG;return aG}function W(aE){if(!U(aE+"Button").src){return null}var aF=document.createElement("button");aF.className="jw"+aE;aF.addEventListener("click",ab(aE),false);var aG=U(aE+"Button");var aD=U(aE+"ButtonOver");aF.innerHTML=" ";N(ak(".jw"+aE),aG,aD);var aC=Q[aE];if(aC){N(ak(".jw"+aE+".jwtoggle"),U(aC+"Button"),U(aC+"ButtonOver"))}ad[aE]=aF;return aF}function N(aC,aD,aE){if(!aD.src){return}g(aC,{width:aD.width,background:"url("+aD.src+") center no-repeat"});if(aE.src){g(aC+":hover",{background:"url("+aE.src+") center no-repeat"})}}function ab(aC){return function(){if(v[aC]){v[aC]()}}}function V(){if(aq.play){w.jwPause()}else{w.jwPlay()}}function G(){w.jwSetMute();aw({mute:aq.mute})}function av(aC){if(aC<0.1){aC=0}if(aC>0.9){aC=1}w.jwSetVolume(aC*100);t(aC)}function P(aC){if(!aa){w.jwPlay()}w.jwSeek(aC*aA)}function S(){K("fullscreen")}function u(){w.jwPlaylistNext()}function Y(){w.jwPlaylistNext()}function K(aC,aD){if(!i.exists(aD)){aD=!aq[aC]}if(ad[aC]){ad[aC].className="jw"+aC+(aD?" jwtoggle":"")}aq[aC]=aD}function E(aC){return ag+"_"+aC}function af(aC,aG){var aE=H();aE.id=E(aC);aE.className="jwtext jw"+aC;var aD={};var aF=U(aC+"Background");if(aF.src){aD.background="url("+aF.src+") no-repeat center";aD["background-size"]="100% "+U("background").height+"px"}g(ak(".jw"+aC),aD);aE.innerHTML="00:00";ad[aC]=aE;return aE}function X(aD){if(aD.width){var aC=H();aC.className="jwblankDivider";g(aC,{width:parseInt(aD.width)});return aC}else{if(aD.element){return ae(aD.element)}else{return ae(aD.name)}}}function J(aC){var aF=H();aF.className="jwslider jw"+aC;var aE=ae(aC+"SliderCapLeft");var aD=ae(aC+"SliderCapRight");if(aD){aD.className+=" jwcapRight"}var aG=ah(aC);if(aE){aF.appendChild(aE)}aF.appendChild(aG);if(aE){aF.appendChild(aD)}g(ak(".jw"+aC+" .jwrail"),{left:U(aC+"SliderCapLeft").width,right:U(aC+"SliderCapRight").width,});ad[aC]=aF;if(aC=="time"){ay(aF);ao(0);at(0)}else{if(aC=="volume"){an(aF)}}return aF}function ah(aE){var aH=H();aH.className="jwrail jwsmooth";var aC=["Rail","Buffer","Progress"];for(var aG=0;aG<aC.length;aG++){var aF=ae(aE+"Slider"+aC[aG],null,true,(aE=="volume"));if(aF){aF.className+=" jwstretch";aH.appendChild(aF)}}var aD=ae(aE+"SliderThumb");if(aD){aD.className+=" jwthumb";aD.style.opacity=0;aH.appendChild(aD)}aH.addEventListener("mousedown",C(aE),false);ad[aE+"Rail"]=aH;return aH}var aa;function C(aC){return(function(aD){if(aD.button!=0){return}ad[aC+"Rail"].className="jwrail";if(aC=="time"){if(w.jwGetState()!=jwplayer.events.state.IDLE){w.jwPause();aa=aC}}else{aa=aC}})}var ai=0;function az(aC){if(!aa||aC.button!=0){return}var aG=ad[aa].getElementsByClassName("jwrail")[0],aH=i.getBoundingClientRect(aG),aF=(aC.clientX-aH.left)/aH.width;if(aC.type=="mouseup"){var aD=aa;ad[aD+"Rail"].className="jwrail jwsmooth";aa=null;z[aD](aF)}else{if(aa=="time"){ao(aF)}else{t(aF)}var aE=(new Date()).getTime();if(aE-ai>500){ai=aE;z[aa](aF)}}}function ay(aC){if(ad.timeSliderThumb){g(ak(".jwtimeSliderThumb"),{"margin-left":(U("timeSliderThumb").width/-2)})}at(0);ao(0)}function an(aE){var aD=U("volumeSliderCapLeft").width,aC=U("volumeSliderCapRight").width,aF=U("volumeSliderRail").width;g(ak(".jwvolume"),{width:(aD+aF+aC)})}var R={};function am(){ax("left");ax("center");ax("right");ap.appendChild(R.left);ap.appendChild(R.center);ap.appendChild(R.right);g(ak(".jwright"),{right:U("capRight").width})}function ax(aD){var aC=H();aC.className="jwgroup jw"+aD;R[aD]=aC;if(ar[aD]){T(ar[aD],R[aD])}}function T(aF,aC){if(aF&&aF.elements.length>0){for(var aE=0;aE<aF.elements.length;aE++){var aD=I(aF.elements[aE]);if(aD){aC.appendChild(aD)}}}}var Z=this.resize=function(aD,aC){g(ak(".jwgroup.jwcenter"),{left:Math.round(i.parseDimension(R.left.offsetWidth)+U("capLeft").width),right:Math.round(i.parseDimension(R.right.offsetWidth)+U("capRight").width)})};this.getDisplayElement=function(){return ap};var at=this.setBuffer=function(aC){aC=Math.min(Math.max(0,aC),1);ad.timeSliderBuffer.style.width=aC*i.getBoundingClientRect(ad.timeSliderRail).width+"px"};function ac(aE,aG,aH){if(!ad[aE]){return}aG=Math.min(Math.max(0,aG),1);var aD=ad[aE+"SliderProgress"];var aC=ad[aE+"SliderThumb"];var aF=aG*i.getBoundingClientRect(ad[aE+"SliderRail"]).width+"px";if(aD){aD.style.width=aF}if(aC){aC.style.left=aF}}function t(aC){ac("volume",aC,true)}function ao(aC){ac("time",aC)}function U(aC){if(M.controlbar.elements[aC]){return M.controlbar.elements[aC]}else{return{width:0,height:0,src:"",image:undefined,ready:false}}}au()};function q(){g(CB_CLASS,{position:f,overflow:"hidden"});g(CB_CLASS+" span",{height:j,"-webkit-user-select":a,"-webkit-user-drag":a,"user-select":a,"user-drag":a});g(CB_CLASS+" .jwgroup",{display:p});g(CB_CLASS+" span, "+CB_CLASS+" .jwgroup button,"+CB_CLASS+" .jwleft",{position:e,"float":c});g(CB_CLASS+" .jwright",{position:f});g(CB_CLASS+" .jwcenter",{position:f});g(CB_CLASS+" button",{display:k,height:j,border:a,cursor:"pointer","-webkit-transition":"background-image .25s","-moz-transition":"background-image .25s","-o-transition":"background-image .25s"});g(CB_CLASS+" .jwcapRight",{right:0,position:f});g(CB_CLASS+" .jwtime,"+CB_CLASS+" .jwgroup span.jwstretch",{position:f,height:j,width:j,left:0});g(CB_CLASS+" .jwrail,"+CB_CLASS+" .jwthumb",{position:f,height:j,cursor:"pointer"});g(CB_CLASS+" .jwtime .jwsmooth span",{"-webkit-transition":o,"-moz-transition":o,"-o-transition":o});g(CB_CLASS+" .jwdivider+.jwdivider",{display:a});g(CB_CLASS+" .jwtext",{padding:"0 5px","text-align":"center"})}q()})(jwplayer.html5);(function(a){var e=jwplayer,c=e.utils,d=e.events,b=d.state;a.controller=function(l){var m=l,j=l.getVideo(),h="console",f=new d.eventdispatcher(m.id,h);c.extend(this,f);function n(){m.addGlobalListener(k);m.addEventListener(d.JWPLAYER_MEDIA_BUFFER_FULL,i)}function k(o){f.sendEvent(o.type,o)}function i(o){j.play()}var g;this.load=function(o){if(j.getTag().canPlayType("video/mp4")){g="http://playertest.longtailvideo.com/bunny.mp4"}else{if(j.getTag().canPlayType("video/webm")){g="http://playertest.longtailvideo.com/bunny.webm"}else{g="http://playertest.longtailvideo.com/bunny.ogv"}}};this.play=function(){if(m.state==b.IDLE){j.load(g)}else{if(m.state==b.PAUSED){j.play()}}};this.stop=function(){j.stop()};this.pause=function(){if(m.state==b.PLAYING||m.state==b.BUFFERING){j.pause()}};this.seek=function(o){j.seek(o)};this.volume=function(o){j.volume(o)};this.mute=function(o){if(!c.exists(o)){o=!m.mute}j.mute(o)};this.prev=function(){};this.next=function(){};this.item=function(o){};this.fullscreen=function(o){};n()}})(jwplayer.html5);(function(a){a.html5.defaultskin=function(){this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.1"><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/><setting name="fontcolor" value="0x000000"/></settings><layout><group position="left"><button name="play"/><divider name="divider"/><button name="prev"/><divider name="divider"/><button name="next"/><divider name="divider"/><text name="elapsed"/></group><group position="center"><slider name="time"/></group><group position="right"><text name="duration"/><divider name="divider"/><button name="blank"/><divider name="divider"/><button name="mute"/><slider name="volume"/><divider name="divider"/><button name="fullscreen"/></group></layout><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUOI3t1LERACAMQlFgGvcfxNIhHMK4gsUvUviOmgtNsiAZkBSEKxKEnCYkkQrJn/YwbUNiSDDYRZaQRDaShv+oX9GBZEIuK+8hXVLs+/YAAAAASUVORK5CYII="/><element name="blankButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAYCAYAAAAyJzegAAAAFElEQVQYV2P8//8/AzpgHBUc7oIAGZdH0RjKN8EAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAQElEQVQIWz3LsRGAMADDQJ0XB5bMINABZ9GENGrszxhjT2WLSqxEJG2JQrTMdV2q5LpOAvyRaVmsi7WdeZ/7+AAaOTq7BVrfOQAAAABJRU5ErkJggg=="/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAQElEQVQIWz3LsRGAMADDQJ0XB5bMINABZ9GENGrszxhjT2WLSqxEJG2JQrTMdV2q5LpOAvyRaVmsi7WdeZ/7+AAaOTq7BVrfOQAAAABJRU5ErkJggg=="/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUCB0FwcENgEAAw7Aq+893g8APUILNOQcbFRktVGqUVFRkWNz3xTa2sUaLNUosKlRUvvf5AdbWOTtzmzyWAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAANUlEQVR42u2RsQkAAAjD/NTTPaW6dXLrINJA1kBpGPMAjDWmOgp1HFQXx+b1KOefO4oxY57R73YnVYCQUCQAAAAASUVORK5CYII="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAIUlEQVQ4jWNgGAWjYOiD/0gYG3/U0FFDB4Oho2AUDAYAAEwiL9HrpdMVAAAAAElFTkSuQmCC"/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAQklEQVQ4y2NgGAWjYOiD/1AMA/JAfB5NjCJD/YH4PRaLyDa0H4lNNUP/DxlD59PCUBCIp3ZEwYA+NZLUKBgFgwEAAN+HLX9sB8u8AAAAAElFTkSuQmCC"/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAQElEQVQ4y2NgGAWjYOiD/0B8Hojl0cT+U2ooCL8HYn9qGwrD/bQw9P+QMXQ+tSMqnpoRBUpS+tRMUqNgFAwGAADxZy1/mHvFnAAAAABJRU5ErkJggg=="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOElEQVRIDe3BwQkAIRADwAhhw/nU/kWwUK+KPITMABFh19Y+F0acY8CJvX9wYpXgRElwolSIiMf9ZWEDhtwurFsAAAAASUVORK5CYII="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAN0lEQVRIDe3BwQkAMQwDMBcc55mRe9zi7RR+FCwBEWG39vcfGHFm4MTuhhMlwYlVBSdKhYh43AW/LQMKm1spzwAAAABJRU5ErkJggg=="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAIElEQVRIiWNgGAWjYBTQBfynMR61YCRYMApGwSigMQAAiVWPcbq6UkIAAAAASUVORK5CYII="/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAYCAYAAAA/OUfnAAAAO0lEQVQYlWP4//8/Awwz0JgDBP/BeN6Cxf/hnI2btiI4u/fsQ3AOHjqK4Jw4eQbBOX/hEoKDYjSd/AMA4cS4mfLsorgAAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAJklEQVQ4y2NgGAUjDcwH4v/kaPxPikZkxcNVI9mBQ5XoGAWDFwAAsKAXKQQmfbUAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAMklEQVQ4y2NgGAWDHPyntub5xBr6Hwv/Pzk2/yfVG/8psRFE25Oq8T+tQnsIaB4FVAcAi2YVysVY52AAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAACmpqampqbBXAu8AAAAAnRSTlMAgJsrThgAAAArSURBVAhbY2AgErBAyA4I2QEhOyBkB4TsYOhAoaCCUCUwDTDtMMNgRuMHAFB5FoGH5T0UAAAAAElFTkSuQmCC"/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAAnRSTlMAgJsrThgAAAArSURBVAhbY2AgErBAyA4I2QEhOyBkB4TsYOhAoaCCUCUwDTDtMMNgRuMHAFB5FoGH5T0UAAAAAElFTkSuQmCC"/><element name="volumeSliderCapRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAYCAYAAAAyJzegAAAAFElEQVQYV2P8//8/AzpgHBUc7oIAGZdH0RjKN8EAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAQklEQVRIiWNgGAWjYMiD/0iYFDmSLbDHImdPLQtgBpEiR7Zl2NijAA5oEkT/0Whi5UiyAJ8BVMsHNMtoo2AUDAIAAGdcIN3IDNXoAAAAAElFTkSuQmCC"/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAP0lEQVRIx2NgGAWjYMiD/1RSQ5QB/wmIUWzJfzx8qhj+n4DYCAY0DyJ7PBbYU8sHMEvwiZFtODXUjIJRMJgBACpWIN2ZxdPTAAAAAElFTkSuQmCC"/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlOZpuml+rYAAAASSURBVBhXY2AYJuA/GBwY6jQAyDyoK8QcL4QAAAAASUVORK5CYII="/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiUlEQVR42u3XSw2AMBREURwgAQlIQAISKgUpSEFKJeCg5b0E0kWBTVcD9ySTsL0Jn9IBAAAA+K2UUrBlW/Rr5ZDoIeeuoFkxJD9ss03aIXXQqB9SttoG7ZA6qNcOKdttiwcJh9RB+iFl4SshkRBuLR72+9cvH0SOKI2HRo7x/Fi1/uoCAAAAwLsD8ki99IlO2dQAAAAASUVORK5CYII="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAVUlEQVR42u3WMQrAIAxAUW/g/SdvGmvpoOBeSHgPsjj5QTANAACARCJilIhYM0tEvJM+Ik3Id9E957kQIb+F3OdCPC0hPkQriqWx9hp/x/QGAABQyAPLB22VGrpLDgAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAA/0lEQVR42u2U0QmEMBAF7cASLMESUoIlpARLSCkpwRJSgiWkhOvAXD4WsgRkyaG5DbyB+Yvg8KITAAAAAAAYk+u61mwk15EjPtlEfihmqIiZR1Qx80ghjgdUuiHXGHSVsoag0x6x8DUoyjD5KovmEJ9NTDMRPIT0mtdIUkjlonuNohO+Ha99DTmkuGgKCTcvebAzx82ZoCWC3/3aIMWSRucaxcjORSFY4xpFdjYJGp1rFGcyCYZ/RVh6AUnfcNZ2zih3/mGj1jVCdiNDwyrq1rA/xMdeEXvDVdnYc1vDc3uPkDObXrlaxbNHSOohQhr/WOeLEWfWTgAAAAAAADzNF9sHJ7PJ57MlAAAAAElFTkSuQmCC"/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACBklEQVR42u3Zv0sCYRzH8USTzOsHHEWGkC1HgaDgkktGDjUYtDQ01RDSljQ1BLU02+rk1NTm2NLq4Nx/0L/h9fnCd3j4cnZe1/U8xiO8h3uurufF0/3COd/3/0UWYiEWYiEWYiGJQ+J8xuPxKhXjEMZANinjIZhkGuVRNioE4wVURo4JkHm0xKWmhRAc1bh1EyCUw5BcBIjHiApKa4CErko6DEJwuRo6IRKzyJD8FJAyI3Zp2zRImiBcRhlfo5RtlxCcE3CcDNpGrhYIT2IhAJKilO0VRmzJ32fAMTpBTS0QMfGwlcuKMRftE0DJ0wCJdcOsCkBdXP3Mh9CEFUBTPS9mDZJBG6io4aqVzMdCokCw9H3kT6j/C/9iDdSeUMNC7DkyyxAs/Rk6Qss8FPWRZgdVtUH4DjxEn1zxh+/zj1wHlf4MQhNGrwqA6sY40U8JonRJwEQh+AO3AvCG6gHv4U7IY4krxkroWoAOkoQMGfCBrgIm+YBGqPENpIJ66CJg3x66Y0gnSUidAEEnNr9jjLiWMn5DiWP0OC/oAsCgkq43xBdGDMQr7YASP/vEkHvdl1+JOCcEV5sC4hGEOzTlPuKgd0b0xD4JkRcOgnRRTjdErkYhAsQVq6IdUuPJtmk7BCL3t/h88cx91pKQkI/pkDx6pmYTIjEoxiHsN1YWYiEWYiEWknhflZ5IErA5nr8AAAAASUVORK5CYII="/></elements></component><component name="dock"><settings><setting name="fontcolor" value="0xffffff"/></settings><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlOZpuml+rYAAAASSURBVBhXY2AYJuA/GBwY6jQAyDyoK8QcL4QAAAAASUVORK5CYII="/></elements></component><component name="playlist"><settings><setting name="backgroundcolor" value="0xe8e8e8"/></settings><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUaN7t2MENwCAMBEEe9N8wSKYC/D8YV7CyJoRkVtVImxkZPQInMxoP0XiIxkM0HsGbjjSNBx544IEHHnjggUe/6UQeey0PIh7XTftGxKPj4eXCtLsHHh+ZxkO0Iw8PR55Ni8ZD9Hu/EAoP0dc5RRg9qeRjVF8AAAAASUVORK5CYII="/><element name="sliderCapTop" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAHCAYAAADnCQYGAAAAFUlEQVQokWP8//8/A7UB46ihI9hQAKt6FPPXhVGHAAAAAElFTkSuQmCC"/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAYAAABiS3YzAAAAKElEQVQ4y2P4//8/Az68bNmy/+iYkB6GUUNHDR01dNTQUUNHDaXcUABUDOKhcxnsSwAAAABJRU5ErkJggg=="/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAYAAABiS3YzAAAAJUlEQVQ4T2P4//8/Ay4MBP9xYbz6Rg0dNXTU0FFDRw0dNZRyQwHH4NBa7GJsXAAAAABJRU5ErkJggg=="/><element name="sliderCapBottom" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAHCAYAAADnCQYGAAAAFUlEQVQokWP8//8/A7UB46ihI9hQAKt6FPPXhVGHAAAAAElFTkSuQmCC"/></elements></component></components></skin>';this.xml=null;if(window.DOMParser){parser=new DOMParser();this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(a){var b=jwplayer.utils;a.model=function(d){var i=this,c,e;jwplayer.utils.extend(i,new jwplayer.events.eventdispatcher());function g(j){return j}function f(){b.extend(i,{id:d.id,settings:g(d),volume:0,state:jwplayer.events.state.IDLE,mute:false});e=document.createElement("video");c=new a.video(e);c.addGlobalListener(h)}function h(j){switch(j.type){case jwplayer.events.JWPLAYER_MEDIA_MUTE:if(i.mute==j.mute){return}i.mute=j.mute;break;case jwplayer.events.JWPLAYER_MEDIA_VOLUME:if(i.volume==j.volume){return}i.volume=j.volume;break;case jwplayer.events.JWPLAYER_PLAYER_STATE:if(i.state==j.newstate){return}i.state=j.newstate}i.sendEvent(j.type,j)}this.getVideo=function(){return c};f()}})(jwplayer.html5);(function(a){a.player=function(b){var f,g,e,c=this;function d(){f=new a.model(b);c.id=f.id;c.settings=f.settings;e=new a.controller(f);e.load();(new a.skinloader(b.skin,function(h){c.skin=h;g=new a.view(c,f)},function(h){_utils.log(h)}))}this.jwPlay=function(){e.play()};this.jwPause=function(){e.pause()};this.jwStop=function(){e.stop()};this.jwSeek=function(h){e.seek(h)};this.jwSetVolume=function(h){e.volume(h)};this.jwSetMute=function(h){e.mute(h)};this.jwLoad=function(h){e.load(h)};this.jwPlaylistNext=function(){e.next()};this.jwPlaylistPrev=function(){e.prev()};this.jwPlaylistItem=function(h){e.item(h)};this.jwFullscreen=function(h){e.fullscreen(h)};this.jwGetState=function(){return f.state};this.jwGetVolume=function(){return f.volume};this.jwGetMute=function(){return f.mute};this.jwGetFullscreen=function(){return false};this.jwAddEventListener=function(i,h){e.addEventListener(i,h)};this.jwRemoveEventListener=function(i,h){e.removeEventListener(i,h)};d()}})(jwplayer.html5);(function(a){a.html5.skin=function(){var b={};var c=false;this.load=function(d,e){new a.html5.skinloader(d,function(f){c=true;b=f;e()},function(){new a.html5.skinloader("",function(f){c=true;b=f;e()})})};this.getSkinElement=function(d,e){if(c){try{return b[d].elements[e]}catch(f){a.utils.log("No such skin component / element: ",[d,e])}}return null};this.getComponentSettings=function(d){if(c&&b&&b[d]){return b[d].settings}return null};this.getComponentLayout=function(d){if(c){var e=b[d].layout;if(e&&(e.left||e.right||e.center)){return b[d].layout}}return null}}})(jwplayer);(function(a){a.html5.skinloader=function(f,o,j){var n={};var c=o;var k=j;var e=true;var i;var m=f;var r=false;function l(){if(typeof m!="string"||m===""){d(a.html5.defaultskin().xml)}else{a.utils.ajax(a.utils.getAbsolutePath(m),function(s){try{if(a.utils.exists(s.responseXML)){d(s.responseXML);return}}catch(t){h()}d(a.html5.defaultskin().xml)},function(s){d(a.html5.defaultskin().xml)})}}function d(x){var D=x.getElementsByTagName("component");if(D.length===0){return}for(var G=0;G<D.length;G++){var B=D[G].getAttribute("name");var A={settings:{},elements:{},layout:{}};n[B]=A;var F=D[G].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var E=0;E<F.length;E++){b(F[E],B)}var y=D[G].getElementsByTagName("settings")[0];if(y&&y.childNodes.length>0){var J=y.getElementsByTagName("setting");for(var O=0;O<J.length;O++){var P=J[O].getAttribute("name");var H=J[O].getAttribute("value");var w=/color$/.test(P)?"color":null;n[B].settings[P]=a.utils.typechecker(H,w)}}var K=D[G].getElementsByTagName("layout")[0];if(K&&K.childNodes.length>0){var L=K.getElementsByTagName("group");for(var v=0;v<L.length;v++){var z=L[v];n[B].layout[z.getAttribute("position")]={elements:[]};for(var N=0;N<z.attributes.length;N++){var C=z.attributes[N];n[B].layout[z.getAttribute("position")][C.name]=C.value}var M=z.getElementsByTagName("*");for(var u=0;u<M.length;u++){var s=M[u];n[B].layout[z.getAttribute("position")].elements.push({type:s.tagName});for(var t=0;t<s.attributes.length;t++){var I=s.attributes[t];n[B].layout[z.getAttribute("position")].elements[u][I.name]=I.value}if(!a.utils.exists(n[B].layout[z.getAttribute("position")].elements[u].name)){n[B].layout[z.getAttribute("position")].elements[u].name=s.tagName}}}}e=false;q()}}function q(){clearInterval(i);if(!r){i=setInterval(function(){p()},100)}}function b(x,w){var v=new Image();var s=x.getAttribute("name");var u=x.getAttribute("src");var z;if(u.indexOf("data:image/png;base64,")===0){z=u}else{var t=a.utils.getAbsolutePath(m);var y=t.substr(0,t.lastIndexOf("/"));z=[y,w,u].join("/")}n[w].elements[s]={height:0,width:0,src:"",ready:false,image:v};v.onload=function(A){g(v,s,w)};v.onerror=function(A){r=true;q();k()};v.src=z}function h(){for(var t in n){var v=n[t];for(var s in v.elements){var w=v.elements[s];var u=w.image;u.onload=null;u.onerror=null;delete w.image;delete v.elements[s]}delete n[t]}}function p(){for(var s in n){if(s!="properties"){for(var t in n[s].elements){if(!n[s].elements[t].ready){return}}}}if(e===false){clearInterval(i);c(n)}}function g(s,u,t){if(n[t]&&n[t].elements[u]){n[t].elements[u].height=s.height;n[t].elements[u].width=s.width;n[t].elements[u].src=s.src;n[t].elements[u].ready=true;q()}else{a.utils.log("Loaded an image for a missing element: "+t+"."+u)}}l()}})(jwplayer);(function(a){var e=jwplayer,c=e.utils,d=e.events,b=d.state;a.video=function(z){var t={abort:q,canplay:E,canplaythrough:q,durationchange:g,emptied:q,ended:q,error:w,loadeddata:q,loadedmetadata:q,loadstart:q,pause:l,play:l,playing:q,progress:q,ratechange:q,readystatechange:q,seeked:q,seeking:q,stalled:q,suspend:q,timeupdate:j,volumechange:B,waiting:q},p,u,s,C=b.IDLE,o=0,k=-1,v=-1,m=new d.eventdispatcher();c.extend(this,m);function r(G){p=G;F()}function F(){for(var G in t){p.addEventListener(G,t[G],false)}}function y(G,H){m.sendEvent(G,H)}function q(G){}function g(G){_duration=p.duration;j()}function j(G){if(C==b.PLAYING){y(d.JWPLAYER_MEDIA_TIME,{position:p.currentTime,duration:_duration});if(p.currentTime>=_duration){A()}}}function E(G){u=true;y(d.JWPLAYER_MEDIA_BUFFER_FULL);if(s>0){x(s)}}function l(G){if(p.paused){D(b.PAUSED)}else{D(b.PLAYING)}}function w(G){console.log("Error: %o",p.error);q(G)}this.load=function(G){u=false;s=0;_duration=0;p.src=G;p.load();k=setInterval(h,100)};var n=this.stop=function(){p.removeAttribute("src");p.load();p.style.opacity=0;clearInterval(k);D(b.IDLE)};this.play=function(){p.style.opacity=1;p.play()};this.pause=function(){p.pause()};var x=this.seek=function(G){if(u){s=0;p.currentTime=G}else{s=G}};var i=this.volume=function(G){if(p.muted){p.muted=false}p.volume=G/100};function B(G){y(d.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(p.volume*100)});y(d.JWPLAYER_MEDIA_MUTE,{mute:p.muted})}this.mute=function(G){if(!c.exists(G)){G=!p.mute}if(G){o=p.volume*100;i(0);p.muted=true}else{i(o)}};function D(G){if(G==b.PAUSED&&C==b.IDLE){return}if(C!=G){var H=C;C=G;y(d.JWPLAYER_PLAYER_STATE,{oldstate:H,newstate:G})}}function h(){var G=f();if(G!=v){v=G;y(d.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(v*100)})}if(G>=1){clearInterval(k)}}function f(){if(p.buffered.length==0||p.duration==0){return 0}else{return p.buffered.end(p.buffered.length-1)/p.duration}}function A(){n();y(d.JWPLAYER_MEDIA_COMPLETE)}this.getTag=function(){return z};r(z)}})(jwplayer.html5);(function(a){var e=jwplayer,c=e.utils,b="jwvideocontainer",d="jwcontrolscontainer";a.view=function(j,h){var k=j,m=h,g={},f,i;function l(){f=document.getElementById(k.id);g.controlbar=new a.controlbar(k);i=document.createElement("span");i.className=b;_controlsLayer=document.createElement("span");_controlsLayer.className=d;i.appendChild(m.getVideo().getTag());_controlsLayer.appendChild(g.controlbar.getDisplayElement());f.appendChild(i);f.appendChild(_controlsLayer)}l()};c.appendStylesheet("."+b+" ,."+d,{width:"100%",height:"100%",display:"inline-block",position:"absolute"});c.appendStylesheet("."+b+" video",{width:"100%",height:"100%",background:"#000",opacity:0,"-webkit-transition":"opacity .15s ease"})})(jwplayer.html5);(function(a){a.utils={}})(jwplayer.html5);(function(a){a.animations=function(d,j,t,e,b,q){var p,o,l,r,h,k,i,g;var s,w,f,w,c;function m(){k=q?q:a.animations.easing.quint.easeOut;p=d;o=j;if(p.id&&!a.animations.active[p.id]){a.animations.active[p.id]={}}if(isNaN(t)){if(t.indexOf("%")>0){i="%"}else{if(t.indexOf("px")){i="px"}}l=parseFloat(t.replace(i,""));r=parseFloat(e.replace(i,""))}else{i="";l=parseFloat(t);r=parseFloat(e)}h=parseFloat(b);this.id=Math.random()}this.start=function(){if(p.id){if(a.animations.active[p.id][o]&&a.animations.active[p.id][o]!=g){a.animations.active[p.id][o].stop();newFrom=parseFloat(p.style[o].toString().replace(i,""));w=h*(l/newFrom)}a.animations.active[p.id][o]=g}if(c){clearInterval(c)}f=(new Date()).valueOf();n();c=setInterval(n,a.animations.INTERVAL_SPEED)};this.stop=function(){clearInterval(c);if(p.id){a.animations.active[p.id][o]=null}};function n(){w=(new Date()).valueOf();if(w-f>=h){u();return}value=k((w-f),0,1,h);v(value)}function u(){v(1);g.stop()}function v(x){var y=(l+(r-l)*x);p.style[o]=y+i}g=this;m()};a.animations.INTERVAL_SPEED=10;a.animations.easing={};a.animations.easing.quint={easeIn:function(f,e,h,g){return h*(f/=g)*f*f*f*f+e},easeOut:function(f,e,h,g){return h*((f=f/g-1)*f*f*f*f+1)+e},easeInOut:function(f,e,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+e}return h/2*((f-=2)*f*f*f*f+2)+e}};a.animations.easing.linear={easeIn:function(f,e,h,g){return h*f/g+e},easeOut:function(f,e,h,g){return h*f/g+e},easeInOut:function(f,e,h,g){return h*f/g+e}};a.animations.active={};a.animations.fadeIn=function(b,d,e){var c=new a.animations(b,"opacity",0,1,d,e);c.start()};a.animations.fadeOut=function(b,d,e){var c=new a.animations(b,"opacity",1,0,d,e);c.start()};a.animations.transform=function(c,h,f,i,g,b,e){var j=new a.animations(c,"left",h,i,b,e);var d=new a.animations(c,"top",f,g,b,e);j.start();d.start()}})(jwplayer.html5.utils)}; -
branches/jw6/src/js/html5/jwplayer.html5.controlbar.js
r2173 r2174 33 33 html5.controlbar = function(api, config) { 34 34 var _api, 35 35 _skin, 36 36 _defaults = { 37 37 backgroundcolor : "", … … 115 115 _id, 116 116 _duration, 117 _currentVolume, 117 118 118 119 _toggles = { … … 147 148 148 149 _api = api; 149 150 150 151 151 config = _utils.extend({}, config); … … 161 161 window.addEventListener('mouseup', _sliderMouseEvent, false); 162 162 163 (new html5.skinloader(config.skin, function(skin) { 164 _api.skin = skin; 165 _settings = _utils.extend({}, _defaults, _api.skin.controlbar.settings, _api.settings.controlbar); 166 _layout = (skin.controlbar.layout.left || skin.controlbar.layout.right || skin.controlbar.layout.center) ? skin.controlbar.layout : _defaults.layout; 167 _createStyles(); 168 _buildControlbar(); 169 _addEventListeners(); 170 }, function(err) { _utils.log(err); })); 163 _skin = _api.skin; 164 165 _settings = _utils.extend({}, _defaults, _skin.controlbar.settings, _api.settings.controlbar); 166 _layout = (_skin.controlbar.layout.left || _skin.controlbar.layout.right || _skin.controlbar.layout.center) ? _skin.controlbar.layout : _defaults.layout; 167 _createStyles(); 168 _buildControlbar(); 169 _addEventListeners(); 171 170 } 172 171 173 172 function _addEventListeners() { 174 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME, _timeUpdated);175 _api. addEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE, _stateHandler);176 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE, _muteHandler);177 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME, _volumeHandler);178 _api. addEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER, _bufferHandler);173 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_TIME, _timeUpdated); 174 _api.jwAddEventListener(jwplayer.events.JWPLAYER_PLAYER_STATE, _stateHandler); 175 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_MUTE, _muteHandler); 176 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_VOLUME, _volumeHandler); 177 _api.jwAddEventListener(jwplayer.events.JWPLAYER_MEDIA_BUFFER, _bufferHandler); 179 178 } 180 179 … … 229 228 function _muteHandler(evt) { 230 229 _toggleButton("mute", evt.mute); 231 } 230 _setVolume(evt.mute ? 0 : _currentVolume) 231 } 232 232 233 233 function _volumeHandler(evt) { 234 _setVolume(evt.volume / 100); 234 _currentVolume = evt.volume / 100; 235 _setVolume(_currentVolume); 235 236 } 236 237 … … 406 407 function _mute() { 407 408 _api.jwSetMute(); 409 _muteHandler({mute:_toggleStates.mute}); 408 410 } 409 411 … … 411 413 if (pct < 0.1) pct = 0; 412 414 if (pct > 0.9) pct = 1; 413 _api.jwSetVolume(pct * 100) 415 _api.jwSetVolume(pct * 100); 416 _setVolume(pct); 414 417 } 415 418 … … 693 696 } 694 697 695 this.getSkin = function() { return _api.skin; }696 697 698 function _getSkinElement(name) { 698 if (_ api.skin.controlbar.elements[name]) {699 return _ api.skin.controlbar.elements[name];699 if (_skin.controlbar.elements[name]) { 700 return _skin.controlbar.elements[name]; 700 701 } else { 701 702 return { -
branches/jw6/src/js/html5/jwplayer.html5.controller.js
r2173 r2174 6 6 */ 7 7 (function(html5) { 8 var _utils = jwplayer.utils; 8 var _jw = jwplayer, 9 _utils = _jw.utils, 10 _events = _jw.events, 11 _states = _events.state; 9 12 10 html5.controller = function(model , view) {13 html5.controller = function(model) { 11 14 var _model = model, 12 _view = view, 13 _video = model.video, 15 _video = model.getVideo(), 14 16 _debug = 'console', 15 _eventDispatcher = new jwplayer.events.eventdispatcher(_model.id, _debug);17 _eventDispatcher = new _events.eventdispatcher(_model.id, _debug); 16 18 17 19 _utils.extend(this, _eventDispatcher); … … 19 21 function _init() { 20 22 _model.addGlobalListener(_forward); 23 _model.addEventListener(_events.JWPLAYER_MEDIA_BUFFER_FULL, _bufferFullHandler); 21 24 } 22 25 23 26 function _forward(evt) { 24 27 _eventDispatcher.sendEvent(evt.type, evt); 28 } 29 30 function _bufferFullHandler(evt) { 31 _video.play(); 25 32 } 26 33 … … 38 45 39 46 this.play = function() { 40 if (_model.state == jwplayer.events.state.IDLE) {47 if (_model.state == _states.IDLE) { 41 48 _video.load(file); 49 } else if (_model.state == _states.PAUSED) { 50 _video.play(); 42 51 } 43 _video.play();44 52 } 45 53 … … 49 57 50 58 this.pause = function() { 51 if (_model.state == jwplayer.events.state.PLAYING || _model.state == jwplayer.events.state.BUFFERING) {59 if (_model.state == _states.PLAYING || _model.state == _states.BUFFERING) { 52 60 _video.pause(); 53 61 } -
branches/jw6/src/js/html5/jwplayer.html5.player.js
r2173 r2174 11 11 12 12 function _init() { 13 _model = { 14 id: "player", 15 video: new html5.video(document.createElement("video")), 16 settings: config, 17 volume: 0, 18 state: jwplayer.events.state.IDLE, 19 mute: false 20 }; 13 _model = new html5.model(config); 21 14 22 jwplayer.utils.extend(_model, new jwplayer.events.eventdispatcher());23 _model.video.addGlobalListener(function(evt) {24 switch (evt.type) {25 case jwplayer.events.JWPLAYER_MEDIA_MUTE:26 if (_model.mute == evt.mute) return;27 _model.mute = evt.mute;28 break;29 case jwplayer.events.JWPLAYER_MEDIA_VOLUME:30 if (_model.volume == evt.volume) return;31 _model.volume = evt.volume;32 break;33 case jwplayer.events.JWPLAYER_PLAYER_STATE:34 if (_model.state == evt.newstate) return;35 _model.state = evt.newstate;36 }37 _model.sendEvent(evt.type, evt);38 });39 40 15 _api.id = _model.id; 41 16 _api.settings = _model.settings; 17 18 _controller = new html5.controller(_model); 19 _controller.load(); 42 20 43 _view = {}; 21 (new html5.skinloader(config.skin, function(skin) { 22 _api.skin = skin; 23 _view = new html5.view(_api, _model); 24 }, function(err) { _utils.log(err); })); 44 25 45 _controller = new html5.controller(_model, _view);46 _api.addEventListener = _controller.addEventListener;47 _api.removeEventListener = _controller.removeEventListener;48 49 _view.container = document.getElementById(_api.id),50 _view.controlbar = new html5.controlbar(_api, _model.settings)51 52 53 jwplayer.utils.appendStylesheet("#"+_api.id+" video", {54 width: "100%",55 height: "100%",56 background: "#000",57 opacity: 0,58 '-webkit-transition': 'opacity .15s ease'59 });60 61 _view.container.appendChild(_model.video.getTag());62 _view.container.appendChild(_view.controlbar.getDisplayElement());63 64 _controller.load();65 26 } 66 27 … … 82 43 this.jwGetFullscreen = function(){ return false }; 83 44 84 85 45 this.jwAddEventListener = function(type, handler) { _controller.addEventListener(type, handler); }; 46 this.jwRemoveEventListener = function(type, handler) { _controller.removeEventListener(type, handler); }; 86 47 87 48 _init(); -
branches/jw6/src/js/html5/jwplayer.html5.video.js
r2173 r2174 7 7 (function(jwplayerhtml5) { 8 8 9 var _ utils = jwplayer.utils;9 var _jw = jwplayer, _utils = _jw.utils, _events = _jw.events, _states = _events.state; 10 10 11 11 /** HTML5 video class * */ … … 45 45 _delayedSeek, 46 46 // Current media state 47 _state = jwplayer.events.state.IDLE,47 _state = _states.IDLE, 48 48 // Save the volume state before muting 49 49 _lastVolume = 0, … … 53 53 _bufferPercent = -1, 54 54 // Event dispatcher 55 _eventDispatcher = new jwplayer.events.eventdispatcher();55 _eventDispatcher = new _events.eventdispatcher(); 56 56 57 57 _utils.extend(this, _eventDispatcher); … … 84 84 85 85 function _timeUpdateHandler(evt) { 86 if (_state == jwplayer.events.state.PLAYING) {87 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_TIME, {86 if (_state == _states.PLAYING) { 87 _sendEvent(_events.JWPLAYER_MEDIA_TIME, { 88 88 position : _video.currentTime, 89 89 duration : _duration … … 97 97 function _canPlayHandler(evt) { 98 98 _canSeek = true; 99 _ generalHandler(evt);99 _sendEvent(_events.JWPLAYER_MEDIA_BUFFER_FULL); 100 100 if (_delayedSeek > 0) { 101 101 _seek(_delayedSeek); … … 105 105 function _playHandler(evt) { 106 106 if (_video.paused) { 107 _setState( jwplayer.events.state.PAUSED);107 _setState(_states.PAUSED); 108 108 } else { 109 _setState( jwplayer.events.state.PLAYING);109 _setState(_states.PLAYING); 110 110 } 111 111 } … … 133 133 _video.style.opacity = 0; 134 134 clearInterval(_bufferInterval); 135 _setState( jwplayer.events.state.IDLE);135 _setState(_states.IDLE); 136 136 } 137 137 … … 162 162 163 163 function _volumeHandler(evt) { 164 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_VOLUME, {164 _sendEvent(_events.JWPLAYER_MEDIA_VOLUME, { 165 165 volume: Math.round(_video.volume * 100) 166 166 }); 167 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_MUTE, {167 _sendEvent(_events.JWPLAYER_MEDIA_MUTE, { 168 168 mute: _video.muted 169 169 }); … … 184 184 function _setState(newstate) { 185 185 // Handles a FF 3.5 issue 186 if (newstate == jwplayer.events.state.PAUSED && _state == jwplayer.events.state.IDLE) {186 if (newstate == _states.PAUSED && _state == _states.IDLE) { 187 187 return; 188 188 } … … 191 191 var oldstate = _state; 192 192 _state = newstate; 193 _sendEvent( jwplayer.events.JWPLAYER_PLAYER_STATE, {193 _sendEvent(_events.JWPLAYER_PLAYER_STATE, { 194 194 oldstate : oldstate, 195 195 newstate : newstate … … 202 202 if (newBuffer != _bufferPercent) { 203 203 _bufferPercent = newBuffer; 204 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_BUFFER, {204 _sendEvent(_events.JWPLAYER_MEDIA_BUFFER, { 205 205 bufferPercent: Math.round(_bufferPercent * 100) 206 206 }); … … 221 221 function _complete() { 222 222 _stop(); 223 _sendEvent( jwplayer.events.JWPLAYER_MEDIA_COMPLETE);223 _sendEvent(_events.JWPLAYER_MEDIA_COMPLETE); 224 224 } 225 225 -
branches/jw6/test/controller.html
r2173 r2174 41 41 <option value="">default</option> 42 42 <option value="../../../skins/beelden/beelden.xml">beelden</option> 43 <option value="../../../skins/stormtrooper/stormtrooper.xml" >stormtrooper</option>43 <option value="../../../skins/stormtrooper/stormtrooper.xml" selected>stormtrooper</option> 44 44 <option value="../../../skins/glow/src/glow.xml">glow</option> 45 45 <option value="../../../skins/five/five.xml">five</option> 46 46 <option value="../../../tags/skins/snel/snel.xml">snel</option> 47 47 <option value="../../../skins/stijl/stijl.xml">stijl</option> 48 <option value="../../../skins/bekle/bekle.xml" selected>bekle</option>48 <option value="../../../skins/bekle/bekle.xml" >bekle</option> 49 49 </select> 50 50 <input type="submit" style="opacity:0; left: -10000px"/>
Note: See TracChangeset
for help on using the changeset viewer.
