/*
 * @class Ext.ux.MediaPanel
 * Version:  0.31
 * Author: Doug Hendricks. doug[always-At]theactivegroup.com
 * Copyright 2007-2008, Active Group, Inc.  All rights reserved.
 *
 ************************************************************************************
 *   This file is distributed on an AS IS BASIS WITHOUT ANY WARRANTY;
 *   without even the implied warranty of MERCHANTABILITY or
 *   FITNESS FOR A PARTICULAR PURPOSE.
 ************************************************************************************

 License: ux.MediaPanel is licensed under the terms of
 the Open Source LGPL 3.0 license.  Commercial use is permitted to the extent
 that the code/component(s) do NOT become part of another Open Source or Commercially
 licensed development library or toolkit without explicit permission.

 Donations are welcomed: http://donate.theactivegroup.com

 License details: http://www.gnu.org/licenses/lgpl.html

 Notes: the <embed> tag is NOT used in this implementation
 Version:  .31 Fixes to canned WMV config.
 Version:  .3  New class Heirarchy.  Adds renderMedia(mediaCfg) method for refreshing
               a mediaPanels body with a new/current mediaCfg.
 Version:  .2  Adds JW FLV Player Support and enhances mediaClass defaults mechanism.
 Version:  .11 Modified width/height defaults since CSS does not seem to
                honor height/width rules
 Version:  .1  initial release

mediaCfg: {Object}
     { mediaType : mediaClass defined by ux.MediaBase.prototype[mediaClass]
      ,url       : Url resource to load when rendered
      ,loop      : (true/false) (@macro enabled)
      ,start     : (true/false) (@macro enabled)
      ,height    : (defaults 100%) (@macro enabled)
      ,width     : (defaults 100%) (@macro enabled)
      ,controls  : optional: show plugins control menu (true/false) (@macro enabled)
      ,unsupportedText: (String,DomHelper cfg) Text to render if plugin is not installed/available.
      ,params   : { }  members/values unique to Plugin provider
     }

*/
Ext.ux.MediaBase=function(){};Ext.apply(Ext.ux.MediaBase.prototype,{_macros:null,applyMacros:function(B,C){var A=C||this._macros;return A?Ext.DomHelper.markup(B).replace(/(%40url|@url)/g,A.url).replace(/(%40start|@start)/g,(A.start||!!this.autoStart)+"").replace(/(%40controls|@controls)/g,A.controls+"").replace(/(%40id|@id)/g,A.id+"").replace(/(%40loop|@loop)/g,A.loop+"").replace(/(%40width|@width)/g,A.width+"").replace(/(%40height|@height)/g,A.height+""):B},mediaMarkup:function(F){var A=F?Ext.apply({url:false},F):{};if(A&&A.unsupportedText&&typeof A.unsupportedText=="object"){A.unsupportedText=Ext.DomHelper.markup(A.unsupportedText)}var D=Ext.apply({type:false},this["_"+A.mediaType]||false);if(A.url&&D.type){var E=Ext.apply(D.params||{},A.params||{});for(var C in E){if(E.hasOwnProperty(C)){A.children||(A.children=[]);if(E[C]!==null){A.children.push({tag:"param",name:C,value:(typeof E[C]=="object"?Ext.urlEncode(E[C]):encodeURI(E[C]))})}}}delete D.params;D.style||(D.style={});D.style=Ext.apply({height:"@height",width:"@width"},A.style||{},D.style);if(A.unsupportedText){D.html=A.unsupportedText}A=Ext.apply({tag:"object"},A,D);A.id||(A.id=Ext.id());var B=function(G,I,H){return Ext.value(Ext.value(G,I),H)};this._macros={url:A.url||"",height:A.height||"100%",width:A.width||"100%",controls:B(A.controls,false),start:B(A.start,false),loop:B(A.loop,false),id:A.id};delete A.url;delete A.mediaType;delete A.height;delete A.width;delete A.controls;delete A.start;delete A.loop;delete A.params;delete A.unsupportedText;return A}else{return null}},_PDF:Ext.apply({tag:"object",cls:"x-media x-media-pdf",type:"application/pdf",data:"@url",params:{src:"@url"}},Ext.isIE?{classid:"CLSID:CA8A9780-280D-11CF-A24D-444553540000"}:false),_WMV:Ext.apply({tag:"object",cls:"x-media x-media-wmv",type:"video/x-ms-wmv",data:"@url",params:{src:"@url",url:"@url",autostart:"@start",showcontrols:"@controls"}},Ext.isIE?{classid:"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"}:false),_SWF:Ext.apply({tag:"object",cls:"x-media x-media-swf",type:"application/x-shockwave-flash",data:"@url",loop:true,start:true,params:{movie:"@url",menu:"@controls",play:"@start",quality:"high",bgcolor:"#FFFFFF",loop:"@loop"}},Ext.isIE?{classid:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"}:false),_JWP:Ext.apply({tag:"object",cls:"x-media x-media-swf x-media-flv",type:"application/x-shockwave-flash",data:"@url",loop:true,start:false,params:{movie:"@url",flashVars:{autostart:"@start",repeat:"@loop",height:"@height",width:"@width",id:"@id"}}},Ext.isIE?{classid:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"}:false),_MOV:Ext.apply({tag:"object",cls:"x-media x-media-mov",type:"video/quicktime",data:"@url",params:{src:"@url",autoplay:"@start",controller:"@controls"}},Ext.isIE?{classid:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",codebase:"http://www.apple.com/qtactivex/qtplugin.cab",type:"application/x-oleobject",params:{src:"@url",controller:"@controls",autostart:"@start"}}:false),_REAL:Ext.apply({tag:"object",cls:"x-media x-media-real",type:"audio/x-pn-realaudio",data:"@url",standby:"Loading Real Media Player components...",params:{src:"@url",autostart:"@start",controller:"@controls",loop:"@loop",console:"TES"}},Ext.isIE?{classid:"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA",controls:"All"}:false),_SVG:{tag:"object",cls:"x-media x-media-img x-media-svg",type:"image/svg+xml",data:"@url"},_GIF:{tag:"object",cls:"x-media x-media-img x-media-gif",type:"image/gif",data:"@url"},_JPEG:{tag:"object",cls:"x-media x-media-img x-media-jpeg",type:"image/jpeg",data:"@url"},_PNG:{tag:"object",cls:"x-media x-media-img x-media-png",type:"image/png",data:"@url"},_HTM:{tag:"object",cls:"x-media x-media-html",type:"text/html",style:{overflow:"auto"},data:"@url"},_TXT:{tag:"object",cls:"x-media x-media-text",type:"text/plain",style:{overflow:"auto"},data:"@url"},_XLS:{tag:"object",cls:"x-media x-media-excel",type:"application/x-msexcel",data:"@url"},_XML:{tag:"object",cls:"x-media x-media-xml",type:"text/xml",style:{overflow:"auto"},data:"@url"},_QTMIDI:Ext.apply({tag:"object",cls:"x-media x-media-audio x-media-midi",type:"audio/midi",style:{overflow:"auto"},data:"@url",params:{autostart:"@start"}},Ext.isIE?{classid:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",codebase:"http://www.apple.com/qtactivex/qtplugin.cab",type:"application/x-oleobject",params:{src:"@url",controller:"@controls",autostart:"@start"}}:false),_QTMP3:Ext.apply({tag:"object",cls:"x-media x-media-audio x-media-mpeg",type:"audio/mpeg",data:"@url",params:{autostart:"@start"}},Ext.isIE?{classid:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",codebase:"http://www.apple.com/qtactivex/qtplugin.cab",type:"application/x-oleobject",params:{src:"@url",controller:"@controls",autostart:"@start"}}:false),_QTWAV:Ext.apply({tag:"object",cls:"x-media x-media-audio x-media-wav",type:"audio/wav",data:"@url",params:{autostart:"@start"}},Ext.isIE?{classid:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",codebase:"http://www.apple.com/qtactivex/qtplugin.cab",type:"application/x-oleobject",params:{src:"@url",controller:"@controls",autostart:"@start"}}:false)});Ext.ux.MediaPanel=Ext.extend(Ext.Panel,Ext.apply({animCollapse:false,ctype:"Ext.ux.MediaPanel",initComponent:function(){this.bodyCfg||(this.bodyCfg={tag:"div",cls:this.baseCls+"-body",children:[]});this.autoLoad=false;var A;this.bodyCfg.children||(this.bodyCfg.children=[]);if(A=this.mediaMarkup(this.mediaCfg)){this.bodyCfg.children.push(A)}else{this.bodyCfg.html=this.mediaCfg?this.mediaCfg.unsupportedText||false:false}Ext.ux.MediaPanel.superclass.initComponent.call(this)},onRender:function(B,A){if(this.bodyCfg){this.bodyCfg=this.applyMacros(this.bodyCfg)}Ext.ux.MediaPanel.superclass.onRender.call(this,B,A);Ext.each([this[this.collapseEl],this.el,this.body.child("x-media")],function(C){if(C){C.setVisibilityMode(Ext.Element[this.hideMode.toUpperCase()]||1).originalDisplay=(this.hideMode!="display"?"visible":"block")}},this)},renderMedia:function(B){B||(B=this.initialConfig.mediaCfg);var A;if(this.rendered&&(A=this.mediaMarkup(B))){this.body.update(this.applyMacros(A))}}},Ext.ux.MediaBase.prototype));Ext.reg("mediapanel",Ext.ux.MediaPanel);Ext.ux.MediaPanel.Flash=Ext.extend(Ext.ux.MediaPanel,{autoStart:false,requiredVersion:false,playerVersion:null,ctype:"Ext.ux.MediaPanel.Flash",SWFObject:null,varsName:"flashVars",_SWF:Ext.apply({tag:"object",cls:"x-media x-media-swf",type:"application/x-shockwave-flash",data:"@url",loop:true,start:true,params:{movie:"@url",play:"@start",loop:"@loop",menu:"@controls",quality:"high",bgcolor:"#FFFFFF"}},Ext.isIE?{classid:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"}:false),initComponent:function(){var F=Ext.apply({url:false},this.mediaCfg||{});if(F.url){this.requiredVersion=F.requiredVersion||false;var A=!!(this.playerVersion=this.detectVersion());var C=A&&(this.requiredVersion?this.assertVersion(this.requiredVersion):true);if(F.unsupportedText){if(typeof F.unsupportedText=="object"){F.unsupportedText=Ext.DomHelper.markup(F.unsupportedText)}F.unsupportedText=String.format(F.unsupportedText,F.requiredVersion,this.playerVersion||"Not installed")}if(!C){var B=A&&this.assertVersion("6.0.65");if(B&&F.installUrl){this.initialConfig.mediaCfg=F=F.installDescriptor||{tag:"object",cls:"x-media x-media-swf",id:"SWFInstaller",type:"application/x-shockwave-flash",data:"@url",url:F.installUrl,width:550,height:300,loop:false,start:true,unsupportedText:F.unsupportedText,params:{quality:"high",movie:"@url",allowScriptAcess:"always",align:"middle",bgcolor:"#3A6EA5",pluginspage:this.pluginsPage||"http://www.adobe.com/go/getflashplayer"}};F.params[this.varsName]="MMredirectURL="+(F.installRedirect||window.location)+"&MMplayerType="+(Ext.isIE?"ActiveX":"Plugin")+"&MMdoctitle="+(document.title=document.title.slice(0,47)+" - Flash Player Installation")}else{F.url=null}}if(F.eventSynch){F.params||(F.params={});var E=F.params[this.varsName]||(F.params[this.varsName]={});if(typeof E=="string"){E=Ext.urlDecode(E,true)}var D=(F.eventSynch===true?{allowedDomain:E.allowedDomain||document.location.hostname,elementID:F.id||(F.id=Ext.id()),eventHandler:"Ext.ux.MediaPanel.Flash.eventSynch"}:F.eventSynch);Ext.apply(F.params,{allowScriptAccess:"always"})[this.varsName]=Ext.applyIf(E,D)}delete F.requiredVersion;delete F.installUrl;delete F.installRedirect;delete F.installDescriptor;delete F.eventSynch}F.mediaType="SWF";this.mediaCfg=this.initialConfig.mediaCfg=F;Ext.ux.MediaPanel.Flash.superclass.initComponent.call(this)},onRender:function(B,A){Ext.ux.MediaPanel.Flash.superclass.onRender.call(this,B,A);this._setSWFObject.defer(20,this)},renderMedia:function(A){this._applyFixes();this.SWFObject=null;Ext.ux.MediaPanel.Flash.superclass.renderMedia.call(this,A);this._setSWFObject.defer(20,this)},_setSWFObject:function(){if(this.SWFObject=Ext.get(this.body.child("object.x-media-swf"))){this.SWFObject.owner=this;this.SWFObject.setVisibilityMode(Ext.Element[this.hideMode.toUpperCase()]||1).originalDisplay=(this.hideMode!="display"?"visible":"block")}},assertVersion:function(C){var B;C||(C=[]);if(C instanceof Array){B=C}else{B=String(C).split(".")}B=(B.concat([0,0,0,0])).slice(0,3);var A;if(!(A=this.playerVersion||(this.playerVersion=this.detectVersion()))){return false}if(A.major>parseFloat(B[0])){return true}else{if(A.major==parseFloat(B[0])){if(A.minor>parseFloat(B[1])){return true}else{if(A.minor==parseFloat(B[1])){if(A.rev>=parseFloat(B[2])){return true}}}}}return false},detectVersion:function(){var A=false;var B=function(E){return E&&!!E.length?{major:E[0]!=null?parseInt(E[0],10):0,minor:E[1]!=null?parseInt(E[1],10):0,rev:E[2]!=null?parseInt(E[2],10):0,toString:function(){return this.major+"."+this.minor+"."+this.rev}}:false};if(Ext.isIE){var C=null;try{C=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(D){try{C=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");A=[6,0,21];C.AllowScriptAccess="always"}catch(D){if(A&&A[0]==6){return B(A)}}try{C=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(D){}}if(C){A=C.GetVariable("$version").split(" ")[1].split(",")}}else{if(navigator.plugins&&navigator.mimeTypes.length){var C=navigator.plugins["Shockwave Flash"];if(C&&C.description){A=C.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split(".")}}}return B(A)},_applyFixes:function(){if(this.rendered&&Ext.isIE&&this.SWFObject){this.playerVersion||(this.playerVersion=this.detectVersion());if(this.playerVersion&&this.playerVersion.major>7){var B=this.SWFObject.dom;B.style.display="none";for(var A in B){if(typeof B[A]=="function"){B[A]=Ext.emptyFn}}}}},beforeDestroy:function(){this._applyFixes();Ext.ux.MediaPanel.Flash.superclass.beforeDestroy.call(this)},call:function(fn){var SWF;if(SWF=this.getSWFObject()){var result=SWF.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,1)+"</invoke>");return eval(result)}return undefined},getSWFObject:function(){return this.rendered?this.SWFObject.dom||null:null},_handleSWFEvent:function(A,C){var B=C.type||false;if(B){return this.fireEvent(B,this,A,C)}},onShow:function(){if(this.SWFObject){this.SWFObject.setVisible(true)}Ext.ux.MediaPanel.Flash.superclass.onShow.call(this)},onHide:function(){if(this.SWFObject){this.SWFObject.setVisible(false)}Ext.ux.MediaPanel.Flash.superclass.onHide.call(this)}});Ext.ux.MediaPanel.Flash.eventSynch=function(A,C){var B=Ext.get(A);if(B&&B.owner){return B.owner._handleSWFEvent.call(B.owner,B.dom,C)}};Ext.reg("flashpanel",Ext.ux.MediaPanel.Flash);
/*
 * Utilizes the youtube chromeless api to embed youtube videos into
 * Ext Js components.
 *
 *
 * Flaws: Mozilla https://bugzilla.mozilla.org/show_bug.cgi?id=262354 
 *		  
 * Dependencies:
 * Ext.ux.MediaPanel
 *
 * @author Thorsten Suckow-Homberg <ts@siteartwork.de>
 *
 */
Ext.namespace("Ext.ux");Ext.ux.YoutubePlayer=Ext.extend(Ext.ux.MediaPanel.Flash,{player:null,videoId:null,initComponent:function(){var B=function(D){var F=Ext.ux.YoutubePlayer.Players[D];if(F){var C=Ext.getCmp(F);var E=document.getElementById(D);C._setPlayer(E);E.addEventListener("onStateChange","Ext.getCmp('"+C.id+"')._delegateStateEvent");E.addEventListener("onError","Ext.getCmp('"+C.id+"')._delegateErrorEvent");C.adjustRatio(C.getInnerWidth(),C.getInnerHeight());C.fireEvent("ready",C,E)}};window.onYouTubePlayerReady=B;this.ratioMode=this.ratioMode||"normal";this.mediaCfg={};var A={mediaType:"SWF",url:"http://gdata.youtube.com/apiplayer?key="+this.developerKey+"&enablejsapi=1&playerapiid="+this.playerId,id:this.playerId,start:false,controls:false,params:{wmode:"transparent",allowScriptAccess:"always",bgcolor:this.bgColor||"#cccccc"}};Ext.apply(this.mediaCfg,A);this.addEvents("ready","stateChange","error");if(!Ext.ux.YoutubePlayer.Players){Ext.ux.YoutubePlayer.Players=[]}Ext.ux.YoutubePlayer.Players[this.playerId]=this.id;Ext.ux.YoutubePlayer.superclass.initComponent.call(this)},_setPlayer:function(A){this.player=A},_delegateStateEvent:function(A){switch(A){case -1:A="unstarted";break;case 0:A="ended";break;case 1:A="playing";break;case 2:A="paused";break;case 3:A="buffering";break;case 5:A="video_cued";break;default:A="unknown";break}this.fireEvent("stateChange",A,this,this.player)},_delegateErrorEvent:function(A){switch(A){case 100:A="video_not_found";break;default:A="unknown";break}this.fireEvent("error",A,this,this.player)},onResize:function(A,B){Ext.ux.YoutubePlayer.superclass.onResize.call(this,A,B);if(this.playerAvailable()){this.adjustRatio(A,B)}},adjustRatio:function(D,B){var A=this.player.style;switch(this.ratioMode){case"strict":if(D<400||B<320){var C=Math.floor(D*0.8);if(C>B){D=Math.floor(B/0.8)}else{B=C}}else{if(B>320){B=320;D=400}}A.marginTop=-Math.floor(B/2)+"px";A.marginLeft=-Math.floor(D/2)+"px";A.height=B+"px";A.width=D+"px";A.top="50%";A.left="50%";A.position="absolute";this.setPlayerSize(D,B);break;case"stretch":A.position="normal";A.margin="auto";A.height=B+"px";A.width=D+"px";this.setPlayerSize(D,B);break}},playerAvailable:function(){return(this.player&&this.player.getPlayerState)?true:false},loadVideoById:function(A,B){this.videoId=A;this.player.loadVideoById(A,B)},cueVideoById:function(A,B){this.videoId=A;this.player.cueVideoById(A,B)},setPlayerSize:function(B,A){this.player.setSize(B,A)},playVideo:function(){this.player.playVideo()},pauseVideo:function(){this.player.pauseVideo()},stopVideo:function(){this.player.stopVideo()},clearVideo:function(){this.player.clearVideo()},getVideoBytesLoaded:function(){return this.player.getVideoBytesLoaded()},getVideoBytesTotal:function(){return this.player.getVideoBytesTotal()},getVideoStartBytes:function(){return this.player.getVideoStartBytes()},mute:function(A){if(A===false){this.player.unMute();this.setVolume(this.getVolume())}else{this.player.mute()}},isMuted:function(A){return this.player.isMuted()},setVolume:function(A){this.player.setVolume(A)},getVolume:function(){return this.player.getVolume()},seekTo:function(B,A){this.player.seekTo(B,A)},getPlayerState:function(){var A=this.player.getPlayerState();switch(A){case -1:A="unstarted";break;case 0:A="ended";break;case 1:A="playing";break;case 2:A="paused";break;case 3:A="buffering";break;case 5:A="video_cued";break;default:A="unknown";break}return A},getCurrentTime:function(){return this.player.getCurrentTime()},getDuration:function(){return this.player.getDuration()},getVideoUrl:function(){return this.player.getVideoUrl()},getVideoEmbedCode:function(){return this.player.getVideoEmbedCode()}});Ext.namespace("Ext.ux.YoutubePlayer");Ext.ux.YoutubePlayer.Control=Ext.extend(Ext.Toolbar,{task:null,fxel:null,elRuntime:null,volumePanel:null,ejectButton:new Ext.Toolbar.Button({iconCls:"ext-ux-youtubeplayer-eject",split:true}),playButton:new Ext.Toolbar.Button({iconCls:"ext-ux-youtubeplayer-play",disabled:true}),stopButton:new Ext.Toolbar.Button({iconCls:"ext-ux-youtubeplayer-stop",disabled:true}),previousButton:new Ext.Toolbar.Button({iconCls:"ext-ux-youtubeplayer-start",disabled:true}),nextButton:new Ext.Toolbar.Button({iconCls:"ext-ux-youtubeplayer-end",disabled:true}),muteButton:null,volumeSlider:null,sliderField:null,isAdjusting:false,_initListeners:function(){this.playButton.on("click",this._onPlay,this);this.stopButton.on("click",this._onStop,this);this.muteButton.on("toggle",this._onMuteToggle,this);this.on("resize",this._onResize,this);this.on("hide",this._onHide,this);this.on("destroy",this._onDestroy,this);var A=this;this.player.on("stateChange",function(D,B,C){A._processPlayerEvents.defer(1,A,[D,B,C])},this);this.sliderField.on("dragstart",function(){this.isAdjusting=true},this);this.sliderField.on("drag",this._onSeekPosition,this);this.sliderField.on("dragend",function(){this.isAdjusting=false},this);this.volumeSlider.on("drag",this._onSetVolume,this);this.player.on("error",this._onError,this);this.ejectButton.on("click",this._onEject,this)},_onEject:function(){var A=this;Ext.Msg.prompt("Load video","Please enter the video id or url:",function(B,C){if(B=="ok"){var D=A._parseVideoId(C);A.player.stopVideo();A.player.clearVideo();A.player.cueVideoById(D)}})},_parseVideoId:function(C){var A=C.indexOf("v=");if(A!==-1){var C=C.substring(A+2);var B=C.indexOf("&");if(B!==-1){C=C.substring(C,B)}}return C},_onError:function(C,A,B){A.stopVideo();Ext.Msg.alert("Error","The video you requested could not be played. Error code "+C)},_onSeekPosition:function(){this.player.seekTo(this.sliderField.getValue())},_onSetVolume:function(){this.player.setVolume(this.volumeSlider.getValue())},_onMuteToggle:function(A,B){if(B){A.setIconClass("ext-ux-youtubeplayer-mute");this.player.mute(true)}else{A.setIconClass("ext-ux-youtubeplayer-volume");this.player.mute(false)}},_onPlay:function(A){var B=this.player.getPlayerState();if(B=="playing"){this.player.pauseVideo()}else{if(B=="paused"||B=="video_cued"){this.player.playVideo()}}},_onStop:function(A){this.player.seekTo(0);this.player.pauseVideo();this.stopButton.setDisabled(true)},initComponent:function(){this.volumeSlider=new Ext.ux.YoutubePlayer.Control.SliderField({minValue:0,maxValue:100,height:25,width:110,disabled:true});this.sliderField=new Ext.ux.YoutubePlayer.Control.SliderField({minValue:0,maxValue:0,fieldLabel:"Slider",disabled:true,listeners:{render:function(){this.el.dom.parentNode.style.width="100%"}}});this.volumePanel=new Ext.Panel({bodyStyle:"background-color:#D3E1F1;",width:120,height:25,items:[this.volumeSlider]});this.muteButton=new Ext.Toolbar.SplitButton({iconCls:"ext-ux-youtubeplayer-volume",enableToggle:true,disabled:true,menu:new Ext.menu.Menu({items:[new Ext.menu.Adapter(this.volumePanel)]})});this.muteButton.menu.on("beforeshow",function(){var A=this.player.getState();if(A!="ended"&&A!="unstarted"){this.volumeSlider.setDisabled(false);this.volumeSlider.setValue(this.player.getVolume(),true)}},this);Ext.apply(this,{items:[this.ejectButton,this.playButton,this.stopButton,this.previousButton,this.nextButton," ",this.sliderField," "]});this._initListeners();Ext.ux.YoutubePlayer.Control.superclass.initComponent.call(this)},afterRender:function(B,A){Ext.ux.YoutubePlayer.Control.superclass.afterRender.call(this,B,A);this.elRuntime=Ext.fly(this.el.dom.getElementsByTagName("tr")[0]).createChild({tag:"td"});this.elRuntime.update("00:00");this.add(new Ext.Toolbar.Spacer());this.add(this.muteButton)},_onResize:function(D,B,A,C){if(this.fxel){this.fxel.alignTo(this.el.dom,"br-tr")}this.sliderField.fireEvent("resize")},_onDestroy:function(){if(this.task){Ext.TaskMgr.stop(this.task)}if(this.fxel){this.fxel.dom.parentNode.removeChild(this.fxel.dom);this.volumePanel.destroy()}},_updateVideoInfo:function(){if(!this.player.playerAvailable()){this._processPlayerEvents("ended",this.player,null);return }var K=this.player;var B=this.sliderField;var I=K.getVideoBytesTotal();var G=K.getVideoBytesLoaded();var C=this.player.getCurrentTime();var A=this.player.getDuration();var H=Math.floor(((G/I)*100));var D=B.sbar.getWidth();if(G!=-1){var E=Math.floor((D/100)*H);B.updateSliderBg(E)}if(A!=0){var L=Math.floor(A-C);var F=Math.floor(L/60);var J=(L%60);this.elRuntime.update((F<10?"0"+F:F)+":"+(J<10?"0"+J:J));this.sliderField.maxValue=A;if(!this.isAdjusting){this.sliderField.setValue(C,true)}}},_processPlayerEvents:function(C,A,B){switch(C){case"unstarted":break;case"ended":if(this.task){Ext.TaskMgr.stop(this.task)}this.playButton.setIconClass("ext-ux-youtubeplayer-play");this.sliderField.resetPositions();this.sliderField.setDisabled(true);if(this.volumeField){this.volumeField.setDisabled(true)}this.playButton.setDisabled(true);this.stopButton.setDisabled(true);this.muteButton.setDisabled(true);break;case"playing":this.sliderField.setDisabled(false);if(this.volumeField){this.volumeField.setDisabled(false)}this.playButton.setIconClass("ext-ux-youtubeplayer-pause");this.playButton.setDisabled(false);this.stopButton.setDisabled(false);this.muteButton.setDisabled(false);break;case"paused":this.playButton.setIconClass("ext-ux-youtubeplayer-play");break;case"buffering":break;case"video_cued":this.mayReload=true;this.playButton.setDisabled(false);var D=this;this.task={run:function(){D._updateVideoInfo()},interval:500};Ext.TaskMgr.start(this.task);break;case"unknown":break}}});Ext.ux.YoutubePlayer.Control.SliderField=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:"input",type:"hidden"},thumbX:0,thumbY:0,initComponent:function(){Ext.ux.YoutubePlayer.Control.SliderField.superclass.initComponent.call(this);this.minValue=this.minValue||0;this.maxValue=this.maxValue||1;this.addEvents("dragstart","drag","dragend");this.on("resize",this.onResize,this)},onResize:function(){this.adjustPixelMax()},adjustPixelMax:function(){if(!this.sbar){return }var B=this.sbar.getBox();var A=this.sthumb.getBox();if(this.vertical===true){this.pixelMax=B.height-A.height}else{this.pixelMax=B.width-A.width}},onRender:function(B,A){Ext.ux.YoutubePlayer.Control.SliderField.superclass.onRender.call(this,B,A);this.sbar=Ext.DomHelper.append(B,{tag:"div",cls:"ext-ux-youtubeplayer-slider-"+(this.vertical===true?"v":"h")+"bar"},true);this.sthumb=Ext.DomHelper.append(B,{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"ext-ux-youtubeplayer-slider-"+(this.vertical===true?"v":"")+"thumb"},true);this.sthumb.addClassOnOver("ext-ux-youtubeplayer-slider-"+(this.vertical===true?"v":"")+"thumb-over");this.setValue(this.getValue()||this.minValue)},afterRender:function(){Ext.ux.YoutubePlayer.Control.SliderField.superclass.afterRender.call(this);if(this.vertical===true){this.sbar.setHeight(parseInt(this.el.dom.style.height,10))}else{var A=parseInt(this.el.dom.style.width,10);if(!isNaN){this.sbar.setWidth(A)}}this.thumbX=parseInt(this.sthumb.getStyle("left"));this.thumbY=parseInt(this.sthumb.getStyle("bottom"));this.dd=new Ext.dd.DD(this.sthumb.id,"slider-"+this.sthumb.id,{constrainX:!this.vertical,constrainY:this.vertical});this.dd.slider=this;this.dd.onDrag=this.onDrag;this.dd.startDrag=this.startDrag;this.dd.endDrag=this.endDrag;if(this.disabled){this.dd.lock()}},updateSliderBg:function(A){this.sbar.dom.style.backgroundPosition="-"+(1280-A)+"px 0"},setValue:function(D,C){Ext.ux.YoutubePlayer.Control.SliderField.superclass.setValue.call(this,D);if(C===true){if(!this.pixelMax){this.adjustPixelMax()}var B=this.minValue;var A=this.maxValue;if(this.vertical===true){this.dd.getEl().style.bottom=(Math.floor((D*this.pixelMax)/(B+(A-B)))+this.thumbY)+"px"}else{this.dd.getEl().style.left=Math.floor((D*this.pixelMax)/(B+(A-B)))+"px"}}},resetPositions:function(){this.sthumb.dom.style.left="0px";this.sbar.dom.style.backgroundPosition="-1280px 0"},onDisable:function(){Ext.ux.YoutubePlayer.Control.SliderField.superclass.onDisable.call(this);this.sbar.addClass(this.disabledClass);this.sthumb.addClass(this.disabledClass);this.dd.lock()},onEnable:function(){Ext.ux.YoutubePlayer.Control.SliderField.superclass.onEnable.call(this);this.sbar.removeClass(this.disabledClass);this.sthumb.removeClass(this.disabledClass);this.dd.unlock()},startDrag:function(A,E){var C=this.slider;var D=C.sbar.getBox();var B=C.sthumb.getBox();this.resetConstraints();if(!C.pixelMax){C.adjustPixelMax()}if(this.slider.vertical===true){this.setXConstraint(0,0);this.setYConstraint(B.y-D.y+1,D.y+D.height-B.y-B.height-1)}else{this.setYConstraint(0,0);this.setXConstraint(B.x-D.x+1,D.x+D.width-B.x-B.width-1)}this.slider.fireEvent("dragstart")},endDrag:function(A){this.slider.fireEvent("dragend")},onDrag:function(D){var B=this.slider.minValue;var A=this.slider.maxValue;if(this.slider.vertical===true){var C=Math.abs(parseInt(this.getEl().style.top,10))-this.slider.thumbY;this.slider.setValue(B+(A-B)*C/this.slider.pixelMax)}else{var C=parseInt(this.getEl().style.left,10);this.slider.setValue(B+(A-B)*C/this.slider.pixelMax)}this.slider.fireEvent("drag")}});
