/*
 * @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(d,a,b){switch(d){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 e=this;this.task={run:function(){e._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")}});
