$(function() {
    var zindex = 10;

    var config = {
        sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)    
        interval: 0,  // number = milliseconds for onMouseOver polling interval    
        over: doOpen,   // function = onMouseOver callback (REQUIRED)    
        timeout: 100,   // number = milliseconds delay before onMouseOut    
        out: doClose    // function = onMouseOut callback (REQUIRED)    
    };

    function doOpen() {
        zindex++;
        $(this).addClass("hover");
        $(this).css('z-index', zindex);
        $('ul:first', this).fadeIn(250);

        $("ul.nav").mouseover(function(e) {
            var relativeX = e.pageX - this.offsetLeft;
            var viewportWidth = $(window).width();

            if ((relativeX + 250) > viewportWidth) {
                $("ul.nav li ul li ul").addClass("openLeft");
            } else {
            $("ul.nav li ul li ul").removeClass("openLeft");
            }
        });
    }

    function doClose() {
        $(this).removeClass("hover");
        $('ul:first', this).fadeOut(250);
    }

    $("ul.nav li").hoverIntent(config);
    $("ul.nav li ul li:has(ul)").find("a:first")
});
