//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;}