﻿// JScript File

//player state
//0 Idle
//1 starting
//2 started
//3 buffering
//4 timeinfo received
//5 playing
//6 closing
//7 closed
//8 error
//9 paused
var playerState = 0;
//0 Normal
//1 thumbnail request
//2 new thumbnail request
//3 sliding
//4 backward request
//5 backward scrolling
//6 forward request
//7 forward scrolling
var playStatus = 0;
var thumbpanelwidth = 670;

var fadeIn = null; // fade in object
var fadeOut = null; // fade out object
var onTimerTimerhandle = -1; //timer handle for regular processing
var thispos = 0; //current playing position;
var archiveOffset = 0;
var refreshThumbnailBufferFlag = true; // usually, when the player starts, the thumbnail buffer has to be reloaded. But if you click on the thumbnail to start the player, no need to reload.
var errorTimerHandle = -1; // 
var offSyncFlag = false; // thumbnail cursor and play cursor are off-sync or not.
var movethumbnailtimer = -1; // timer handler for thumbnail sliding
var resizeThumbHandler = -1; // timer for resize big thumbnails
var webCallIndex = 0;
var oldHighLightThumbnail = null;
var thumbReachEnd = false;
var timeIdRollupCC = -1;
var arrayCCItems = new Array();
var hideCCFlag = true;
var isMultiLanguage = false;
var ccButtonFlag = false;

var maxZoomLevel = 19;
var zoomLevel = 18;
var thumbnailsArray = new Array();



var rulerIntervals = new Array();
rulerIntervals[0] = 60;
rulerIntervals[1] = 300;
rulerIntervals[2] = 900;
rulerIntervals[3] = 1800;
rulerIntervals[4] = 3600;

var startIndex = 0; //shown thumbnail range start index
var endIndex = 0; //shown thumbnail range end index
var mediaDuration = 0;

var agendaThumbIndex = 0;
var speakerThumbIndex = 0;

var loadThumbnailCountPerTimer = 1; // how many thumbnails load in a timer
var loadThumbnailTimer = 100; // in milliseconds


var markInPoint;
var markOutPoint;

function PlayerInit()
{
    if (BrowserVersion == 2)
    {
        PopupMediaPlayer();
    }

    if (onTimerTimerhandle == -1 && BrowserVersion == 0)
    {
        onTimerTimerhandle = setInterval("OnTimer()", 1000);
    }
    
    if(ccLanguage == "en;fr")
        isMultiLanguage = true;
    else
        isMultiLanguage = false;

    InitPlayerLayout();
    ShowVolumn();
    SetCCFont(ccFontSize);

    if (eventType == "agenda")
        SeekAgendaScrollPosition();
    else if (eventType == "speaker")
        SeekSpeakerScrollPosition();
    StartPlayer(startPosition);
    setTimeout(LoadTreeThumbnails, 10);
}


function LoadTreeThumbnails() {
    var count = 0;
    if (typeof agendaThumbList == 'object' && typeof priorAgendaThumbList == 'object') {
        for (count = 0; count < loadThumbnailCountPerTimer; count++) {
            if (eventType == "agenda") {
                if (priorAgendaThumbList.length > agendaThumbIndex) {
                    var thumb = $get("prioragendathumb" + agendaThumbIndex);
                    if (thumb != null)
                        thumb.src = priorAgendaThumbList[agendaThumbIndex];
                    agendaThumbIndex++;
                }
                else if (agendaThumbList.length > agendaThumbIndex - priorAgendaThumbList.length) {
                    var thumb = $get("agendathumb" + (agendaThumbIndex - priorAgendaThumbList.length));
                    if (thumb != null)
                        thumb.src = agendaThumbList[agendaThumbIndex - priorAgendaThumbList.length];
                    agendaThumbIndex++;
                }
                else if (priorSpeakerThumbList.length > speakerThumbIndex) {
                    var thumb = $get("priorspeakerthumb" + speakerThumbIndex);
                    if (thumb != null)
                        thumb.src = priorSpeakerThumbList[speakerThumbIndex];
                    speakerThumbIndex++;
                }
                else if (speakerThumbList.length > speakerThumbIndex - priorSpeakerThumbList.length) {
                    var thumb = $get("speakerthumb" + (speakerThumbIndex - priorSpeakerThumbList.length));
                    if (thumb != null)
                        thumb.src = speakerThumbList[speakerThumbIndex - priorSpeakerThumbList.length];
                    speakerThumbIndex++;
                }
                else
                    return;
            }
            else {
                if (priorSpeakerThumbList.length > speakerThumbIndex) {
                    var thumb = $get("priorspeakerthumb" + speakerThumbIndex);
                    if (thumb != null)
                        thumb.src = priorSpeakerThumbList[speakerThumbIndex];
                    speakerThumbIndex++;
                }
                else if (speakerThumbList.length > speakerThumbIndex - priorSpeakerThumbList.length) {
                    var thumb = $get("speakerthumb" + (speakerThumbIndex - priorSpeakerThumbList.length));
                    if (thumb != null)
                        thumb.src = speakerThumbList[speakerThumbIndex - priorSpeakerThumbList.length];
                    speakerThumbIndex++;
                }
                else if (priorAgendaThumbList.length > agendaThumbIndex) {
                    var thumb = $get("prioragendathumb" + agendaThumbIndex);
                    if (thumb != null)
                        thumb.src = priorAgendaThumbList[agendaThumbIndex];
                    agendaThumbIndex++;
                }
                else if (agendaThumbList.length > agendaThumbIndex - priorAgendaThumbList.length) {
                    var thumb = $get("agendathumb" + (agendaThumbIndex - priorAgendaThumbList.length));
                    if (thumb != null)
                        thumb.src = agendaThumbList[agendaThumbIndex - priorAgendaThumbList.length];
                    agendaThumbIndex++;
                }
                else
                    return;
            }
        }
        setTimeout(LoadTreeThumbnails, loadThumbnailTimer);
    }
}

function PopupMediaPlayer()
{
    window.open("PopupPlayer.aspx?url=" + streamUrl,null,
    "height=100,width=200,status=yes,toolbar=no,menubar=no,location=no");
}

var displayThumbnail = false;
function InitPlayerLayout() {

    if (expressMode == true || hasThumbnail == false || formatAudioOnly == 'True')
        displayThumbnail = false;
    else
        displayThumbnail = true;

    var thumbnailrowobj;
    if (displayThumbnail == false)
    {
        if (BrowserVersion != 0)
        {
            thumbnailrowobj = $get("thumbnailrow");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "none";
            }
        }
        else
        {
            thumbnailrowobj = $get("thumbnailpanel");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "none";
            }
            thumbnailrowobj = $get("zoombuttons");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "none";
            }
            Slider3.hideKnob();
        }
    }
    else
    {
        if (BrowserVersion != 0)
        {
            thumbnailrowobj = $get("thumbnailrow");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "";
            }
        }
        else
        {
            thumbnailrowobj = $get("thumbnailpanel");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "";
            }
            thumbnailrowobj = $get("zoombuttons");
            if (thumbnailrowobj != null)
            {
                thumbnailrowobj.style.display = "";
            }
            Slider3.showKnob();
        }
    }
    
    if (BrowserVersion != 0)
    {
        playercontrolliveobj = $get("playercontrollive");
        if (playercontrolliveobj != null)
        {
            playercontrolliveobj.style.display = "none";
        }
    }
    Slider2.reset();
    Slider1.reset();
    
    if(ccAvailable == true && (ccLanguage == "en;fr" || ccLanguage == "en" || ccLanguage == "fr"))
        ShowCCHead();
    else
        HideCCHead();
        
    ResetSliderKnob();
    
    ResetInfoPanelHeight();
}

function ResetInfoPanelHeight()
{
    var playerItem = $get('DivPlayerColumn');
    var infoPanelBody = $get(infoPanelId + '_body');
    var height = playerItem.offsetHeight;
    height -= 38;//stretch tab body to match player height;
    infoPanelBody.style.height = height + 'px';
    var agendaPanel = $get('DivAgendaPanel');
    if(agendaPanel != null)
        agendaPanel.style.height = height + 'px';

    var speakerPanel = $get('DivSpeakerPanel');
    if(speakerPanel != null)
        speakerPanel.style.height = height + 'px';
}

function ShowVolumn()
{
    if(BrowserVersion == 0)
    {
        volume.SetVolumeValue(Player.settings.volume);
    }
}

function StartPlayer(startPos)
{
    //
    if (BrowserVersion == 0)
    {

        thispos = startPos + archiveOffset;

        try {
            if (thispos < 0)
                thispos = 0;

            StopMoveThumbnail();
            StopMoveThumbnailForward();
            StopMoveThumbnailBackward();
            Player.controls.currentPosition = thispos;
            Player.URL = streamUrl;
            Player.controls.play();
            playerState = 1;
        }
        catch (e) {
        }
    }
}

function OnPlayerStateChanged(NewState)
{

    if (NewState == 3)
    {
        playerState = 2;
        $get("playbutton").src = themeRoot + "images/player_pause.gif";
        Player.settings.mute = muteflg;
        if (!muteflg)
        {
            Player.settings.volume = playervolumn;
        }
        InitSettings();
      
   }
   else if(NewState == 6)
   {
        playerState = 3;
   }
   else if(NewState == 2)
   {
        playerState = 9;
   }
   else if(NewState == 1 || NewState == 8)
   {
        $get("playbutton").src = themeRoot + "images/player_play.gif";
        playerState = 7;
        ClearCC();
   }
   else if(NewState == 10)
   {

   }
}

function OnBuffering(start)
{
    if(start)
    {
        $get("labBuffering").style.display  = "";
        $get("imgplayer").style.display = "";
        Player.style.display = "none";
    }
    else
    {
        $get("labBuffering").style.display  = "none";
        Player.style.display = "";
        $get("imgplayer").style.display = "none";
    }


}

function InitSettings()
{
    playerState = 5;
    playStatus = 0;
    thumbReachEnd = false;
    mediaDuration = Player.currentMedia.duration;
    
    ClearAll();
    

    
	offSyncFlag = false;
	if (refreshThumbnailBufferFlag == true) //if current play position is not in thumbnail buffer then refresh thumbnails
	{
	    ClearThumbnails();
		ReloadThumbnails(thispos - thumbinterval * 2);
	}
	
	refreshThumbnailBufferFlag = true;
    DrawRuler();
    OnTimer();    
}



function ClearThumbnails()
{
    if(displayThumbnail == true)
    {
        maindiv.innerHTML = "";
        Array.clear(arrayThumbnailSpans);
        Array.clear(thumbnailsArray);
        startIndex = 0;
        endIndex = 0
    }
}


function ReloadThumbnails(offset)
{
    if(displayThumbnail == false)
        return;
        
    
    playStatus = 1;
    thumbReachEnd = false;
    //get new thumbnails from buffer start time
    webCallIndex++;
    if(offset < 0)
        offset = 0;
    if(offset > mediaDuration)
        offset = mediaDuration;
    GetPBData.GetThumbnailData(contententityId,zoomLevel, Math.floor(offset - archiveOffset), thumbnailcount * 3,
            GetThumbnailsDone, OnMethodError , webCallIndex);
}

function GetThumbnailsDone(result, callIndex)
{
    if(playStatus != 1 || webCallIndex != callIndex)
        return;
        
    playStatus = 0;

    if (result == null)
    {
        result = new Array();
    }
    
    for(var i = 0; i < result.length; i++)
    {
        result[i].timestamp += archiveOffset ;
    }
    
    ClearThumbnails();
    var width = 0;
    startIndex = 0;
    for(var i = 0; i < result.length && i < thumbnailcount;i++)
    {
        width += CreateThumbnailSpan(result[i]);
    }
    endIndex = result.length > thumbnailcount ? thumbnailcount - 1 : result.length - 1;
    thumbnailsArray = result;
    maindiv.style.pixelWidth = width;
    RedrawKnobs();    
}

//creat a thumbnail span 
function CreateThumbnailSpan(thumbnailobj)
{
    var span = document.createElement("span");
    span.className = "thumbnail";
    span.id = "span" + thumbnailobj.timestamp;
    span.onclick = function(){onthumbnailclick(this)};
    span.innerHTML = "<img src='" + thumbnailsRoot + thumbnailobj.filename + "' class='thumbnailimage' onmouseenter='ShowImagePanel(this)'  onmouseout='HideImagePanel(this)'/>" + 
        "<span class='timestamplabel'>" + formatTimestamp(thumbnailobj.timestamp) + "</span>"
    span.timestamp = thumbnailobj.timestamp;
    maindiv.insertBefore(span);
    Array.add(arrayThumbnailSpans,span);
    thumbnailobj.htmlObject = span;
    thumbnailSpanWidth = span.offsetWidth + 1;
    return thumbnailSpanWidth;
}

function CreateThumbnailSpanBackward(thumbnailobj)
{
    var span = document.createElement("span");
    span.className = "thumbnail";
    span.id = "span" + thumbnailobj.timestamp;
    span.onclick = function () { onthumbnailclick(this) };
    span.innerHTML = "<img src='" + thumbnailsRoot + thumbnailobj.filename + "' class='thumbnailimage' onmouseenter='ShowImagePanel(this)'  onmouseout='HideImagePanel(this)'/>" + 
        "<span class='timestamplabel'>" + formatTimestamp(thumbnailobj.timestamp) + "</span>"
    span.timestamp = thumbnailobj.timestamp;
    maindiv.insertBefore(span,arrayThumbnailSpans[0]);
    arrayThumbnailSpans.unshift(span);
    thumbnailobj.htmlObject = span;
    thumbnailSpanWidth = span.offsetWidth + 1;
    return thumbnailSpanWidth;
}


function formatTimestamp(timestamp)
{
    var tempdate = new Date(archiveStartTime);
    tempdate.setSeconds(tempdate.getSeconds() + timestamp);
    return tempdate.toFormattedString("HH:mm:ss");
}


function SetSilderKnobWidthPos(startTimestamp, endTimestamp)
{
    if(mediaDuration == 0)
    {
        return;
    }
    
    
    if(startTimestamp != null && endTimestamp != null)
    {
        var startTime = new Date(archiveStartTime);
        startTime.setSeconds( startTime.getSeconds() + startTimestamp);
        var endTime = new Date(archiveStartTime);
        endTime.setSeconds(endTime.getSeconds() + endTimestamp);
        
        var showduration =  endTimestamp - startTimestamp + thumbinterval;
        
        var tknobpos = startTimestamp * 100/ mediaDuration;
        if(tknobpos < 0)
            tknobpos = 0;
        else if(tknobpos > 100)
            tknobpos = 100;
        
        var knobwidth = showduration  / mediaDuration;
        
        Slider3.setKnobWidth(knobwidth);
        Slider3.setKnobPostion(tknobpos);
    }


    var knobPos;
    knobPos = thispos * 100 / mediaDuration;
    if(knobPos < 0)
        knobPos = 0;
    else if(knobPos > 100)
        knobPos = 100;
    
	Slider1.setKnobPostion(knobPos);
	Slider2.setKnobPostion(knobPos);
}


function OnMethodError(para1,para2,para3,para4)
{
    playStatus = 0;
}

function OnError()
{
    if(playerState == 8)
        return;
    playerState = 8;
    errorTimerHandle = setTimeout(ErrorRestart, 5000);
}

function ClearAll()
{
    StopFading();
    
    if(movethumbnailtimer != -1)
    {
        clearInterval(movethumbnailtimer);
    }
    maindiv.style.pixelWidth = thumbpanelwidth;;
    maindiv.style.pixelLeft = 0;
    
    if (resizeThumbHandler != -1)
    {
        clearInterval(resizeThumbHandler);
        resizeThumbHandler = -1;
    }
    HideImagePanel();
    ClearCC();
}

function ErrorRestart()
{
    errorTimerHandle = -1;
    
    ClearThumbnails();
    ClearAll();
    Player.controls.stop();
    playerState = 1;
    Player.controls.play();
}

function OnTimer()
{
    if(playerState != 5)
        return;

    thispos = Math.round(Player.controls.currentPosition);
	

    RedrawKnobs();
    showCurrentPlayTime();
    var curDate = new Date();
    if ((curDate.getSeconds() % 30 == 0 ))
    {
        DrawRuler();    
    }
    if (offSyncFlag == false && endIndex > (thumbnailsArray.length - thumbnailcount) && thumbReachEnd == false) 
    {
        RenewThumbnails();
    }
    CheckThumbnailSliding();
}

function IsInThumbnailBuffer()
{
    if(offSyncFlag == true && playStatus == 0)
    {
	    if(arrayThumbnailSpans.length == 0)
	        return;
	        
	    if(thispos >= arrayThumbnailSpans[0].timestamp && thispos < arrayThumbnailSpans[arrayThumbnailSpans.length  - 1].timestamp)
	        offSyncFlag = false;
	}

}

function CheckThumbnailSliding()
{
    var curIndex = getCurrentIndex();
    if (curIndex > endIndex - 3 && offSyncFlag == false && endIndex < thumbnailsArray.length - 1 && playerState == 5) //over current showing thumbnails range
    {
        MoveCurrentThumbnail();
    }
}


function RedrawKnobs()
{
    if(displayThumbnail == true)
    {
        IsInThumbnailBuffer();
        HighLightCurrentThumbnail();
    }

    if (!Slider1.IsDragging
        && !Slider2.IsDragging
        && !Slider3.IsDragging && playStatus == 0)
    {
        if(arrayThumbnailSpans.length >= 1)
        {
            SetSilderKnobWidthPos(arrayThumbnailSpans[0].timestamp, arrayThumbnailSpans[arrayThumbnailSpans.length - 1].timestamp);
        }
        else
        {
            SetSilderKnobWidthPos(null, null);
        }

    }
}

function HighLightCurrentThumbnail()
{
	var highligtspan = null;
    var curIndex = getCurrentIndex();
    if (curIndex != -1 && offSyncFlag == false)
    {
        if (curIndex >= startIndex && curIndex <= endIndex)
        {
            highligtspan = thumbnailsArray[curIndex].htmlObject;
        }
    }
    if (highligtspan != oldHighLightThumbnail && oldHighLightThumbnail != null)
    {
        oldHighLightThumbnail.style.backgroundColor = "";
        oldHighLightThumbnail.className = "thumbnail";
    }
    oldHighLightThumbnail = null;
    if(highligtspan != null)
    {
        highligtspan.className = "highlightthumbnail";
        oldHighLightThumbnail = highligtspan;
        offSyncFlag = false;
    }
   
}


function getCurrentIndex()
{
    var pos = Player.controls.currentPosition + 2;
    for(var i = startIndex;i < thumbnailsArray.length;i++)
    {
        if(thumbnailsArray[i].timestamp <= pos )
        {
            if (i < (thumbnailsArray.length - 1) && thumbnailsArray[i + 1].timestamp > pos )
            {
                return i;
            }
            else if (i == thumbnailsArray.length - 1)
            {
                return i;
            }
        }
    }	
    return -1;
}


function showCurrentPlayTime()
{
	if (!isNaN(thispos))
	{
        var curDate = new Date(archiveStartTime);
	    curDate.setSeconds(curDate.getSeconds() + thispos);
        var divCurrentTime = $get('CurPlayerTime');
        divCurrentTime.innerHTML = curDate.toFormattedString("HH:mm:ss");
        //$get("divCurrentTime").innerHTML = divCurrentTime.innerHTML;

    }
}


function DrawRuler()
{
	var parentdiv = $get("divRuler");
	parentdiv.innerHTML = "";
	var rulerwidth = parentdiv.offsetWidth;
	if (rulerwidth == 0)
	{
	    return;
	}
	var interval = 60 * 5;
	for(var i = 0;i < rulerIntervals.length;i++)
	{ 
	    interval = rulerIntervals[i];
	    if (mediaDuration / interval < 20)
	    {
	        break;
	    }
	}
	var posInterval = interval * rulerwidth / mediaDuration;
	var timeoffset = interval - (archiveStartTime.getMinutes() * 60 + archiveStartTime.getSeconds()) % interval;
	i = 0;
	while(true)
	{
	    var rulertime = timeoffset + interval * i;
	    var leftpos = rulertime * rulerwidth / mediaDuration;
		if (leftpos > rulerwidth)
		{
		    break;
		}
		var oImg=document.createElement("IMG");
		oImg.src = themeRoot + "images/tick.jpg";
		oImg.style.top = "0px";
		oImg.style.left = Math.round(leftpos) + "px";
		oImg.style.position = "absolute" ;
		oImg.style.zIndex = -10;
		oImg.height = 15;
		oImg.width = 2; 
		parentdiv.appendChild(oImg);
		if (i % 3 == 0)
		{
    		var span=document.createElement("SPAN");
	        var labelTime = new Date(archiveStartTime);
	        labelTime.setSeconds(archiveStartTime.getSeconds() + rulertime);
    		
		    span.style.top = "17px";
		    span.style.position = "absolute" ;
		    span.style.zIndex = -10;
		    span.innerHTML = labelTime.format("HH:mm:ss");
    		parentdiv.appendChild(span);
    		span.style.left = Math.round(leftpos - span.offsetWidth / 2) + "px";
        }
		i++;
	}
}

function RenewThumbnails()
{
    if(displayThumbnail == false)
        return;

    if(playStatus != 0)
        return;
    if(thumbnailsArray.length == 0)
        return;
        
    playStatus = 2;
    thumbReachEnd = false;
    //get new thumbnails from last thumbnail timestamp
    var offset = thumbnailsArray[thumbnailsArray.length - 1].timestamp + 1;
    webCallIndex++;
    GetPBData.GetThumbnailData(contententityId,zoomLevel, Math.floor(offset - archiveOffset),thumbnailcount * 3,
            GetNewThumbnailsDone, OnMethodError ,webCallIndex);
}

function GetNewThumbnailsDone(result, callIndex)
{
    if(playStatus != 2 || callIndex != webCallIndex)
        return;
        
    playStatus = 0;
    
    if(result == null)
        return;
    
    if (result.length == 0)
    {
        thumbReachEnd = true;
        return;
    }
    
    //archive offset
    for(var i = 0; i < result.length; i++)
    {
        result[i].timestamp += archiveOffset ;
    }
    
    ResetThumbnailBuffer(result);
}

function ResetThumbnailBuffer(tempThumbnailsArray)
{
    for(i = 0;i < startIndex;i++)
    {
        Array.dequeue(thumbnailsArray);
    }
    endIndex -= startIndex;
    startIndex = 0;
    Array.addRange(thumbnailsArray, tempThumbnailsArray);
}


function MoveCurrentThumbnail()
{
    if(playerState == 5)
    {
        if(playStatus != 0)
            return;
            
        endIndex ++;
        startIndex ++;
        playStatus = 3;
        CreateThumbnailSpan(thumbnailsArray[endIndex]);
        var width = maindiv.style.pixelWidth;
        var oldwidth = maindiv.style.pixelWidth;
        maindiv.style.pixelWidth = width + thumbnailSpanWidth;
        if(movethumbnailtimer != -1)
        {
            clearInterval(movethumbnailtimer);
        }
        movethumbnailtimer = setInterval("OnMoveThumbnail()",100);
        fadeIn = new Fade();
        fadeOut = new Fade();
        fadeIn.start(arrayThumbnailSpans[0].id, 10, (width - oldwidth) * 50, 100, 0);
        fadeOut.start(arrayThumbnailSpans[arrayThumbnailSpans.length - 1].id, 10, (width - oldwidth) * 50, 0, 100);
    }
}


function OnMoveThumbnail()
{
    maindiv.style.pixelLeft -= 2;
    if((maindiv.offsetLeft +maindiv.offsetWidth) < (divthumbnails.offsetWidth))
    {
        StopMoveThumbnail();
    }
}

function StopMoveThumbnail()
{
    
    if(playStatus == 3)
    {
        var width = maindiv.style.pixelWidth;
        var oldarrayLength = arrayThumbnailSpans.length;
        for(var i = 0;i < oldarrayLength - thumbnailcount;i++)
        {
            if(arrayThumbnailSpans.length > 0)
            {
                width -= arrayThumbnailSpans[0].offsetWidth + 1;
                maindiv.removeChild(arrayThumbnailSpans[0]);
                Array.removeAt(arrayThumbnailSpans ,0);
            }
        }
        if (width < thumbpanelwidth)
        {
            width = thumbpanelwidth;
        }
        maindiv.style.pixelWidth = width;
        maindiv.style.pixelLeft = 0;
        clearInterval(movethumbnailtimer);
        movethumbnailtimer = -1;
        playStatus = 0;
        StopFading();
    }
}

function StopFading()
{
    if(fadeIn != null && fadeIn.started == true)
    {
        fadeIn.stop(100);
        fadeIn = null;
    }
    if(fadeOut != null && fadeOut.started == true)
    {
        fadeOut.stop(0);
        fadeOut = null;
    }
    
}

function ShowImagePanel(imageobj)
{
    var obj = document.getElementById("ImagePanel");
    if (obj != null) {
        if (obj.style.display == "none")
        {
            obj.style.display = "block";
            var imagePos = __getElementPos(imageobj, obj.offsetParent);
            //var parentPos = getElementAbsolutePos(obj.offsetParent);
            var parentBorderSize = __getBorderWidth(obj.offsetParent);

            var left = imagePos.x  - parentBorderSize.left;
            var top = imagePos.y  - parentBorderSize.top;
            var bottom = top + imageobj.offsetHeight;


            document.getElementById("bigThumbnail").src = imageobj.src;
            obj.style.pixelLeft = left;
            obj.style.pixelTop = bottom + 30;

            if (resizeThumbHandler == -1)
            {
                resizeThumbHandler = setInterval("resizeThumbPanel()", 15);
            }
        }
    }
}

function resizeThumbPanel()
{
    var obj = document.getElementById("ImagePanel");
    if (obj != null)
    {
        if (obj.style.pixelWidth < 120)
        {
            obj.style.pixelWidth = obj.style.pixelWidth + 12;
            obj.style.pixelHeight = obj.style.pixelHeight + 9;
        }
        else
        {
            clearInterval(resizeThumbHandler);
            resizeThumbHandler = -1;
        }
    }    
}

function HideImagePanel()
{
    var obj = document.getElementById("ImagePanel");
    if (obj != null)
    {
        obj.style.display = "none";
        obj.style.pixelWidth = 20;
        obj.style.pixelHeight = 15;
    }
}


function timebarsliderdragging(slidervalue ,position) 
{
	var temppos = Math.round(mediaDuration * slidervalue / 100);
    var divCurrentTime = $get('divCurrentTime');
    var curDate = new Date(archiveStartTime);
	curDate.setSeconds(curDate.getSeconds() + temppos);
    divCurrentTime.innerHTML = curDate.toFormattedString("HH:mm:ss");
    divCurrentTime.style.posLeft =  position - 13;
    divCurrentTime.style.display = "inline";
    var sliderBody = $get("sliderBody");
    if(sliderBody != null)
    {
        sliderBody.style.pixelLeft = position - 16;
        sliderBody.style.display = "inline";
    }
}

function timebarsliderdropped(slidervalue, position) 
{
	thispos=Math.round(mediaDuration * slidervalue / 100);
	
    if (thispos > mediaDuration - 100) //starts at least 100 second before end
    {
        thispos = mediaDuration - 100;
    }
    
    if(thispos < 0)
        thispos = 0;
    
    var curDate = new Date(archiveStartTime);
    curDate.setSeconds(curDate.getSeconds() + thispos);
    
    var divCurrentTime = $get('divCurrentTime');
    divCurrentTime.style.display = "none";
    var sliderBody = $get("sliderBody");
    if(sliderBody != null)
    {
        sliderBody.style.display = "none";
    }
    
    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();

    Player.controls.stop();        
    Player.controls.currentPosition = thispos;
    playerState = 1;
    Player.controls.play();
}    


function timebarslider1dragging(slidervalue ,position) 
{
	var temppos = Math.round(mediaDuration * slidervalue / 100);
    var divCurrentTime = $get('divCurrentTime1');
    var curDate = new Date(archiveStartTime);
	curDate.setSeconds(curDate.getSeconds() + temppos);
    divCurrentTime.innerHTML = curDate.toFormattedString("HH:mm:ss");
    divCurrentTime.style.posTop = 20;
    divCurrentTime.style.posLeft =  position - 30;
    divCurrentTime.style.display = "inline";
}

function timebarslider1dropped(slidervalue) 
{
	thispos=Math.round(mediaDuration * slidervalue / 100);
    if (thispos > mediaDuration - 100) //starts at least 100 second before end
    {
        thispos = mediaDuration - 100;
    }
    
    if(thispos < 0)
        thispos = 0;
    
    var divCurrentTime = $get('divCurrentTime1');
    divCurrentTime.style.display = "none";
    
    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();
        
    Player.controls.stop();        
    Player.controls.currentPosition = thispos;
    playerState = 1;
    Player.controls.play();

}    


function thumbnailsilderdragging(slidervalue ,position) 
{
	var pos =Math.round(mediaDuration * slidervalue / 100);
    var divCurrentTime = $get('divCurrentTime1');
    var curDate = new Date(archiveStartTime);
	curDate.setSeconds(curDate.getSeconds() + pos);
    divCurrentTime.innerHTML = curDate.toFormattedString("HH:mm:ss");
    divCurrentTime.style.posTop = 30;
    divCurrentTime.style.posLeft =  position - 25;
    divCurrentTime.style.display = "inline";
}



function thumbnailsilderdropped(slidervalue) 
{
    var divCurrentTime = $get('divCurrentTime1');
    divCurrentTime.style.display = "none";
    
    offSyncFlag = true;
    
	var pos =Math.round(mediaDuration * slidervalue / 100);
        
    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();
    
	ReloadThumbnails(Math.round(pos) - 1);
}    

function StopPlayer()
{
    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();

    if(Player.playState == 3)
    {
        Player.controls.pause();
        $get("playbutton").src = themeRoot + "images/player_play.gif";
    }
    else
    {
        if (Player.playState == 2) // paused
        {
            refreshThumbnailBufferFlag = false;
        }
        Player.controls.play();
        $get("playbutton").src = themeRoot + "images/player_pause.gif";
    }
}

function MutePlayer()
{
    Player.settings.mute = !Player.settings.mute;
    muteflg = Player.settings.mute;
    if (Player.settings.mute)
    {
        $get("mutebutton").src = themeRoot + "images/player_mute_on.gif";
    }
    else
    {
        $get("mutebutton").src = themeRoot + "images/player_mute_off.gif";
    }
    
}

function PopupWindowMediaPlayer()
{
    window.open(streamUrl);
}

function PlayerClose()
{
    if (BrowserVersion != 0)
        return;
    Player.controls.stop();
    ClearAll();
    if (onTimerTimerhandle != -1)
    {
        clearInterval(onTimerTimerhandle);
        onTimerTimerhandle = -1;
    }
    
}
function OnVolumeChanged(value)
{
    var mute = Player.settings.mute;
    Player.settings.volume = value;
    Player.settings.mute = mute;
}

function thumbnailsliderclick(slidervalue)
{
	StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();
    
	thispos=Math.round(mediaDuration * slidervalue / 100);
    if (thispos > mediaDuration - 100) //starts at least 100 second before end
    {
        thispos = mediaDuration - 100;
    }
    
    if(thispos < 0)
        thispos = 0;
    
    Player.controls.stop();        
    Player.controls.currentPosition = thispos;
    playerState = 1;
    Player.controls.play();
	Slider2.setKnobPostion(slidervalue);
	Slider3.setKnobPostion(slidervalue);
}


function ParseEssenceFormatData(data, output)
{
    var sArray = data.split("#");
    if(sArray.length == 5)
    {
        output.push(Date.parseLocale(sArray[0], 'yyyy-MM-dd HH:mm:ss'));
        output.push(new Number(sArray[1]));
        output.push(sArray[2]);
        output.push(sArray[3]);
        output.push(sArray[4]);
        return true;
    }
    
    return false;
}


function ChangeStreamUrl()
{
    var lstEssenceFormats = document.getElementById(lstLanguageId);
    if(lstEssenceFormats.selectedIndex != -1)
    {
        var item = lstEssenceFormats.options[lstEssenceFormats.selectedIndex];
        var output = new Array();
        if(ParseEssenceFormatData(item.value, output) == true)
        {
            var startTime = output[0];
            var offset = output[1];
            var url = output[2];
            //if(streamUrl != url)
            {
                var delta = offset - archiveOffset;
                thispos += delta;
                archiveOffset = offset;
                archiveStartTime = startTime;   
                streamUrl = url;
                formatAudioOnly = output[3];

                if (expressMode == true || hasThumbnail == false || formatAudioOnly == 'True')
                    displayThumbnail = false;
                else
                    displayThumbnail = true;
                
                ccLanguage = output[4];
                if(ccLanguage == "en;fr")
                    isMultiLanguage = true;
                else
                    isMultiLanguage = false;
                    
                HideCCLangPanel();
                InitPlayerLayout();
                Player.URL = streamUrl;
                Player.controls.currentPosition = thispos;
                
            }
        }
    }
}

function onthumbnailclick(thumbnailspan)
{
    try
    {
        StopMoveThumbnail();
        StopMoveThumbnailForward();
        StopMoveThumbnailBackward();
        thispos = thumbnailspan.timestamp;
        Player.controls.stop();        
        Player.controls.currentPosition = thispos;
        playerState = 1;
        refreshThumbnailBufferFlag = false;
        Player.controls.play();
    }
    catch(e)
    {
    }        
}


function zoomin()
{
    SetZoomLevel(-1)
}

function zoomout()
{
    SetZoomLevel(+1)
}

function SetZoomLevel(step)
{
	if(thumbnailsArray.length == 0)
	    return;
	    
	if(Math.floor(Player.currentMedia.duration / (thumbinterval * 2)) < thumbnailcount && step < 0)
	{
		alert("Can't zoom out!");
		return;
	}
	zoomLevel += step;
	if(zoomLevel < 0)
	{
		zoomLevel -= step;
		return;
	}
	else if(zoomLevel > maxZoomLevel)
	{
		zoomLevel -= step;
		return;
	}
	
    offSyncFlag = true;        

	thumbinterval = Math.pow(2 , (maxZoomLevel - zoomLevel)) * 5;
    var temppos = thumbnailsArray[startIndex].timestamp;
    ClearThumbnails();
    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();
    ReloadThumbnails(temppos - 1);
}


//

function GetNextBuffer(forward)
{
    if(displayThumbnail == false)
        return;
        
    if(arrayThumbnailSpans.length == 0)
        return;

    StopMoveThumbnail();
    StopMoveThumbnailForward();
    StopMoveThumbnailBackward();
    
    offSyncFlag = true;        
    if (!forward)
    {
        playStatus = 4;
        var temppos = thumbnailsArray[startIndex].timestamp - thumbnailcount * thumbinterval - 1;
        webCallIndex++;
        GetPBData.GetThumbnailData(contententityId,zoomLevel, Math.floor(temppos  - archiveOffset), thumbnailcount,
                GetThumbnailsForNextBufferDone,OnMethodError ,webCallIndex);
    }
    else
    {
        playStatus = 6;
        var temppos = thumbnailsArray[endIndex].timestamp;
        GetPBData.GetThumbnailData(contententityId,zoomLevel, Math.floor(temppos - archiveOffset), thumbnailcount,
                GetThumbnailsForNextBufferDone, OnMethodError ,webCallIndex);
    }
}

function GetThumbnailsForNextBufferDone(result, callIndex)
{
    if((playStatus != 4 && playStatus != 6) || webCallIndex != callIndex)
        return;
    
    if(result == null || result.length == 0)
    {
        playStatus = 0;
        return;
    }

    //archive offset
    for(var i = 0; i < result.length; i++)
    {
        result[i].timestamp += archiveOffset ;
    }        

    var flag = false;
    if (playStatus == 6)
    {
        playStatus = 7;
        
        var width = maindiv.style.pixelWidth;
        var endTime = thumbnailsArray[endIndex].timestamp;
        for(var i = 0;i < result.length && i < thumbnailcount;i++)
        {
            if(endTime < result[i].timestamp)
            {
                width += CreateThumbnailSpan(result[i]);
                Array.add(thumbnailsArray, result[i]);
                flag = true;
            }
        }
        
        if(flag == false)
        {
            playStatus = 0;
            return;
        }
        while(thumbnailsArray.length > thumbnailcount)
        {
            Array.removeAt(thumbnailsArray, 0);
        }
        startIndex = 0;
        endIndex = thumbnailsArray.length - 1;
        maindiv.style.pixelWidth = width;
        if(movethumbnailtimer != -1)
        {
            clearInterval(movethumbnailtimer);
        }
        movethumbnailtimer = setInterval("OnMoveThumbnailForward()",100);
        
    }
    else
    {
        playStatus = 5;
        var width = maindiv.style.pixelWidth;
        var maxindex = result.length > thumbnailcount ? thumbnailcount - 1 : result.length - 1;
        var startTime = thumbnailsArray[startIndex].timestamp;

        for(var i = maxindex;i >= 0;i--)
        {
            if (startTime > result[i].timestamp)
            {
                width += CreateThumbnailSpanBackward(result[i]);
                Array.insert(thumbnailsArray, 0, result[i]);
                flag = true;
            }
        }
        
        if(flag == false)
        {
            playStatus = 0;
            return;
        }
        while(thumbnailsArray.length > thumbnailcount)
        {
            thumbnailsArray.pop();
        }
        startIndex = 0;
        endIndex = thumbnailsArray.length - 1;
        
        maindiv.style.pixelWidth = width;;
        maindiv.style.pixelLeft = (divthumbnails.offsetWidth - maindiv.offsetWidth);
        if(movethumbnailtimer != -1)
        {
            clearInterval(movethumbnailtimer);
        }
        movethumbnailtimer = setInterval("OnMoveThumbnailBackward()",100);
    }
}

function OnMoveThumbnailForward()
{
    maindiv.style.pixelLeft -= 100;
    //SetSilderKnobWidthPos();
    if((maindiv.offsetLeft +maindiv.offsetWidth) < (divthumbnails.offsetWidth))
    {
        StopMoveThumbnailForward();
        RedrawKnobs();
    }
}

function StopMoveThumbnailForward()
{
    if(playStatus == 7)
    {
    
        var width = maindiv.style.pixelWidth;
        var oldarrayLength = arrayThumbnailSpans.length;
        for(var i = 0;i < oldarrayLength - thumbnailcount;i++)
        {
            if(arrayThumbnailSpans.length > 0)
            {
                width -= arrayThumbnailSpans[0].offsetWidth + 1;
                maindiv.removeChild(arrayThumbnailSpans[0]);
                Array.removeAt(arrayThumbnailSpans ,0);
            }
        }
        if (width < thumbpanelwidth)
        {
            width = thumbpanelwidth;
        }
        maindiv.style.pixelWidth = width;;
        maindiv.style.pixelLeft = 0;
        clearInterval(movethumbnailtimer);
        movethumbnailtimer = -1;
        playStatus = 0;
    }
}

function OnMoveThumbnailBackward()
{
     maindiv.style.pixelLeft += 100;
    //SetSilderKnobWidthPos();
    if(maindiv.offsetLeft > -100)
    {
        StopMoveThumbnailBackward();
        RedrawKnobs();
    }
}


function StopMoveThumbnailBackward()
{
    if(playStatus == 5)
    {
        var width = maindiv.style.pixelWidth;
        var oldarrayLength = arrayThumbnailSpans.length;
        for(var i = oldarrayLength;i > thumbnailcount;i--)
        {
            if(arrayThumbnailSpans.length >= thumbnailcount)
            {
                width -= arrayThumbnailSpans[thumbnailcount].offsetWidth + 1;
                maindiv.removeChild(arrayThumbnailSpans[thumbnailcount]);
                Array.removeAt(arrayThumbnailSpans ,thumbnailcount);
            }
        }
        if (width < thumbpanelwidth)
        {
            width = thumbpanelwidth;
        }
        maindiv.style.pixelWidth = width;;
        maindiv.style.pixelLeft = 0;
        clearInterval(movethumbnailtimer);
        movethumbnailtimer = -1;
        playStatus = 0;
    }
}

function OnPlayerCommand(Type, Param)
{
    Type = Type.toUpperCase();
    if (Type == 'CC')
	{
	    if(ccAvailable == false || hideCCFlag == true)
	        return;
	    var cc;
	    if(isMultiLanguage == true)
	    {
	        var first = Param.substring(0, 2);
	        if(currentCCLanguage == first)
	        {
    	        cc = Param.substring(2);
	        }
	        else
	        {
	            return;
	        }
	    }
	    else
	    {
	        cc = Param;
	    }
	    if(cc == " ")
	    {
	        ClearCC();
	    }
	    else 
	    {
	        var oldHeight = divCC.offsetHeight;
	        var height = oldHeight + CreateCCItemDiv(cc);
	        divCC.style.pixelHeight = height;
	        if(height > divCCContainer.offsetHeight)
	        {
	            if(timeIdRollupCC == -1)
	            {
                    timeIdRollupCC = setInterval("OnRollupCC()", 50);
	            }
	        }
	    }
	    
	}
	
}



function OnRollupCC()
{
    divCC.style.pixelTop -= 4;
    if((divCC.offsetTop + divCC.offsetHeight) < (divCCContainer.offsetHeight))
    {
        StopRollupCC();
    }
}

function StopRollupCC()
{
    var height = divCC.style.pixelHeight;
    var oldarrayLength = arrayCCItems.length;
    for(var i = 0;i < oldarrayLength - 3;i++)
    {
        if(arrayCCItems.length > 0)
        {
            height -= arrayCCItems[0].offsetHeight;
            divCC.removeChild(arrayCCItems[0]);
            Array.removeAt(arrayCCItems, 0);
        }
    }
    
    if(height > divCCContainer.offsetHeight)
        height = divCCContainer.offsetHeight;
    divCC.style.pixelHeight = height;
    divCC.style.pixelTop = 0;
    
    clearInterval(timeIdRollupCC);
    timeIdRollupCC = -1;
}



function CreateCCItemDiv(cc)
{
    var div = document.createElement("div");
    div.className = "ccItem";
    div.innerHTML = cc;
    div.cc = cc;
    divCC.insertBefore(div);
    Array.add(arrayCCItems,div);
    return div.offsetHeight;
}

function ClearCC()
{
    divCC.innerHTML = "";
    divCC.style.pixelHeight = 0;
    Array.clear(arrayCCItems);
   
}

function HideCCPanel()
{
    ClearCC();
    divCCContainer.style.display = "none";
    ResetSliderKnob();
    ResetInfoPanelHeight();
    hideCCFlag = true;
    
}

function ShowCCPanel()
{
    divCCContainer.style.display = "block";
    ResetSliderKnob();
    ResetInfoPanelHeight();
    hideCCFlag = false;
}

function ShowCCHead()
{
    $get("ccbutton").style.display="block";
}

function HideCCHead()
{
    $get("ccbutton").style.display="none";
    ccLangPanel.style.display = "none";
    divCCContainer.style.display = "none";
    ResetSliderKnob();
    ResetInfoPanelHeight();
}

function DisplayCCLangPanel()
{
    if(ccButtonFlag == true)
    {
        ccButtonFlag = false;
        return;
    }
    
    if(ccLangPanel.style.display == "none")
    {
        ccLangPanel.style.display = "block";
        if(hideCCFlag == true)
        {
            $get("rdCCNone").checked = true;
        }
        else
        {
            if(currentCCLanguage == pageLanguage)
            {
                $get("rdCCLang1").checked = true;
            }
            else
            {
                $get("rdCCLang2").checked = true;
            }
        }
        
        if(isMultiLanguage == true)
        {
            $get("rdCCLang1").disabled = false;
            $get("rdCCLang2").disabled = false;
        }
        else
        {
            if(ccLanguage == pageLanguage)
            {
                $get("rdCCLang1").disabled = false;
                $get("rdCCLang2").disabled = true;
            }
            else
            {
                $get("rdCCLang1").disabled = true;
                $get("rdCCLang2").disabled = false;
            }
        }
        
        ccLangPanel.focus();
    }
    else
    {
        ccLangPanel.style.display = "none";
    }
}

function SelectCCLang(value)
{
    if(value == 0)
    {
        //none
        HideCCPanel();
    }
    else
    {
        if(value == 1)
        {
            currentCCLanguage = pageLanguage;
        }
        else
        {
            if(pageLanguage == "en")
                currentCCLanguage = "fr";
            else
                currentCCLanguage = "en";
        }
        ShowCCPanel();
    }
    HideCCLangPanel();
    ClearCC();
}

function HideCCLangPanel()
{
    ccLangPanel.style.display = "none";
}



function SetCCFont(fontSize)
{
    divCC.style.fontSize = fontSize;
}

function IsChild(parent, child)
{

    return parent.contains(child);
        
}

function CCLang_OnBlur()
{
    if(IsChild(event.srcElement, document.activeElement) == false)
    {
        HideCCLangPanel();   
    }
}


function onCCButtonMouseDown()
{
    if(ccLangPanel.style.display != "none")
    {
        ccButtonFlag = true;
    }
}

function ResetSliderKnob()
{
    Slider1.reset();
    Slider2.reset();
    Slider3.reset();
}


function SeekToTimestamp(timestamp)
{
    thispos = timestamp + archiveOffset;
    
    try
    {
        if (thispos > mediaDuration - 100) //starts at least 100 second before end
        {
            thispos = mediaDuration - 100;
        }
        
        if(thispos < 0)
            thispos = 0;
            
        StopMoveThumbnail();
        StopMoveThumbnailForward();
        StopMoveThumbnailBackward();
        Player.controls.stop();        
        Player.controls.currentPosition = thispos;
        playerState = 1;
        Player.controls.play();
        
    }
    catch(e)
    {
    }
}

function SeekSpeakerScrollPosition() {
    var speakerPanel = $get('DivSpeakerPanel');
    var selectedNode = $get('selectedSpeakerNode');
    if (selectedNode == null)
        return;
    var selectedRootNode = $get('selectedSpeakerRootNode');
    if (selectedRootNode == null)
        return;
    var rootTop = GetOffsetTop(selectedRootNode, speakerPanel);
    var top = GetOffsetTop(selectedNode, speakerPanel);
    if (top - rootTop > speakerPanel.offsetHeight - selectedNode.offsetHeight) {
        if (top - 80 > 0)
            speakerPanel.scrollTop = top - 80;
            
    }
    else {
        speakerPanel.scrollTop = rootTop;
    }
}



function SeekAgendaScrollPosition() {
    var agendaPanel = $get('DivAgendaPanel');
    var selectedNode = $get('selectedAgendaNode');
    if (selectedNode == null)
        return;
    var selectedRootNode = $get('selectedAgendaRootNode');
    if (selectedRootNode == null)
        return;
    var rootTop = GetOffsetTop(selectedRootNode, agendaPanel);
    var top = GetOffsetTop(selectedNode, agendaPanel);
    if (top - rootTop > agendaPanel.offsetHeight - selectedNode.offsetHeight) {
        if (top - 80 > 0)
            agendaPanel.scrollTop = top - 80;

    }
    else {
        agendaPanel.scrollTop = rootTop;
    }
}

function FormatTimestamp(timestamp) {
    var hour = Math.floor(timestamp / 3600);
    var minute = Math.floor((timestamp - hour * 3600) / 60);
    var sec = timestamp - hour * 3600 - minute * 60;
    var str = (hour < 10 ? "0" : "") + hour + ":" + (minute < 10 ? "0" : "") + minute + ":" + (sec < 10 ? "0" : "") + sec;
    return str;
}

//stream panel
function PopupStreamPanel() {
    $find("mdStreams").show();
}

function InitStreamPanel() {
    setPopupParent("mdStreams");
    var mpStreams = $find("mdStreams");
    if (mpStreams != null) {
        mpStreams.add_shown(onShowMpStreams);
        mpStreams.add_hiding(onHideMpStreams);
        $addHandler(document, "keydown", onCDVKeyDown);
    }
}

function onShowMpStreams() {
    //hide media player
    $get("imgplayer").style.display = "";
    Player.style.display = "none";

    var background = $find("mdStreams")._backgroundElement;
    background.onclick = function () {
        HideStreamPanelDialog();
    }
}

function onCDVKeyDown(e) {
    if (e && e.keyCode == Sys.UI.Key.esc) {
        // if the key pressed is the escape key, dismiss the dialog
        HideStreamPanelDialog();
        event.returnValue = false
    }
}

function onHideMpStreams() {
    //show media player
    $get("imgplayer").style.display = "none";
    Player.style.display = "";
}

function HideStreamPanelDialog() {
    $find("mdStreams").hide();
}



//new power browser 2

function MarkIn() {

    if (playerState != 5)
        return;

    markInPoint = thispos;
    var txtMarkIn = document.getElementById("txtMarkIn");
    if (txtMarkIn != null) {
        txtMarkIn.value = FormatTimestamp(markInPoint);
    }

    var setMarkOut = false;
    if (!(typeof markOutPoint === "undefined")) {
        if (markOutPoint <= thispos) {
            setMarkOut = true;
        }
    }
    else {
        setMarkOut = true;
    }

    if (setMarkOut == true) {
        markOutPoint = markInPoint + 5 * 60;
        var txtMarkOut = document.getElementById("txtMarkOut");
        if (txtMarkOut != null) {
            txtMarkOut.value = FormatTimestamp(markOutPoint);
        }
    }

    GenerateUrl();
}

function MarkOut() {

    if (playerState != 5)
        return;

    markOutPoint = thispos;
    var txtMarkOut = document.getElementById("txtMarkOut");
    if (txtMarkOut != null) {
        txtMarkOut.value = FormatTimestamp(thispos);
    }


    var setMarkIn = false;
    if (!(typeof markInPoint === "undefined")) {
        if (markInPoint >= thispos) {
            setMarkIn = true;
        }
    }
    else {
        setMarkIn = true;
    }

    if (setMarkIn == true) {
        markInPoint = markOutPoint - 5 * 60;
        if (markInPoint < 0)
            markInPoint = 0;
        var txtMarkIn = document.getElementById("txtMarkIn");
        if (txtMarkIn != null) {
            txtMarkIn.value = FormatTimestamp(markInPoint);
        }
    }

    GenerateUrl();
}

function ShowHideRow() {
    var obj = document.getElementById("copyRow");
    obj.style.display = "";
    obj = document.getElementById("lnkRow");
    obj.style.display = "";
    obj = document.getElementById("embeddedRow");
    obj.style.display = "";
}

function GenerateUrl() {
    if ((typeof markInPoint === "undefined") || (typeof markOutPoint === "undefined")) {
        return;
    }


    ShowHideRow();
    var rootUrl = getRootURL();
    var txtLinkToTheVideo = document.getElementById("txtLinkToTheVideo");
    if (txtLinkToTheVideo != null) {
        txtLinkToTheVideo.value = rootUrl + "asx/share.asx?url=" + escape(streamUrl) + "&in=" + markInPoint + "&out=" + markOutPoint;
    }

    var txtEmbedded = document.getElementById("txtEmbedded");
    if (txtEmbedded != null) {
        var txt = "<iframe scrolling='no'  width='320' height='305' marginheight='0' marginwidth='0' frameborder='0' src='" + 
            rootUrl + "timebandit/embedded.htm?url=" + escape(rootUrl + "asx/share.asx?url=" + streamUrl + "&in=" + markInPoint + "&out=" + markOutPoint) + 
            "' ></iframe>";
        txtEmbedded.innerText = txt;
    }
} 

function getRootURL() {
    var baseURL = location.href;
    var rootURL = baseURL.substring(0, baseURL.indexOf('/', 7));

    // if the root url is localhost, don't add the directory as cassani doesn't use it
    if (baseURL.indexOf('localhost') == -1) {
        return rootURL + "/";
    } else {
        return rootURL + baseURL.substring(baseURL.indexOf('/', 8), baseURL.indexOf('/', baseURL.indexOf('/', 8)+1)) + "/";        
    }
}

function copyToClipboard(text) {
    if (window.clipboardData)  {          
        // IE    
        window.clipboardData.setData("Text", text);    
    }
}

function CopyUrlToClipboard() {
    
    var txtEmbedded = document.getElementById("txtEmbedded");
    if (txtEmbedded != null) {
        copyToClipboard(txtEmbedded.innerText);
    }
}
