'use strict';
var bt_initHeader;
(function( $ ) {
var hasCentralMenu, verticalMenuEnabled, belowMenu, btStickyEnabled, responsiveMenuPosition, fullScreenMenuEnabled;
function initial_header_setup() {
var isTouchDevice = ( 'ontouchstart' in window ) || ( navigator.MaxTouchPoints > 0 ) || ( navigator.msMaxTouchPoints > 0 );
if ( isTouchDevice ) {
$( 'html' ).addClass( 'touch' );
$( 'html' ).removeClass( 'no-touch' );
} else {
$( 'html' ).addClass( 'no-touch' );
$( 'html' ).removeClass( 'touch' );
}
hasCentralMenu = $( 'body' ).hasClass( 'btMenuCenterEnabled' );
verticalMenuEnabled = $( 'body' ).hasClass( 'btMenuVerticalLeftEnabled' ) || $( 'body' ).hasClass( 'btMenuVerticalRightEnabled' );
fullScreenMenuEnabled = $( 'body' ).hasClass( 'btMenuFullScreenCenter' );
if ( $( 'body' ).hasClass( 'rtl' ) ) {
responsiveMenuPosition = 'Right';
} else {
responsiveMenuPosition = 'Left';
}
belowMenu = $( 'body' ).hasClass( 'btBelowMenu' );
btStickyEnabled = $( 'body' ).hasClass( 'btStickyEnabled' );
if ( typeof window.btStickyOffset == 'undefined' ) window.btStickyOffset = 250;
if ( typeof window.responsiveResolution == 'undefined' ) window.responsiveResolution = '1200';
}
function final_header_setup() {
$( 'li.btMenuWideDropdown' ).addClass(function(){
return 'btMenuWideDropdownCols-' + $( this ).children( 'ul' ).children( 'li' ).length;
});
$( 'li.btMenuWideDropdown' ).each(function() {
var maxChildItems = 0;
$( this ).find( '> ul > li > ul' ).each(function( index ) {
if ( $( this ).children().length > maxChildItems ) {
maxChildItems = $( this ).children().length;
}
});
$( this ).find( '> ul > li > ul' ).each(function( index ) {
var bt_menu_base_length = $( this ).children().length;
if ( bt_menu_base_length < maxChildItems ) {
for ( var i = 0; i < maxChildItems - bt_menu_base_length; i++ ) {
$( this ).append( '
' );
}
}
});
});
/* Show hide menu */
$( '.btHorizontalMenuTrigger, .bt-horizontal-menu-trigger' ).on( 'click', function () {
$( 'body' ).toggleClass( 'btShowMenu' );
return false;
});
$( '.bt-fullscreen-menu-trigger' ).on( 'click', function () {
$( 'body' ).toggleClass( 'bt-show-fullscreen-menu' );
return false;
});
/* responsive menu toggler */
$( '.btVerticalMenuTrigger, .bt-vertical-menu-trigger' ).on( 'click', function () {
$( 'body' ).toggleClass( 'btMenuVerticalOn' );
return false;
});
}
function top_tools_search() {
/* Top tools search */
$('.mainHeader .btSearchInner').prependTo('body').addClass( 'btFromTopBox' );
$('.mainHeader .widget_search').addClass( 'btIconWidget' );
$( '.mainHeader .btSearch, .btFromTopBox .btSearchInnerClose' ).on( 'click', function () {
$( 'body' ).toggleClass( 'btTopToolsSearchOpen' );
if( $( 'body' ).hasClass( 'btTopToolsSearchOpen' ) ) {
if ( $( '.btSearchInnerContent form input:text:visible:first' ).length ) boldthemes_requestTimeout( add_focus_to_serach, 500);
}
return false;
});
}
function add_focus_to_serach() {
// Focus to search field
$( '.btSearchInnerContent form input:text:visible:first' ).focus();
}
function divide_menu() {
if ( $( '.btTextLogo' ).length ) {
var logoWidth = $( '.mainHeader .logo' ).width();
} else {
if ( $( '.mainHeader .logo .btMainLogo' ).data( 'hw' ) ) {
var logoWidth = $( '.mainHeader .logo' ).height() * $( '.mainHeader .logo .btMainLogo' ).data( 'hw' );
} else {
var logoWidth = $( '.mainHeader .logo' ).height() * 3;
}
}
$( '.menuPort nav' ).addClass( 'leftNav' );
$( '.menuPort' ).append( '' );
var halfItems = Math.ceil( $( '.menuPort nav.leftNav ul>li:not(li li)' ).length * .5 );
$( '.menuPort nav.rightNav > ul' ).append( $( '.menuPort nav.leftNav > ul > li' ).slice ( halfItems ) );
$( '.menuPort nav.leftNav > ul > li' ).slice( halfItems ).remove();
$( '.mainHeader .logo' ).css( 'transform', 'translateX(' + Math.round(-logoWidth * .5) + 'px)' );
$( '.mainHeader .logo' ).css( 'width', logoWidth + 'px' );
$( '.menuPort nav.leftNav' ).attr( 'style', '--margin:' + Math.round( logoWidth * .5 ) + 'px;margin-right:' + Math.round( logoWidth * .5 ) + 'px;' );
$( '.menuPort nav.rightNav' ).attr( 'style', '--margin:' + Math.round( logoWidth * .5 ) + 'px;margin-left:' + Math.round( logoWidth * .5 ) + 'px;' );
}
/* Activate sticky function and call */
function boldthemes_activate_sticky() {
var fromTop = $( window ).scrollTop();
if ( fromTop > window.btStickyOffset && !$('body').hasClass('btStickyHeaderActive') ) {
$( 'body' ).addClass( 'btStickyHeaderActive' );
/*
window.bt_openHeader = setTimeout( function() {
boldthemes_activate_sticky_open();
}, 500 );
*/
boldthemes_requestTimeout( boldthemes_activate_sticky_open, 500);
} else if ( fromTop <= window.btStickyOffset && $('body').hasClass('btStickyHeaderActive') && !$('body').hasClass('btStickyHeaderClosed') ) {
$( 'body' ).addClass( 'btStickyHeaderClosed' );
/*
window.bt_closeHeader = setTimeout( function() {
boldthemes_activate_sticky_close()
}, 250 );
*/
boldthemes_requestTimeout( boldthemes_activate_sticky_close, 500);
}
}
function boldthemes_activate_sticky_open() {
$( 'body' ).addClass( 'btStickyHeaderOpen' );
}
function boldthemes_activate_sticky_close() {
$( 'body' ).removeClass( 'btStickyHeaderActive btStickyHeaderOpen btStickyHeaderClosed' );
}
window.boldthemes_requestTimeout = function(fn, delay) {
if( !window.requestAnimationFrame &&
!window.webkitRequestAnimationFrame &&
!(window.mozRequestAnimationFrame && window.mozCancelRequestAnimationFrame) && // Firefox 5 ships without cancel support
!window.oRequestAnimationFrame &&
!window.msRequestAnimationFrame)
return window.setTimeout(fn, delay);
var start = new Date().getTime(),
handle = new Object();
function loop(){
var current = new Date().getTime(),
delta = current - start;
delta >= delay ? fn.call() : handle.value = boldthemes_requestAnimFrame(loop);
};
handle.value = boldthemes_requestAnimFrame(loop);
return handle;
};
window.boldthemes_requestAnimFrame = (function() {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / 60);
};
})();
/* Vertical menu setup */
function responsive_menu_handler() {
if ( !fullScreenMenuEnabled ) {
if ( !verticalMenuEnabled ) {
$(window).on("resize", function(event){
if( window.innerWidth < window.responsiveResolution ) {
$( 'body' ).addClass( 'btMenuVertical' + responsiveMenuPosition + ' btMenuVertical' ).removeClass( 'btMenuHorizontal' );
} else {
$( 'body' ).removeClass( 'btMenuVertical btMenuVertical' + responsiveMenuPosition + ' btMenuVerticalOn' ).addClass( 'btMenuHorizontal' );
}
boldthemes_calculate_content_padding();
});
}
}
}
function init_menu() {
initial_header_setup();
if ( !fullScreenMenuEnabled ) {
if ( verticalMenuEnabled ) {
if ( $( 'body' ).hasClass( 'btMenuVerticalLeftEnabled' )) $( 'body' ).addClass( 'btMenuVerticalLeft btMenuVertical' );
if ( $( 'body' ).hasClass( 'btMenuVerticalRightEnabled' )) $( 'body' ).addClass( 'btMenuVerticalRight btMenuVertical' );
} else {
if ( $( 'body' ).hasClass( 'btMenuRightEnabled' )) $( 'body' ).addClass( 'btMenuRight btMenuHorizontal' );
if ( $( 'body' ).hasClass( 'btMenuLeftEnabled' )) $( 'body' ).addClass( 'btMenuLeft btMenuHorizontal' );
if ( $( 'body' ).hasClass( 'btMenuCenterBelowEnabled' )) $( 'body' ).addClass( 'btMenuCenterBelow btMenuHorizontal' );
if ( $( 'body' ).hasClass( 'btMenuCenterEnabled' )) $( 'body' ).addClass( 'btMenuCenter btMenuHorizontal' );
/* Switch to vertical */
if( window.innerWidth < window.responsiveResolution ) {
$( 'body' ).addClass( 'btMenuVertical' + responsiveMenuPosition + ' btMenuVertical' ).removeClass( 'btMenuHorizontal' );
} else {
$( 'body' ).removeClass( 'btMenuVertical btMenuVertical' + responsiveMenuPosition + ' btMenuVerticalOn' ).addClass( 'btMenuHorizontal' );
}
}
}
// Move content below menu, must be donne after menu switch
if ( ! belowMenu ) {
boldthemes_calculate_content_padding();
}
setTimeout( function() { $( 'body' ).addClass( 'btMenuInitFinished' ); }, 100 );
if ( btStickyEnabled ) {
setTimeout( function() {
$( window ).scroll(function(){
boldthemes_activate_sticky();
});
}, 1000 );
}
/* Menu split */
if ( hasCentralMenu ) divide_menu();
/* Menu sub togglers */
$( '.menuPort ul ul' ).parent().prepend( '');
$( '.menuPort ul li' ).on( 'mouseenter mouseleave', function (e) {
if ( $( 'body' ).hasClass( 'btMenuVertical' ) || $( 'body' ).hasClass( 'btMenuFullScreenCenter' ) || $( 'html' ).hasClass( 'touch' ) ) {
return false;
}
e.preventDefault();
$( this ).siblings().removeClass( 'on' );
$( this ).toggleClass( 'on' );
});
$( '.menuPort ul.menu' ).on( 'mouseenter mouseleave', function (e) {
if ( $( 'body' ).hasClass( 'btMenuVertical' ) || $( 'body' ).hasClass( 'btMenuFullScreenCenter' ) || $( 'html' ).hasClass( 'touch' ) ) {
return false;
}
$( this ).toggleClass( 'hover' );
});
$( 'div.subToggler' ).on( 'click', function(e) {
var parent_item = $( this ).parent();
parent_item.siblings().removeClass( 'on' );
parent_item.toggleClass( 'on' );
if ( parent_item.parent().hasClass( 'menu' ) ) parent_item.parent().toggleClass( 'hover' );
if ( $( 'body' ).hasClass( 'btMenuVertical' ) ) {
parent_item.find( 'ul' ).first().slideToggle( 200 );
}
return false;
});
final_header_setup();
}
/* Calculate content padding for not below menu */
function boldthemes_calculate_content_padding() {
if ( ! belowMenu ) {
if( $( window ).width() < window.responsiveResolution || verticalMenuEnabled || fullScreenMenuEnabled ) {
$( '.btContentWrap, .bt-content-wrap' ).css( 'padding-top', $( '.btVerticalHeaderTop, .bt-vertical-header-top' ).height() +'px');
} else if ( !$( 'body' ).hasClass( 'btStickyHeaderActive' ) ) {
$( '.btContentWrap, .bt-content-wrap' ).css( 'padding-top', $( '.mainHeader' ).height() +'px');
}
}
}
function reinit_menu() {
top_tools_search();
setTimeout(function(){ init_menu(); }, 100);
boldthemes_calculate_content_padding();
}
$( window ).on( 'load', function() {
boldthemes_calculate_content_padding();
});
bt_initHeader = reinit_menu;
top_tools_search();
init_menu();
responsive_menu_handler();
})( jQuery );