/**
 * Dynamic Ajax PopUp Menu
 * Tom - 2007-08-14
 *
 * This script is based on prototype ajax library
 * copyright reserved by http://www.synaxiom.com
 */

/**
 *  Shows a submenu.
 */
function show_sub_menu() {
	this.childElements().each(function(e) {
		if(e&&e.tagName&&e.tagName.toUpperCase()=='UL') {
			e.style.display='block';
		}
	});
}

/**
 *  Hides a submenu.
 */
function hide_sub_menu() {
	this.childElements().each(function(e) {
		if(e&&e.tagName&&e.tagName.toUpperCase()=='UL') {
			e.style.display='none';
		}
	});
}

function init_menu_list (element) {
	element.childElements().each(function(parent) {
		parent.childElements().each(function(child) {
			if(child&&child.tagName&&child.tagName.toUpperCase()=='UL') {

				Event.observe(parent, 'mouseover', this.show_sub_menu.bindAsEventListener(parent));
				Event.observe(parent, 'mouseout', this.hide_sub_menu.bindAsEventListener(parent));

				//Scan this list for submenus.
				init_menu_list(child);
			}
		});
	});
}

/**
 * Initialize expanding/cascading navigation menu.
 */
function init_menu() {

	//Grab the menu's root element.
	var menu = $("listMenuRoot");
	if(menu) {
		//Scan root menu list for submenus.
		init_menu_list(menu);
	}
}

/**
 * add_initializer
 * Adds an initialization callback to the page.
 *
 * Tom - 2007-08-15
 *
 * @param callback The function to call after the page has loaded.
 * @return True on sucess, false otherwise
 */
function add_initializer(callback) {
	Event.observe(window, 'load', callback);
}

/**
 * Page initialization setup
 */
add_initializer(init_menu);
