'use strict';
/*
Tipr 1.0.1
Copyright (c) 2013 Tipue
Tipr is released under the MIT License
http://www.tipue.com/tipr
*/
(function ($, window, undefined) {
'use strict';
$.fn.tipr = function (options) {
var set = $.extend(
{
speed: 200,
mode: 'bottom',
rtl: false,
},
options
);
return this.each(function () {
var tipr_cont = '.tipr_container_' + set.mode;
$(this).hover(
function () {
var out =
'
' +
$(this).attr('data-tip') +
'
';
$(this).append(out);
var w_t = $(tipr_cont).outerWidth();
var w_e = $(this).width();
var m_l = w_e / 2 - w_t / 2;
if (set.rtl) {
$(tipr_cont).css('margin-right', m_l + 'px');
} else {
$(tipr_cont).css('margin-left', m_l + 'px');
}
$(this).removeAttr('title');
$(tipr_cont).fadeIn(set.speed);
},
function () {
$(tipr_cont).remove();
}
);
});
};
})(jQuery);
;
'use strict';
/*
Handles additional functionalities of the theme.
*/
(function () {
var siteHeader = document.getElementById('masthead');
if (!siteHeader) {
return;
}
var fortuneTheme = {
// Run on ready.
onReady: function onReady() {
this.createStickyHeader();
this.setSocialTooltips();
this.skipLinkFocusFix();
},
// Create sticky header.
createStickyHeader: function createStickyHeader() {
var stickyNavigationContainer = document.getElementById('header-inner');
var stickyNavigationTop = siteHeader.offsetHeight;
var makeNavigationSticky = function makeNavigationSticky() {
var scrollTop = window.scrollY || document.documentElement.scrollTop;
if (scrollTop > stickyNavigationTop) {
siteHeader.style.height = stickyNavigationTop + 'px';
stickyNavigationContainer.classList.add('sticky-navigation');
} else {
siteHeader.style.height = 'auto';
stickyNavigationContainer.classList.remove('sticky-navigation');
}
};
makeNavigationSticky();
var stickyNavigationEvent = function stickyNavigationEvent() {
window.requestAnimationFrame(makeNavigationSticky);
};
window.addEventListener('scroll', stickyNavigationEvent, false);
window.addEventListener('resize', stickyNavigationEvent, false);
},
// Set up social icons tooltips
setSocialTooltips: function setSocialTooltips() {
var socialLinks = jQuery(document.getElementById('page')).find(
'.social-list'
);
var headerContainer = jQuery(siteHeader); // Will be removed soon.
var htmlRTL =
'rtl' === document.documentElement.getAttribute('dir') ? true : false;
if (socialLinks.length) {
var currentSocialLink, socialMetaText, i;
socialMetaText = socialLinks.find('.social-meta');
for (i = 0; i < socialMetaText.length; i++) {
currentSocialLink = socialMetaText.eq(i);
currentSocialLink
.parent()
.attr('data-tip', currentSocialLink.text())
.addClass('td-tooltip');
} //Header Tooltips
headerContainer.find('.td-tooltip').tipr({
speed: 100,
mode: 'bottom',
rtl: htmlRTL,
}); //Footer Tooltips
jQuery(document.getElementById('colophon')).find('.td-tooltip').tipr({
speed: 100,
mode: 'top',
rtl: htmlRTL,
});
}
},
// Helps with accessibility for keyboard only users.
skipLinkFocusFix: function skipLinkFocusFix() {
var isIe = /(trident|msie)/i.test(navigator.userAgent);
if (isIe && document.getElementById && window.addEventListener) {
window.addEventListener(
'hashchange',
function () {
var id = location.hash.substring(1),
element;
if (!/^[A-z0-9_-]+$/.test(id)) {
return;
}
element = document.getElementById(id);
if (element) {
if (
!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)
) {
element.tabIndex = -1;
}
element.focus();
}
},
false
);
}
},
}; // Things that need to happen when the document is ready.
jQuery(function () {
fortuneTheme.onReady();
});
})();
('use strict');
(function () {
if ('loading' === document.readyState) {
// The DOM has not yet been loaded.
document.addEventListener('DOMContentLoaded', initGoTopButton);
} else {
// The DOM has already been loaded.
initGoTopButton();
} // Initiate the header search when the DOM loads.
function initGoTopButton() {
var goToTopButton = document.getElementById('gotop-button');
var buttonAction = function buttonAction() {
try {
window.scrollTo({
top: document.getElementById('page').offsetTop,
left: 0,
behavior: 'smooth',
});
} catch (error) {
window.scrollTo(0, document.getElementById('page').offsetTop);
}
};
if (!goToTopButton) {
return;
}
goToTopButton.addEventListener('click', buttonAction, false);
}
})();
('use strict');
(function () {
if ('loading' === document.readyState) {
// The DOM has not yet been loaded.
document.addEventListener('DOMContentLoaded', initSearchForm);
} else {
// The DOM has already been loaded.
initSearchForm();
}
function initSearchForm() {
var searchButton = document.getElementById('header-search-button');
if (!searchButton) {
return;
}
if (!document.documentElement.classList) {
searchButton.style.display = 'none';
}
var headerSearchBox = document.getElementById('header-searchform');
var headerSearchBoxInput = document.querySelector('#header-search-input');
var searchButtonEvent = function searchButtonEvent() {
searchButton.classList.toggle('open');
headerSearchBox.classList.toggle('th-flex');
if (headerSearchBox.classList.contains('th-flex')) {
headerSearchBoxInput.focus();
searchButton.setAttribute('aria-expanded', 'true');
} else {
searchButton.setAttribute('aria-expanded', 'false');
}
};
searchButton.addEventListener('click', searchButtonEvent, false);
var closeSearchWithKey = function closeSearchWithKey(e) {
if (
(e.key == 'Escape' || e.key == 'Esc' || e.keyCode == 27) &&
headerSearchBox.classList.contains('th-flex')
) {
searchButtonEvent();
}
};
headerSearchBox.addEventListener('keydown', closeSearchWithKey, false);
}
})();
('use strict');
(function () {
if ('loading' === document.readyState) {
// The DOM has not yet been loaded.
document.addEventListener('DOMContentLoaded', initNavigation);
} else {
// The DOM has already been loaded.
initNavigation();
}
function initNavigation() {
var siteHeader = document.getElementById('masthead');
if (!siteHeader) {
return;
}
if (!document.documentElement.classList) {
return;
}
var siteHeaderMenus = siteHeader.querySelectorAll('.nav-bar');
if (!siteHeaderMenus.length) {
return;
}
for (var i = 0; i < siteHeaderMenus.length; i++) {
setToggleSubmenuOnFocus(siteHeaderMenus[i]);
setToggleSubmenuOnTouch(siteHeaderMenus[i]);
}
createMobileMenu(siteHeaderMenus);
}
/**
* Toggle `focus` class to allow sub-menu access on focus and blur.
*
* @param {Object} container
*/
function setToggleSubmenuOnFocus(container) {
// Get the first ul element insite the menu container.
var primaryMenu = container.getElementsByTagName('ul')[0]; // Get all the link elements within the menu.
var menuLinks = container.getElementsByTagName('a');
var i, focusFn; // Sets or removes .focus class on an element.
focusFn = function focusFn() {
var self = this; // Move up through the ancestors of the current link until we hit .nav-menu.
while (
!self.classList.contains('menu-navigation') &&
'nav' !== self.tagName.toLowerCase()
) {
// On li elements toggle the class .focus.
if ('li' === self.tagName.toLowerCase()) {
if (self.classList.contains('focus')) {
self.classList.remove('focus');
} else {
self.classList.add('focus');
}
}
self = self.parentElement;
}
}; // Each time a menu link is focused or blurred, toggle focus.
for (i = 0; i < menuLinks.length; i++) {
menuLinks[i].addEventListener('focus', focusFn, false);
menuLinks[i].addEventListener('blur', focusFn, false);
}
}
/**
* Toggle `focus` class to allow sub-menu access on touch screens.
*
* @param {Object} container
*/
function setToggleSubmenuOnTouch(container) {
if ('undefined' === typeof window.ontouchstart) {
return;
}
var touchStartFn,
touchOutsideFn,
removeFocusFn,
i,
parentLink = container.querySelectorAll(
'.menu-item-has-children > a, .page_item_has_children > a'
);
removeFocusFn = function removeFocusFn() {
var focusedElements = container.querySelectorAll('li.focus');
var i;
for (i = 0; i < focusedElements.length; ++i) {
focusedElements[i].classList.remove('focus');
}
};
touchStartFn = function touchStartFn(e) {
var menuItem = this.parentNode,
i;
if (!menuItem.classList.contains('focus')) {
if (e.cancelable) {
e.preventDefault();
}
for (i = 0; i < menuItem.parentNode.children.length; ++i) {
if (menuItem === menuItem.parentNode.children[i]) {
continue;
}
menuItem.parentNode.children[i].classList.remove('focus');
}
if (!container.classList.contains('is-touched')) {
container.classList.add('is-touched');
}
menuItem.classList.add('focus');
} else {
menuItem.classList.remove('focus');
}
};
touchOutsideFn = function touchOutsideFn(e) {
var isTochedMenu = container.classList.contains('is-touched');
if (!isTochedMenu) {
return;
}
var elementParent = e.target.parentNode;
if (
elementParent &&
!elementParent.classList.contains('menu-item') &&
isTochedMenu
) {
removeFocusFn();
}
};
document.addEventListener('touchstart', touchOutsideFn, false);
for (i = 0; i < parentLink.length; ++i) {
parentLink[i].addEventListener('touchstart', touchStartFn, false);
}
} // Create a mobile menu.
function createMobileMenu(menus) {
var siteHeader = document.getElementById('masthead');
var mobileMenu = document.getElementById('mobile-navigation');
var mobileMenuContainer = mobileMenu.querySelector('.container');
var mobileMenuButton = document.getElementById('toggle-mobile-menu');
var mobileMenuContent = document.createDocumentFragment();
for (var _i = 0; _i < menus.length; _i++) {
mobileMenuContent.appendChild(menus[_i].cloneNode(true));
} // Remove ID attributes from the list items to avoid repetition.
var mobileMenuItems = mobileMenuContent.querySelectorAll('li');
var mobileMenuItemsCount = mobileMenuItems.length;
if (mobileMenuItemsCount) {
for (var itemIndex = 0; itemIndex < mobileMenuItemsCount; itemIndex++) {
mobileMenuItems[itemIndex].removeAttribute('id');
}
}
var toggleMobileMenuEvent = function toggleMobileMenuEvent() {
siteHeader.classList.toggle('active-toggle-menu');
if (-1 !== siteHeader.className.indexOf('active-toggle-menu')) {
mobileMenu.setAttribute('aria-hidden', false);
mobileMenuButton.setAttribute('aria-expanded', true);
window.scrollTo(0, document.getElementById('page').offsetTop);
} else {
mobileMenu.setAttribute('aria-hidden', true);
mobileMenuButton.setAttribute('aria-expanded', false);
}
};
mobileMenuButton.addEventListener('click', toggleMobileMenuEvent, false); // Add dropdown toggle that displays child menu items.
var parentMenuItems = mobileMenuContent.querySelectorAll(
'.menu-item-has-children'
);
if (parentMenuItems.length) {
for (var _i2 = 0; _i2 < parentMenuItems.length; _i2++) {
var buttonScreenReaderText = document.createElement('span');
buttonScreenReaderText.className = 'screen-reader-text';
buttonScreenReaderText.appendChild(
document.createTextNode(fortuneScreenReaderText.expand)
);
var dropdownToggle = document.createElement('button');
dropdownToggle.className =
'dropdown-toggle clean-button has-icon has-border-radius';
dropdownToggle.setAttribute('aria-expanded', false);
dropdownToggle.appendChild(buttonScreenReaderText);
var subMenu = parentMenuItems[_i2].querySelector('ul');
parentMenuItems[_i2].insertBefore(dropdownToggle, subMenu);
parentMenuItems[_i2].setAttribute('aria-haspopup', true);
}
}
mobileMenuContainer.appendChild(mobileMenuContent); // Toggle buttons and submenu items with active children menu items.
var activeToggleButtons = mobileMenuContainer.querySelectorAll(
'.current-menu-ancestor > button'
);
var activeToggleSubMenus = mobileMenuContainer.querySelectorAll(
'.current-menu-ancestor > .sub-menu'
);
var activeToggleIndecators = mobileMenuContainer.querySelectorAll(
'.current-menu-ancestor > .arrow-icon'
);
if (activeToggleButtons.length) {
for (var i = 0; i < activeToggleButtons.length; i++) {
activeToggleButtons[i].classList.add('toggled-on');
activeToggleButtons[i].setAttribute('aria-expanded', true);
activeToggleButtons[i].querySelector(
'.screen-reader-text'
).textContent = fortuneScreenReaderText.collapse;
}
}
if (activeToggleSubMenus.length) {
for (var i = 0; i < activeToggleSubMenus.length; i++) {
activeToggleSubMenus[i].classList.add('toggled-on');
}
}
if (activeToggleIndecators.length) {
for (var i = 0; i < activeToggleIndecators.length; i++) {
activeToggleIndecators[i].classList.add('toggled-on');
}
}
var dropdownToggleButtons =
mobileMenuContainer.getElementsByTagName('button');
if (!dropdownToggleButtons.length) {
return;
}
var dropdownToggleEvent = function dropdownToggleEvent(e) {
var screenReader = e.target.querySelector('.screen-reader-text');
var arrowIconElement =
e.target.parentElement.querySelector('.arrow-icon');
arrowIconElement.classList.toggle('toggled-on');
if (-1 !== e.target.className.indexOf('toggled-on')) {
e.target.setAttribute('aria-expanded', false);
if (null !== screenReader) {
screenReader.textContent = fortuneScreenReaderText.expand;
}
} else {
e.target.setAttribute('aria-expanded', true);
if (null !== screenReader) {
screenReader.textContent = fortuneScreenReaderText.collapse;
}
}
e.target.classList.toggle('toggled-on');
var parentItem = e.target.parentNode;
for (var i = 0; i < parentItem.childNodes.length; i++) {
if ('UL' === parentItem.childNodes[i].nodeName) {
parentItem.childNodes[i].classList.toggle('toggled-on');
break;
}
}
};
for (var i = 0; i < dropdownToggleButtons.length; i++) {
dropdownToggleButtons[i].addEventListener(
'click',
dropdownToggleEvent,
false
);
}
}
})();
;