var YoutubePlayer=new JS.Class({include:[Ojay.Observable,JS.State],initialize:function(A,D,C){this._videoId=A;this._elementId=D;this._options=C||{};this.klass._register(this);var B=this._elements={};Ojay.byId(this._elementId).insert(this.getHTML(),"after");this._embed();this._setupProgressSlider();this._setupVolumeSlider();this.on("playing",function(E){E.klass._playing(E);E.setState("PLAYING");E._elements._playButton.removeClass("play").addClass("pause")});this.on("paused",function(E){E.setState("PAUSED");E._elements._playButton.removeClass("pause").addClass("play")})},_embed:function(){var B=this.klass.getPlayerURL(this._elementId);if(B===null){return null}var A=Ojay.byId(this._elementId),C=A.getWidth();if(!this.klass.hasAcceptableFlash()){A.insert(this.klass._getFlashWarning(),"before")}swfobject.embedSWF(B,this._elementId,C,this._options.height||C/this.klass.ASPECT_RATIO,this.klass.FLASH_VERSION,null,null,{allowScriptAccess:"always",wmode:"transparent"});return this},getHTML:function(){var A=this._elements,B=this;if(A._container){return A._container}A._container=Ojay(Ojay.HTML.div({className:"youtube-controls"},function(C){A._playButton=Ojay(C.div({className:"play-pause"}));C.div({className:"progress"},"Progress:");C.concat(B.getProgressSliderElement().node);A._time=Ojay(C.div({className:"time"}));C.div({className:"volume"},"Volume:");C.concat(B.getVolumeSliderElement().node)}));A._playButton.on("click")._(this).toggle();return A._container},getProgressSliderElement:function(){var A=this._elements;return A._progressSlider=Ojay(Ojay.HTML.div({className:"progress-slider"},function(B){A._progressSliderThumb=Ojay(B.div({className:"thumb"}))}))},_setupProgressSlider:function(){var A=this._elements,F=A._progressSliderThumb.getWidth(),E=A._progressSlider.getWidth();var D=this._progressSliderLimit=E-F;this._progressSlider=YAHOO.widget.Slider.getHorizSlider(A._progressSlider.node,A._progressSliderThumb.node,0,this._progressSliderLimit);this._progressBar=Ojay(Ojay.HTML.div({className:"progress-bar",style:{width:0}}));Ojay(this._progressSlider.getEl()).insert(this._progressBar,"before");this._thumbWidth=F;var B=this._getPlayer(),C=this;this._progressSlider.subscribe("change",function(G){C.setCompletion(G/D)})},setCompletion:function(B){var A=this._getPlayer();A.seekTo(B*A.getDuration(),true);return this},getVolumeSliderElement:function(){var A=this._elements;return A._volumeSlider=Ojay(Ojay.HTML.div({className:"volume-slider"},function(B){A._volumeSliderThumb=Ojay(B.div({className:"thumb"}))}))},_setupVolumeSlider:function(){var A=this._elements,F=A._volumeSliderThumb.getWidth(),E=A._volumeSlider.getWidth();var D=this._volumeSliderLimit=E-F;this._volumeSlider=YAHOO.widget.Slider.getHorizSlider(A._volumeSlider.node,A._volumeSliderThumb.node,0,this._volumeSliderLimit);this._volumeBar=Ojay(Ojay.HTML.div({className:"volume-bar",style:{width:0}}));Ojay(this._volumeSlider.getEl()).insert(this._volumeBar,"before");var B=this._getPlayer(),C=this;this._volumeSlider.subscribe("change",function(G){C.setVolume(G/D)})},setVolume:function(B){if(B===undefined){B=this._getPlayer().getVolume()}if(B>1){B=B/100}var A=B*this._volumeSliderLimit;this._volumeSlider.setValue(A,true,true,true);this._volumeBar.setStyle({width:this._thumbWidth*B+A+"px"});this._getPlayer().setVolume(B*100);return this},_onready:function(){var A='YoutubePlayer._dispatchStateEvent("'+this._elementId+'")';this._getPlayer().addEventListener("onStateChange",A);this._getPlayer().cueVideoById(this._videoId);this.setState("PAUSED");this.notifyObservers("ready");setInterval(this.method("updateTime"),250);this.setVolume()},getTimeString:function(){try{var B=this._getPlayer();var A=B.getCurrentTime();var E=(A/60).floor(),D=(A%60).floor();E=E>0?E:0;D=D>0?D:0;return E+":"+(D<10?"0":"")+D}catch(C){return""}},_dispatchStateEvent:function(B){for(var A in this.klass.STATES){if(this.klass.STATES[A]==B){this.notifyObservers(A)}}},_getPlayer:function(){return Ojay.byId(this._elementId).node},states:{PAUSED:{play:function(){this._getPlayer().playVideo();return this},toggle:function(){return this.play()},updateTime:function(){this._elements._time.setContent(this.getTimeString());return this}},PLAYING:{pause:function(){this._getPlayer().pauseVideo();return this},toggle:function(){return this.pause()},updateTime:function(){try{var B=this._getPlayer();this._elements._time.setContent(this.getTimeString());var A=B.getCurrentTime()/B.getDuration(),D=A*this._progressSliderLimit;this._progressSlider.setValue(D,true,true,true);this._progressBar.setStyle({width:this._thumbWidth*A+D+"px"});return this}catch(C){return this}}}},extend:{_instances:{},_register:function(A){this._instances[A._elementId]=A},_playing:function(A){if(this._current&&this._current!==A){this._current.pause()}this._current=A},getVideoURL:function(A){return"http://www.youtube.com/v/"+A+"&enablejsapi=1"},getPlayerURL:function(B){if(this.API_KEY===null){return null}var A=Ojay.URI.parse("http://gdata.youtube.com/apiplayer?enablejsapi=1");A.setParam("key",this.API_KEY);A.setParam("playerapiid",B);return A.toString()},findById:function(A){return this._instances[A]},_dispatchStateEvent:function(B,A){YoutubePlayer.findById(B)._dispatchStateEvent(A)}.curry(),FLASH_VERSION:"8",ASPECT_RATIO:4/3,CLIENT_ID:null,API_KEY:null,hasAcceptableFlash:function(){var B=this.MINIMUM_FLASH_VERSION,A=swfobject.getFlashPlayerVersion();return !(A.major<B.major||A.minor<B.minor||A.release<B.release)},_getFlashWarning:function(){var A=this;return Ojay.HTML.p({className:"flash-warning"},"If this media player does not work for you, try ",Ojay.HTML.a({href:A.FLASH_DOWNLOAD_URL},"installing the latest Flash plugin"),".")},FLASH_DOWNLOAD_URL:"http://www.adobe.com/products/flashplayer/",MINIMUM_FLASH_VERSION:{major:9,minor:0,release:0},STATES:{unstarted:-1,ended:0,playing:1,paused:2,buffering:3,cued:5}}});onYouTubePlayerReady=function(A){YoutubePlayer.findById(A)._onready()}