// JavaScript Document
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
function align_top(srcObject, targetObject, offset)
{
	targetObject.style.position = "absolute";
	targetObject.style.top = (offsetTopFrom(srcObject, null) - offsetTopFrom(targetObject.offsetParent, null) + offset) + "px";
}
function align_left(srcObject, targetObject, offset)
{
	targetObject.style.position = "absolute";
	targetObject.style.left = (offsetLeftFrom(srcObject, null) - offsetLeftFrom(targetObject.offsetParent, null) + offset) + "px";
}
function align_next_to(src, target)
{
	var srcObject = document.getElementById(src);
	var targetObject = document.getElementById(target);
	align_left(srcObject,targetObject, srcObject.offsetWidth);
	align_top(srcObject, targetObject, 0);
	targetObject.style.left = (offsetLeftFrom(srcObject, null) - offsetLeftFrom(targetObject.offsetParent, null) + srcObject.offsetWidth) + "px";
}
function align_below_of(src, target)
{
	var srcObject = document.getElementById(src);
	var targetObject = document.getElementById(target);
	align_left(srcObject, targetObject, 0);
	align_top(srcObject, targetObject, srcObject.offsetHeight);
}
var active_menu = new Array();
var parent_menu = new Array();
var outside_menu = new Array();
var hidden_menu = new Array();

function active_menu_index(name)
{
	for (var i = 0; i < active_menu.length; i++) {
		if (active_menu[i] == name)
		{
			return i;
		}
	}
	return -1;
}
function has_active_children(name)
{
	for (var i = 0; i < parent_menu.length; i++) {
		if (parent_menu[i] == name && !hidden_menu[i])
		{
			return true;
		}
	}
	return false;
}
function dump(message)
{
	var str = message + "\n";
	for (var i = 0; i < active_menu.length; i++) {
		str += active_menu[i] + " " + parent_menu[i] + "";
		if (outside_menu[i]) { str += " outside"; }
		if (hidden_menu[i]) { str += " hidden"; }
		str += "\n";
	}
	alert(str);
}
function enter_menu(name, parent)
{

	var index = active_menu_index(name);
	if (index == -1)
	{
		index = active_menu.length;
		active_menu[index] = name;
		parent_menu[index] = parent;

	}
	outside_menu[index] = false;

	while (index != -1)
	{
		hidden_menu[index] = false;
		showLayer(active_menu[index]);
		index = active_menu_index(parent_menu[index]);
	}
	//dump("enter_menu: " + name);
}

function exit_menu(name)
{
	var index = active_menu_index(name);
	if (index != -1)
	{
		outside_menu[index] = true;
	}
	
	var hasCleaned = true;
	while (hasCleaned)
	{
		hasCleaned = false;
		for (i = 0; i < active_menu.length; i++)
		{
			if (outside_menu[i] && !hidden_menu[i] && !has_active_children(active_menu[i]))
			{
				hideLayer(active_menu[i]);
				hidden_menu[i] = true;
				hasCleaned = true;
			}
		}
	}
	//dump("exit_menu: " + name);
}
