﻿$(document).ready(function() {
    $("#topnav li > div").each(function() {
        $(this).show(10, function() {
            while (($(this).height() > $(this).width()) && ($(this).height() > 200)) {
                $(document.createElement("ul")).prependTo(this);
                $(this).width($(this).width() + 145);
                equalizeColumnHeights(this);
            }
            $(this).hide();
        });
    });

    //On Hover Over
    function megaHoverOver() {
        $("ul#topnav > li > div").not(this).stop().hide();
        $(this).children("div").stop().fadeTo('fast', 0.95).show(); //Find sub and fade it in
    }
    //On Hover Out
    function megaHoverOut() {
        $(this).children("div").stop().fadeOut('fast');
    }
    //Set custom configurations
    var config = {
        sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
        interval: 100, // number = milliseconds for onMouseOver polling interval
        over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
        timeout: 500, // number = milliseconds delay before onMouseOut
        out: megaHoverOut // function = onMouseOut callback (REQUIRED)
    };

    $("ul#topnav > li > div").css('opacity', '0'); //Fade sub nav to 0 opacity on default
    $("ul#topnav > li").hoverIntent(config); //Trigger Hover intent with custom configurations
});

//-----------------------------------------------------------------------------

function equalizeColumnHeights(e) {
    if (typeof e == "undefined")
        throw "Undefined parameter passed to function equalizeListHeights()";

    var columnList = $(e).children("ul").get();
    if (columnList.length < 2)
        return;

    for (var n = 0; n < columnList.length; n++)
        for (var i = 0; i < columnList.length - 1; i++)
            balanceColumns(columnList[i], columnList[i + 1]);
} // equalizeListHeights

//-----------------------------------------------------------------------------

function balanceColumns(leftColumn, rightColumn) {
    if ((typeof leftColumn == "undefined") || (typeof rightColumn == "undefined"))
        throw "Illegal parameter passed to function balanceColumns()";
        
    while ($(leftColumn).height() < $(rightColumn).height()) {
        var li = $(rightColumn).children("li").get(0);
        $(li).clone().appendTo(leftColumn);
        $(li).remove();
    }
} // balanceColumns