Mediasite.namespace("MediaPlayer"),Mediasite.namespace("MediaPlayer.Views"),Mediasite.MediaPlayer.ModelHtml5Dash=function(n){function isLivePresentation(){return!!dt}function detectFullScreen(n){e.Debug("Detecting fullscreen functionality..."),a=!1,typeof n.requestFullScreen=="function"?s=function(){try{return n.requestFullScreen(),!0}catch(t){e.Error("Fullscreen error",t)}}:typeof n.webkitEnterFullScreen=="function"?isLivePresentation()&&Mediasite.BrowserDetect.Android()?e.Debug("... not supporting fullscreen on Android for live stream"):s=function(){try{return n.webkitEnterFullScreen(),!0}catch(t){e.Error("Fullscreen error",t)}}:typeof n.mozFullScreen=="function"&&(s=function(){try{return document.mozRequestFullScreen(),!0}catch(n){e.Error("Fullscreen error",n)}}),typeof s=="function"&&(a=!0),e.Debug("... can fullscreen: "+a,s&&s.toString())}function resetLiveMediaElement(){nt=!0;var n=i.GetVolume(),u=i.IsMuted();t.reset(),t.attachView(r),t.attachSource(ii),i.SetVolume(n),u&&i.Mute(),c&&i.SetVolume(0)}function reconnectOnLiveMediaOpenFailure(){resetLiveMediaElement()}function raiseMediaError(n){l.handleMediaError(n,!0),u.fire(f.MediaError,n)}function updateBitrate(n){l.handleBitrateChange(n)}function handleDashPlaybackError(){y.HandleLiveMediaOpenFailure(reconnectOnLiveMediaOpenFailure)||(e.Error("DASH.JS ERROR: PLAYBACK_ERROR"),raiseMediaError(Mediasite.Player.Localization.MediaPlayer.GeneralError))}function handleDashError(n){if(!y.HandleLiveMediaOpenFailure(reconnectOnLiveMediaOpenFailure)){var t;t=n.error==="download"?Mediasite.Player.Localization.MediaPlayer.AdaptiveStreamingNetworkError:Mediasite.Player.Localization.MediaPlayer.GeneralError,e.Error("DASH.JS ERROR ("+n.error+")"),raiseMediaError(t)}}function reportStateChanged(n){w=n,u.fire(f.StateChanged,n)}function handleMediaEvent(s){var c=dashjs.MediaPlayer.events,vt,v,ot,ct,it,dt,a,yt,pt,wt;if(s.type==="loadstart"&&(et=!0,d.MediaLoadStart(),reportStateChanged(Mediasite.Player.MediaState.Opening),u.fire(f.MediaLoadStart)),s.type==="stalled"&&Mediasite.BrowserDetect.Chrome()&&!Mediasite.BrowserDetect.ChromeAndroid()&&r&&r.readyState===r.HAVE_NOTHING&&(vt=n.pluginMimeType,v=selectMediaSourceByMimeType(st,vt),canUniquifyMediaUrl(v))){v=uniquifyMediaUrl(v),setVideoElementSource(o,v,vt);return}et&&(s.type===c.CAN_PLAY||s.type==="suspend"||s.type==="stalled")&&(n.isMobile&&(w=Mediasite.Player.MediaState.Ready,reportStateChanged(w)),Mediasite.BrowserDetect.Android()&&(clearTimeout(lt),lt=setTimeout(function(){r.play()},200)),et=!1),ot=!1,(s.type==="loadeddata"||s.type==="durationchange")&&(ot=at()),(s.type==="loadeddata"||s.type===c.CAN_PLAY&&Mediasite.BrowserDetect.IOS6()||s.type==="durationchange"&&Mediasite.BrowserDetect.Android())&&(ct=isLivePresentation(),it=!1,ct?it=!0:r.duration>1&&r.duration!=100&&r.duration!=Infinity&&(it=!0),e.Debug("Attempting to load media metadata.","Live status? "+(ct?"live":"on-demand"),"Media? "+(it?"ready":"not ready"),"media duration: "+r.duration),(ot||!b)&&it&&(a=getMediaInfo(r),d.UpdateMediaInfo(a),b||(b=!0,i.SetVolume(gt),dt=Mediasite.BrowserDetect.IOS6(),dt&&!ct?o.bind("progress",function(){o.unbind("progress"),u.fire(f.MediaLoaded,a)}):u.fire(f.MediaLoaded,a)))),s.type==="durationchange"&&Mediasite.BrowserDetect.Android()&&b&&ot&&(a=getMediaInfo(),u.fire(f.MediaUpdated,a));switch(s.type){case c.CAN_PLAY:nt&&(t.play(),nt=!1);break;case"volumechange":yt=0,r.muted||(yt=Math.round(i.GetVolume())),u.fire(f.VolumeChanged,yt);break;case c.PLAYBACK_RATE_CHANGED:pt={Min:p[0],Max:p[p.length-1],Current:Math.round(i.GetPlaybackRate()*100)/100,Rates:k.extend([],p)},e.Debug("Playback rate now "+pt.Current),u.fire(f.PlaybackRateChanged,pt);break;case c.PLAYBACK_PLAYING:r.playbackRate=rt,y.setMediaState(Mediasite.Player.MediaState.Playing),reportStateChanged(Mediasite.Player.MediaState.Playing),g&&(u.fire(f.PositionChanged,ht,!0),g=!1),ft=!1,kt++;break;case c.PLAYBACK_PAUSED:u.fire(f.PositionChanged,i.GetPosition()),isLivePresentation()?reportStateChanged(Mediasite.Player.MediaState.Stopped):reportStateChanged(Mediasite.Player.MediaState.Paused);break;case c.PLAYBACK_SEEKING:u.fire(f.SeekStarting);break;case c.PLAYBACK_SEEKED:u.fire(f.SeekEnding),ft=!1,ut?ut=!1:h=i.GetPosition();break;case c.PLAYBACK_TIME_UPDATED:if(ft)return;if(wt=i.GetPosition(),n.isMainStream){var ri=new Date,bt=ri-ti,ii=bt*rt,ni=h+ii,ui=Math.abs(wt-ni);if(h>0&&bt<5e3&&ui>5e3)return}g||u.fire(f.PositionChanged,wt,!0);break;case c.PLAYBACK_ENDED:l.handleMediaEnded(isLivePresentation()),u.fire(f.PositionChanged,i.GetPosition()),i.Pause(),tt=!0,u.fire(f.PositionChanged,0),reportStateChanged(Mediasite.Player.MediaState.MediaEnded)}}function getMediaInfo(){var t,u;e.Debug("Loading media metadata ..."),t=isLivePresentation(),u=!(t||Mediasite.BrowserDetect.IOS()||Mediasite.BrowserDetect.Android()),detectFullScreen(r);var f=getAspectRatio(),s=i.GetDuration(),o={AspectRatio:f,AudioOnly:f<=0,Duration:s,CanChangeSpeed:u,CanFullScreen:a,CurrentLanguageIndex:0,Languages:{},StreamType:n.streamType,IsMainStream:n.isMainStream};return e.Debug("... finished loading media metadata.",o),o}function getAspectRatio(){var n,i=t.getBitrateInfoListFor("video"),r=i&&i.length>0;return r?(n=i[i.length-1],n.height==0||n.width==0)?0:n.width/n.height:0}function getNextPlaybackRate(n,t){var u,r,f;return n=n!==!1,t=t!==!1,u=Math.round(i.GetPlaybackRate()*100)/100,r=k.extend([],p),r.length==0&&(r=[1]),f=n?1:-1,r.sort(function(n,t){return f*(n-t)}),t&&0>=f*(r[r.length-1]-u)?u=r[0]:k.each(r,function(n,t){if(0>=f*(t-u)&&0r.length-1)?0:r[i].bitrate}function checkForBitrateChange(){var n=-1,i=-1,r=0,u=0,f=0;t&&t.getQualityFor&&(n=t.getQualityFor("video"),i=t.getQualityFor("audio"),t&&t.isPaused()&&(n=-1,i=-1),(pt!=n||ni!=i)&&(pt=n,ni=i,r=bitrateForTypeAndLevel("video",n),u=bitrateForTypeAndLevel("audio",i),f=r+u,updateBitrate(f),e.Info("Media quality changed. -- v:"+n+" + a:"+i+" (bitrate v:"+r+" + a:"+u+" = "+f+")")))}function setVideoElementSource(n,t,u){l.handleMediaSourceLoading(t,r),i.setVideoElementSourceFunction(n,t,u),ii=t,e.Info("Media element source added",u,t)}function makeConvivaConfig(t){var i={streamType:t.streamType,pluginMimeType:t.pluginMimeType,streamUrl:n.selectedVideoSource.Location,mediaPlayerType:t.mediaPlayerType};return t.getConvivaConfiguration(i)}function canUniquifyMediaUrl(){return itvt)throw{name:"ExcessiveMediaUrlUniquifications",message:"The maximum number of media URL uniquification attempts has been exceeded."};return t=it,n+r+i+"="+t}function touchThePublishingPoint(n,t,i){e.Debug("Kicking the HLS publishing point to make sure it is awake.");var r=k(""),u=r.get(0);setVideoElementSource(r,n,t),u.load(),window.setTimeout(function(){u.pause(),r.remove(),r=null,u=null,i()},1e3)}function getPosition(){return isLivePresentation()?r.currentTime*1e3:t.time()*1e3+li}var k=jQuery,i=this,ri={2:18,4:28,6:38,8:48,10:58},ui=(n.selectedVideoSource.SegmentLength||0)/1e3,ei=Mediasite.MediaPlayer.calculateLiveStartUnsafeWindow(ri,ui),o,r,st,ii,b=!1,oi=1,p=n.playbackRates,vi=3e3,hi=1e4,h=0,ti=new Date,ut=!1,si=-500,ot=!1,gt=100,et=!1,dt,li=0,ft=!1,kt=0,bt=!1,wt=0,yi=200*1.05,rt=1,a,s,nt=!1,pt=-1,ni=-1,ht=0,g=!1,tt=!1,it=0,vt=4,ai={position:0,savedAt:0},pi={position:0,savedAt:0},e=Mediasite.Logging.LoggerFactory("Media Html5Dash:"+n.streamType,{separator:"\n  "}),y=new Mediasite.MediaPlayer.LiveMediaOpenReconnector,ci=makeConvivaConfig(n),l=Mediasite.Player.Conviva.createConvivaTracker(),u,f,d,w,ct,t,c,fi,lt,at,v,yt;l.configure(ci),u=new Mediasite.Player.EventBundle,f=Mediasite.MediaPlayer.ModelEvent,this.GetMediaWrapper=function(){return ct},this.SupportsPlayAsVideo=function(){return!0},c=n.disableVolume==undefined?!1:n.disableVolume,this.AddEventHandler=function(n,t){u.addHandler(n,t)},fi=1e4,at=function(){var n,t;return function(){var i=!1,u=r.duration,f=r.videoWidth/r.videoHeight;return i=i||u!=n||f!=t,n=u,t=f,i}}(),yt=function(){function handleFullscreenTimeEvents(i){switch(i.type){case"webkitendfullscreen":u.fire(f.PositionChanged,v),n=!1;break;case"webkitbeginfullscreen":n=!0,t=!1,v=getPosition();return;case"seeked":n&&(t=!0);break;case"timeupdate":if(n){var r=getPosition();(r>0||t)&&(v=r),t=!1}else v=!1}}var n,t;return handleFullscreenTimeEvents}(),this.SetupMediaElement=function(t){var c,l,s,h,e;for(t=[n.selectedVideoSource],c=+new Date-wt,l=c<2e3,d=k.extend(new Mediasite.MediaPlayer.BaseView,new Mediasite.MediaPlayer.Html5View(n)),o=d.CreateMediaElement(),ct=d.Wrapper,r=o.get(0),st=t,Mediasite.BrowserDetect.Android()&&r.setAttribute("preload","none"),Mediasite.BrowserDetect.IOS()&&o.bind("webkitbeginfullscreen webkitendfullscreen seeked timeupdate",yt),o.bind("stalled canplaythrough emptied suspend waiting abort loadstart play loadeddata durationchange volumechange",handleMediaEvent),o.bind("playCoverPressed",function(){i.Play()}),o.bind("contextmenu",function(){return!1}),e=0;e=0&&n<=i.GetDuration()&&t.time()!=r&&(tt=!1,t.seek(r),u.fire(f.PositionChanged,n))},this.PlayDefaultRate=function(){var n=oi;i.SetPlaybackRate(n)},this.PlayFaster=function(n){n=n===!0;var t=getNextPlaybackRate(!0,n);i.SetPlaybackRate(t)},this.PlaySlower=function(n){n=n===!0;var t=getNextPlaybackRate(!1,n);i.SetPlaybackRate(t)},this.SkipBack=function(){var n=i.GetPosition()-vi;n<0&&(n=0),i.SetPosition(n)},this.SkipForward=function(){var n=i.GetPosition()+hi;n0){resetLiveMediaElement();return}tt&&(i.SetPosition(0),tt=!1),ht=i.GetPosition(),w!==Mediasite.Player.MediaState.Playing&&(g=!0),u.fire(f.PositionChanged,ht,!0);var n=i.GetPlaybackRate();t.play(),i.GetPlaybackRate()!=n&&i.SetPlaybackRate(n)}},this.Stop=function(){t.pause(),reportStateChanged(Mediasite.Player.MediaState.Stopped)},this.FinalizeLive=function(){i.Stop(),t.reset(),t.attachView(r)},this.GetPosition=function(){var n=getPosition(),t;return(v&&n===0&&(n=v),n.2?this.SetVolume((t.getVolume()-.2)*100):this.SetVolume(0))},this.ToggleMute=function(){c||(i.IsMuted()?i.UnMute():i.Mute())},this.Mute=function(){t.setMute(!0),i.IsMuted()&&u.fire(f.VolumeChanged,0)},this.UnMute=function(){c||(t.setMute(!1),i.GetVolume()===0?this.SetVolume(50):u.fire(f.VolumeChanged,Math.round(i.GetVolume())))},this.IsMuted=function(){return t.isMuted()},this.TogglePlayPause=function(){t.isPaused()||!isLivePresentation()&&r.ended?i.Play():i.Pause()},this.SetPlaybackRate=function(n){rt=n,r&&(r.playbackRate=n)},this.GetPlaybackRate=function(){return r.playbackRate},this.GetVideoWidth=function(){return r.videoWidth},this.SetLiveStartTime=function(n){dt=n,wt=+new Date,y.setLiveStartTime(n)},this.RetrieveBookmark=function(n){ai=n}}