(function() {

    $(document).ready(function() {
        var dropdown = $('#id3-dropdown');
        var menu = $('#td3-menu-programmer');
        var height =  dropdown.height();
        var edge = 239;
        var top = edge - height;

        menu.bind('mouseenter mouseleave', {
            'dropdown': dropdown,
            'menu': menu,
            'top': top,
            'edge': edge
        }, toggle);
        dropdown.bind('mouseenter mouseleave', {
            'dropdown': dropdown,
            'menu': menu,
            'top': top,
            'edge': edge
        }, toggle);
    });


    function toggle(event) {
        var dropdown = event.data.dropdown; // jQuery
        var menu = event.data.menu; // jQuery
        var top = event.data.top;
        var edge = event.data.edge;
        var type = event.type;



        if('mouseenter' == type  && menu.data('expanded')) {
            dropdown.stop();
            menu.data('animating', false).addClass('active');

            return;
        }

        if(menu.data('animating')) return;


        if('td3-menu-programmer' == event.currentTarget.id  && 'mouseenter' == type && !menu.data('expanded')) {

            dropdown.css({visibility: 'visible'}).animate({'top': edge}, 'slow', function() {
                menu.addClass('active');
                menu.data('animating', false);
                menu.data('expanded', true);
            });

            menu.data('animating', true);

            return;
        }

        if('mouseleave' == type  && menu.data('expanded')) {

            dropdown.animate({'top': top}, 'slow', function() {
                menu.data('animating', false);
                menu.data('expanded', false);
                dropdown.css({visibility: 'hidden'});
            });

            menu.data('animating', true);
            menu.removeClass('active');
        }
    }

})(jQuery);
