/* 
 * JavaScript Document
 *
 * @author Ed Slocombe
 *		   ed.slocombe@googlemail.com
 *		   www.eduardo.me.uk
 * @date 13.04.08
 * Created for Cats '83 website 'Events' page
 */
 
var initialising_events = false; 
var initialised_events = false;
var xmlDoc_events;

var upcomingEvents;
var pastEvents;
var noOfEvents;

var upcomingEventsHTML = "";
var pastEventsHTML = "";

var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

function populateEvents()
{
	if (initialised_events) setEventsContent("show", "hide");
	else if (initialising_events) { } // Dont do anything - wait
	else {
		events = importEventsFromXML("xml/events.xml");
		initialising_events = true;
	}
}

function importEventsFromXML(fileName)
{
	var pageRequest;
	pageRequest = (browser == browsers.OTHER)? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	pageRequest.onreadystatechange = function() { parseXML (pageRequest) };
	pageRequest.open("GET", fileName, true);
	pageRequest.send(null);
}

function parseXML(pageRequest)
{
	var tempVariable;
	
	if (pageRequest.readyState == 4){
		if (pageRequest.status == readyStatus){
			xmlDoc_events = pageRequest.responseXML;
			var eventTags = xmlDoc_events.getElementsByTagName("event");
			noOfEvents = eventTags.length;
			upcomingEvents = new Array();
			pastEvents = new Array();
			var today = new Date();
			for (var i=0; i<noOfEvents; i++){
				var tempEvent = new Object();
				tempEvent.name = getTextByTagName(eventTags[i], "name", 0); //eventTags[i].getElementsByTagName("name")[0].firstChild.nodeValue;
				var day = -1;
				if (tempVariable = getTextByTagName(eventTags[i], "day", 0)) //eventTags[i].getElementsByTagName("day")[0].firstChild)
					day = tempVariable;// eventTags[i].getElementsByTagName("day")[0].firstChild.nodeValue;
				var dayTo = -1;
				if (tempVariable = getTextByTagName(eventTags[i], "dayTo", 0)) //eventTags[i].getElementsByTagName("dayTo")[0].firstChild)
					dayTo = tempVariable; //eventTags[i].getElementsByTagName("dayTo")[0].firstChild.nodeValue;
				var _month = getTextByTagName(eventTags[i], "month", 0); //eventTags[i].getElementsByTagName("month")[0].firstChild.nodeValue;
				var year = getTextByTagName(eventTags[i], "year", 0); //eventTags[i].getElementsByTagName("year")[0].firstChild.nodeValue;
				tempEvent.date = (day != -1)? new Date(year, _month-1, day) : month[_month-1]+", "+year;
				tempEvent.dateTo = (dayTo == -1)? null : new Date(year, _month-1, dayTo);
				tempEvent.description = getTextByTagName(eventTags[i], "description", 0); //eventTags[i].getElementsByTagName("description")[0].firstChild.nodeValue;
				if (tempVariable = getTextByTagName(eventTags[i], "thumbnail", 0)) //(eventTags[i].getElementsByTagName("thumbnail")[0].firstChild)
					tempEvent.thumbnail = tempVariable; //eventTags[i].getElementsByTagName("thumbnail")[0].firstChild.nodeValue;
				else tempEvent.thumbnail = null;
				if (tempVariable = getTextByTagName(eventTags[i], "photoGroupId", 0)) //(eventTags[i].getElementsByTagName("photoGroupId")[0].firstChild)
					tempEvent.photoGroupId = tempVariable; //eventTags[i].getElementsByTagName("photoGroupId")[0].firstChild.nodeValue;
				else tempEvent.photoGroupId = -1;
				try {
					if (tempEvent.date.getTime() < today.getTime()) pastEvents.push(tempEvent);
					else upcomingEvents.push(tempEvent);
				} catch (e){ upcomingEvents.push(tempEvent); }
			}
			populateEventsContent();
		}
		else document.getElementById("right_col").innerHTML = "<p>An error has occured, please contact the <a href='mailto:ed.slocombe@googlemail.com'>webmaster</a>.</p>";
	}
}

function populateEventsContent()
{
	if (upcomingEvents.length == 0)
		upcomingEventsHTML += "<p>There are currently no upcoming events planned.</p>";
	else {
		for (var i=0; i<upcomingEvents.length; i++){
			upcomingEventsHTML += drawEvent(upcomingEvents[i]);
		}
	}
	if (pastEvents.length == 0)
		pastEventsHTML += "<p>There have not yet been any past events recorded on this website.</p>";
	else {
		for (var i=0; i<pastEvents.length; i++){
			pastEventsHTML += drawEvent(pastEvents[i]);
		}
	}
	initialised_events = true;
	setEventsContent("show", "hide");
}

function setEventsContent(upcomingToggle, pastToggle)
{
	var element = document.getElementById("right_col");
	// UPCOMING TITLE
	var upcomingTitle = "Upcoming Events ";
	if (upcomingToggle == "show"){ 
		upcomingTitle += "<span class='toggle'><a href='javascript:setEventsContent(\"hide\", \""+pastToggle+"\")' title='Hide upcoming events' name='Hide upcoming events'>Hide</a></span>";
	}
	else 
		upcomingTitle += "<span class='toggle'><a href='javascript:setEventsContent(\"show\", \""+pastToggle+"\")' title='Show upcoming events' name='Show upcoming events'>Show</a></span>";
	// PAST TITLE
	var pastTitle = "Past Events ";
	if (pastToggle == "show")
		pastTitle += "<span class='toggle'><a href='javascript:setEventsContent(\""+upcomingToggle+"\", \"hide\")' title='Hide past events' name='Hide past events'>Hide</a></span>";
	else 
		pastTitle += "<span class='toggle'><a href='javascript:setEventsContent(\""+upcomingToggle+"\", \"show\")' title='Show past events' name='Show past events'>Show</a></span>";


	element.innerHTML = "<h1>"+upcomingTitle+"</h1>";
	if (upcomingToggle == null || upcomingToggle == "show"){ 
		element.innerHTML += upcomingEventsHTML;
	}
	element.innerHTML += "<h1 style='margin-top:8px'>"+pastTitle+"</h1>";
	if (pastToggle == "show"){
		element.innerHTML += pastEventsHTML;
	}
}

function drawEvent(theEventObj)
{
	var returnString = "";
	if (theEventObj.thumbnail != null) returnString += "<div class='events_event' style='min-height:180px'>";
	else  returnString += "<div class='events_event'>";
	returnString += "<div class='events_header'>";
	
	// Write Date
	returnString += "<span class='events_date'>";
	if (theEventObj.date.constructor.toString().indexOf("Date()") != -1){
		if (theEventObj.dateTo != null){
			if (theEventObj.dateTo.getMonth() == theEventObj.date.getMonth())
				returnString += theEventObj.date.getDate()+" - "+theEventObj.dateTo.getDate()+" "+month[theEventObj.date.getMonth()]+", "+theEventObj.date.getFullYear();
			else 
				returnString += theEventObj.date.getDate()+" "+month[theEventObj.date.getMonth()]+" - "+theEventObj.dateTo.getDate()+" "+month[theEventObj.dateTo.getMonth()]+", "+theEventObj.date.getFullYear();
		}
		else returnString += weekday[theEventObj.date.getDay()] + ", "+theEventObj.date.getDate()+" "+month[theEventObj.date.getMonth()]+", "+theEventObj.date.getFullYear();
	}
	else returnString += "TBC, "+theEventObj.date;
	returnString += "</span>";
	
	returnString += theEventObj.name;
	returnString += "</div>\n";
	
	if (theEventObj.thumbnail != null)
		returnString += "<div class='events_thumb'><img alt='"+theEventObj.name+" pic' src='"+theEventObj.thumbnail+"' /></div>";
	returnString += "<p>"+theEventObj.description + "</p>";
	if (theEventObj.photoGroupId != -1)
		returnString += "<p><a class='events_link' href='javascript:drawGallery("+theEventObj.photoGroupId+", true)' name='View photos from "+theEventObj.name+"' title='View photos from "+theEventObj.name+"'>View photos</a>";
	returnString += "</div>";
	return returnString;
}
		
