//this file contains functions for static (i.e. recorded) tours
//reading stored events from the xml file
//waiting for next event
//and coordinating between audio and events.

//global variable to hold the list of events and its current position.
var eventslist;
var currentevent = 0;
var recordstarttime = 0;
var starttime = 0;
var paused = false;
var pausedtime = 0;

//load xml
function loadxmlfile() {
	//Internet Explorer
	try {
		eventsxml=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e) {
		//Firefox, Mozilla, Opera, etc.
		try {
			eventsxml=document.implementation.createDocument("","",null);
		}
		catch(e) {alert(e.message)}
	}
	try {
		eventsxml.async=false;
		eventsxml.load("events.xml");
	}
	catch(e) {alert(e.message)}

	eventslist = eventsxml.documentElement.getElementsByTagName("update");
	currentevent = 0;
	
	//get the starting time
	now = new Date();
	starttime = now.getTime()/1000;
	
	if (eventslist[0]) {
		waitfornextevent();
	}
}

function waitfornextevent() {
	if (!eventslist[currentevent]) return;

	//grab the current time.
	now = new Date();
	currenttime = now.getTime()/1000;
	
	nexteventtime = eventslist[currentevent].getElementsByTagName("time")[0].childNodes[0].nodeValue;
	waittime = nexteventtime - (recordstarttime + (currenttime - starttime));

	setTimeout("activateevent()", waittime * 1000);
}

function activateevent() {
	if (paused) return;
	showupdate(eventslist[currentevent]);
	currentevent++;
	waitfornextevent();
}

function pauseplayback() {
	now = new Date();
	pausedtime = now.getTime()/1000;
	paused = true;
}

function resumeplayback() {
	paused = false;
	now = new Date();
	currenttime = now.getTime()/1000;
	starttime = currenttime - pausedtime + starttime
	waitfornextevent();
}

