var gIsNetscape = (navigator.appName == "Netscape");
var gPlayerType;
var gLastEventIndex;
var gTimerID;


function convertHMStoSec(str)
{
	str = new String(str);
	var strArray = str.split(":");
	var arrayLength = strArray.length;
	var totalSeconds = 0;
	
	if ((arrayLength - 1) >= 0)
	{
		totalSeconds = parseFloat(strArray[arrayLength - 1]);
		if ((arrayLength - 2) >= 0)
		{
			totalSeconds += parseInt((strArray[arrayLength - 2]), 10) * 60;
			if ((arrayLength - 3) >= 0)
			{
				totalSeconds += parseInt((strArray[arrayLength - 3]), 10) * 60 * 60;
			}
		}
	}
	return totalSeconds
}


function init(playerType)
{
	gPlayerType = playerType;
	gLastEventIndex = -1;
	
	// not using javascript to handle QT events
	if (gPlayerType != "qt")
	{
		gTimerID = window.top.setInterval("getPosDoEvent()", 50);
	}
}


function getPosDoEvent()
{
	var mediaPosition;
	var eventArrayLength = gEventArray.length;
	var eventIndex = 0;    //slideindex
	var currentEvent = -1;  //newindex
	var testVar1;
	var testVar2;

	if (gPlayerType == "wm")
	{
		var player = window.top.videoFrame.document.MediaPlayer;

		if (gIsNetscape)
		{
			//mediaPosition = player.GetCurrentPosition();
			mediaPosition = player.CurrentPosition;
			testVar1 = 1;
			testVar2 = 2;
		}
		else
		{
			mediaPosition = player.CurrentPosition;
		}
	}
	else if (gPlayerType == "rm")
	{
		var player = window.top.videoFrame.document.MediaPlayer;

		mediaPosition = player.GetPosition() / 1000;
	}

	//alert("mediaPosition: " + mediaPosition);
	
	//if ((mediaPosition > 440) && (mediaPosition < 441))
	//{
	//	var tempVar = 1;
	//}
	
	for (eventIndex = 0; eventIndex < eventArrayLength; eventIndex++)
	{
		if (convertHMStoSec(gEventArray[eventIndex][0]) <= mediaPosition)
		{
			currentEvent = eventIndex;
		}
		else
		{
			break;
		}
	}
	
	if ((currentEvent != gLastEventIndex) && (currentEvent > -1))
	{
		// build array of events that occur at this media position
		sameTimeEvents = new Array();
		sameTimeEvents[0] = currentEvent;

		for (i = 1; currentEvent - i >= 0; i++)
		{
			if (convertHMStoSec(gEventArray[currentEvent][0]) == convertHMStoSec(gEventArray[currentEvent - i][0]))
			{
				sameTimeEvents[i] = currentEvent - i;
			}
			else
			{
				break;
			}
		}
		
		// go through array of events occurring at this media position and display them
		for (j = 0; j < sameTimeEvents.length; j++)
		{
			switch (gEventArray[sameTimeEvents[j]][2])
			{
				case "slide" :
					window.top.slideFrame.location.assign(gEventArray[sameTimeEvents[j]][1]);
					break;
				case "caption" :
					window.top.captionFrame.location.replace(gEventArray[sameTimeEvents[j]][1]);
					break;
				case "restart" :
					window.top.slideFrame.location.assign(gEventArray[sameTimeEvents[j]][1]);
					skipToChapter(0);
					break;
				case "new" :
					window.open(gEventArray[sameTimeEvents[j]][1], "", "toolbar=0,scrollbars=1,location=0,status=0,menubar=0,resizable=1,width=640,height=680,left=1,top=1");
					break;
				default :
					switch (gEventArray[sameTimeEvents[j]][1].charAt(0))
					{
						case "s" :
							window.top.slideFrame.location.assign(gEventArray[sameTimeEvents[j]][1]);
							break;
						case "c" :
							window.top.captionFrame.location.replace(gEventArray[sameTimeEvents[j]][1]);
							break;
						default :
					}
			}
		}
	}
	gLastEventIndex = currentEvent;
}


function skipToChapter(timeStr)
{
	
	// make sure a chapter is selected
	if (timeStr != "#") {
		var player = window.top.videoFrame.document.MediaPlayer;
		
		if (gIsNetscape) {
			player.SetCurrentPosition(convertHMStoSec(timeStr));
		}
		else {
			player.CurrentPosition = convertHMStoSec(timeStr);
		}
    }
}


function stopEvents()
{
	window.top.clearInterval(gTimerID);
}

