var contentLinks = new Array();

function bodyLoad() {
	processSiteNavigation();
	processContentLists();
}

/*
Processes the site navigation to disable the link to the current page, etc.
*/
function processSiteNavigation() {
	// get the site nav
	var siteNavigationElement = document.getElementById('SiteNavigation');
	var siteNavigationList = siteNavigationElement.getElementsByTagName('ul')[0];
	var listItems = siteNavigationList.getElementsByTagName('li');
	
	for (var i = 0; i < listItems.length; i++) {
		var currentListItem = listItems[i];
		
		// get the URL for this navigation item
		var linkElement = currentListItem.getElementsByTagName('a')[0];
		
		// if it's the same as this document, remove the link and set a class on the list item
		if (linkElement.href == document.location.toString()) {
			var text = document.createTextNode(linkElement.innerHTML);
			
			currentListItem.replaceChild(text, linkElement);
			
			currentListItem.className = 'CurrentPage';
		}		
	}
}

/*
Processes all elements of class ContentList into JS objects and renders them appropriately in the page
*/
function processContentLists() {
	// get all the content lists
	var contentLists = document.getElementsByClassName('ContentList');
	
	// for each item in the list within the content list element...
	for (var i = 0; i < contentLists.length; i++) {
		var currentContentList = contentLists[i];
		
		var list = currentContentList.getElementsByTagName('ul')[0];
		
		if (list) {
			var listItems = list.getElementsByTagName('li');
			
			for (var j = 0; j < listItems.length; j++) {
				var currentListItem = listItems[j];
		
				var headerElement = currentListItem.getElementsByClassName('Title')[0];
				var linkElement = headerElement.getElementsByTagName('a')[0];
				var imageElement = currentListItem.getElementsByClassName('Detail')[0];
				var mediaElement = currentListItem.getElementsByClassName('Materials')[0];
				var dateElement = currentListItem.getElementsByClassName('Date')[0];
		
				// get the ID
				var contentID = currentListItem.id;
		
				// get the title
				var title = linkElement.innerHTML;
				
				// get the link
				var link = linkElement.href;
			
				// get the link description
				var linkDesc = linkElement.title;
			
				// get the image URL
				var imageURL = imageElement.src;
				
				// get the media
				var media = mediaElement.innerHTML;
				
				// get the Date
				var date = dateElement.innerHTML;
				
				// make a content link Object
				var contentLink = new ContentLink(contentID, title, link, imageURL, linkDesc, media, date);
				contentLinks.push(contentLink);
				
				// replace the old list item with a new one
				var newListItem = document.createElement('li');
				
				newListItem.appendChild(createElementForContentLink(contentLink));
				
				list.replaceChild(newListItem, currentListItem);
			}
		}
	}
}

/*
Object representing a link to a content page
*/
function ContentLink(contentID, title, contentPageURL, detailImageURL, linkDescription, media, date) {
	this.contentID = contentID;
	this.title = title;
	this.contentPageURL = contentPageURL;
	this.detailImageURL = detailImageURL;
	this.linkDescription = linkDescription;
	this.media = media;
	this.date = date;
}

/*
Creates an element representing a content link
*/
function createElementForContentLink(aContentLink) {
	var element = document.createElement('div');

	element.className = 'ContentLink';
//	element.id = aContentLink.id; // TODO
	
	var linkElement = document.createElement('a');
	element.appendChild(linkElement);
	
	linkElement.href = aContentLink.contentPageURL;
/* 	linkElement.title = aContentLink.linkDescription; */
	
	linkElement.addEventListener('mouseover', showContentDetails, false);
	linkElement.addEventListener('mouseout', hideContentDetails, false);
	
	var detailElement = document.createElement('img');
	linkElement.appendChild(detailElement);
	
	detailElement.className ='Detail';
	detailElement.src = aContentLink.detailImageURL;

	var detailsElement = document.createElement('div');
	element.appendChild(detailsElement);
	
	detailsElement.className = 'ContentDetails Hide';
	
	var titleElement = document.createElement('div');
	detailsElement.appendChild(titleElement);
	
	titleElement.className = 'Title';
	titleElement.innerHTML = aContentLink.title;

	var titleElement = document.createElement('div');
	detailsElement.appendChild(titleElement);
	
	titleElement.className = 'Media';
	titleElement.innerHTML = aContentLink.media;

	var titleElement = document.createElement('div');
	detailsElement.appendChild(titleElement);
	
	titleElement.className = 'Date';
	titleElement.innerHTML = aContentLink.date;
	
	return element;
}

function showContentDetails(anEvent) {
	var linkElement = anEvent.currentTarget;
	var contentDetailsElement = linkElement.parentNode.getElementsByClassName('ContentDetails')[0];	
	
	contentDetailsElement.className = 'ContentDetails Show';
}

function hideContentDetails(anEvent) {
	var linkElement = anEvent.currentTarget;
	var contentDetailsElement = linkElement.parentNode.getElementsByClassName('ContentDetails')[0];	
	
	contentDetailsElement.className = 'ContentDetails Hide';
}