/* Minification failed. Returning unminified contents.
(292,60-61): run-time error JS1009: Expected '}': [
(292,80-81): run-time error JS1006: Expected ')': :
(292,80): run-time error JS1004: Expected ';'
(292,86-87): run-time error JS1195: Expected expression: )
(292,87-88): run-time error JS1195: Expected expression: .
(297,10-11): run-time error JS1006: Expected ')': ;
(320,92-93): run-time error JS1009: Expected '}': [
(320,112-113): run-time error JS1006: Expected ')': :
(320,112): run-time error JS1004: Expected ';'
(320,122-123): run-time error JS1195: Expected expression: ,
(320,127): run-time error JS1004: Expected ';'
(320,127-128): run-time error JS1195: Expected expression: )
(323,9-10): run-time error JS1006: Expected ')': }
(322,14): run-time error JS1004: Expected ';'
(323,10-11): run-time error JS1195: Expected expression: )
(330,41-42): run-time error JS1009: Expected '}': [
(330,61-62): run-time error JS1006: Expected ')': :
(330,61): run-time error JS1004: Expected ';'
(330,67-68): run-time error JS1195: Expected expression: ,
(335,18): run-time error JS1004: Expected ';'
(335,18-19): run-time error JS1195: Expected expression: )
(339,9-10): run-time error JS1006: Expected ')': }
(338,14): run-time error JS1004: Expected ';'
(339,10-11): run-time error JS1195: Expected expression: )
(388,1-2): run-time error JS1002: Syntax error: }
(388,2-3): run-time error JS1195: Expected expression: )
 */
(function (w, d, $) {
    $(document).ready(function () {
        var mobileBreakpoint = 992,
            navbarSticky = $(".ews-navbar-subsite");
            navbarFixedClass = "navbar-fixed-top";
            navbarHeader = $(".ews-navbar-default").height();
        $(w).scroll(function () {
            if ($(this).scrollTop() > navbarHeader) {
                navbarSticky.addClass(navbarFixedClass);
            } else {
                navbarSticky.removeClass(navbarFixedClass);
            }
        });
        /*
        var levelTwoListItems = $('.ews-navbar-subsite ul.nav.primary > li.level-2');
        $(levelTwoListItems).each(function (i) {
            if (i >= levelTwoListItems.length / 2)
                $(this).addClass('right-align');
        });*/
        /*
        function utilityNavPosition() {
            var $utilityNav = $(".navbar-subsite-ews #navbar-hamburger-menu .dropdown-menu"),
                offsetMargin = 15,
                minDesktopWidth = 768;
            //Handles Section Ender height. 
            if (window.innerWidth >= minDesktopWidth) {
                $utilityNav.css("left", -($utilityNav.closest(".navbar-subsite-ews").width() - offsetMargin) + "px");
            } else {
                $utilityNav.css("left", "0");
            }
        }
        utilityNavPosition();
        $(w).resize(utilityNavPosition);
        */

        //Close all open subsite menus when touching off the menu
        $(document.body).on("touchstart", function (e) {
            if (window.innerWidth >= mobileBreakpoint) {
                $(".ews-navbar-subsite .primary .dropdown.open").each(function () {
                    $(this).removeClass("open");
                });
            }
            return;
        });
        //Handle keyboard, touch thru subsite nav

        function open($elem, hasClass) {
            if ($elem.hasClass(hasClass)) {
                $elem.addClass("open");
            } else {
                $elem.closest("." + hasClass).addClass("open");
            }
        }
        function close($elem, hasClass) {
            if ($elem.hasClass(hasClass)) {
                $elem.removeClass("open");
            } else {
                $elem.closest("." + hasClass).removeClass("open");
            }
        }
        function desktopMenuHeight($this) {
            var $parentMatchHeight = $this.closest(".nav-match-height"),
                $childMatchHeight = $this.find('.nav-match-height').first(),
                parentMatchHeighValue = $parentMatchHeight.outerHeight(true),
                childMatchHeightValue = $childMatchHeight.outerHeight(true),
                offset = 0;
            if (parentMatchHeighValue < childMatchHeightValue) {
                $parentMatchHeight.css("min-height", childMatchHeightValue + offset + "px");
                $childMatchHeight.css("min-height", childMatchHeightValue + offset + "px");
            } else if (parentMatchHeighValue >= childMatchHeightValue) {
                $parentMatchHeight.css("min-height", parentMatchHeighValue + offset + "px");
                $childMatchHeight.css("min-height", parentMatchHeighValue + offset + "px");
            }
        }
        $(".ews-navbar-subsite .dropdown.level-2, .ews-navbar-subsite .dropdown.level-2 a.dropdown-toggle").on("touchstart focusin keydown mouseenter", function (e) {
            var keyCode = e.keyCode || e.which,
                eventType = e.type,
                $target = $(e.target);
            if (window.innerWidth >= mobileBreakpoint) {
                switch (eventType) {
                    case "touchstart":
                        //console.log("L2: " + "touchstart");
                        if ($target.hasClass("level-2") || $target.closest(".dropdown").hasClass("level-2")) {
                            //Handle touch on top level
                            e.preventDefault();
                            e.stopPropagation();
                            if ($target.hasClass("open") || $target.closest(".dropdown").hasClass("open")) {
                                //If menu is open than navigate to the link
                                var link = "";
                                if ($target.is("a")) {
                                    link = $target.focus().attr("href");
                                } else if ($target.hasClass("link-text") || $target.closest("a").hasClass("arrow-link")) {
                                    link = $target.closest("a").focus().attr("href");
                                } else {
                                    link = $target.find("a").first().focus().attr("href");
                                }
                                window.location.href = link;
                            } else {
                                //If menu is not close all others and open
                                $(".ews-navbar-subsite .primary .dropdown.open").each(function () {
                                    $(this).removeClass("open");
                                });
                                open($target, "dropdown");
                            }
                        }
                        break;
                    case "focusin":
                        //console.log("L2: " + "focusin");
                        $(".ews-navbar-subsite .primary .dropdown.open").each(function () {
                            $(this).removeClass("open");
                        });
                        open($target, "dropdown");
                        break;
                    case "keydown":
                        //console.log("L2: " + "keydown");
                        if (keyCode === 27 || (e.shiftKey && keyCode === 9 && $target.hasClass("dropdown-toggle"))) {
                            close($target, "dropdown");
                        }
                        break;
                    case "mouseenter":
                        //console.log("L2: " + "mouseenter");
                        $(".ews-navbar-subsite .primary .dropdown.open").each(function () {
                            $(this).removeClass("open");
                        });
                        break;
                    default:
                        break;
                }
            }
            return;
        });
        //$('.ews-navbar-subsite .dropdown.level-2 .level-3 a').on("keydown", function (e) {
        //    console.log("L3: " + "1st");
        //    var keyCode = e.keyCode || e.which,
        //        $target = $(e.target);
        //    if (!e.shiftKey && keyCode === 9 && $target.closest(".level-3").is(":last-child")) {
        //        $target.closest(".dropdown").removeClass("open");
        //    }
        //});
        //
        $('.ews-navbar-subsite .dropdown.level-2 .level-3, .ews-navbar-subsite .dropdown.level-2 .level-3 a').on("touchstart keydown", function (e) {
            var keyCode = e.keyCode || e.which,
                eventType = e.type,
                $target = $(e.target);
            if (window.innerWidth >= mobileBreakpoint) {
                switch (eventType) {
                    case "touchstart":
                        if ($target.hasClass("level-3") || $target.closest(".dropdown-submenu").hasClass("level-3")) {
                            //Handle touch on top level
                            e.preventDefault();
                            e.stopPropagation();
                            if ($target.hasClass("open") || $target.closest(".dropdown-submenu").hasClass("open")) {
                                //If menu is open than navigate to the link
                                var link = "";
                                if ($target.is("a")) {
                                    link = $target.focus().attr("href");
                                } else if ($target.hasClass("link-text") || $target.closest("a").hasClass("arrow-link")) {
                                    link = $target.closest("a").focus().attr("href");
                                } else {
                                    link = $target.find("a").first().focus().attr("href");
                                }
                                window.location.href = link;
                            } else {
                                //If menu is not close all others and open
                                $(".ews-navbar-subsite .primary .dropdown-submenu.open").each(function () {
                                    $(this).removeClass("open");
                                });
                                open($target, "dropdown-submenu");
                            }
                        }
                        break;
                    case "keydown":
                        if (keyCode === 27 || (e.shiftKey && keyCode === 9 && $target.hasClass("dropdown-toggle"))) {
                            close($target, "dropdown-submenu");
                        }
                        break;
                    default:
                        break;
                }
            }
        });
        $('.ews-navbar-subsite .dropdown.level-2 .level-3').on("focusin focusout mouseenter mouseleave", function (e) {
            var keyCode = e.keyCode || e.which,
                eventType = e.type,
                $target = $(e.target);
            if (window.innerWidth >= mobileBreakpoint) {
                switch (eventType) {
                    case "focusin":
                        open($target, "dropdown-submenu");
                        desktopMenuHeight($(this));
                        break;
                    case "focusout":
                        if ($target.hasClass("level-3") || $target.closest(".dropdown-submenu").hasClass("level-3")) {
                            $(this).closest(".nav-match-height").css("min-height", "");
                            $(this).find(".nav-match-height").css("min-height", "");
                        }
                    case "mouseenter":
                        desktopMenuHeight($(this));
                        $(".ews-navbar-subsite .primary .dropdown-submenu.open").each(function () {
                            $(this).removeClass("open");
                        });
                        break;
                    case "mouseleave":
                        if ($target.hasClass("level-3") || $target.closest(".dropdown-submenu").hasClass("level-3")) {
                            $(this).closest(".nav-match-height").css("min-height", "");
                            $(this).find(".nav-match-height").css("min-height", "");
                        }
                    default:
                        break;
                }
            }
        });      

        //Utility Nav tabbing behaviors
        /* Utility Nav not used on EWS
        $('.nav .hamburger.dropdown, #navbar-hamburger-menu .close, #navbar-hamburger-menu .small-nav a').on("keydown", function (e) {
            var smallNavLastAnchor = ".small-nav:last-child .menu-hover:last-child > a",
                smallNavFirstAnchor = ".small-nav:first-child .menu-hover:first-child > a",
                hamburgerButton = ".hamburger.dropdown button.dropdown-toggle";
            $navbarDefaultSubsite = $(".ews-navbar-default-subsite"),
            keyCode = e.keyCode || e.which,
            $target = $(e.target),
            dataTarget = $target.data("target");

            if ($target.hasClass("close") || keyCode === 27) {
                $parent = $target.closest(".dropdown-menu");
                if (keyCode === 13 || keyCode === 27) {
                    //Handle enter press of close - close menu and focus on parent
                    $navbarDefaultSubsite.find(hamburgerButton).dropdown("toggle").focus();
                } else if (e.shiftKey && keyCode === 9) {
                    //Handle shift tab - focus on last anchor in menu   
                    $parent.find(smallNavLastAnchor).focus();
                } else if (keyCode === 9) {
                    //Handle tab on close - focus on arrow-link
                    return;
                }
                e.preventDefault();
            } else {
                if (keyCode === 13) {
                    //Handle enter of parent menu - open and focu
                    $target.dropdown("toggle");
                    $(dataTarget).find(smallNavFirstAnchor).focus();
                    e.preventDefault();
                } else if (e.shiftKey && keyCode === 9 && $target.is(smallNavFirstAnchor)) {
                    //handle shift + tab on first anchor
                    $navbarDefaultSubsite.find(hamburgerButton).focus();
                    e.preventDefault();
                } else if (keyCode === 9 && $target.attr("aria-expanded") == "true") {
                    //Handle hamburger tab with menu open 
                    $target.dropdown("toggle");
                } else {
                    //handle tab of last utility nav item to close
                    if ($target.is(smallNavLastAnchor) && keyCode === 9) {
                        //$navbarHamburgerMenu.find(".utility-nav-top .close").focus();
                        $navbarDefaultSubsite.find(hamburgerButton).focus();
                        e.preventDefault();
                    }

                }
            }
        });
        */
        //############################## Begin Mobile Behaviors ##############################
        const menuSlideDirection = (document.querySelector("html").getAttribute("dir") === "rtl") ? "left" : "right"; //if language is ltr menu slide from right
        function mobileMenuHeight($this) {
            setTimeout(function () {
                var $parentMatchHeight = $this.closest(".nav-match-height"),
                    $childMatchHeight = $this.find('.nav-match-height').first(),
                    parentMatchHeighValue = $parentMatchHeight.outerHeight(true),
                    childMatchHeightValue = $childMatchHeight.outerHeight(true),
                    offset = 0;
                if (parentMatchHeighValue < childMatchHeightValue) {
                    $parentMatchHeight.css("min-height", childMatchHeightValue + offset + "px");
                } else if (parentMatchHeighValue >= childMatchHeightValue) {
                    $childMatchHeight.css("min-height", parentMatchHeighValue + offset + "px");
                } 
            }, 100);
        }
        
        function clearThisMobileMenuHeight($this) {
            setTimeout(function () {
                var $parentMatchHeight = $this.closest(".nav-match-height");
                $parentMatchHeight.css("min-height", "");
            }, 500);
        }
        function clearAllMobileMenuHeight($this) {
            setTimeout(function () {
                $this.find(".nav-match-height").css("min-height", "");
            }, 500);
        }
        function closeMobileMenus($navParent) {
            $navParent.find('.row-offcanvas.active').css({ [menuSlideDirection]: "" }).toggleClass('active');
            clearAllMobileMenuHeight($navParent);
            $navParent.find(".dropdown-menu.navbar-mobile").first().stop(true, true).slideUp(200, function (e) {
                $('.hamburger-mobile').removeClass("open");
            });
        };

        // ADD SLIDEDOWN ANIMATION TO DROPDOWN //
        $('.ews-navbar-subsite .dropdown-menu.navbar-mobile').on('show.bs.dropdown', function (e) {
            $('.hamburger-mobile').addClass("open");
            $(this).stop(true, true).slideDown(200, function () {
                $(this).find('.mobile-nav-backdrop').height($('body').innerHeight());
            });            
        });
        // ADD SLIDEUP ANIMATION TO DROPDOWN //
        $('.ews-navbar-subsite .dropdown-menu.navbar-mobile').on('hide.bs.dropdown', function (e) {       
            closeMobileMenus($(".ews-navbar-subsite"));
        });
        //Mobile slide-in offcanvas toggle
        $('.ews-navbar-subsite [data-toggle=offcanvas], .ews-navbar-subsite [data-toggle=offcanvas-subsite]').on("click", function (e) {
            var windowWidth = window.innerWidth
            if (window.innerWidth < mobileBreakpoint) {
                if ($(e.target).hasClass("offcanvas") || $(e.target).hasClass("offcanvas-link") || $(e.target).parent().parent().hasClass("offcanvas") || $(e.target).parent().hasClass("offcanvas-link")) {
                    e.stopPropagation();
                    e.preventDefault();
                    //set height of secondary nav to be the same as primary
                    mobileMenuHeight($(this));
                    //slide secondary into place
                    $(this).find('.row-offcanvas').first().toggleClass('active').animate({ [menuSlideDirection]: "100%" }, 100);
                }
            }
        });
        $('.ews-navbar-subsite [data-toggle=offcanvas-hide]').on("click", function (e) {
            if (window.innerWidth < mobileBreakpoint) {
                e.stopPropagation();
                e.preventDefault();
                var $rowOffCanvas = $(this).closest('.row-offcanvas');
                //slide secondary nav offscreen
                $rowOffCanvas.animate({ [menuSlideDirection]: "" }, 100, function () {
                    //script is not waiting for css animation, so forcing wait
                    setTimeout(function () {
                        $rowOffCanvas.toggleClass('active');
                    }, 250);
                });
                clearThisMobileMenuHeight($(this));
                mobileMenuHeight($(this));
            }
        });
        //Used for secondary close button
        $('.ews-navbar-subsite .close-offcanvas').on("click", function (e) {
            if (window.innerWidth < mobileBreakpoint) {
                e.stopPropagation();
                e.preventDefault();
                closeMobileMenus($(".ews-navbar-subsite"));
            }
        });
        //clear level-2 menu height when returning to level-2 menu
        $('.ews-navbar-subsite .main-menu-link-level-3').on("click", function (e) {
            clearAllMobileMenuHeight($(".ews-navbar-subsite"));
        });
        //############################## End Mobile Behaviors ##############################

        //After load is complete
        $(window).bind('load', function () {
            var zoom = document.documentElement.clientWidth / window.innerWidth;
            navZoom(zoom, document.documentElement.clientWidth);
            navbarHeightFix();
        });
        $(window).resize(function () {
            var zoom = document.documentElement.clientWidth / window.innerWidth;
            navZoom(zoom, document.documentElement.clientWidth);
            navbarHeightFix();
        });

        //Fix navbar height when navbar-subsite items wrap and match sub menu heights to parents
        function navbarHeightFix() {
            var $navbarSubsite = $(".ews-navbar-subsite");                
            if (window.innerWidth >= mobileBreakpoint) {
                $navbarSubsite.css("min-height", $navbarSubsite.find(".container-fluid > .navbar-collapse").height() + "px");
                closeMobileMenus($navbarSubsite);
            } else {
                $navbarSubsite.css("min-height", "");
            }
        }

        function navZoom(zoom, width) {
            $navBarFixedTop = $('.navbar-fixed-top');     
            if (zoom > 1) {
                $navBarFixedTop.addClass('navbar-zoomed').css("width", width + "px");
            }
            else {
                $navBarFixedTop.removeClass('navbar-zoomed').css("width", "");
            }
        }

    });
})(window, document, jQuery);;
