(function ($) {
'use strict'
/* Masonry --------------------- */
function masonrySetup () {
var $container = $('.obb-masonry-container');
// Ensure Masonry initializes after images have loaded
$container.imagesLoaded(function() {
$container.masonry({
gutter: '.obb-grid-spacer',
itemSelector: '.obb-masonry-wrapper'
});
});
}
/* Isotope --------------------- */
function isotopeSetup () {
$('.obb-portfolio, .obb-posts').each(function (index, obj) {
var filterID = obj.getAttribute('data-id')
var $grid = $('#' + filterID + ' .obb-masonry-container.obb-isotope')
// Quick search regex
var qsRegex
// Initialize Isotope after images have loaded
$grid.imagesLoaded(function () {
$grid.isotope({
itemSelector: '.obb-masonry-wrapper',
percentPosition: true,
masonry: {
gutter: '.obb-grid-spacer'
}
})
});
// use value of search field to filter
$('#' + filterID + ' .obb-filter-search').on('click', 'input', function () {
$('.obb-filter-buttons button').off('click')
var $quicksearch = $('.quicksearch').keyup(debounce(function () {
qsRegex = new RegExp($quicksearch.val(), 'gi')
$grid.isotope({
filter: function () {
return qsRegex ? $(this).text().match(qsRegex) : true
}
})
}, 200))
})
$('#' + filterID + ' .obb-filter-buttons').on('click', 'button', function () {
var filterValue = $(this).attr('data-filter')
$grid.isotope({ filter: filterValue })
})
// debounce so filtering doesn't happen every millisecond
function debounce (fn, threshold) {
var timeout
threshold = threshold || 100
return function debounced () {
clearTimeout(timeout)
var args = arguments
var _this = this
function delayed () {
fn.apply(_this, args)
}
timeout = setTimeout(delayed, threshold)
}
}
})
}
// Recalculate layout on scroll to ensure items are in the correct positions
function recalculateLayoutOnScroll() {
$(window).on('scroll', function() {
$('.obb-masonry-container').each(function() {
var $this = $(this);
if ($this.is(':visible')) {
$this.masonry('layout');
}
});
});
}
$(document).ready(() => {
isotopeSetup();
masonrySetup();
recalculateLayoutOnScroll();
});
$(window).on('resize', () => {
isotopeSetup();
masonrySetup();
});
})(jQuery);
;
(function ($) {
'use strict'
function toggleBlock () {
/* Toggle Box --------------------- */
$('.obb-toggle-trigger').click(function (e) {
// $(this).toggleClass('active').next().fadeToggle('slow')
$(this).toggleClass('active')
e.preventDefault()
})
}
$(document)
.ready(toggleBlock)
})(jQuery)
;
(function ($) {
'use strict'
/* Submenu Offset Fix --------------------- */
function menuOffset () {
var mainWindowWidth = $(window).width() + 120
$('ul.obb-menu li.menu-item-has-children').mouseover(function () {
// Checks if third level menu exist
var subMenuExist = $(this).find('.sub-menu').length
if (subMenuExist > 0) {
var subMenuWidth = $(this).find('.sub-menu').width()
var subMenuOffset = $(this).find('.sub-menu').parent().offset().left + subMenuWidth
// If sub menu is off screen, give new position
if ((subMenuOffset + subMenuWidth) > mainWindowWidth) {
var newSubMenuPosition = subMenuWidth
$(this).find('.sub-menu').css({
left: 'auto',
right: '0'
})
$(this).find('.sub-menu .sub-menu').css({
left: -newSubMenuPosition - 32,
right: '0'
})
}
}
})
}
/* Header Block Position --------------------- */
function headerSetup () {
if ($('.obb-header').hasClass('position-fixed')) {
$('.site-header').attr('data-position', 'position-fixed')
}
if ($('.obb-header').hasClass('position-absolute')) {
$('.site-header').attr('data-position', 'position-absolute')
}
if ($(this).scrollTop() > 80) {
$('.header-transparent-scroll').addClass('scrolling')
$('.obb-mobile-menu-container').addClass('scrolling')
} else {
$('.header-transparent-scroll').removeClass('scrolling')
$('.obb-mobile-menu-container').removeClass('scrolling')
}
}
/* Header Block Mobile Submenus --------------------- */
function subMenuSetup() {
if ($(window).width() <= 768) {
if ($('.obb-mobile-menus #mobile-nav-large ul.obb-menu ul.sub-menu').css('display') == 'none') {
// Toggle submenus
var subMenuToggle = $('.obb-menu li.menu-item-has-children > .dropdown').unbind();
subMenuToggle.on('click', function(e) {
e.preventDefault();
var submenu = $(this).parent().children('.obb-mobile-menus ul.obb-menu ul.sub-menu');
if ($(submenu).is(':hidden')) {
$(submenu).slideDown(200);
} else {
$(submenu).slideUp(200);
}
})
subMenuToggle.on('dblclick', function (e) {
window.location.replace($(this).attr('href'))
})
}
}
}
function generalFunctions () {
/* Add Mobile Menu Dropdown Arrows --------------------- */
$(".obb-mobile-menus #mobile-nav-large ul.obb-menu li.menu-item-has-children").append("");
/* Toggle Mobile Menu --------------------- */
$('.obb-mobile-menu-container').each(function (index, obj) {
var mobileMenuID = obj.getAttribute('data-mobile-id')
$('#' + mobileMenuID + ' .obb-menu-toggle.open').on('click touchstart', function () {
$('.' + mobileMenuID + '.obb-mobile-menu-container').addClass('revealed')
$('body').addClass('mobile-menu-open')
})
$('.' + mobileMenuID + ' .obb-menu-toggle.close, .' + mobileMenuID + ' .obb-mobile-menus li a').on('click swipeleft', function () {
$('.' + mobileMenuID + '.obb-mobile-menu-container').removeClass('revealed')
$('body').removeClass('mobile-menu-open')
})
})
/* Scroll To Top Button --------------------- */
$('button.obb-footer-return').click(function () {
window.scroll({
top: 0,
left: 0,
behavior: 'smooth'
})
})
/* Animate Page Scroll --------------------- */
$('.scroll-link a').on('click', function (event) {
event.preventDefault()
var dest = $(this).attr('href')
// console.log(dest)
if (dest.length) {
$('html,body').animate({ scrollTop: $(dest).offset().top }, 500)
}
})
/* Remove Links From Link Container Content --------------------- */
$('.obb-link-content a').removeAttr('href')
/* Modal Button -------------------- */
$('.obb-modal-open[rel~="modal:open"]').click(function (event) {
$(this).modal()
return false
})
}
$(document)
.ready(generalFunctions)
.ready(menuOffset)
.ready(headerSetup)
$(window)
.on('scroll', headerSetup)
.on('load', subMenuSetup)
.on('resize', subMenuSetup)
})(jQuery)
;