//Javascript Simple Submenu for Internal Template
//Michael Swanson, Communications, January 2008

DomReady.ready(function(){
	var topResetDiv = document.getElementById('menureset_top');
	var bottomResetDiv = document.getElementById('menureset_bottom');
	topResetDiv.onmouseover = function (){ resetDelay(); }
	bottomResetDiv.onmouseover = function (){ resetDelay(); }
	window.gbl_initialDelay = 400;
});

function resetDelay(){
	window.gbl_initialDelay = 400;
	if(window.gbl_delayOpen){ clearTimeout(window.gbl_delayOpen); }
}

//Close any open/highlighted menu elements, then highlight/show selected element
function showMenu(elemID,negOffset){
	var openDelay = window.gbl_initialDelay;
	window.gbl_delayOpen = setTimeout('renderMenu('+elemID+','+negOffset+')',openDelay);
	var myItem = document.getElementById('menuitem'+elemID);	
	myItem.onmouseout = function (){ 
		clearTimeout(window.gbl_delayOpen); 
	}
}

function renderMenu(elemID,negOffset){
		
	//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);
		var currentItem = document.getElementById('menuitem'+i);
		currentItem.className = 'menuitem';
		currentButton.className = 'menubutton';
	}
	
	if(timerRunning){ clearTimeout(window.menutimer); }

	//Start timer
	gbl_elemID = elemID;
	InitializeTimer(1000);		
	
	//Assign mouseover event to drop down div (timer reset)
	if (elemID){
		//Get the containers of the selected item
		var myItem = document.getElementById('menuitem'+elemID);
		var myMenu = document.getElementById('submenu'+elemID);
		var myButton = document.getElementById('button'+elemID);
		var myMenuLinks = myMenu.getElementsByTagName("A");
		
		//Assign mouse events to current drop-down
		myMenu.onmouseover = function () { InitializeTimer(1000); };
		myMenu.onmouseout = function () { InitializeTimer(.15); };
	
		//Assign mouse events and class to current menu option
		myButton.onmouseout = function () { InitializeTimer(.15); };
		myItem.className = "menuitem_selected";
		myButton.className = "menubutton_selected";	
	}

	//Loop through, hide all menus (and un-highlight parents) that are currently popped out
	var hideIndex = 1;
	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){	
		//Show darkened overlay
		showOverlay();	
		//Pop-out menu that mouse has just run over
		selectedElem = document.getElementById('submenu'+elemID);
		if(negOffset){
			selectedElem.style.left = '-'+negOffset+'px';
		}
		//Define and hide (make 0px in height) the inner portion of the menu
		growElem = document.getElementById('submenu_container'+elemID);	
		growElem.style.height = "0px";
		//Show the outer portion of the menu (drop-shadow, container, etc)
		selectedElem.style.display = 'block';
		//Get the container for the menu's photo
		var photoDiv = document.getElementById('submenu_photo'+elemID);
		//Write HTML to menu photo div
		photoDiv.innerHTML = '<img src="'+relativeURL+'_rd09/images/primary_menu/menu_photo'+elemID+'.jpg" />';
		//Animate the opening of the menu
		//doHeightChangeMem(growElem, 0, 300, 8, 15, 3);
		growElem.style.height = "300px";
		window.gbl_initialDelay = 0;
	}	
}

//Darkened semi-transparent PNG overlay
function showOverlay(){
	//Show the background overlay
	document.getElementById('screenoverlay').style.display='block';
}
function closeOverlay(){
	//Hide the overlay
	document.getElementById('screenoverlay').style.display='none';
}

//change the opacity for different browsers
function setOpacity(object, opacity) {
    object.style.opacity = (opacity / 100);
    object.style.MozOpacity = (opacity / 100);
    object.style.KhtmlOpacity = (opacity / 100);
    //object.style.filter = "alpha(opacity=" + opacity + ")";
}
function easeQuad(begin,change,totalframes,frame) {
	return (change*frame/(totalframes))*(frame/totalframes)+begin;
}

//Close Sub-menu
function closeMenu(elemID){	
	//Hide submenu
	if(elemID){ 
		document.getElementById('submenu'+elemID).style.display = 'none'; 
		var myItem = document.getElementById('menuitem'+elemID);
		var myButton = document.getElementById('button'+elemID);
		myItem.className = "menuitem";
		myButton.classname = "menubutton";
		renderMenu();
	}	
}


/* ================================================================= */
/* ========================= TIMER FUNCTIONS ======================= */
/* ================================================================= */
var secs
var timerID = null
var timerRunning = false
var delay = 100

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(window.menutimer)
    timerRunning = false
}

function StartTheTimer(){
    if (secs<=0){
        StopTheClock()
        // Here's where you put something useful that's supposed to happen after the allotted time.
        closeMenu(gbl_elemID);
		closeOverlay();
    } else {
        // self.status = secs
        secs = secs - 1
        timerRunning = true
        window.menutimer = 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;
}