const XML_FILE 		= "events.xml";
const TAG_EVENT 		= "event";
const TAG_TITLE 		= "title";
const TAG_CONTENT 	= "content";
const ATTR_DATE 		= "date";
const BLOCK_UPCOMING	= "upcomingEvents";

const EVENT_TITLE 	= "title";
const EVENT_CONTENT	= "content";

// Parses the pased XML document and sends the XHTML to the browser.
// Param: xmldoc - The XML document object
function processXML(xmldoc)
{
	var v = new VectorMap();
	v.add("bob", "is cool");
	v.add("adam", "is also");
	v.add("zach", "is not");
	v.add("jerad", "can be");
	
	alert( v.getKeys.toString() );
	alert( v.getValues.toString() );
	
	return;
	try
	{
		while ( !v.isEmpty() )
		{
			alert( v.keyExists(0) );
			alert( v.get(0) );
			v.remove(0);
		}
	}
	catch(e)
	{
		alert(e);
		throw(e);
	}

	return;
	
	var m = new ArrayMap();
	m.add(43, "Adam");
	m.add(23, "Dennis");
	m.add(66, "Jerad");
	
	alert( "Next: " + m.nextPair() );
	alert( "Next: " + m.nextPair() );
	alert( "Next: " + m.nextPair() );
	alert( "Next: " + m.nextPair() );
	return;
	thisWeek = buildWeekArray(0);
	nextWeek = buildWeekArray(1);
	
	var today = new Date();
	var numEvents = xmldoc.getElementsByTagName(TAG_EVENT).length;
	var thisWeekEvents = "";
	var nextWeekEvents = "";
	var thisWeekEvents = new ArrayMap();
	var nextWeekEvents = new ArrayMap();
	
	for ( var i = 0; i < numEvents; i++ )
	{
		try
		{
			var eventVector = new ArrayVector();
			var event = xmldoc.getElementsByTagName(TAG_EVENT)[i];
			var date = event.getAttribute(ATTR_DATE);
			
			var title
				= event.getElementsByTagName(TAG_TITLE)[0].firstChild.nodeValue;

			var content
				= event.getElementsByTagName(TAG_CONTENT)[0].firstChild.nodeValue;
			
			if ( inArray(thisWeek, date) )
			{
				eventVector.add( EVENT_TITLE, title );
				eventVector.add( EVENT_CONTENT, content );
				thisWeekEvents.add( date, eventVector );
			}
			
			if ( inArray(nextWeek, date) )
			{
				eventVector.add( EVENT_TITLE, title );
				eventVector.add( EVENT_CONTENT, content );
				nextWeekEvents.add( date, eventVector );
			}
		}
		catch (e)
		{
			alert("The associated XML file has an error:\n" + e);
		}
	}
	
	if ( thisWeekEvents.isEmpty() )
		thisWeekEvents = '<span class="eventTitle">No events this week</span>';
	else
	{
		thisWeekEvents.sortNumeric();
	}
	thisWeekEvents = '<div class="eventWeek">This Week:</div>' + thisWeekEvents;
	
	if ( nextWeekEvents.isEmpty() )
		nextWeekEvents = '<span class="eventTitle">No events next week</span>';
	else
	{
	}
	nextWeekEvents = '<div class="eventWeek">Next Week:</div>' + nextWeekEvents;
	
	document.getElementById(BLOCK_UPCOMING).innerHTML 
								= thisWeekEvents + "<br />" + nextWeekEvents;
}

function start()
{
	loadXMLDoc(XML_FILE);
}

// Builds an array of with the specific dates of the week based on the current week
// plus the week number offset
function buildWeekArray(offset)
{
	var days = new Array(7);
	d = new Date();
	var timeInWeek = 604800000;
	var timeInDay = timeInWeek / 7;
	
	// Set the date to the week requested by the offset
	d.setTime( d.getTime() + (timeInWeek * offset) );
	
	// Set date to sunday of the current week
	dayOfWeek = d.getDay();
	d.setTime( d.getTime() - (timeInDay * dayOfWeek) );
	
	for ( weekDay = 0; weekDay < 7; weekDay++ )
	{
		days[weekDay] = getDateString(d);
		d.setTime( d.getTime() + timeInDay );
	}
	
	return days;
}

// Returns a string representation of the date object passed to it
function getDateString(d)
{
	year = d.getFullYear() + "";
	month = d.getMonth() + 1 + "";
	if ( month.length == 1 )
		month = "0" + month;
	
	date = d.getDate() + "";
	if ( date.length == 1 )
		date = "0" + date;
	return year + month + date;
}
