//---------------------------------------------------------- // Copyright (C) Microsoft Corporation. All rights reserved. //---------------------------------------------------------- // SilverlightMedia.js Type.registerNamespace("Sys.UI.Silverlight");Sys.UI.Silverlight._DomElement=function(a,b){this._element=a;this._visible=!!b;this._bindAutoAnimations(a,a.Name)};Sys.UI.Silverlight._DomElement.prototype={_events:null,_animations:null,_enabled:true,_mouseOver:false,get_element:function(){return this._element},get_enabled:function(){return this._enabled},set_enabled:function(a){if(a!==this.get_enabled()){this._enabled=a;this._play(a?"enable":"disable");if(!a&&this._mouseOver){this._play("leave");this._mouseOver=false}}},get_visible:function(){return this._visible},set_visible:function(a){if(a!==this.get_visible()){this._visible=a;if(!this._play(a?"show":"hide"))this.get_element().visibility=a?0:1}},_bindAutoAnimations:function(b,a){this._animations={"show":b.findName(a+"_Show"),"hide":b.findName(a+"_Hide"),"enable":b.findName(a+"_Enable"),"disable":b.findName(a+"_Disable"),"leave":b.findName(a+"_MouseLeave")};if(this._animations["leave"]){this.bindEvent("mouseEnter",a+"_MouseEnter",this._onEnter);this.bindEvent("mouseLeave",a+"_MouseLeave",this._onLeave)}},bindEvent:function(d,c,a,g){var e=this.get_element(),b=null;if(c)b=e.findName(c);if(!b&&!a)return;if(a)a=Function.createDelegate(g||this,a);var f=this._createEventHandler(b,a),h=e.addEventListener(d,f);if(!this._events)this._events=[];this._events[this._events.length]={eventName:d,token:h,handler:f}},_createEventHandler:function(a,b){return Function.createDelegate(this,function(c,d){if(!this.get_enabled())return;if(b&&!b(c,d))return;if(a)a.begin()})},dispose:function(){if(this._events){var c=this.get_element();for(var a=0,d=this._events.length;a=a.height;var c=a.findName(d);Sys.UI.Silverlight._Slider.initializeBase(this,[a,f]);this._changedHandler=b?Function.createDelegate(b,e):null;a.cursor="Hand";c.cursor="Hand";this._thumb=new Sys.UI.Silverlight._DomElement(c,true);this._thumb.bindEvent("mouseLeftButtonDown",null,this._thumbDown,this);this._thumb.bindEvent("mouseLeftButtonUp",null,this._thumbUp,this);this._thumb.bindEvent("mouseMove",null,this._thumbMove,this);this.bindEvent("mouseLeftButtonDown",null,this._sliderDown);var g=a.getHost().content.root;this._rootToken=g.addEventListener("mouseLeave",Function.createDelegate(this,this._thumbUp))};Sys.UI.Silverlight._Slider.prototype={_readOnly:false,_dragging:false,_last:null,set_enabled:function(a){if(this.get_enabled()!==a){Sys.UI.Silverlight._Slider.callBaseMethod(this,"set_enabled",[a]);if(!a)this.set_value(0);this.get_element().cursor=a?"Hand":"Default";if(this._highlight)this._highlight.set_visible(a);this._thumb.set_visible(a);this._thumb.get_element().cursor=a?"Hand":"Default"}},get_readOnly:function(){return this._readOnly},set_readOnly:function(a){if(a!==this._readOnly){this._readOnly=a;this._stopDragging()}},get_value:function(){var a,c=this._thumb.get_element(),b=this.get_element();if(this._horizontal)a=(c["Canvas.Left"]-b["Canvas.Left"])/(b.width-c.width);else{a=c["Canvas.Top"]-b["Canvas.Top"];a=1-a/(b.height-c.height)}a=Math.round(a*1000)/1000;return Math.min(1,Math.max(0,a))},set_value:function(a){this._last=null;if(!this._dragging){a=Math.max(0,Math.min(1,a));this._setThumbPosition(a)}},_bindAutoAnimations:function(b,c){Sys.UI.Silverlight._Slider.callBaseMethod(this,"_bindAutoAnimations",[b,c]);var a=b.findName(c+"_Highlight");if(a){a[this._horizontal?"width":"height"]=0;this._highlight=new Sys.UI.Silverlight._DomElement(a,true)}else this._highlight=null},_detectChanged:function(a){if(a!==this._last&&this._changedHandler){this._last=a;this._changedHandler(this)}},dispose:function(){if(this._thumb){this._thumb.dispose();this._thumb=null}if(this._highlight){this._highlight.dispose();this._highlight=null}if(this._rootToken!==null){this.get_element().getHost().content.root.removeEventListener("mouseLeave",this._rootToken);this._rootToken=null}Sys.UI.Silverlight._Slider.callBaseMethod(this,"dispose")},_setThumbPosition:function(e){var b=this._toLocation(e),a=this._thumb.get_element(),d=this.get_element(),c=this._highlight?this._highlight.get_element():null;if(this._horizontal){a["Canvas.Left"]=b+d["Canvas.Left"]-a.width/2;if(c)c.width=b}else{a["Canvas.Top"]=b+d["Canvas.Top"]-a.height/2;if(c){c["Canvas.Top"]=d["Canvas.Top"]+b;c.height=d.height-b+a.height/2}}},_sliderDown:function(c,b){if(this._readOnly)return false;var a=this._toValue(b.getPosition(c));this._setThumbPosition(a);this._detectChanged(a);this._startDragging();return true},_startDragging:function(){this._dragging=true;this._thumb.get_element().CaptureMouse()},_stopDragging:function(){if(this._dragging){this._thumb.get_element().ReleaseMouseCapture();this._dragging=false}},_thumbDown:function(){if(this._readOnly)return false;this._startDragging();return true},_thumbUp:function(){if(this._readOnly)return false;if(this._dragging)this._detectChanged(this.get_value());this._stopDragging();return true},_thumbMove:function(b,a){if(this._dragging)this._setThumbPosition(this._toValue(a.getPosition(this.get_element())));return true},_toLocation:function(c){c=Math.min(1,Math.max(0,c));var b=this._thumb.get_element(),d=this.get_element(),a;if(this._horizontal){a=d.width-b.width;return b.width/2+c*a}else{a=d.height-b.height;return b.height/2+(1-c)*a}},_toValue:function(d){var a,b=this._thumb.get_element(),c=this.get_element();if(this._horizontal)a=(d.X-b.width/2)/(c.width-b.width);else{a=(d.Y-b.height/2)/(c.height-b.height);a=1-a}a=Math.round(a*1000)/1000;return Math.min(1,Math.max(0,a))}};Sys.UI.Silverlight._Slider.registerClass("Sys.UI.Silverlight._Slider",Sys.UI.Silverlight._DomElement);Sys.UI.Silverlight._TextBlock=function(b,a,c){Sys.UI.Silverlight._TextBlock.initializeBase(this,[b,c]);if(a){this._bg=new Sys.UI.Silverlight._DomElement(a,c);this._centerX=a["Canvas.Left"]+a.width/2;this._bottomY=a["Canvas.Top"]+a.height}else{this._bg=null;this._centerX=b["Canvas.Left"]+b.ActualWidth/2;this._bottomY=b["Canvas.Top"]+b.ActualHeight}};Sys.UI.Silverlight._TextBlock.prototype={get_text:function(){return this.get_element().Text||""},set_text:function(c){var b=this.get_element();b.Text=c||"";this.set_visible(!!c);var a=this._bg?this._bg.get_element():b;a.width=b.ActualWidth;a.height=b.ActualHeight;a["Canvas.Left"]=this._centerX-a.width/2;a["Canvas.Top"]=this._bottomY-a.height},set_visible:function(a){Sys.UI.Silverlight._TextBlock.callBaseMethod(this,"set_visible",[a]);if(this._bg)this._bg.set_visible(a)},dispose:function(){Sys.UI.Silverlight._TextBlock.callBaseMethod(this,"dispose");if(this._bg)this._bg.dispose()}};Sys.UI.Silverlight._TextBlock.registerClass("Sys.UI.Silverlight._TextBlock",Sys.UI.Silverlight._DomElement);Sys.UI.Silverlight._ProgressBar=function(a,b,c){Sys.UI.Silverlight._ProgressBar.initializeBase(this,[a,c]);this._fullWidth=a.width;a.width=0;if(b){this._text=new Sys.UI.Silverlight._TextBlock(b,null,c);this._text.set_text("")}else this._text=null};Sys.UI.Silverlight._ProgressBar.prototype={get_value:function(){var a=this._fullWidth!==0?this.get_element().width/this._fullWidth:0;return Math.round(a*1000)/1000},set_value:function(a){this.get_element().width=this._fullWidth*a;if(this._text)this._text.set_text(""+Math.floor(a*100))},set_visible:function(a){Sys.UI.Silverlight._ProgressBar.callBaseMethod(this,"set_visible",[a]);if(this._text)this._text.set_visible(a)},dispose:function(){Sys.UI.Silverlight._ProgressBar.callBaseMethod(this,"dispose");if(this._text)this._text.dispose()}};Sys.UI.Silverlight._ProgressBar.registerClass("Sys.UI.Silverlight._ProgressBar",Sys.UI.Silverlight._DomElement);Sys.UI.Silverlight._ImageList=function(a,b,c,d,e){this._horizontal=a&&a.width>=a.height;this._reference=this._horizontal?"Canvas.Left":"Canvas.Top";Sys.UI.Silverlight._ImageList.initializeBase(this,[a,c]);this._toggle=b?new Sys.UI.Silverlight._Button(b,c,0,this._onToggle,null,this):null;this._itemClickDelegate=Function.createDelegate(e,d);this._virtualItems=[];this._imageItems=[]};Sys.UI.Silverlight._ImageList.prototype={_next:null,_previous:null,_scrollAnimation:null,_scrollStoryboard:null,_itemSize:0,_itemSpacing:0,_canActivate:true,_active:false,_scrollOffset:0,_overflowIndex:0,get_active:function(){return this._active},set_active:function(a){if(a!==this.get_active()){this._active=a;this.get_element().visibility=a?0:1;if(this._toggle)this._toggle.set_visible(a);if(a){if(!this._toggle)this.get_element().IsHitTestVisible=true}else this.set_visible(false)}},get_canActivate:function(){return this._canActivate},set_canActivate:function(a){if(a!==this.get_canActivate()){this._canActivate=a;this._ensureActivation()}},get_items:function(){return this._virtualItems},set_items:function(a){this._virtualItems=a||[];this._imageItems=[];if(a)for(var b=0,c=a.length;b0){var b=this._items[0].button.get_element();this._itemSize=this._horizontal?b.width:b.height;this._itemSpacing=b[this._reference]*2}},dispose:function(){if(this._next)this._next.dispose();if(this._previous)this._previous.dispose();if(this._toggle)this._toggle.dispose();for(var b=0,c=this._items.length;b=this._items.length)this._overflowIndex=0},_itemClick:function(b){var a=b._imageIndex;if(a!==null)this._itemClickDelegate(this._imageItems[a])},_onToggle:function(){this.set_visible(!this.get_visible())},_reset:function(){var c=this._scrollOffset;this._scrollOffset=0;for(var a=0,d=this._items.length;a0)this._scroll(-1)}};Sys.UI.Silverlight._ImageList.registerClass("Sys.UI.Silverlight._ImageList",Sys.UI.Silverlight._DomElement);Sys.UI.Silverlight.MarkerEventArgs=function(a){this._marker=a;Sys.UI.Silverlight.MarkerEventArgs.initializeBase(this)};Sys.UI.Silverlight.MarkerEventArgs.prototype={get_marker:function(){return this._marker||null}};Sys.UI.Silverlight.MarkerEventArgs.registerClass("Sys.UI.Silverlight.MarkerEventArgs",Sys.EventArgs);Sys.UI.Silverlight.MediaChapterEventArgs=function(a){this._chapter=a;Sys.UI.Silverlight.MediaChapterEventArgs.initializeBase(this)};Sys.UI.Silverlight.MediaChapterEventArgs.prototype={get_chapter:function(){return this._chapter||null}};Sys.UI.Silverlight.MediaChapterEventArgs.registerClass("Sys.UI.Silverlight.MediaChapterEventArgs",Sys.CancelEventArgs);Sys.UI.Silverlight.MediaChapter=function(c,b,a){this._title=c;this._position=b;this._thumbnailSource=a;Sys.UI.Silverlight.MediaChapter.initializeBase(this)};Sys.UI.Silverlight.MediaChapter.prototype={get_position:function(){return this._position},get_thumbnailSource:function(){return this._thumbnailSource||""},get_title:function(){return this._title||""}};Sys.UI.Silverlight.MediaChapter._createChapters=function(){var b=[];for(var a=0,c=arguments.length;a=this._timeline.length?Infinity:this._timeline[this._chapterStarted+1];if(ac)this._ensureChapterStarted(false,a)},_enableBuffering:function(b){var a=b!==null&&b<100;if(a)this._setProperties("text",["BufferingText"],Math.floor(b).toString());this._setProperties("visible",["BufferingText","BufferingArea"],a);var c=this._bufferingStoryboard;if(!c)return;if(!a){c.stop();this._bufferPlaying=false}else if(!this._bufferPlaying){c.begin();this._bufferPlaying=true}},_ensureCaption:function(){var b=this._toggledCaptions&&this.get_enableCaptions(),a=b?this.get_caption():"";this._setProperties("text",["CaptionText","FullScreenCaptionText"],a);if(a)this._setProperties("visible",["CaptionToggleButton"],true)},_ensureChapterStarted:function(c,b){if(!this._me)return;if(!b)b=this.get_position();var a=this._canSeek?this._getChapterAt(b):-1;if(c&&(a!==-1||a!==this._chapterStarted)||a!==this._chapterStarted)this._raiseChapterStarted(a)},_ensureLoaded:function(){if(!this._loaded)throw Error.invalidOperation(Sys.UI.Silverlight.MediaRes.silverlightNotLoaded)},_ensureMedia:function(){var b=this._mediaAvailable,a=this._duration>0,c=a&&this._canSeek,f=this.get_autoPlay()||this.get_autoLoad(),e=!!this.get_mediaSource(),h=!this._children["StartButton"]&&!f&&e;this._setProperties("canActivate",["ChapterArea"],c);this._setProperties("readOnly",["TimeSlider"],!c);this._setProperties("enabled",["TimeSlider"],a);this._setProperties("visible",["TotalTimeText","CurrentTimeText"],a);this._setProperties("enabled",["PreviousButton","NextButton"],c);this._setProperties("enabled",["PauseButton","StopButton"],b);this._setProperties("enabled",["PlayPauseButton","PlayButton"],b||h);var d=this._children["StartButton"];if(d){var g=!b&&!f&&e;d.set_visible(g);d.get_element().IsHitTestVisible=g}if(a)this._setProperties("text",["TotalTimeText"],this._formatTime(this._duration))},_ensurePosition:function(a){if(this._duration){a=a||this.get_position();this._setProperties("text",["CurrentTimeText"],this._formatTime(a));this._setProperties("value",["TimeSlider"],a/this._duration)}},_formatTime:function(e){var a=Math.floor(e/60/60),b=Math.floor(e/60)-a*60,c=Math.floor(e)-b*60-a*60*60,d="";if(a){a="0"+a;d=a.substr(a.length-2,2)+":"}b="0"+b;d+=b.substr(b.length-2,2)+":";c="0"+c;d+=c.substr(c.length-2,2);return d},_getChapterAt:function(b){for(var a=0,c=this._timeline.length;a<=c;a++)if(a===this._timeline.length||this._timeline[a]-.001>b)return a-1},_loadPlaceholder:function(){var b=this.get_placeholderSource(),a=this._children["PlaceholderImage"];if(a&&b){a.get_element().source=b;a.set_visible(true)}},_meBufferingProgress:function(){if(!this._me)return;var a=Math.round(this._me.bufferingProgress*100);this._enableBuffering(a)},_mediaQueued:function(){return !this.get_autoPlay()&&!this.get_autoLoad()&&!this._me.source&&this.get_mediaSource()},_meDoubleClick:function(){if(!this._me)return;this._onTogglePlayPause();this._onToggleFullScreen()},_meDownloadProgress:function(){if(!this._me)return;this._enableBuffering(null);this._setProperties("value",["DownloadProgressSlider"],this._me.downloadProgress)},_meMarker:function(f,d){if(!this._me)return;var a=d.marker;if(this._toggledCaptions&&this.get_enableCaptions()){var e=a.type?a.type.toLowerCase():"";if(e==="caption"){var b=a.text?a.text:"";if(b.trim().length===0)b="";this.set_caption(b);this.raisePropertyChanged("caption")}}var c=new Sys.UI.Silverlight.MarkerEventArgs(a);this.onMarkerReached(c);this._raiseEvent("markerReached",c)},_meEnded:function(){if(!this._me)return;this._mediaEnded=true;this._forcePlay=false;this.onMediaEnded(Sys.EventArgs.Empty);this._raiseEvent("mediaEnded")},_meFailed:function(c,b){if(!this._me)return;this._mediaAvailable=false;this._mediaEnded=false;this._canSeek=false;this._forcePlay=false;this._duration=0;this._ensureMedia();this._enableBuffering(null);this.set_caption("");var a=new Sys.UI.Silverlight.ErrorEventArgs(b);this.onMediaFailed(a);this._raiseEvent("mediaFailed",a)},_meOpened:function(){if(!this._me)return;this._mediaEnded=false;this._mediaAvailable=true;this._canSeek=this._me.canSeek;this._duration=this._me.naturalDuration.seconds;this._me.volume=this.get_volume();this._setProperties("visible",["PlaceholderImage"],false);this.set_caption("");this._ensurePosition();this._ensureMedia();if(!this._timerCookie){this._tickTimerDelegate=Function.createDelegate(this,this._tickTimer);this._timerCookie=window.setTimeout(this._tickTimerDelegate,200)}this.onMediaOpened(Sys.EventArgs.Empty);this._raiseEvent("mediaOpened");if(this._forcePlay){this._forcePlay=false;this._me.play()}},_meState:function(){if(!this._me)return;var a=this._me.currentState;if(a==="Stopped"&&this._forcePlayOnStop){this._forcePlayOnStop=false;this._me.play()}if(a===this._oldState)return;this._oldState=a;if(a==="Closed"){this._enableBuffering(null);this._mediaAvailable=false;this._canSeek=false;this._forcePlay=false;this._duration=0;this._mediaEnded=false;this._ensureMedia();this.set_caption("")}else if(a==="Playing"||a==="Paused")this._enableBuffering(null);this._setProperties("state",["PlayPauseButton"],a==="Playing"?1:0);this.onCurrentStateChanged(Sys.EventArgs.Empty);this._raiseEvent("currentStateChanged")},_onCaptionToggle:function(){this._toggledCaptions=!this._toggledCaptions;this._ensureCaption();this._setProperties("state",["CaptionToggleButton"],this._toggledCaptions?0:1)},_onChapterClick:function(d){var b=this.get_chapters();if(d=0){var e=this._timeline[this._chapterStarted],f=this.get_position();if(f-e>1)a=this._chapterStarted;else a=this._chapterStarted-1}var c=a===-1?null:b[a],d=new Sys.UI.Silverlight.MediaChapterEventArgs(c);this.onChapterSelected(d);this._raiseEvent("chapterSelected",d);if(!d.get_cancel())if(c)this.set_currentChapter(c);else this.set_position(0)}},_onStop:function(){this.stop()},_onToggleFullScreen:function(){var a=this.get_element().content;a.FullScreen=!a.FullScreen},_onTogglePlayPause:function(){this.get_currentState()==="Playing"?this.pause():this.play()},_onTimeChanged:function(a){this.set_position(a.get_value()*this._duration)},onVolumeChanged:function(){},_onVolumeChanged:function(a){this.set_volume(a.get_value())},_onVolumeDown:function(){this.set_volume(Math.max(0,this.get_volume()-.02))},_onVolumeUp:function(){this.set_volume(Math.min(1,this.get_volume()+.02))},pause:function(){this._ensureLoaded();this._me.pause()},play:function(){this._ensureLoaded();if(this._mediaQueued()){this._forcePlay=true;this._me.source=this.get_mediaSource();var a=this._children["StartButton"];if(a){a.set_visible(false);a.get_element().IsHitTestVisible=false}}else if(this._mediaEnded){this._mediaEnded=false;this.set_caption("");this._forcePlayOnStop=true;this._me.stop()}else this._me.play()},pluginDispose:function(){if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}for(var a in this._children)this._children[a].dispose();if(this._me){this._me.stop();this._me=null}if(this._bufferingStoryboard){this._bufferingStoryboard.stop();this._bufferingStoryboard=null}Sys.UI.Silverlight.MediaPlayer.callBaseMethod(this,"pluginDispose")},_raiseChapterStarted:function(a){this._chapterStarted=a;var c=a===-1?null:this.get_chapters()[a],b=new Sys.UI.Silverlight.MediaChapterEventArgs(c);this.onChapterStarted(b);this._raiseEvent("chapterStarted",b)},_raisepluginLoaded:function(){Sys.UI.Silverlight.MediaPlayer.callBaseMethod(this,"_raisepluginLoaded");this._bindAllControls();var a=this._me;this._loadPlaceholder();a.autoPlay=this.get_autoPlay();a.isMuted=this.get_muted();this._setProperties("state",["MuteButton"],this.get_muted()?1:0);a.volume=this.get_volume();this._setProperties("value",["VolumeSlider"],this.get_volume());this._setProperties("items",["ChapterArea"],this.get_chapters());this._ensureCaption();if(this.get_mediaSource()&&(this.get_autoPlay()||this.get_autoLoad()))a.source=this.get_mediaSource();else this._ensureMedia()},_setProperties:function(e,b,d){for(var a=0,f=b.length;a