// JavaScript Document
var submenu_event_count = 0;
var submenu_fading = false;
var submenu_index = -1;
var $submenu_container;
var submenu_lastitem_number = -1;
var submenu_lastitem_type = -1; // 0 = button, 1 = panel

$(function(){
	initsubmenu("menu");
});

function initsubmenu(id)
{
	$submenu_container = $("#" + id);

	$submenu_container.find(".subm_btn").each(function(index, domElement) {
		$panel = $submenu_container.find(".submenu").filter("[title=" + this.title + "]");
		
		$panel.bind("mouseleave.submenu", index, leaveBtnPan);
		$panel.bind("mouseenter.submenu", index, enterBtn);
		$(this).bind("mouseleave.submenu", index, leaveBtnPan);
		$(this).bind("mouseenter.submenu", index, enterPan);

		$panel.fadeTo(0, 0);
		$panel.hide();
	});
}

function enterBtn(ev)
{
	submenu_lastitem_number = ev.data;
	submenu_lastitem_type = 0;

	submenu_event_count++;
	setTimeout("checkStatus()", 100);
}

function enterPan(ev)
{
	submenu_lastitem_number = ev.data;
	submenu_lastitem_type = 1;

	submenu_event_count++;
	setTimeout("checkStatus()", 100);
}

function leaveBtnPan(ev)
{
	if (submenu_lastitem_number == ev.data)
	{
		submenu_lastitem_number = -1;
		submenu_lastitem_type = -1;
	}
	
	submenu_event_count++;
	setTimeout("checkStatus()", 100);
}

function checkStatus()
{
	submenu_event_count--;
	if (submenu_event_count > 0)
		return;

	if (submenu_fading)
	{
		setTimeout("checkStatus()", 100);
		return;
	}
	
	//console.log(submenu_lastitem_number, submenu_index);
	if (submenu_lastitem_number == -1)
	{
		if (submenu_index >= 0)
			hidePan(submenu_index, true);
	}
	else
	{
		if (submenu_index != submenu_lastitem_number)
		{
			if (submenu_index >= 0)
				hidePan(submenu_index, false);
			showPan(submenu_lastitem_number);
		}
	}
}

function hidePan(index, with_fading)
{
	var $btn = $submenu_container.find(".subm_btn:eq(" + index + ")");
	var $pan = $submenu_container.find(".submenu").filter("[title=" + $btn.get(0).title + "]");

	$btn.removeClass("selected");

	if (with_fading)
	{
		submenu_fading = true;

		$pan.fadeTo("slow", 0, function() {
			$(this).hide();
			submenu_fading = false;
			submenu_index = -1;
		});
	}
	else
	{
		$pan.fadeTo(0, 0);
		$pan.hide();
		submenu_index = -1;
	}
}

function showPan(index)
{
	var $newbtn = $submenu_container.find(".subm_btn:eq(" + index + ")");
	var $newpan = $submenu_container.find(".submenu").filter("[title=" + $newbtn.get(0).title + "]");
	
	$newbtn.toggleClass("selected");

	submenu_index = index;

	$newpan.show();

	submenu_fading = true;

	$newpan.fadeTo("fast", 1 , function(){
		submenu_fading = false;
	});
}
