<!--

//These values are used to account for the length of time required to change the media position
//It should be greater than the player's buffer period
var checkTakeChangeTimer = 1200;
var checkTakeEndTimerInterval = 4000;
var mediaPositionNegOffset = 1;
var mediaPositionChangeTimer;
var playPlayListThread = "";
var lastTakeViewed = 0;

function init()
{
	window.setTimeout("play()", 1000);
}

function play()
{
	if(window.parent.isPlaying(window.parent.document.quicktimemov) == "false")
	{
		window.parent.startPlayer(window.parent.document.quicktimemov);
		
		document.takehidden.currenttakeended.value = "true";
		document.takehidden.playliststate.value = "playing";
		top.scenelistcontrolframe.document.getElementById("currentPlaylistState").innerHTML = "Starting...";
		playPlayListThread = window.setInterval("playPlayList()", checkTakeChangeTimer);
	}
	
}

function playPlayList()
{
	//If the Media Player is stopped then stop the playlist monitor thread
	if(window.parent.isStopped(window.parent.document.quicktimemov) == "true")
	{
		document.takehidden.currenttakeended.value = "true";
		document.takehidden.playliststate.value = "stopped";	
		top.scenelistcontrolframe.document.getElementById("currentPlaylistState").innerHTML = document.takehidden.playliststate.value;
		return;
	}
	else if(window.parent.isPlaying(window.parent.document.quicktimemov) == "true" && document.takehidden.playliststate.value == "stopped")
	{
		play();
	}		

	//play the play list from the current take 	
	if(new Number(document.takehidden.currenttake.value) > new Number(document.takehidden.numtakes.value))
		document.takehidden.currenttake.value = 1;
		
	top.scenelistcontrolframe.document.getElementById("currentPlaylistState").innerHTML = "Playing...";	
	while(!document.takehidden.eval("playtake" + document.takehidden.currenttake.value + ".checked") && document.takehidden.currenttakeended.value == "true")
	{
		document.takehidden.currenttake.value ++;
		if(new Number(document.takehidden.currenttake.value) > new Number(document.takehidden.numtakes.value))
			document.takehidden.currenttake.value = 1;
	}
	playTake(document.takehidden.currenttake.value); 
}

function playTake(takeNum)
{
    //Set the media position to the take's start TC
    if(document.takehidden.currenttakeended.value == "true")
    {
		document.takehidden.currenttakeended.value = "false";
		document.getElementById("scenenamelabel" + takeNum).className = "currentTakeSelected";
		document.getElementById("takenamelabel" + takeNum).className = "currentTakeSelected";
		top.scenelistcontrolframe.document.getElementById("currentSceneName").innerHTML = document.takehidden.eval("scenename" + takeNum + ".value");
		top.scenelistcontrolframe.document.getElementById("currentTakeNumber").innerHTML = document.takehidden.eval("takename" + takeNum + ".value");	
		top.scenelistcontrolframe.document.getElementById("currentStartTimecode").innerHTML = document.takehidden.eval("takestart" + takeNum + ".value").substring(0, 11);
		top.scenelistcontrolframe.document.getElementById("currentEndTimecode").innerHTML = document.takehidden.eval("takestop" + takeNum + ".value").substring(0, 11); 
		mediaPosition = new Number(document.takehidden.eval("takestartseconds" + takeNum + ".value")) - mediaPositionNegOffset;
		
		//To avoid unneccessary buffering, if the takes are consecutive don't change the mediapostion.
		if((new Number(lastTakeViewed) + 1) != takeNum)
		{
			window.parent.playFromPosition(window.parent.document.quicktimemov, mediaPosition)
			lastTakeViewed = 0;
		}
		mediaPositionChangeTimer = new Date();		
    }
    else
    {
    	//Check if the take is done
    	takestoptime = document.takehidden.eval("takestop" + takeNum + ".value");
    	
		checkTakeEnd();
    }
}

function seekTake(takeNum)
{	
	lastTakeViewed = -1;
	showCurrentTakeAsViewed();
	document.takehidden.currenttakeended.value = "true";
	document.takehidden.currenttake.value = takeNum;
	if(navigator.platform == "Win32")
	{
		document.eval("playtake" + takeNum + ".checked = 'true'");
		play();
	}
	else
	{
		playTake(takeNum);
	}
}

function nextTake()
{
	lastTakeViewed = -1;
	showCurrentTakeAsViewed();	
	document.takehidden.currenttakeended.value = "true";
	document.takehidden.currenttake.value ++;
	
	playTake(document.takehidden.currenttake.value);
}

function prevTake()
{
	lastTakeViewed = -1;
	showCurrentTakeAsViewed();	
	document.takehidden.currenttakeended.value = "true";
	if(document.takehidden.currenttake.value == 1)
	{
		document.takehidden.currenttake.value = document.takehidden.numtakes.value;
		return;
	}
	else
		document.takehidden.currenttake.value --;
			
	while(!document.takehidden.eval("playtake" + document.takehidden.currenttake.value + ".checked"))
	{
		if(document.takehidden.currenttake.value == 1)
		{
			document.takehidden.currenttake.value = document.takehidden.numtakes.value;
			return;
		}
		else
			document.takehidden.currenttake.value --;
	}
	
	playTake(document.takehidden.currenttake.value);

}

function showCurrentTakeAsViewed()
{
	document.getElementById("scenenamelabel" + document.takehidden.currenttake.value).className = "takeViewed";
	document.getElementById("takenamelabel" + document.takehidden.currenttake.value).className = "takeViewed";
}

function checkTakeEnd()
{
	top.scenelistcontrolframe.document.getElementById("currentTimecodeValue").innerHTML =
	deriveTimecode(document.takehidden.eval("takestart" + 
		document.takehidden.currenttake.value + ".value"), 
		document.takehidden.eval("takestartseconds" + document.takehidden.currenttake.value + ".value"),
		window.parent.getMediaCurrTime(window.parent.document.quicktimemov));
	
	//Check if this is the last take
	if(document.takehidden.currenttake.value == document.takehidden.numtakes.value)
		takeEndSeconds = window.parent.getMediaEndTime(window.parent.document.quicktimemov) - 1;
	else
		takeEndSeconds = new Number(document.takehidden.eval("takestartseconds" + (new Number(document.takehidden.currenttake.value) + 1) + ".value"));
	
	if(window.parent.getMediaCurrTime(window.parent.document.quicktimemov) > takeEndSeconds)
	{
		document.takehidden.currenttakeended.value = "true";
		showCurrentTakeAsViewed();
		lastTakeViewed = document.takehidden.currenttake.value;
		document.takehidden.currenttake.value ++;
	}
}

function deriveTimecode(startTimecode, startSeconds, mediaPosition)
{
	mediaTime = new Date((mediaPosition - startSeconds) * 1000);
	timecodeHours = startTimecode.substring(0, 2);
	timecodeMinutes = new Number(startTimecode.substring(3, 5)) + new Number(mediaTime.getMinutes().toString());
	timecodeSeconds = new Number(startTimecode.substring(6, 8)) + new Number(mediaTime.getSeconds().toString());	
	timecodeFrames = new Number(startTimecode.substring(9, 11)) + (new Number(mediaTime.getMilliseconds().toString())/33);
	if(timecodeFrames >= 30)
	{
		timecodeSeconds ++;
		if(timecodeFrames == 30)
			timecodeFrames = 0;
		else
			timecodeFrames -= 30;
	}
	if(timecodeSeconds >= 60)
	{
		timecodeMinutes ++;
		if(timecodeSeconds == 60)
			timecodeSeconds = 0;
		else	
			timecodeSeconds -= 60;
	}	
	if(timecodeMinutes >= 60)
	{
		timecodeHours ++;
		if(timecodeMinutes == 60)
			timecodeMinutes = 0;
		else
			timecodeMinutes -= 60;
	}
	
	if(timecodeMinutes < 10)
		timecodeMinutes = new String("0" + timecodeMinutes);
	if(timecodeSeconds < 10)
		timecodeSeconds = new String("0" + timecodeSeconds);
	if(timecodeFrames < 10)
		timecodeFrames = new String("0" + timecodeFrames);
	timecodeFrames = new String(timecodeFrames).substring(0, 2);	

	return new String(timecodeHours + ":" + timecodeMinutes + ":" + 
		timecodeSeconds + "." + timecodeFrames);
}

-->