Changeset 2174


Ignore:
Timestamp:
04/23/12 05:01:37 (13 months ago)
Author:
pablo
Message:

Implements HTML5 player's MVC architecture

Location:
branches/jw6
Files:
5 added
7 edited

Legend:

Unmodified
Added
Removed
  • branches/jw6/bin-debug/jwplayer.js

    r2173 r2174  
    758758                                } 
    759759                        } 
    760                         for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { 
     760                        var globalListenerIndex; 
     761                        for (globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { 
    761762                                try { 
    762763                                        _globallisteners[globalListenerIndex].listener(data); 
     
    819820        html5.controlbar = function(api, config) { 
    820821                var _api, 
    821  
     822                        _skin, 
    822823                        _defaults = { 
    823824                                backgroundcolor : "", 
     
    901902                        _id, 
    902903                        _duration, 
     904                        _currentVolume, 
    903905                         
    904906                        _toggles = { 
     
    933935                         
    934936                        _api = api; 
    935                          
    936937 
    937938                        config = _utils.extend({}, config); 
     
    947948                        window.addEventListener('mouseup', _sliderMouseEvent, false); 
    948949 
    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(); 
    957957                } 
    958958                 
    959959                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); 
    965965                } 
    966966                 
     
    10151015                function _muteHandler(evt) { 
    10161016                        _toggleButton("mute", evt.mute); 
    1017                 } 
     1017                        _setVolume(evt.mute ? 0 : _currentVolume) 
     1018                } 
    10181019 
    10191020                function _volumeHandler(evt) { 
    1020                         _setVolume(evt.volume / 100); 
     1021                        _currentVolume = evt.volume / 100; 
     1022                        _setVolume(_currentVolume); 
    10211023                } 
    10221024 
     
    11921194                function _mute() { 
    11931195                        _api.jwSetMute(); 
     1196                        _muteHandler({mute:_toggleStates.mute}); 
    11941197                } 
    11951198                 
     
    11971200                        if (pct < 0.1) pct = 0; 
    11981201                        if (pct > 0.9) pct = 1; 
    1199                         _api.jwSetVolume(pct * 100) 
     1202                        _api.jwSetVolume(pct * 100); 
     1203                        _setVolume(pct); 
    12001204                } 
    12011205                 
     
    14791483                } 
    14801484 
    1481                 this.getSkin = function() { return _api.skin; } 
    1482                  
    14831485                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]; 
    14861488                        } else { 
    14871489                                return { 
     
    15761578 */ 
    15771579(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) { 
    15811586                var _model = model,  
    1582                         _view = view, 
    1583                         _video = model.video, 
     1587                        _video = model.getVideo(), 
    15841588                        _debug = 'console', 
    1585                         _eventDispatcher = new jwplayer.events.eventdispatcher(_model.id, _debug); 
     1589                        _eventDispatcher = new _events.eventdispatcher(_model.id, _debug); 
    15861590                 
    15871591                _utils.extend(this, _eventDispatcher); 
     
    15891593                function _init() { 
    15901594                        _model.addGlobalListener(_forward); 
     1595                        _model.addEventListener(_events.JWPLAYER_MEDIA_BUFFER_FULL, _bufferFullHandler); 
    15911596                } 
    15921597                 
    15931598                function _forward(evt) { 
    15941599                        _eventDispatcher.sendEvent(evt.type, evt); 
     1600                } 
     1601                 
     1602                function _bufferFullHandler(evt) { 
     1603                        _video.play(); 
    15951604                } 
    15961605 
     
    16081617                 
    16091618                this.play = function() { 
    1610                         if (_model.state == jwplayer.events.state.IDLE) { 
     1619                        if (_model.state == _states.IDLE) { 
    16111620                                _video.load(file); 
    1612                         } 
    1613                         _video.play(); 
     1621                        } else if (_model.state == _states.PAUSED) { 
     1622                                _video.play(); 
     1623                        } 
    16141624                } 
    16151625 
     
    16191629 
    16201630                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) { 
    16221632                                _video.pause(); 
    16231633                        } 
     
    16771687})(jwplayer); 
    16781688/** 
     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/** 
    16791752 * Main HTMl5 player class 
    16801753 * 
     
    16881761                 
    16891762                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                         
    17171765                        _api.id = _model.id; 
    17181766                        _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); 
    17411769                        _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                         
    17421776                } 
    17431777                 
     
    17591793                this.jwGetFullscreen = function(){ return false }; 
    17601794 
    1761  
    1762                  
     1795                this.jwAddEventListener = function(type, handler) { _controller.addEventListener(type, handler); }; 
     1796                this.jwRemoveEventListener = function(type, handler) { _controller.removeEventListener(type, handler); }; 
    17631797                 
    17641798                _init(); 
     
    20232057(function(jwplayerhtml5) { 
    20242058 
    2025         var _utils = jwplayer.utils; 
     2059        var _jw = jwplayer, _utils = _jw.utils, _events = _jw.events, _states = _events.state; 
    20262060 
    20272061        /** HTML5 video class * */ 
     
    20612095                _delayedSeek, 
    20622096                // Current media state 
    2063                 _state = jwplayer.events.state.IDLE, 
     2097                _state = _states.IDLE, 
    20642098                // Save the volume state before muting 
    20652099                _lastVolume = 0, 
     
    20692103                _bufferPercent = -1, 
    20702104                // Event dispatcher 
    2071                 _eventDispatcher = new jwplayer.events.eventdispatcher(); 
     2105                _eventDispatcher = new _events.eventdispatcher(); 
    20722106 
    20732107                _utils.extend(this, _eventDispatcher); 
     
    21002134 
    21012135                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, { 
    21042138                                        position : _video.currentTime, 
    21052139                                        duration : _duration 
     
    21132147                function _canPlayHandler(evt) { 
    21142148                        _canSeek = true; 
    2115                         _generalHandler(evt); 
     2149                        _sendEvent(_events.JWPLAYER_MEDIA_BUFFER_FULL); 
    21162150                        if (_delayedSeek > 0) { 
    21172151                                _seek(_delayedSeek); 
     
    21212155                function _playHandler(evt) { 
    21222156                        if (_video.paused) { 
    2123                                 _setState(jwplayer.events.state.PAUSED); 
     2157                                _setState(_states.PAUSED); 
    21242158                        } else { 
    2125                                 _setState(jwplayer.events.state.PLAYING); 
     2159                                _setState(_states.PLAYING); 
    21262160                        } 
    21272161                } 
     
    21492183                        _video.style.opacity = 0; 
    21502184                        clearInterval(_bufferInterval); 
    2151                         _setState(jwplayer.events.state.IDLE); 
     2185                        _setState(_states.IDLE); 
    21522186                } 
    21532187 
     
    21782212                 
    21792213                function _volumeHandler(evt) { 
    2180                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_VOLUME, { 
     2214                        _sendEvent(_events.JWPLAYER_MEDIA_VOLUME, { 
    21812215                                volume: Math.round(_video.volume * 100) 
    21822216                        }); 
    2183                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_MUTE, { 
     2217                        _sendEvent(_events.JWPLAYER_MEDIA_MUTE, { 
    21842218                                mute: _video.muted 
    21852219                        }); 
     
    22002234                function _setState(newstate) { 
    22012235                        // 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) { 
    22032237                                return; 
    22042238                        } 
     
    22072241                                var oldstate = _state; 
    22082242                                _state = newstate; 
    2209                                 _sendEvent(jwplayer.events.JWPLAYER_PLAYER_STATE, { 
     2243                                _sendEvent(_events.JWPLAYER_PLAYER_STATE, { 
    22102244                                        oldstate : oldstate, 
    22112245                                        newstate : newstate 
     
    22182252                        if (newBuffer != _bufferPercent) { 
    22192253                                _bufferPercent = newBuffer; 
    2220                                 _sendEvent(jwplayer.events.JWPLAYER_MEDIA_BUFFER, { 
     2254                                _sendEvent(_events.JWPLAYER_MEDIA_BUFFER, { 
    22212255                                        bufferPercent: Math.round(_bufferPercent * 100) 
    22222256                                }); 
     
    22372271                function _complete() { 
    22382272                        _stop(); 
    2239                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_COMPLETE); 
     2273                        _sendEvent(_events.JWPLAYER_MEDIA_COMPLETE); 
    22402274                } 
    22412275                 
     
    22502284 
    22512285        } 
     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        }); 
    22522339 
    22532340})(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="&nbsp;";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="&nbsp;";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)}; 
     1if(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="&nbsp;";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="&nbsp;";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  
    3333        html5.controlbar = function(api, config) { 
    3434                var _api, 
    35  
     35                        _skin, 
    3636                        _defaults = { 
    3737                                backgroundcolor : "", 
     
    115115                        _id, 
    116116                        _duration, 
     117                        _currentVolume, 
    117118                         
    118119                        _toggles = { 
     
    147148                         
    148149                        _api = api; 
    149                          
    150150 
    151151                        config = _utils.extend({}, config); 
     
    161161                        window.addEventListener('mouseup', _sliderMouseEvent, false); 
    162162 
    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(); 
    171170                } 
    172171                 
    173172                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); 
    179178                } 
    180179                 
     
    229228                function _muteHandler(evt) { 
    230229                        _toggleButton("mute", evt.mute); 
    231                 } 
     230                        _setVolume(evt.mute ? 0 : _currentVolume) 
     231                } 
    232232 
    233233                function _volumeHandler(evt) { 
    234                         _setVolume(evt.volume / 100); 
     234                        _currentVolume = evt.volume / 100; 
     235                        _setVolume(_currentVolume); 
    235236                } 
    236237 
     
    406407                function _mute() { 
    407408                        _api.jwSetMute(); 
     409                        _muteHandler({mute:_toggleStates.mute}); 
    408410                } 
    409411                 
     
    411413                        if (pct < 0.1) pct = 0; 
    412414                        if (pct > 0.9) pct = 1; 
    413                         _api.jwSetVolume(pct * 100) 
     415                        _api.jwSetVolume(pct * 100); 
     416                        _setVolume(pct); 
    414417                } 
    415418                 
     
    693696                } 
    694697 
    695                 this.getSkin = function() { return _api.skin; } 
    696                  
    697698                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]; 
    700701                        } else { 
    701702                                return { 
  • branches/jw6/src/js/html5/jwplayer.html5.controller.js

    r2173 r2174  
    66 */ 
    77(function(html5) { 
    8         var _utils = jwplayer.utils; 
     8        var _jw = jwplayer,  
     9                _utils = _jw.utils,  
     10                _events = _jw.events,  
     11                _states = _events.state; 
    912         
    10         html5.controller = function(model, view) { 
     13        html5.controller = function(model) { 
    1114                var _model = model,  
    12                         _view = view, 
    13                         _video = model.video, 
     15                        _video = model.getVideo(), 
    1416                        _debug = 'console', 
    15                         _eventDispatcher = new jwplayer.events.eventdispatcher(_model.id, _debug); 
     17                        _eventDispatcher = new _events.eventdispatcher(_model.id, _debug); 
    1618                 
    1719                _utils.extend(this, _eventDispatcher); 
     
    1921                function _init() { 
    2022                        _model.addGlobalListener(_forward); 
     23                        _model.addEventListener(_events.JWPLAYER_MEDIA_BUFFER_FULL, _bufferFullHandler); 
    2124                } 
    2225                 
    2326                function _forward(evt) { 
    2427                        _eventDispatcher.sendEvent(evt.type, evt); 
     28                } 
     29                 
     30                function _bufferFullHandler(evt) { 
     31                        _video.play(); 
    2532                } 
    2633 
     
    3845                 
    3946                this.play = function() { 
    40                         if (_model.state == jwplayer.events.state.IDLE) { 
     47                        if (_model.state == _states.IDLE) { 
    4148                                _video.load(file); 
     49                        } else if (_model.state == _states.PAUSED) { 
     50                                _video.play(); 
    4251                        } 
    43                         _video.play(); 
    4452                } 
    4553 
     
    4957 
    5058                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) { 
    5260                                _video.pause(); 
    5361                        } 
  • branches/jw6/src/js/html5/jwplayer.html5.player.js

    r2173 r2174  
    1111                 
    1212                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); 
    2114                         
    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                  
    4015                        _api.id = _model.id; 
    4116                        _api.settings = _model.settings; 
     17                                                 
     18                        _controller = new html5.controller(_model); 
     19                        _controller.load(); 
    4220                         
    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); })); 
    4425                         
    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(); 
    6526                } 
    6627                 
     
    8243                this.jwGetFullscreen = function(){ return false }; 
    8344 
    84  
    85                  
     45                this.jwAddEventListener = function(type, handler) { _controller.addEventListener(type, handler); }; 
     46                this.jwRemoveEventListener = function(type, handler) { _controller.removeEventListener(type, handler); }; 
    8647                 
    8748                _init(); 
  • branches/jw6/src/js/html5/jwplayer.html5.video.js

    r2173 r2174  
    77(function(jwplayerhtml5) { 
    88 
    9         var _utils = jwplayer.utils; 
     9        var _jw = jwplayer, _utils = _jw.utils, _events = _jw.events, _states = _events.state; 
    1010 
    1111        /** HTML5 video class * */ 
     
    4545                _delayedSeek, 
    4646                // Current media state 
    47                 _state = jwplayer.events.state.IDLE, 
     47                _state = _states.IDLE, 
    4848                // Save the volume state before muting 
    4949                _lastVolume = 0, 
     
    5353                _bufferPercent = -1, 
    5454                // Event dispatcher 
    55                 _eventDispatcher = new jwplayer.events.eventdispatcher(); 
     55                _eventDispatcher = new _events.eventdispatcher(); 
    5656 
    5757                _utils.extend(this, _eventDispatcher); 
     
    8484 
    8585                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, { 
    8888                                        position : _video.currentTime, 
    8989                                        duration : _duration 
     
    9797                function _canPlayHandler(evt) { 
    9898                        _canSeek = true; 
    99                         _generalHandler(evt); 
     99                        _sendEvent(_events.JWPLAYER_MEDIA_BUFFER_FULL); 
    100100                        if (_delayedSeek > 0) { 
    101101                                _seek(_delayedSeek); 
     
    105105                function _playHandler(evt) { 
    106106                        if (_video.paused) { 
    107                                 _setState(jwplayer.events.state.PAUSED); 
     107                                _setState(_states.PAUSED); 
    108108                        } else { 
    109                                 _setState(jwplayer.events.state.PLAYING); 
     109                                _setState(_states.PLAYING); 
    110110                        } 
    111111                } 
     
    133133                        _video.style.opacity = 0; 
    134134                        clearInterval(_bufferInterval); 
    135                         _setState(jwplayer.events.state.IDLE); 
     135                        _setState(_states.IDLE); 
    136136                } 
    137137 
     
    162162                 
    163163                function _volumeHandler(evt) { 
    164                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_VOLUME, { 
     164                        _sendEvent(_events.JWPLAYER_MEDIA_VOLUME, { 
    165165                                volume: Math.round(_video.volume * 100) 
    166166                        }); 
    167                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_MUTE, { 
     167                        _sendEvent(_events.JWPLAYER_MEDIA_MUTE, { 
    168168                                mute: _video.muted 
    169169                        }); 
     
    184184                function _setState(newstate) { 
    185185                        // 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) { 
    187187                                return; 
    188188                        } 
     
    191191                                var oldstate = _state; 
    192192                                _state = newstate; 
    193                                 _sendEvent(jwplayer.events.JWPLAYER_PLAYER_STATE, { 
     193                                _sendEvent(_events.JWPLAYER_PLAYER_STATE, { 
    194194                                        oldstate : oldstate, 
    195195                                        newstate : newstate 
     
    202202                        if (newBuffer != _bufferPercent) { 
    203203                                _bufferPercent = newBuffer; 
    204                                 _sendEvent(jwplayer.events.JWPLAYER_MEDIA_BUFFER, { 
     204                                _sendEvent(_events.JWPLAYER_MEDIA_BUFFER, { 
    205205                                        bufferPercent: Math.round(_bufferPercent * 100) 
    206206                                }); 
     
    221221                function _complete() { 
    222222                        _stop(); 
    223                         _sendEvent(jwplayer.events.JWPLAYER_MEDIA_COMPLETE); 
     223                        _sendEvent(_events.JWPLAYER_MEDIA_COMPLETE); 
    224224                } 
    225225                 
  • branches/jw6/test/controller.html

    r2173 r2174  
    4141        <option value="">default</option> 
    4242        <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> 
    4444        <option value="../../../skins/glow/src/glow.xml">glow</option> 
    4545        <option value="../../../skins/five/five.xml">five</option> 
    4646        <option value="../../../tags/skins/snel/snel.xml">snel</option> 
    4747        <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> 
    4949      </select> 
    5050      <input type="submit" style="opacity:0; left: -10000px"/> 
Note: See TracChangeset for help on using the changeset viewer.