//Javascript Simple Submenu for Internal Template
//Michael Swanson, Communications, January 2008

//Close any open/highlighted menu elements, then highlight/show selected element
function showMenu(elemID){	

	//Remove highlighting from any 'open' menus
	var menuNodes = getElemClass(document,'menu','*');
	var menuLength = menuNodes.length;
	for (var i=1;i<=menuLength;i++) {
		var currentButton = document.getElementById('button'+i);		
		currentButton.className = '';
	}

	//Start timer
	gbl_elemID = elemID;
	InitializeTimer(1000);		
	
	//Get links within submenu, assign mouseover event (timer reset)
	if (elemID){
		var myMenu = document.getElementById('submenu'+elemID);
		var myButton = document.getElementById('button'+elemID);
		var myMenuLinks = myMenu.getElementsByTagName("A");
		for (var i=0;i<myMenuLinks.length;i++) {
			//Reset timer on mouseover of each link
			myMenuLinks[i].onmouseover = function () { InitializeTimer(1000); };
			myMenuLinks[i].onmouseout = function () { InitializeTimer(1); };
			myButton.onmouseout = function () { InitializeTimer(1); };
			myButton.className = "menubutton_selected";
		}
	}

	//Loop through, hide all menus (and un-highlight parents) that are currently popped out
	var hideIndex = 1;
	//while(document.getElementById('submenu'+hideIndex)){
	while(hideIndex <= menuLength){
		//Hide all 'open' submenus
		if(document.getElementById('submenu'+hideIndex)){
			hideElement = document.getElementById('submenu'+hideIndex);
			if(hideElement.style.display == 'block') hideElement.style.display = 'none';
		}
		hideIndex = hideIndex+1;	
	}
	//If element is selected, highlight menu and open submenu
	if(elemID){	
		//Pop-out menu that mouse has just run over
		selectedElem = document.getElementById('submenu'+elemID);
		selectedElem.style.display = 'block';
	}	
}

//Close Sub-menu
function closeMenu(elemID){	
	//Hide submenu
	if(elemID){ 
		//alert('element id: '+elemID);
		document.getElementById('submenu'+elemID).style.display = 'none'; 	
		showMenu();
	}	
}


/* ================================================================= */
/* ========================= TIMER FUNCTIONS ======================= */
/* ================================================================= */
var secs
var timerID = null
var timerRunning = false
var delay = 1000

function InitializeTimer(time){
    // Set the length of the timer, in seconds
	if(time) {
		secs = time;
	} else {
    	secs = 1;		
	}
    StopTheClock()
    StartTheTimer()
}

function StopTheClock(){
    if(timerRunning)
        clearTimeout(timerID)
    timerRunning = false
}

function StartTheTimer(){
    if (secs==0){
        StopTheClock()
        // Here's where you put something useful that's
        // supposed to happen after the allotted time.
        // For example, you could display a message:
		
        closeMenu(gbl_elemID);
    } else {
        // self.status = secs
        secs = secs - 1
        timerRunning = true
        timerID = self.setTimeout("StartTheTimer()", delay)
    }
}

/* ================================================================= */
/* =================== GET ELEMENTS BY CLASS ======================= */
/* ================================================================= */
function getElemClass(node,searchClass,tag) {
	var classElements = new Array();
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("\\b"+searchClass+"\\b");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
 			classElements[j] = els[i];
			 j++;
		}
	}
	return classElements;
}