Mediasite.Player.StreamViewer=function(n){function addStateHandler(){if(e.MediaPlayerModel){var n={StateChanged:function(n){e.CurrentMediaState=n},MediaLoaded:function(n){s=n.CanChangeSpeed}};e.MediaPlayerModel.AddEventHandler(n)}}var u=Mediasite.Logging.LoggerFactory("StreamViewer:"+n.Stream.StreamType,{separator:"\n"}),t,o=new Date,e=this,r=1,s=!1,f=!0,i=[],c=2e4,h=4;this.Stream=n.Stream,this.StreamType=n.Stream.StreamType,this.IsMainStream=n.IsMainStream,this.MediaPlayerModel=n.MediaPlayerModel,this.SlideTracker=n.SlideTracker,this.StreamViewHandler=n.StreamViewHandler,this.CurrentMediaState=Mediasite.Player.MediaState.Undefined,this.CurrentTime=t?t:0,this.SetMainStreamPlaybackRate=function(n){r=n},this.SyncCurrentTime=function(e,l){var b,a,p,y,v;if(t!=e&&(this.CurrentTime=t=e,n.Stream.HasSlides()&&this.SlideTracker.UpdateCurrentSlide(t),!this.IsMainStream&&this.MediaPlayerModel&&!l)){var w=new Date,d=Math.abs(Math.round(w-o)),k=d>1e3;if(k){for(o=w;i.length&&w=h&&f&&(u.Debug("*** Forbidding playback rate tweaks"),f=!1),b=this.MediaPlayerModel.GetPosition(),a=Math.round(t-b),Math.abs(a)>=1e3?(this.MediaPlayerModel.SetPosition(t),i.length&&f&&u.Debug("Secondary stream out of sync by: "+a,"seeking to catch up")):Math.abs(a)>=100&&s&&f?(i.push(w),p=Math.min(Math.abs(a)/1e3,.2),p*=Math.abs(a)/a,y=r*(1+p),v=Math.round(100*this.MediaPlayerModel.GetPlaybackRate())/100,v!=y&&(this.MediaPlayerModel.SetPlaybackRate(y),u.Debug("Secondary stream out of sync by: "+a,"adjusting playback rate by "+p+" to "+y))):(v=Math.round(100*this.MediaPlayerModel.GetPlaybackRate())/100,v!=r&&(this.MediaPlayerModel.SetPlaybackRate(r),u.Debug("Secondary stream out of sync by: "+a,"resetting playback rate to "+r+" (currently "+v+")"))),o=new Date}}},this.Reset=function(n){this.MediaPlayerModel&&(this.MediaPlayerModel=undefined),this.SlideTracker&&(this.SlideTracker.Destroy(),this.SlideTracker=undefined),this.CurrentMediaState=Mediasite.Player.MediaState.Undefined,this.IsMainStream=!1,this.Stream=undefined,this.Stream=n.Stream,this.MediaPlayerModel=n.MediaPlayerModel,this.SlideTracker=n.SlideTracker,this.IsMainStream=n.IsMainStream,addStateHandler(),this.MediaPlayerModel&&this.MediaPlayerModel.SetPlaybackRate(n.PlaybackRate)},function(){addStateHandler()}()},Mediasite.Player.StreamOptions={VideoUrls:[],Slides:[],SlideBaseUrl:"",SlideImageFileNameTemplate:"",SlideThumbnailFileNameTemplate:"",AnonymousAllowed:!1,ThumbnailMaxHeight:100,SlidePlaybackTicketId:"",DisplayContent:Mediasite.ContentType.Video},Mediasite.Player.Stream=function(n){function updateSlides(){$.each(i.Slides,function(n,t){i.Slides[n]=$.extend({},new Mediasite.Slide,t),i.Slides[n].SetUrlProvider(i.SlideUrlProvider)})}function updateVideoUrls(){var n;$.each(i.VideoUrls,function(n,t){t.CanChangeScheme===!0&&window.location.protocol!==t.Location.toLowerCase().substr(0,window.location.protocol.length)&&(t.Location=window.location.protocol+t.Location.substr(t.Location.indexOf(":")+1))})}var t=$.extend({},Mediasite.Player.StreamOptions,n),i;this.StreamType=t.StreamType,this.IsPlaybackAudioSource=!!t.PlaybackAudioSource,this.VideoUrls=t.VideoUrls,this.Slides=t.Slides,this.AudioOnly=t.AudioOnly,this.AspectRatio=t.AspectRatio,this.Priority=t.Priority,this.ThumbnailUrl=t.ThumbnailUrl,this.LiveSlideQueue=[],this.HasSlideContent=t.HasSlideContent,this.IsMainStream=t.IsMainStream,this.DisplayContent=t.DisplayContent,this.SlideUrlProvider=new Mediasite.Player.SlideUrlProvider(t),this.HasVideo=function(){return this.VideoUrls.length>0},this.HasSlides=function(){return this.Slides.length>0||this.HasSlideContent},i=this,function(){updateSlides(),updateVideoUrls()}()},Mediasite.Player.SlideUrlProvider=function(n){var e=n.SlideBaseUrl,f=n.SlideImageFileNameTemplate,t=n.SlideThumbnailFileNameTemplate,u=n.AnonymousAllowed,i=n.ThumbnailMaxHeight,r=n.SlidePlaybackTicketId;this.GetSlideUrl=function(n,o,s){var h,c;for(n=n.toString();n.length<4;)n="0"+n;return h=f.replace(new RegExp("\\{0(\\}|:\\w+\\})","gm"),n),s&&(t!=""&&s<=i&&(h=t.replace(new RegExp("\\{0(\\}|:\\w+\\})","gm"),n)),t==""&&(h=h.replace(/\./,"_"+o+"_"+s+"."))),c=e+h,u===!1&&(c=Mediasite.Player.ImageUrlPlayticketFormatter(c,r)),c},this.GetCacheFriendlySlideUrl=function(n,t,i){var r=Mediasite.Slide.getCacheFriendlyImageSize(t,i);return r.width()>0?this.GetSlideUrl(n,r.width(),r.height()):this.GetSlideUrl(n)}},Mediasite.Player.StreamViewerEvent={SlideChange:"SlideChange",AddNewSlide:"AddNewSlide"},Mediasite.Player.SlideTracker=function(n){function getSlide(t){var i=u.GetCurrentItem(t);return i==undefined&&(i=new Mediasite.Slide(0,0,"",""),i.StreamType=n.Stream.StreamType),i}var t,i,u,r=0;this.UpdateCurrentSlide=function(u){var h=n.Stream.LiveSlideQueue,l=n.Stream.Slides,c=function(n){l.push(n),t.fire(i.AddNewSlide,n)},f,s,v,e,a,o;if(h.length>0)while(h[0]&&h[0].Time<=u)if(f=h.shift(),s=l.length+1,f.Number===s)c(f);else if(f.Number>s){for(e=s;e0)return f;return""}function detectStreams(){var r=Mediasite.BrowserDetect.Mobile(),f=0,o=0,e=!1,s=getPreferredAudioStreamType(n),t,i;$.each(n,function(n,r){r.IsMainStream=!1,r.VideoUrls.length>0&&(f==0&&(i=r),r.StreamType===s&&(t=r),f++),r.Slides.length>0&&o++,r.StreamType==Mediasite.ContentStreamType.Slide&&(e=!0)}),r?i&&(i.IsMainStream=!0):t&&(t.IsMainStream=!0),u.contentCapability==Mediasite.Player.ContentCapability.VideoAndSlides||r?$.each(n,function(n,t){return(t.DisplayContent=Mediasite.ContentType.None,t.IsMainStream)?(t.DisplayContent=Mediasite.ContentType.Video,!0):t.VideoUrls.length>0?(t.DisplayContent=t.Slides.length==0?Mediasite.ContentType.None:Mediasite.ContentType.Slide,!0):t.StreamType==Mediasite.ContentStreamType.Slide?(t.DisplayContent=Mediasite.ContentType.Slide,!0):!0}):$.each(n,function(n,t){return(t.DisplayContent=Mediasite.ContentType.None,t.VideoUrls.length)?(t.DisplayContent=Mediasite.ContentType.Video,!0):t.StreamType==Mediasite.ContentStreamType.Slide?(t.DisplayContent=Mediasite.ContentType.Slide,!0):!0})}function calculateFirstSlideAspect(n,t){var u=4/3,f=16/9,i,r;(!n.Slides||n.Slides.length<1)&&t(0),r=n.SlideUrlProvider.GetSlideUrl(1),i=new Mediasite.Player.ImageSizeProvider,i.getSize(r,function(n){var i=0;n&&n.height()>0&&(i=n.width()/n.height(),i=Math.min(Math.max(i,u),f)),t(i)})}function monitorMediaState(){if(o.MainStreamViewer){var n=o.MainStreamViewer.CurrentMediaState;$.each(o.StreamViewerCollection,function(t,i){!i.IsMainStream&&i.MediaPlayerModel&&(n==Mediasite.Player.MediaState.MediaEnded||i.CurrentMediaState==Mediasite.Player.MediaState.MediaEnded?i.MediaPlayerModel.Stop():i.CurrentMediaState!=n&&(n==Mediasite.Player.MediaState.Playing&&i.MediaPlayerModel.Play(),n==Mediasite.Player.MediaState.Paused&&i.MediaPlayerModel.Pause(),n==Mediasite.Player.MediaState.Stopped&&i.MediaPlayerModel.Stop()))})}}this.StreamViewerCollection=[],this.MainStreamViewer=undefined,this.CurrentPlaybackRate=1;var o=this,h=0,l=0,s=[],c,a=0;this.PlayAsVideo=function(t){var f=Mediasite.BrowserDetect.IOS6(),r=o.MainStreamViewer.MediaPlayerModel,i,u;if(!r.SupportsPlayAsVideo()){alert("Media element does not support Play As Video function.");return}o.ExecuteMediaPlayerModelMethod("Pause"),clearInterval(c),o.MainStreamViewer=undefined,h=0,l=0,s=[],$.each(n,function(n,i){return(i.IsMainStream=!1,i.StreamType==t)?(i.IsMainStream=!0,i.DisplayContent=Mediasite.ContentType.Video,h++,!0):(i.DisplayContent==Mediasite.ContentType.Video&&(i.DisplayContent=Mediasite.ContentType.None,i.HasSlides()&&(i.DisplayContent=Mediasite.ContentType.Slide)),!0)}),$.each(o.StreamViewerCollection,function(t,i){var u=n[t],l=i.StreamViewHandler,s,h,c;return u.DisplayContent==Mediasite.ContentType.Video&&(s=r,f||(h=s.GetMediaWrapper(),h.appendTo(i.StreamViewHandler.MediaContainer))),c={Stream:u,MediaPlayerModel:s,SlideTracker:o.CreateSlideTracker(u),IsMainStream:u.IsMainStream,PlaybackRate:o.CurrentPlaybackRate},i.Reset(c),u.IsMainStream&&(e.PlaybackOptions.StartPosition=i.CurrentTime,o.MainStreamViewer=i),l.SetDisplayContent(u.DisplayContent),!0}),c=setInterval(monitorMediaState,200),i=JSON.parse(JSON.stringify(o.MainStreamViewer.Stream.VideoUrls)),$.each(i,function(n,t){t.Location+=t.Location.indexOf("?")>0?"¶m="+ +new Date:"?param="+ +new Date}),o.MainStreamViewer.MediaPlayerModel.SetNewVideo(i,o.MainStreamViewer.Stream.StreamType),f&&(u=r.GetMediaWrapper(),u.appendTo(o.MainStreamViewer.StreamViewHandler.MediaContainer))},this.CreateMediaPlayerModel=function(n,r){var c=e,f=undefined,u,o,s;return n.DisplayContent==Mediasite.ContentType.Video&&(h++,u=$.extend({},t),u.mediaContainer=r.MediaContainer,u.disableVolume=!n.IsMainStream,u.streamType=n.StreamType,u.isMainStream=n.IsMainStream,o=new Mediasite.Player.ConvivaConfiguration.ConvivaConfigurationFactory,s=o.getPartialConvivaConfiguration(e),u.getConvivaConfiguration=o.makeGetConvivaConfiguration(s),f=Mediasite.MediaPlayer.CreateModel(u),f=$.extend({},new Mediasite.MediaPlayer.BaseModel,f),n.IsMainStream?f.AddEventHandler($.extend({},i.CommonHandlers,i.MainHandlers)):f.AddEventHandler(i.CommonHandlers)),f},this.CreateSlideTracker=function(n){var i=undefined,t;return n.HasSlides()&&(t={Stream:n,EventHandlers:r},i=new Mediasite.Player.SlideTracker(t)),i},this.ExecuteMediaPlayerModelMethod=function(n,t){var r={InactivityExceeded:"",UpdateOptions:"",SetPosition:"",RetrieveBookmark:"",SetAudioLanguage:"",SetVolume:"",ToggleMute:"",StepVolumeUp:"",StepVolumeDown:"",SkipForward:"",SkipBack:""},i=r.hasOwnProperty(n);$.each(o.StreamViewerCollection,function(r,u){(u.IsMainStream||!i)&&u.MediaPlayerModel&&u.MediaPlayerModel[n]&&(n=="SetupMediaElement"?u.MediaPlayerModel[n](u.Stream.VideoUrls):u.MediaPlayerModel[n](t))})},this.ExecuteSlideTrackerMethod=function(n,t){var i;return n=="UpdateMediaState"?$.each(o.StreamViewerCollection,function(i,r){r.SlideTracker&&r.SlideTracker[n](t)}):$.each(o.StreamViewerCollection,function(r,u){if(u.SlideTracker&&t.StreamType==u.StreamType)return i=u.SlideTracker[n](t),!1}),i},this.UpdateStreamViewerPosition=function(n,t){$.each(o.StreamViewerCollection,function(i,r){r.SyncCurrentTime(n,t)})},this.UpdateCurrentSlide=function(n){$.each(o.StreamViewerCollection,function(t,i){if(i.Stream.StreamType==n.StreamType){var r=i.Stream.SlideUrlProvider;i.Stream.AspectRatio||calculateFirstSlideAspect(i.Stream,function(n){i.Stream.AspectRatio=n,i.StreamViewHandler.SetContentAspectRatio(i.Stream.AspectRatio)}),i.StreamViewHandler.UpdateCurrentSlide(n,r)}})},this.AddNewSlide=function(n){$.each(o.StreamViewerCollection,function(t,i){if(i.Stream.StreamType==n.StreamType){var r=i.Stream.SlideUrlProvider;i.StreamViewHandler.AddNewSlide(n,r)}})},this.IsMediaLoaded=function(n){if(l++,s.push(n),l==h){var t={};return t.duration=n.Duration,u.contentCapability==Mediasite.Player.ContentCapability.VideoAndSlides?$.each(s,function(n,i){i.IsMainStream&&(t.videoInfo=i)}):t.videoInfo=s,t}return undefined},this.UpdatePlaybackRate=function(n){this.CurrentPlaybackRate=n,$.each(o.StreamViewerCollection,function(t,i){i.SetMainStreamPlaybackRate(n)})},function(){loadStreamViewers(),c=setInterval(monitorMediaState,200)}()},Mediasite.Player.StreamViewHandler=function(n){var t=function(){};this.MediaContainer=n.MediaContainer||t,this.UpdateCurrentSlide=n.UpdateCurrentSlide||t,this.AddNewSlide=n.AddNewSlide||t,this.SetDisplayContent=n.SetDisplayContent||t,this.SetContentAspectRatio=n.SetContentAspectRatio||t}