Event.observe(window, 'load', loadDashboard);

var dashboardModule = 'today';
var dashboardNav = null;
var dashboardContent = null;
var dashboardNavTimer = null;
var dashboardTimer = null; // Generic timer to be used by all dashboard modules
var dashboardSession = new Array();
var dashboardNavRefresh = 15000;

function loadDashboard() {
	dashboardNav = $('dashboard-nav');
	dashboardContent = $('dashboard-content');
	updateDashboardNav(dashboardModule);
	dashboardNavTimer = setTimeout('refreshDashboardNav()', dashboardNavRefresh);
	getDashboardModule(dashboardModule, null);
}

function refreshDashboardNav() {
	updateDashboardNav(dashboardModule);
	dashboardNavTimer = setTimeout('refreshDashboardNav()', dashboardNavRefresh);
}

function getDashboardModule(moduleName, params) {
	showLoadingMessage(dashboardContent);
	
	// highlight new link
	Element.removeClassName($('dashboard-nav-' + dashboardModule), 'section-active');
	dashboardModule = moduleName;
	Element.addClassName($('dashboard-nav-' + dashboardModule), 'section-active');
	
	// Now get the content
	var url = 'content/dashboard/modules/' + moduleName + '/index.php';
	var pars = params;

	var myAjax = new Ajax.Updater(
		dashboardContent, 
		url, 
		{
			method: 'post', 
			parameters: pars,
			onFailure: reportError,
			evalScripts: true
			});
			
	if (dashboardTimer != null) {
		clearTimeout(dashboardTimer);
		dashboardTimer = null;
	}
}

function updateDashboardNav(activeModule) {
	//showLoadingMessage(dashboardNav);
	var url = 'content/dashboard/navigation.php';
	var pars = 'module=' + activeModule;

	var myAjax = new Ajax.Updater(
		dashboardNav, 
		url, 
		{
			method: 'post', 
			parameters: pars,
			onFailure: reportError,
			evalScripts: true
			});
}

function updateContent(node, url, params, altNode) {
	if (altNode != null) {
		showLoadingMessage($(altNode));
	} else {
		showLoadingMessage(node)
	}
	var myAjax = new Ajax.Updater(
		node, 
		url, 
		{
			method: 'post', 
			parameters: params,
			onFailure: reportError,
			evalScripts: true
			});
}

function reportError() {
	Element.update(node, '<div class="loading-message">An error has occurred.  Please contact <a href="mailto:webteam@umbc.edu">webteam@umbc.edu</a></div>');
}

function showLoadingMessage(node) {
	Element.update(node, '<div class="loading-message"><img src="content/dashboard/_images/loading.gif" height="31" width="31" alt="" border="0" /> Loading...</div>');
}
