function swap_image(img, src)
{
	var i = document.getElementById(img);
	if (!i)
		return;
	
	i.src = src;
}

function show_menu(m, p)
{
	kill_menu();
	
    var menu = document.getElementById(m);
    if (!menu)
		return;
		
	current_menu = m;
		
	var parent = document.getElementById(p);
	if (!parent)
		return;
    
    reset_menu_hide();
    if (menu.style.display == "block")
		return;
		
    menu.style.visibility = "hidden";
    
    menu.style.left = get_element_position(parent, "left") + get_element_offsetWidth(parent) + 5 + "px";
    menu.style.top = get_element_position(parent, "top") - 5 + "px";
    
	menu.style.display = "block";
    menu.style.visibility = "visible";
}

var menu_timeout = null;
var current_menu = null;

function check_menu(m)
{
    var menu = document.getElementById(m);
    if (!menu)
		return;
    if (menu.style.display == "none")
		return;
	
    menu_timeout = setTimeout( "hide_menu('"+m+"');", 500 );
}

function hide_menu(m)
{
    var menu = document.getElementById(m);
    if (!menu)
		return;
	menu.style.display = "none";
	current_menu = null;
}

function kill_menu()
{
	if (menu_timeout)
	{
		clearTimeout(menu_timeout);
		hide_menu(current_menu);
	}
}
				    
function reset_menu_hide()
{
    if (menu_timeout)
		clearTimeout( menu_timeout );
    menu_timeout = null;
}

function get_element_position(e, dir)
{
	if (!e)
		return -1;
	
	dir = dir.toLowerCase();
	
	var pos = 0;
	switch(dir)
	{
		case "left":
			pos = e.offsetLeft;
			break;
		case "top":
			pos = e.offsetTop;
			break;
	}
	
	var pel = e.offsetParent;
	while (pel)
	{
		switch (dir)
		{
			case "left":
				pos += pel.offsetLeft;
				break;
			case "top":
				pos += pel.offsetTop;
		}
		pel = pel.offsetParent;
	}
	
	return pos;
}

function get_element_offsetWidth(e)
{
	if (!e)
	{
		return -1;
	}
	else
	{
		return e.offsetWidth;
	}
}