
function toggleDrawer(drawerName) {
	var mainDrawer = document.getElementById('drawer');
	var azIndex = document.getElementById('azIndex');
	var tools = document.getElementById('tools');

	var drawerOpen = (mainDrawer.style.display && mainDrawer.style.display != 'none');

	if (drawerName == "tools") {
		azIndex.style.display = 'none';

		if (drawerOpen)
			$(tools).fadeIn();
		else
			tools.style.display = '';
	}
	else {
		tools.style.display = 'none';

		if (drawerOpen)
			$(azIndex).fadeIn();
		else
			azIndex.style.display = '';
	}

	if (!drawerOpen)
		$(mainDrawer).slideDown();
	else if (mainDrawer.currentDrawer == drawerName)
		$(mainDrawer).slideUp();

	mainDrawer.currentDrawer = drawerName;
}

function closeDrawer() {
	$('#drawer').slideUp();
}

function createAlphabet() {
	var cnt = 0;
	var alphabetHTML = '<ul>';
	var firstLetter = '';

	for (var letter in AZIndexLinks) {
		alphabetHTML += '<li><a id="liOf' + letter + '" href="javascript:void(0);" onclick="populateIndex(\'' + letter + '\')">' + letter + '</a></li>';

		if (cnt == 0)
			firstLetter = letter;

		cnt++;
	}

	document.getElementById('azAlphabet').innerHTML = alphabetHTML + '</ul>';
	populateIndex(firstLetter);
}

function populateIndex(letter) {
	var numberOfAZColumns = 4;
	var links = AZIndexLinks[letter];

	for (var currLetter in AZIndexLinks)
		document.getElementById("liOf" + currLetter).className = "";

	document.getElementById("liOf" + letter).className = "selected";

	var output = '<div><table width="98%" border="0" height="100%"><tr>';

	/* colBreak specifies the number of items for the current column */
	var colBreak = Math.ceil(links.length / numberOfAZColumns);
	var colWidth = 100 / numberOfAZColumns;
	var currentCol = -1;
	var lastIndex = 0;

	for (var i = 0; i < links.length; i++) {
		var links

		if (i - lastIndex >= colBreak || i == 0) {
			if (i != 0)
				output += '</ul></td>';

			output += '<td width="' + colWidth + '%"><ul>';
			currentCol++;

			/* colBreak is updated when there is a new column */
			colBreak = Math.ceil((links.length - i) / (numberOfAZColumns - currentCol));
			lastIndex = i;
		}

		output += '<li><a href="http://www.csbsju.edu/' + links[i].link + '" onclick="pageTrackerAtoG._trackPageview(\'/AZ_Index/' + links[i].xID + '\');">' + links[i].name + '</a></li>';
	}

	document.getElementById("azLinks").innerHTML = output + '</ul></td></tr></table></div>';
}

function populateTools() {
	var numberOfColumns = 3;
	var output = '<table cellpadding="10"><tr>';

	var colWidth = 100 / numberOfColumns;
	var currentCol = -1;
	var lastIndex = 0;

	for (var column in ToolLinks) 
	{
		output += '<td width="' + colWidth + '%">';

		for (var i = 0; i < ToolLinks[column].length; i++) 
		{
			var tool = ToolLinks[column][i];
			output += '<p><a href="' + tool.link + '" onclick="pageTrackerHtoZ._trackPageview(\'/Tools/' + tool.xID + '\');"><img src="' + tool.icon + '" class="toolsIcon" />' + tool.title + '</a></p><p class="toolsDescription">' + tool.description + '</p>';
		}
		
		output += '</td>';
	}

	document.getElementById("tools").innerHTML = output + '</td></tr></table>';
}

function createMainNav() {
	var mainNavHTML = '<ul>';
	var cnt = 0;

	for (var o in MenuJSON) {
		var firstToken = (o.toString().split(' '))[0];

		mainNavHTML += '<li>' +
							'<div class="dropdown-menu">' +
								'<a class="menu-first" id="' + firstToken + 'Menu" href="http://www.csbsju.edu/' + MenuJSON[o].link + '" >' + o + '</a>' +
								'<div class="subMenu" id="' + firstToken + 'SubMenu" style="display: none;">' +
										'<table border="0" class="subMenuStyle" id="' + firstToken + 'SubMenuTable">' +
											'<tr>' +
												'<td><ul>';

		for (var i = 0; i < MenuJSON[o].items.length; i++)
			mainNavHTML += '<li><a href="http://www.csbsju.edu/' + MenuJSON[o].items[i].link + '">' + MenuJSON[o].items[i].name + '</a></li>';

		mainNavHTML += '</ul></td>';

		if (MenuJSON[o].image || MenuJSON[o].content) {
			mainNavHTML += '<td class="subMenuContent"><center>';

			if (MenuJSON[o].image)
				mainNavHTML += '<img src="' + MenuJSON[o].image + '" />';

			if (MenuJSON[o].content) {
				mainNavHTML += '<p>';

				if (MenuJSON[o].contentLink)
					mainNavHTML += '<a href="' + MenuJSON[o].contentLink + '" class="plain">';

				mainNavHTML += MenuJSON[o].content;

				if (MenuJSON[o].link)
					mainNavHTML += '</a>';

				mainNavHTML += '</p>';
			}

			mainNavHTML += '</center></td>';
		}

		mainNavHTML += '</tr></table></div></div></li>';
	}

	document.getElementById('mainnav').innerHTML = mainNavHTML + '</ul>';

	//The CSS position attribute cannot be set to 'absolute' until after the HTML has been
	//added to the DOM. Otherwise, the width of the subMenu div will not be calculated properly.
	for (var o in MenuJSON) {
		var firstToken = (o.toString().split(' '))[0];
		var subMenu = document.getElementById(firstToken + 'SubMenu');

		if (jQuery.browser.msie && jQuery.browser.version == '6.0')
			subMenu.style.width = subMenu.offsetWidth + 'px';
			
		subMenu.style.position = 'absolute';
	}

	$('.dropdown-menu').hover
	(
		function() {
			var subMenu = $('.subMenu', this);
			subMenu.css('display', '');
			subMenu.css('left', $("a", this).position().left + 'px');
		},
		function() {
			$('.subMenu', this).css('display', 'none');
		}
	);
}

function closeSubMenu() {
	if (MenuJSON == undefined)
		return;

	for (var o in MenuJSON) {
		var firstToken = (o.toString().split(' '))[0];
		document.getElementById(firstToken + 'Menu').className = '';
	}
}

//This will correctly set the z-index for all div elements, i.e., the higher they appear in the DOM 
//the higher their z-index will be. This is here to correct issues with IE7/6/5, but it also elminates
//the need to manually set the z-index in the stylesheet.
function resetZIndex() {
	var CurrentZIndex = 1000;

	$('div').each(function() {
		this.style.zIndex = CurrentZIndex;
		CurrentZIndex -= 1;
	});
}

function resizePageHeight() {
	document.getElementById('bg_rpt_center').style.minHeight = '0px';

	if (document.documentElement.clientHeight)
		document.getElementById('bg_rpt_center').style.minHeight = (document.documentElement.clientHeight + 200) + 'px';

}

function getWindowBottom() {
	if (window.innerHeight && window.pageYOffset)
		return parseInt(window.innerHeight) + parseInt(window.pageYOffset);
	if (typeof document.documentElement == "object" && (document.documentElement.clientHeight > 0 || document.documentElement.clientWidth > 0))
		return document.documentElement.offsetHeight + document.documentElement.scrollTop;
	else
		return document.body.clientHeight + document.body.scrollTop;
}

function setUpLocalNav() {
	var currentHref = location.href;

	$("#localNav li.subnav").each(function() {
		if (this.childNodes.length > 1) {
			var listNode;
			var linkNode;

			for (var a = this.childNodes.length - 1; a >= 0; a--) {
				var currNode = this.childNodes[a];

				if (currNode == undefined || currNode.tagName == undefined)
					continue;

				var tagName = currNode.tagName.toLowerCase();

				if (tagName == 'a' && hasClass(currNode, 'linkArrow'))
				{	
					currNode.linkNode = linkNode;
					linkNode.arrowNode = currNode;				

					currNode.onmouseover = function() { this.linkNode.className = 'hover'; };
					currNode.onmouseout = function() { this.linkNode.className = ''; };
					
					linkNode.onmouseover = function() { this.arrowNode.className = 'linkArrow hover'; };
					linkNode.onmouseout = function() { this.arrowNode.className = 'linkArrow'; };
					
					if (listNode != undefined) {
						currNode.listNode = listNode;
					
						if (hasClass(this, 'on'))
							listNode.style.display = '';
						else
							listNode.style.display = 'none';
					
						currNode.onclick = function() {
							if (hasClass(this.parentElement, 'on')) {
								$(this.listNode).slideUp();
								this.parentElement.className = 'subnav';
							}
							else {
								$(this.listNode).slideDown();
								this.parentElement.className = 'subnav on';
							}

							return false;
						}
					}
				}
				else if (tagName == 'a') 
					linkNode = currNode;
				else if (tagName == 'ul')
					listNode = currNode;
			}
		}
	});
}

function hasClass(element, className) 
{
	if (element.className)
	{
		if (element.className == className)
			return true;
		else {
			var classes = element.className.split(' ');
			
			for (var a = 0; a < classes.length; a++)
			{
				if (classes[a] == className)
					return true;
			}
		}
	}

	return false;
}

//This function will execute once the DOM has finished loading.
$(document).ready(function() {
	try { createMainNav(); }
	catch (err) { }

	try { createAlphabet(); }
	catch (err) { }

	try { populateTools(); }
	catch (err) { }

	try { resetZIndex(); }
	catch (err) { }
}); 
