/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (dave@gazingus.org)
 *
 * Originally from http://gazingus.org/dhtml/?id=109
 *
 * mfischer, 2003.05.07: reworked for own purposes
 * - Open menus with onmouseover event
 * - use timeout to closemenu when mouse not over
 * - renamed all identifier names so we've no namespace clashes
 *   (lwm - light weight menu)
 *
 * mfischer, 2003.05.08:
 * - use getPosition function to get left/top offset if menu is contained in other elements
 *
 * Last time tested: 2003.05.08:
 * Works in: MSIE55+, MacMSIE51, Win/Gecko, Win/Opera 7.1
 * 
 */

if (!document.getElementById) {
	document.getElementById = function() {
		return null;
	}
}

window.onload = function() {
	lwmInitMenu('menu-historia',	'button-historia');
	lwmInitMenu('menu-dojo',		'button-dojo');
	lwmInitMenu('menu-szkolenie',	'button-szkolenie');
	lwmInitMenu('menu-kontakt',		'button-kontakt');

}

/**/

var lwmCurrentMenu = null;
var lwmMenuTimer = null;
var lwm_MENU_TIMER_TIMEOUT = 200;

function lwmInitMenu(menuId, triggerId) {
	var menu = document.getElementById(menuId);
	var trigger = document.getElementById(triggerId);

	if (menu == null || trigger == null) {
		return;
	}

	menu.onmouseover = function() {
		if (lwmMenuTimer == null) {
			return;
		}
		clearTimeout(lwmMenuTimer);
	}

	menu.onmouseout = function() {
		lwmMenuTimer = setTimeout('lwmTimerHideMenu()', lwm_MENU_TIMER_TIMEOUT);
	}

	trigger.onmouseover = function() {
		if (lwmCurrentMenu) {
			lwmCurrentMenu.style.visibility = 'hidden';
		}
		this.showMenu();

		if (lwmMenuTimer == null) {
			return;
		}
		clearTimeout(lwmMenuTimer);
	}

	trigger.onmouseout = function() {
		lwmMenuTimer = setTimeout('lwmTimerHideMenu()', lwm_MENU_TIMER_TIMEOUT);
	}

	trigger.onclick = trigger.onfocus = function() {
		if (lwmCurrentMenu == null) {
			this.showMenu();
		} else {
			lwmCurrentMenu.style.visibility = 'hidden';
			lwmCurrentMenu = null;
		}
		return false;
	}

	trigger.showMenu = function() {
		var pos = lwmGetPosition(this, 'menu');
		menu.style.left = pos.left + 'px';
		menu.style.top = /* pos.top + */ this.offsetHeight + 'px';
		menu.style.visibility = 'visible';
		lwmCurrentMenu = menu;
	}
}

function lwmTimerHideMenu() {
	if (lwmCurrentMenu) {
		lwmCurrentMenu.style.visibility = 'hidden';
	}
}

/* Originally from
 * http://www.faqts.com/knowledge_base/view.phtml/aid/9095/fid/128 , rewritten
 * for better readability */
 
/*
function lwmGetPosition(element) {
	var left = 0;
	var top = 0;
	left = element.offsetLeft;
	top  = element.offsetTop;
	return {left:left, top:top}
}
*/
function lwmGetPosition(element, root_node_id) {
	var left = 0;
	var top = 0;
	while (element != null && element.id!=root_node_id) {
		left += element.offsetLeft;
		top  += element.offsetTop;
		element = element.offsetParent;
	}
	return {left:left, top:top}
}
