
function addHover(unit) {
    $(unit).removeClass("no-hover").addClass("hover");
    $(" > .dir", unit).addClass("open");
    $("ul:first", unit).css("visibility", "visible");
}

function removeHover(unit) {
    $(unit).removeClass("hover").addClass("no-hover");
    $(".open", unit).removeClass("open");
    $("ul:first", unit).css("visibility", "hidden");
}

$.fn.dropdown = function (index) {

    var indexIsValid = (index > -1 && index < $(this).children().length);

    if (indexIsValid)
        addHover($(" > li:eq(" + index + ")", this));

    $(this).mouseout(function () {
        removeHover($(" > li.hover", this));
        if (indexIsValid)
            addHover($(" > li:eq(" + index + ")", this));
    });

    return this.children().each(function () {
        $(this).mouseover(function () {
            removeHover($(" > li.hover", $(this).parent()));
            addHover(this);
        });
    });
}
