/**
 * @author Daniel Staver IXD AS
 */

(function($) {
    $.fn.dropdownMenu = function(options) {
        var options = options || {};
        options.splitItems = options.hasOwnProperty('splitItems') ? options.splitItems : 10;

        var mainMenu = $(this);
        
        mainMenu.find('ul ul').each(function(){
            var subMenu = $(this);
            var items = subMenu.find('> li');
            var length = items.length;
            
            if( length >= options.splitItems ) {
                var secondSubMenu = $('<ul>');
                secondSubMenu.css({
                    left: subMenu.width()
                });
                var itemNo1 = Math.ceil(length/2);
                var itemNo2 = Math.floor(length/2);
                
                for( i = itemNo1; i < length; i++ ) {
                    secondSubMenu.append(items[i]);
                }
                
                secondSubMenu.height( subMenu.height() - 1 + 'px' );
                
                if ( itemNo2%2 ) {
                    secondSubMenu.addClass('odd');
                }
    
                subMenu.after(secondSubMenu);            
            }
        });
            
        mainMenu.find('> ul > li').each(function(){
            var menuItem = $(this);
            var subMenu = menuItem.find('ul');
            
            var showSubMenu = function(){
                subMenu.slideDown('fast');
            }
    
            var hideSubMenu = function(){
                //subMenu.slideUp('fast');
                subMenu.hide();
            }
            
            var showSubMenuTimeout;
            var hideSubMenuTimeout;
            
            menuItem.hover(
                function(){
                    clearTimeout(hideSubMenuTimeout);
                    menuItem.addClass('hover');
                    showSubMenuTimeout = setTimeout(showSubMenu,100);
                },
                function(){
                    clearTimeout(showSubMenuTimeout);
                    menuItem.removeClass('hover');
                    hideSubMenuTimeout = setTimeout(hideSubMenu,300);
                }
            );
        });
    
        mainMenu.find('> ul > li > ul > li').hover(
            function(){
                $(this).addClass('hover');
            },
            function(){
                $(this).removeClass('hover');
            }
        );
    }
})(jQuery);
