var OPEN_SUB_MENU_ANIMATION_TIME = 450;

$(document).ready(function() 
{
    initialize_main_menu();
});

function activate_roll_over(main_menu_item)
{
    if ($(main_menu_item).hasClass("main_menu_item_normal") == true)
    {
        $(main_menu_item).removeClass("main_menu_item_normal");        
    }

    $(main_menu_item).addClass("main_menu_item_over");
}

function activate_roll_out(main_menu_item)
{
    if ($(main_menu_item).parent().find("div.sub_menu_item_box").hasClass("display_block") == false && $(main_menu_item).parent().find("div.sub_menu_item_box").hasClass("always_display_block") == false)
    {
        if ($(main_menu_item).hasClass("main_menu_item_over") == true)
        {
            $(main_menu_item).removeClass("main_menu_item_over");
        }

        $(main_menu_item).addClass("main_menu_item_normal");
    }
}

function close_all_sub_menu()
{
    $("#menu").find("div.sub_menu_item_box").each(function()
    {
        if ($(this).hasClass("display_block") == true || $(this).hasClass("always_display_block") == true)
        {
            $(this).animate({"height" : "toggle"}, OPEN_SUB_MENU_ANIMATION_TIME, function()
            {
                $(this).removeClass("always_display_block");
                $(this).removeClass("display_block");
                $(this).addClass("display_none");

                $(this).prev().removeClass("main_menu_item_over");
                $(this).prev().addClass("main_menu_item_normal");
            });            
        }
    });
}

function close_sub_menu(main_menu_item)
{
    $(main_menu_item).parent().find("div.sub_menu_item_box").animate({"height" : "toggle"}, OPEN_SUB_MENU_ANIMATION_TIME);
    $(main_menu_item).parent().find("div.sub_menu_item_box").removeClass("display_block");
    $(main_menu_item).parent().find("div.sub_menu_item_box").addClass("display_none");
}

function initialize_main_menu()
{
    $('div.main_menu_item').hover(function()
    {
        activate_roll_over(this);
    },
    function()
    {
        activate_roll_out(this);
    });

    $('div.main_menu_item').click(function()
    {
        if ($(this).parent().find("div.sub_menu_item_box").hasClass("display_none") == true)
        {
            close_all_sub_menu();
            open_sub_menu(this);
        }
        else if ($(this).parent().find("div.sub_menu_item_box").hasClass("display_block") == true)
        {
            close_sub_menu(this);
        }
        else if ($(this).parent().find("div.sub_menu_item_box").hasClass("always_display_block") == true)
        {
            close_sub_menu(this);
            $(this).parent().find("div.main_menu_item").removeClass("main_menu_item_over");
            $(this).parent().find("div.main_menu_item").addClass("main_menu_item_normal");
        }
    });
}

function open_sub_menu(main_menu_item)
{
    $(main_menu_item).parent().find("div.sub_menu_item_box").animate({"height" : "toggle"}, OPEN_SUB_MENU_ANIMATION_TIME);
    $(main_menu_item).parent().find("div.sub_menu_item_box").removeClass("display_none");
    $(main_menu_item).parent().find("div.sub_menu_item_box").addClass("display_block");
}
