function showSearchPanel() {

    var searchLink = document.querySelectorAll(".co-mobile-search");
    var menu = document.querySelectorAll("#mobile-navigation-wrapper #js-mobile-navigation");
    var overlay = document.getElementById("js-co-overlay");
    var menuWrapper = document.getElementById("mobile-navigation-wrapper");

    if (searchLink.length > 0) {
        for (var i = 0; i < searchLink.length; i++) {

            searchLink[i].onclick = function () {
                var menuLinkIsPresent = document.getElementById("mobile-search").style.display;

                if (menuLinkIsPresent === 'block') {
                    document.getElementById("mobile-search").style.display = 'none';
                } else {
                    document.getElementById("mobile-search").style.display = 'block';
                    overlay.style.display = 'none';
                    menu[0].style.display = 'none';
                    menuWrapper.style.display = 'none';
                }
            };
        }
    }
}

function showMenu() {

    var menuLink = document.querySelectorAll(".co-mobile-menu");
    var menu = document.querySelectorAll("#mobile-navigation-wrapper #js-mobile-navigation");
    var menuWrapper = document.getElementById("mobile-navigation-wrapper");
    var overlay = document.getElementById("js-co-overlay");
    var body = document.body;

    if(menu.length < 1){
        return false;
    }
    if (menuLink.length > 0) {
        for (var i = 0; i < menuLink.length; i++) {
            menuLink[i].onclick = function () {
                var menuLinkIsPresent = document.getElementById("mobile-nav").style.display;
                var scrolledMenu = document.getElementById("mobile-nav-scrolled").style.display;

                if (menuLinkIsPresent === 'none' && scrolledMenu === 'none') {
                    return false;
                }
                if (menuWrapper.style.display === 'block') {
                    menu[0].style.display = 'none';
                    menuWrapper.style.display = 'none';
                    overlay.style.display = 'none';
                    body.classList.remove('noscroll');
                    // bodyScrollLock.enableBodyScroll(menu[0]);
                    stopBodyScrolling(false);
                } else {
                    document.getElementById("mobile-search").style.display = 'none';
                    menu[0].style.display = 'block';
                    menuWrapper.style.display = 'block';
                    menu[0].style.top = (document.getElementById("j-mobile-banner").offsetHeight + document.getElementById("j-secondary-nav").offsetHeight -1) + 'px';
                    overlay.style.top = menu[0].style.top;
                    overlay.style.display = 'block';
                    body.classList.add('noscroll');
                    showOpenedSubMenu();
                    // bodyScrollLock.disableBodyScroll(menu[0]);
                    stopBodyScrolling(true);
                }
            };
        }
    }

    overlay.onclick = function () {
        body.classList.remove('noscroll');
        menu[0].style.display = 'none';
        menuWrapper.style.display = 'none';
        overlay.style.display = 'none';
    };
}

function showOpenedSubMenu() {
    var navigationActive = document.querySelectorAll('a.active_menuitem');

    if(navigationActive){
        if (navigationActive.length > 0) {
            for (var i = 0; i < navigationActive.length; i++) {
                var parentList = navigationActive[i].parentElement.parentElement;
                if(parentList){
                    parentList.style.height = 'auto';
                    parentList.style.display = 'block';

                    var parentNavigationItem = parentList.parentElement;
                    if(parentNavigationItem){
                        parentNavigationItem.style.height = 'auto';
                    }

                    if(Math.max(document.documentElement.clientHeight, window.innerHeight || 0) / 2 < navigationActive[i].offsetTop){
                        document.querySelectorAll("#mobile-navigation-wrapper #js-mobile-navigation")[0].scrollTo(0, navigationActive[i].offsetTop / 2);
                    }
                }
            }
        }
    }
}


function showSubMenu() {

    var menu = document.querySelectorAll("#js-mobile-navigation>li.menuitem_level1");

    if (menu.length > 0) {
        for (var i = 0; i < menu.length; i++) {
            menu[i].onclick = function (event) {
                var childMenu = event.target.nextSibling || null;
                var parentObject = event.target.parentNode || null;
                var isVisible = 'block';

                if(childMenu !== null){
                    isVisible = childMenu.style.display;
                }

                if (childMenu !== null) {

                    var menuOpened = document.querySelectorAll("#js-mobile-navigation>li.menuitem_level1");
                    if (menuOpened.length > 0) {
                        for (var j = 0; j < menuOpened.length; j++) {
                            var subMenu = menuOpened[j].querySelector('ul.menu_level2') || null;
                            if (subMenu !== null) {
                                if (subMenu.style.display !== 'none') {
                                    subMenu.style.display = 'none';
                                    menuOpened[j].style.height = '33px';
                                }
                            }

                        }
                    }

                    if(isVisible !== 'block'){
                        childMenu.style.display = 'block';
                        childMenu.style.height = 'auto';
                        childMenu.dataset.visibility = "1";
                        if(parentObject !== null){
                            parentObject.style.height = 'auto';
                        }
                    } else {
                        childMenu.style.display = 'none';
                        childMenu.style.height = '0';
                        childMenu.dataset.visibility = "0";
                        if(parentObject !== null){
                            parentObject.style.height = '33px';
                        }
                    }
                }
            };
        }
    }
}


function showSubjectTable() {
    var displaySubjectAreaLink = document.getElementById("js-co-show-subject-area-table");

    if (displaySubjectAreaLink) {
        displaySubjectAreaLink.onclick = function () {
            var displaySubjectAreaLinkElement = document.getElementById("js-co-show-subject-area-table");
            var tableSubjectArea = document.getElementById("js-co-subject-area-table");
            var isVisible = document.getElementById("js-co-subject-area-table").style.display;

            if (isVisible === 'none') {
                tableSubjectArea.style.display = 'table';
                displaySubjectAreaLinkElement.innerHTML = "Hide subject table";
            } else {
                tableSubjectArea.style.display = 'none';
                displaySubjectAreaLinkElement.innerHTML = "Show subject table";
            }
        };
    }
}

function freezeVp (e) {
    e.preventDefault();
}

function stopBodyScrolling (bool) {
    if (bool === true) {
        document.body.addEventListener("touchmove", freezeVp, false);
    } else {
        document.body.removeEventListener("touchmove", freezeVp, false);
    }
}

add_onload_action("showSearchPanel()");
add_onload_action("showMenu()");
add_onload_action("showSubjectTable()");
add_onload_action("showSubMenu()");