(function($){
$.fn.dropdown = function(opt){
    
    var defaults = {
        speed: 300,
        delay: 100,
        type: 'slide',
        transIn: {opacity: 'show'},
        transOut: {opacity: 'hide'}     
    };
    
    var options = $.extend(defaults, opt);
    
    var menu = $(options.menu);
    var speed = options.speed;
    var delay = options.delay;
    var type = options.type;
    var transIn = options.transIn;
    var transOut = options.transOut;
    
    var menuOver = false;
    var buttonOver = false;
   
    $(menu).hide();

    $(this).hover(
        function(){
            if(menu.is(':animated')){return};
            switch(type)
            {
            case 'slide':
                $(menu).slideDown(speed);
                break;
            case 'fade':
                $(menu).fadeIn(speed);
                break;
            case 'simple':
                $(menu).show();
                break;
            case 'custom':
                $(menu).animate(transIn, speed)
            }
            buttonOver = true;
        },
        function(){
            buttonOver = false;
            setTimeout(function(){
                if(menuOver == false && buttonOver == false){
                    switch(type)
                    {
                    case 'slide':
                        $(menu).slideUp(speed);
                        break;
                    case 'fade':
                        $(menu).fadeOut(speed);
                        break;
                    case 'simple':
                        $(menu).hide();
                        break;
                    case 'custom':
                        $(menu).animate(transOut, speed)
                    }
                }
            }, delay);
        }
    )
    
    $(menu).hover(
        function(){
            menuOver = true;
        },
        function(){
            menuOver = false;
            setTimeout(function(){
                if(menuOver == false && buttonOver == false){
                    switch(type)
                    {
                    case 'slide':
                        $(menu).slideUp(speed);
                        break;
                    case 'fade':
                        $(menu).fadeOut(speed);
                        break;
                    case 'simple':
                        $(menu).hide();
                        break;
                    case 'custom':
                        $(menu).animate(transOut, speed)
                    }
                }
            }, delay);
        }
    )
}
})

(jQuery);