;(function($) {
    var timeout = 300;  //in milliseconds
    var dd = null;
    var activeDrop = null;
    var items = $("#top-menu td>a");
    items.each(function(idx) {
        var a = $(this);
        var drop = $(this).next("ul");//.remove();
        drop.hover(
            function() {
                if (dd) window.clearTimeout(dd);
            },
            function() {
                dd = window.setTimeout(function() { HideDrop(a); }, timeout);
            }
        );
        a.data("drop", drop);
    }).hover(
        function() {
            if (dd) window.clearTimeout(dd);
            !$(this).hasClass("hover") && HideDrop();
            var p = $(this).parent();
            $(this).add(p).addClass("hover");
            drop = $(this).data("drop");
            if (!drop.length) return;
            var leftOffset = $(this).position().left;
            var containerBoundary = $("#container").outerWidth();
            if (leftOffset + drop.outerWidth() > containerBoundary) {
                leftOffset = $(this).position().left - (drop.outerWidth(true) - $(this).outerWidth(true));
            }
            activeDrop = drop.css({top:-9999, left: -9999, display: "block"}).css({left: leftOffset, top: p.offset().top + p.outerHeight()});
        },
        function() {
            dd = window.setTimeout(function() { HideDrop($(this)); }, timeout);
        }
    );
    function HideDrop() {
        activeDrop && $(activeDrop).hide();
        items.filter(".hover").removeClass("hover");
        items.parents("td.hover").removeClass("hover");
    }
})(jQuery);
