(function ($) {
    
    function checkHover(el, next) {
        return function () {
            if (!el.isOpen) {
                next.fadeOut()
                el.isOpen = false
            }  
        }
    }

    $(document).ready(function () {
        
        var elems = $('#menu>ul>li>a')
        
        elems.each(function() {
            
            var el = $(this)
            var next = el.next()
            el.inPoint = 3000
            
            next.bind('mouseleave', function(e) {        
                next.fadeOut()                   
                el.isOpen = false
            })
            
            next.bind('mouseenter', function(e) {        
                el.isOpen = true
            })            
            
            el.bind('keydown', function(e) { 
                if (e.keyCode==13) {
                    if (el.isOpen) {
                        next.fadeOut()
                        el.isOpen = false
                    }
                    else {
                        next.fadeIn()
                        el.isOpen = true
                    }
                    return false
                }
            })
                        
            el.bind('mouseenter', function(e) {
                if (!el.isOpen) {        
                    next.fadeIn()
                    el.isOpen = true
                }
            })
            
            el.bind('mouseleave', function(e) {
                var offset = el.offset();

                el.isOpen = false

                if (e.pageY < offset.top) {
                    setTimeout(checkHover(el, next), 2000) 
                }
                else {
                    setTimeout(checkHover(el, next), 500) 

                }     
            })
            
        })
    })
    
})(jQuery)