﻿jQuery(function () {

    // remove nav titles
    jQuery('ul#navContents li a').removeAttr('title');
    jQuery('ul#countryDropDown li a').removeAttr('title');

    // hover div (hidden initially)
    var hoverDiv = jQuery('<div id="navHoverWrapper"/>').appendTo('body').hide();

    // set hover intent for anything with class "navHover", containing anything with class "navHoverContents"
    jQuery('.navHover').each(function () {
        var parent = jQuery(this);
        var sublist = jQuery('.navHoverSublist', parent).show().remove();

        // set triggers to open/close
        parent.hoverIntent(
            function () { // over

                // append new div to the document, measure and move into position.
                var offset = parent.offset();
                hoverDiv.empty().append(sublist).css({ position: 'absolute', left: -2000, top: -2000 }).show();
                hoverDiv.css({
                    left: offset.left - (sublist.is('.navHoverRightAlign') ? (hoverDiv.outerWidth() - parent.outerWidth()) : 0),
                    top: offset.top + parent.outerHeight()
                });

                // check for exit whenever we move the mouse
                var hOffset = hoverDiv.offset();
                var xMin = Math.min(offset.left, hOffset.left);
                var xMax = Math.max(offset.left + parent.outerWidth(), hOffset.left + hoverDiv.outerWidth());
                var yMin = Math.min(offset.top, hoverDiv.offset().top);
                var yMax = Math.max(offset.top + parent.outerHeight(), hOffset.top + hoverDiv.outerHeight());
                jQuery(document).mousemove(function (e) {
                    if ((e.pageX <= xMin) || (e.pageX >= xMax) || (e.pageY <= yMin) || (e.pageY >= yMax)) {
                        jQuery(document).unbind('mousemove');
                        hoverDiv.empty().hide();
                    }
                });
            },
            function () { // out (ignore this event)
            }
	    );
    });
});
