blob: b321e0d0f4548c680d6e44203d6ec5d942643da4 [file] [log] [blame]
(function () {
// Init functions
header();
nav();
// Load logo
function loadLogo() {
$('.logo__wrapper').load('logo.html', function () {
// Grab logo if has ID or not
var logoID = document.getElementById("header__logo");
var logo = document.querySelectorAll("img, svg");
// Has ID - call header height
if (logoID && logoID !== null) {
getHeaderHeight();
// If logo exists but no ID - call header height
} else if (logo !== null && logo.length == 1) {
$('img, svg').on('load', function () {
getHeaderHeight();
});
// If no logo at all - call header height
} else {
getHeaderHeight();
}
});
}
// Get header height
function getHeaderHeight() {
// Get header height after logo is loaded
var header = document.getElementById("header__wrapper");
var headerHeight = header.offsetHeight;
// Add body padding to compensate for fixed header
document.body.style.paddingTop = headerHeight + 'px';
nav(headerHeight);
}
// Include header
function header() {
$('#header__wrapper').load('header.html', function () {
// include logo into header
loadLogo();
});
}
// load navigation - pass in header height
function nav(height) {
$('#navigation').load('navigation.html', function (headerHeight) {
var nav = document.getElementById("nav__top-level");
var subnav = document.getElementsByClassName("nav__second-level");
var navBtn = document.querySelectorAll('#nav__top-level button');
// Bump down nav to compensate for fixed header
nav.style.top = height + 'px';
// Bump second level nav down for fixed header
for (var i = 0; i < subnav.length; i++) {
subnav[i].style.top = height + 'px';
}
//Loop over nav buttons
for (var i = 0, len = navBtn.length; i < len; i++) {
// Click event for each nav button
navBtn[i].addEventListener('click', function () {
var parent = $(this).parents("#navigation");
var btnId = $(this).attr("class").match(/btn[\w-]*\b/);
var subnavClass = $('.nav__second-level.' + btnId);
//Remove opened class from buttons
parent.find('.opened').removeClass('opened');
// Add opened class to clicked button
this.classList.add("opened");
//Close all sub panels and remove opened class
parent.find('.nav__second-level').css("display", "none").removeClass('opened');
// add opened class
parent.find(subnavClass).css("display", "block").addClass('opened');
});
}
});
}
}());