// Jason's Hovering Submenu Code
// 2006-10-06 NEW n-tier menu popup code
// 2006-11-13 Added auto-unpop code, no longer need to add onmouseout function to calling element

var jsmLastPop = new Array();
var jsmSrc = new Array();
var jsmHide = new Array();
var jsmTimeout = 750;

// utility functions - jason
function get(name) { return byId(name); }
function byId(name) { return document.getElementById(name); }
function addClass(element, classname) { if(element != null) element.className += ' ' + classname; }
function remClass(element, classname) { if(element != null) { while(element.className.indexOf(classname) != -1) { element.className = element.className.replace(classname, ""); } } }
function getRealPosition(element) {
	/* calculate the absolute position of element
		relative to all parent elements returns a
		string containing "left|top|width|height" */
		
	if(element != null) {
		var x = element.offsetLeft;
		var y = element.offsetTop;
		offset = element.offsetParent;
		while(offset.offsetParent) {
			x += offset.offsetLeft;
			y += offset.offsetTop;
			offset = offset.offsetParent;
		}
		var h = element.offsetHeight;
		var w = element.offsetWidth;
	}
	return (x + "|" + y + "|" + w + "|" + h);
}

	function hover (src) { addClass(src, 'menu-hover'); }
	function unhover(src) { remClass(src, 'menu-hover'); }

	function pop(src, popup) {
		var max = jsmLastPop.length;
		var current = 0;
		// check if the current menu is a child of a previous menu
		for(i=0;i<max;i++) { if(src.parentNode == jsmLastPop[i]) { current = i+1; break; } }
		if(jsmLastPop[current] != null) { 
			//jsmLastPop[current].style.display = 'none';
			jsmLastPop[current].style.visibility = 'hidden';
			jsmLastPop[current].style.width = '0';
			unhover(jsmSrc[current]);
		}
		jsmHide[current] = false;
		jsmLastPop[current] = get(popup);
		//jsmLastPop[current].style.display = 'block';
		jsmLastPop[current].style.visibility = 'visible';
		jsmLastPop[current].style.width = '12em';
		// Position menu relative to parent element
		jsmSrc[current] = src;
		src.onmouseout = function(){
		    unpop(src, popup);
		}
		hover(src);
	}
	
	function unpop(src, popup) {
		var max = jsmLastPop.length;
		var current = 0;
		// check if the current menu is a child of a previous menu
		for(i=0;i<max;i++) { if(src.parentNode == jsmLastPop[i]) { current = i+1; break; } }
		jsmHide[current] = true;
		setTimeout("hidePop('" + current + "');", jsmTimeout);
	}
	
	function hidePop(index) {
		if (jsmHide[index]) {
			if (jsmLastPop[index] != null) {
				//jsmLastPop[index].style.display = 'none';
				jsmLastPop[index].style.visibility = 'hidden';
				jsmLastPop[index].style.width = '0';
			}
			unhover(jsmSrc[index]);
		}
	}

/* CITY OF PERTH INFOBAR MENU CODE */
var oldText = '';
var oldClass = '';
function updateDesc(newText, newClass) {
	description = document.getElementById('menu-description');
	oldText = description.innerHTML;
	oldClass = description.className;
	remClass(description, oldClass);
	addClass(description, newClass);
	description.innerHTML = newText;
}
function revertDesc() {
	var outgoingClass = '';
	description = document.getElementById('menu-description');
	outgoingClass = description.className;
	remClass(description, outgoingClass);
	addClass(description, oldClass);
	description.innerHTML = oldText;
}