P.when(“jQuery”, “ready”).execute(function($) {

"use strict";

var openNavFunc, closeNavFunc, mouseoverTime, mouseleaveTime;
var $primaryNavEls = $('.dp-primary-nav-list > .dp-primary-nav-list-item');
var $secondaryNavEls = $('.dp-secondary-nav-list-item');
var $dropDownPanels = $('.dp-dropdown-panel');
var hoverDelayTimer = 200;
var navIsActive = false;

function getTime() {
    var d = new Date();
    return d.getTime();
}

function activateNav(event, el) {
    clearTimeout(closeNavFunc);

    mouseoverTime = getTime();
    openNavFunc = setTimeout(openSubNav, hoverDelayTimer, event, el);
}

function deActivateNav(event, el) {

    mouseleaveTime = getTime();

    //ignore accidental mouseover of other elements
    if(mouseleaveTime - mouseoverTime < hoverDelayTimer) {
        clearTimeout(openNavFunc);
        return;
    }

    if(navIsActive) {
        closeNavFunc = setTimeout(closeItAll, hoverDelayTimer, event, el);
    }
}

function closeItAll(event, el) {

    // ie9 does not allow params to be passed in setTimeout
    if(typeof(event) === "undefined") {
        return;
    }

    $primaryNavEls.removeClass('dp-primary-nav-list-item--isActive dp-primary-nav-list-item--hasCaret');
    $(el).find('.dp-dropdown-panel').removeClass('dp-dropdown-panel--isActive');
    navIsActive = false;
}

function openSubNav(event, el) {
    $secondaryNavEls.removeClass('dp-secondary-nav-list-item--isActive');

    // ie9 does not allow params to be passed in setTimeout
    if(typeof(event) === "undefined") {
        return;
    }
    var $secondaryEl = $(el).find('.dp-secondary-nav-list-item').first();

    $(el).siblings('.dp-primary-nav-list-item').removeClass('dp-primary-nav-list-item--isActive dp-primary-nav-list-item--hasCaret');
    $(el).addClass('dp-primary-nav-list-item--isActive');
    $dropDownPanels.removeClass('dp-dropdown-panel--isActive');
    $(el).find('.dp-dropdown-panel').addClass('dp-dropdown-panel--isActive');
    $secondaryEl.addClass('dp-secondary-nav-list-item--isActive');

    if($(el).children('.dp-dropdown-panel').length > 0) {
        $(el).addClass('dp-primary-nav-list-item--hasCaret');
    }

    navIsActive = true;
}

function showTertiaryNav(event, el) {
    event.stopPropagation();
    $secondaryNavEls.removeClass('dp-secondary-nav-list-item--isActive');
    $(el).addClass('dp-secondary-nav-list-item--isActive');
}

function hideTertiaryNav(event, el) {

    // if user hovers back over the parent primary el, do nothing
    if($(event.relatedTarget).has(el) && $(event.relatedTarget).hasClass('dp-primary-nav-list-link')) {
        return;
    } else {
        $secondaryNavEls.removeClass('dp-secondary-nav-list-item--isActive');
    }
}

$primaryNavEls.hover(function(e) {
    activateNav(e, this);
}, function(e) {
    deActivateNav(e, this);
})

$secondaryNavEls.hover(function(e) {
    showTertiaryNav(e, this);
}, function(e) {
    hideTertiaryNav(e, this);
})

});