var menu = null;

function init_menu () {
	
	menu = document.getElementById('menu');
	var li = menu.getElementsByTagName('li'), i = li.length;
	while (i--) li[i].onmouseover = show_menu;
	menu.onmouseout = timeout_menu;
	menu.onmouseover = cleartimer_menu;
}

var menu_timer = null;

function timeout_menu () {

	menu_timer = setTimeout('hide_menu(menu, null)', 1000);
}

function cleartimer_menu () {
	
	if (menu_timer) {
		
		clearTimeout(menu_timer);
		menu_timer = null;
	}
}

function show_menu () {
	
	var ul = this.parentNode;
	
	while (ul) {
		
		if (ul.tagName.toLowerCase() == 'ul') {
			
			hide_menu(ul, this);
			break;
		}
	
		ul = ul.parentNode;
	}
	
	div = this.firstChild;
	
	while (div) {

		if (div.nodeType == 1 && div.tagName.toLowerCase() == 'div') {
			
			div.style.display = 'block';
			div.style.visibility = ''; // necessary for IE
			break;
		}
	
		div = div.nextSibling;
	}
}

function hide_menu (level, skipli) {
	
	var stack = [level], i = 0, li, j, el, tag;
	
	do {
		
		li = stack[i].childNodes, j = li.length;
		
		while (j--) {
			
			el = li[j];
			
			if (el.nodeType == 1 && el != skipli) {
				
				tag = el.tagName.toLowerCase();
				
				if (tag == 'li') {
					
					stack[i++] = el;
					
				} else if (tag == 'div' && el.style.display == 'block') {
					
					stack[i++] = el;
					el.style.display = 'none';
					el.style.visibility = 'hidden'; // necessary for IE
				}
			}
		}
	}
	
	while (i--);
}
