File: /var/www/html/wpmuhibbah_err/wp-content/themes/goodwish/assets/js/modules/headers.js
(function($) {
"use strict";
var header = {};
edgtf.modules.header = header;
header.isStickyVisible = false;
header.stickyAppearAmount = 0;
header.stickyMobileAppearAmount = 0;
header.behaviour;
header.edgtfSideArea = edgtfSideArea;
header.edgtfSideAreaScroll = edgtfSideAreaScroll;
header.edgtfFullscreenMenu = edgtfFullscreenMenu;
header.edgtfInitMobileNavigation = edgtfInitMobileNavigation;
header.edgtfMobileHeaderBehavior = edgtfMobileHeaderBehavior;
header.edgtfSetDropDownMenuPosition = edgtfSetDropDownMenuPosition;
header.edgtfDropDownMenu = edgtfDropDownMenu;
header.edgtfSearch = edgtfSearch;
header.edgtfOnDocumentReady = edgtfOnDocumentReady;
header.edgtfOnWindowLoad = edgtfOnWindowLoad;
header.edgtfOnWindowResize = edgtfOnWindowResize;
header.edgtfOnWindowScroll = edgtfOnWindowScroll;
$(document).ready(edgtfOnDocumentReady);
$(window).on('load', edgtfOnWindowLoad);
$(window).resize(edgtfOnWindowResize);
$(window).scroll(edgtfOnWindowScroll);
/*
All functions to be called on $(document).ready() should be in this function
*/
function edgtfOnDocumentReady() {
edgtfHeaderBehaviour();
edgtfSideArea();
edgtfSideAreaScroll();
edgtfFullscreenMenu();
edgtfInitMobileNavigation();
edgtfMobileHeaderBehavior();
edgtfSetDropDownMenuPosition();
edgtfSearch();
edgtfVerticalMenu().init();
edgtfShopDropDownMenu();
}
/*
All functions to be called on $(window).load() should be in this function
*/
function edgtfOnWindowLoad() {
edgtfSetDropDownMenuPosition();
edgtfDropDownMenu();
}
/*
All functions to be called on $(window).resize() should be in this function
*/
function edgtfOnWindowResize() {
edgtfDropDownMenu();
}
/*
All functions to be called on $(window).scroll() should be in this function
*/
function edgtfOnWindowScroll() {
}
/*
** Show/Hide sticky header on window scroll
*/
function edgtfHeaderBehaviour() {
var header = $('.edgtf-page-header');
var stickyHeader = $('.edgtf-sticky-header');
var fixedHeaderWrapper = $('.edgtf-fixed-wrapper');
var headerMenuAreaOffset = $('.edgtf-page-header').find('.edgtf-fixed-wrapper').length ? $('.edgtf-page-header').find('.edgtf-fixed-wrapper').offset().top : null;
var stickyAppearAmount;
switch(true) {
// sticky header that will be shown when user scrolls up
case edgtf.body.hasClass('edgtf-sticky-header-on-scroll-up'):
edgtf.modules.header.behaviour = 'edgtf-sticky-header-on-scroll-up';
var docYScroll1 = $(document).scrollTop();
stickyAppearAmount = edgtfGlobalVars.vars.edgtfTopBarHeight + edgtfGlobalVars.vars.edgtfLogoAreaHeight + edgtfGlobalVars.vars.edgtfMenuAreaHeight + edgtfGlobalVars.vars.edgtfStickyHeaderHeight;
var headerAppear = function(){
var docYScroll2 = $(document).scrollTop();
if((docYScroll2 > docYScroll1 && docYScroll2 > stickyAppearAmount) || (docYScroll2 < stickyAppearAmount)) {
edgtf.modules.header.isStickyVisible= false;
stickyHeader.removeClass('header-appear').find('.edgtf-main-menu .edgtf-menu-second').removeClass('edgtf-drop-down-start');
}else {
edgtf.modules.header.isStickyVisible = true;
stickyHeader.addClass('header-appear');
}
docYScroll1 = $(document).scrollTop();
};
headerAppear();
$(window).scroll(function() {
headerAppear();
});
break;
// sticky header that will be shown when user scrolls both up and down
case edgtf.body.hasClass('edgtf-sticky-header-on-scroll-down-up'):
edgtf.modules.header.behaviour = 'edgtf-sticky-header-on-scroll-down-up';
if(edgtfPerPageVars.vars.edgtfStickyScrollAmount !== 0){
edgtf.modules.header.stickyAppearAmount = edgtfPerPageVars.vars.edgtfStickyScrollAmount;
}else{
edgtf.modules.header.stickyAppearAmount = edgtfGlobalVars.vars.edgtfStickyScrollAmount !== 0 ? edgtfGlobalVars.vars.edgtfStickyScrollAmount : edgtfGlobalVars.vars.edgtfTopBarHeight + edgtfGlobalVars.vars.edgtfLogoAreaHeight + edgtfGlobalVars.vars.edgtfMenuAreaHeight;
}
var headerAppear = function(){
if(edgtf.scroll < edgtf.modules.header.stickyAppearAmount) {
edgtf.modules.header.isStickyVisible = false;
stickyHeader.removeClass('header-appear').find('.edgtf-main-menu .edgtf-menu-second').removeClass('edgtf-drop-down-start');
}else{
edgtf.modules.header.isStickyVisible = true;
stickyHeader.addClass('header-appear');
}
};
headerAppear();
$(window).scroll(function() {
headerAppear();
});
break;
// on scroll down, part of header will be sticky
case edgtf.body.hasClass('edgtf-fixed-on-scroll'):
edgtf.modules.header.behaviour = 'edgtf-fixed-on-scroll';
var headerFixed = function(){
if(edgtf.scroll < headerMenuAreaOffset){
fixedHeaderWrapper.removeClass('fixed');
header.css('margin-bottom',0);}
else{
fixedHeaderWrapper.addClass('fixed');
header.css('margin-bottom',fixedHeaderWrapper.height());
}
};
headerFixed();
$(window).scroll(function() {
headerFixed();
});
break;
}
}
/**
* Show/hide side area
*/
function edgtfSideArea() {
var wrapper = $('.edgtf-wrapper'),
sideMenu = $('.edgtf-side-menu'),
sideMenuButtonOpen = $('a.edgtf-side-menu-button-opener'),
cssClass,
//Flags
slideFromRight = false,
slideWithContent = false,
slideUncovered = false;
if (edgtf.body.hasClass('edgtf-side-menu-slide-from-right')) {
$('.edgtf-cover').remove();
cssClass = 'edgtf-right-side-menu-opened';
wrapper.prepend('<div class="edgtf-cover"/>');
slideFromRight = true;
} else if (edgtf.body.hasClass('edgtf-side-menu-slide-with-content')) {
cssClass = 'edgtf-side-menu-open';
slideWithContent = true;
} else if (edgtf.body.hasClass('edgtf-side-area-uncovered-from-content')) {
cssClass = 'edgtf-right-side-menu-opened';
slideUncovered = true;
}
$('a.edgtf-side-menu-button-opener, a.edgtf-close-side-menu').on('click', function(e) {
e.preventDefault();
if(!sideMenuButtonOpen.hasClass('opened')) {
sideMenuButtonOpen.addClass('opened');
edgtf.body.addClass(cssClass);
if (slideFromRight) {
$('.edgtf-wrapper .edgtf-cover').on('click',function() {
edgtf.body.removeClass('edgtf-right-side-menu-opened');
sideMenuButtonOpen.removeClass('opened');
});
}
if (slideUncovered) {
sideMenu.css({
'visibility' : 'visible'
});
}
var currentScroll = $(window).scrollTop();
$(window).scroll(function() {
if(Math.abs(edgtf.scroll - currentScroll) > 400){
edgtf.body.removeClass(cssClass);
sideMenuButtonOpen.removeClass('opened');
if (slideUncovered) {
var hideSideMenu = setTimeout(function(){
sideMenu.css({'visibility':'hidden'});
clearTimeout(hideSideMenu);
},400);
}
}
});
} else {
sideMenuButtonOpen.removeClass('opened');
edgtf.body.removeClass(cssClass);
if (slideUncovered) {
var hideSideMenu = setTimeout(function(){
sideMenu.css({'visibility':'hidden'});
clearTimeout(hideSideMenu);
},400);
}
}
if (slideWithContent) {
e.stopPropagation();
wrapper.on('click',function() {
e.preventDefault();
sideMenuButtonOpen.removeClass('opened');
edgtf.body.removeClass('edgtf-side-menu-open');
});
}
});
}
/*
** Smooth scroll functionality for Side Area
*/
function edgtfSideAreaScroll(){
var sideMenu = $('.edgtf-side-menu');
if(sideMenu.length){
sideMenu.niceScroll({
scrollspeed: 60,
mousescrollstep: 40,
cursorwidth: 0,
cursorborder: 0,
cursorborderradius: 0,
cursorcolor: "transparent",
autohidemode: false,
horizrailenabled: false
});
}
}
/**
* Init Fullscreen Menu
*/
function edgtfFullscreenMenu() {
if ($('a.edgtf-fullscreen-menu-opener').length) {
var popupMenuOpener = $( 'a.edgtf-fullscreen-menu-opener'),
popupMenuHolderOuter = $(".edgtf-fullscreen-menu-holder-outer"),
cssClass,
//Flags for type of animation
fadeRight = false,
fadeTop = false,
//Widgets
widgetAboveNav = $('.edgtf-fullscreen-above-menu-widget-holder'),
widgetBelowNav = $('.edgtf-fullscreen-below-menu-widget-holder'),
//Menu
menuItems = $('.edgtf-fullscreen-menu-holder-outer nav > ul > li > a'),
menuItemWithChild = $('.edgtf-fullscreen-menu > ul li.edgtf-has-sub > a'),
menuItemWithoutChild = $('.edgtf-fullscreen-menu ul li:not(.edgtf-has-sub) a');
//set height of popup holder and initialize nicescroll
popupMenuHolderOuter.height(edgtf.windowHeight).niceScroll({
scrollspeed: 30,
mousescrollstep: 20,
cursorwidth: 0,
cursorborder: 0,
cursorborderradius: 0,
cursorcolor: "transparent",
autohidemode: false,
horizrailenabled: false
}); //200 is top and bottom padding of holder
//set height of popup holder on resize
$(window).resize(function() {
popupMenuHolderOuter.height(edgtf.windowHeight);
});
if (edgtf.body.hasClass('edgtf-fade-push-text-right')) {
cssClass = 'edgtf-push-nav-right';
fadeRight = true;
} else if (edgtf.body.hasClass('edgtf-fade-push-text-top')) {
cssClass = 'edgtf-push-text-top';
fadeTop = true;
}
//Appearing animation
if (fadeRight || fadeTop) {
if (widgetAboveNav.length) {
widgetAboveNav.children().css({
'-webkit-animation-delay' : 0 + 'ms',
'-moz-animation-delay' : 0 + 'ms',
'animation-delay' : 0 + 'ms'
});
}
menuItems.each(function(i) {
$(this).css({
'-webkit-animation-delay': (i+1) * 70 + 'ms',
'-moz-animation-delay': (i+1) * 70 + 'ms',
'animation-delay': (i+1) * 70 + 'ms'
});
});
if (widgetBelowNav.length) {
widgetBelowNav.children().css({
'-webkit-animation-delay' : (menuItems.length + 1)*70 + 'ms',
'-moz-animation-delay' : (menuItems.length + 1)*70 + 'ms',
'animation-delay' : (menuItems.length + 1)*70 + 'ms'
});
}
}
// Open popup menu
popupMenuOpener.on('click',function(e){
e.preventDefault();
if (!popupMenuOpener.hasClass('opened')) {
popupMenuOpener.addClass('opened');
edgtf.body.addClass('edgtf-fullscreen-menu-opened');
edgtf.body.removeClass('edgtf-fullscreen-fade-out').addClass('edgtf-fullscreen-fade-in');
edgtf.body.removeClass(cssClass);
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfDisableScroll();
}
$(document).keyup(function(e){
if (e.keyCode == 27 ) {
popupMenuOpener.removeClass('opened');
edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
edgtf.body.addClass(cssClass);
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
$("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
$('nav.popup_menu').getNiceScroll().resize();
});
}
});
} else {
popupMenuOpener.removeClass('opened');
edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
edgtf.body.addClass(cssClass);
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
$("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
$('nav.popup_menu').getNiceScroll().resize();
});
}
});
//logic for open sub menus in popup menu
menuItemWithChild.on('tap click', function(e) {
e.preventDefault();
if ($(this).parent().hasClass('edgtf-has-sub')) {
var submenu = $(this).parent().find('> ul.sub_menu');
if (submenu.is(':visible')) {
submenu.slideUp(200, function() {
popupMenuHolderOuter.getNiceScroll().resize();
});
$(this).parent().removeClass('open_sub');
} else {
if($(this).parent().siblings().hasClass('open_sub')) {
$(this).parent().siblings().each(function() {
var sibling = $(this);
if(sibling.hasClass('open_sub')) {
var openedUl = sibling.find('> ul.sub_menu')
openedUl.slideUp(200, function () {
popupMenuHolderOuter.getNiceScroll().resize();
});
sibling.removeClass('open_sub');
}
if(sibling.find('.open_sub')) {
var openedUlUl = sibling.find('.open_sub').find('> ul.sub_menu')
openedUlUl.slideUp(200, function () {
popupMenuHolderOuter.getNiceScroll().resize();
});
sibling.find('.open_sub').removeClass('open_sub');
}
});
}
$(this).parent().addClass('open_sub');
submenu.slideDown(200, function() {
popupMenuHolderOuter.getNiceScroll().resize();
});
}
}
return false;
});
//if link has no submenu and if it's not dead, than open that link
menuItemWithoutChild.on('click',function (e) {
if(($(this).attr('href') !== "http://#") && ($(this).attr('href') !== "#")){
if (e.which == 1) {
popupMenuOpener.removeClass('opened');
edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
edgtf.body.addClass(cssClass);
$("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
$('nav.popup_menu').getNiceScroll().resize();
});
edgtf.modules.common.edgtfEnableScroll();
}
}else{
return false;
}
});
}
}
function edgtfInitMobileNavigation() {
var navigationOpener = $('.edgtf-mobile-header .edgtf-mobile-menu-opener');
var navigationHolder = $('.edgtf-mobile-header .edgtf-mobile-nav');
var dropdownOpener = $('.edgtf-mobile-nav .mobile_arrow, .edgtf-mobile-nav h4, .edgtf-mobile-nav a[href*="#"]');
var animationSpeed = 200;
//whole mobile menu opening / closing
if(navigationOpener.length && navigationHolder.length) {
navigationOpener.on('tap click', function(e) {
e.stopPropagation();
e.preventDefault();
if(navigationHolder.is(':visible')) {
navigationHolder.slideUp(animationSpeed);
} else {
navigationHolder.slideDown(animationSpeed);
}
});
}
//dropdown opening / closing
if(dropdownOpener.length) {
dropdownOpener.each(function() {
$(this).on('tap click', function(e) {
var dropdownToOpen = $(this).nextAll('ul').first();
if(dropdownToOpen.length) {
e.preventDefault();
e.stopPropagation();
var openerParent = $(this).parent('li');
if(dropdownToOpen.is(':visible')) {
dropdownToOpen.slideUp(animationSpeed);
openerParent.removeClass('edgtf-opened');
} else {
dropdownToOpen.slideDown(animationSpeed);
openerParent.addClass('edgtf-opened');
}
}
});
});
}
$('.edgtf-mobile-nav a, .edgtf-mobile-logo-wrapper a').on('click tap', function(e) {
if($(this).attr('href') !== 'http://#' && $(this).attr('href') !== '#') {
navigationHolder.slideUp(animationSpeed);
}
});
}
function edgtfMobileHeaderBehavior() {
if(edgtf.body.hasClass('edgtf-sticky-up-mobile-header')) {
var stickyAppearAmount;
var topBar = $('.edgtf-top-bar');
var mobileHeader = $('.edgtf-mobile-header');
var adminBar = $('#wpadminbar');
var mobileHeaderHeight = mobileHeader.length ? mobileHeader.height() : 0;
var topBarHeight = topBar.is(':visible') ? topBar.height() : 0;
var adminBarHeight = adminBar.length ? adminBar.height() : 0;
var docYScroll1 = $(document).scrollTop();
edgtf.modules.header.stickyMobileAppearAmount = topBarHeight + mobileHeaderHeight + adminBarHeight;
stickyAppearAmount = edgtf.modules.header.stickyMobileAppearAmount;
$(window).scroll(function() {
var docYScroll2 = $(document).scrollTop();
if(docYScroll2 > stickyAppearAmount) {
mobileHeader.addClass('edgtf-animate-mobile-header');
mobileHeader.css('margin-bottom', mobileHeaderHeight);
} else {
mobileHeader.removeClass('edgtf-animate-mobile-header');
mobileHeader.css('margin-bottom', 0);
}
if((docYScroll2 > docYScroll1 && docYScroll2 > stickyAppearAmount) || (docYScroll2 < stickyAppearAmount)) {
mobileHeader.removeClass('mobile-header-appear');
if(adminBar.length) {
mobileHeader.find('.edgtf-mobile-header-inner').css('top', 0);
}
} else {
mobileHeader.addClass('mobile-header-appear');
}
docYScroll1 = $(document).scrollTop();
});
}
}
/**
* Set dropdown position
*/
function edgtfSetDropDownMenuPosition(){
var menuItems = $(".edgtf-drop-down > ul > li.edgtf-menu-narrow");
menuItems.each( function(i) {
var browserWidth = edgtf.windowWidth-16; // 16 is width of scroll bar
var menuItemPosition = $(this).offset().left;
var dropdownMenuWidth = $(this).find('.edgtf-menu-second .edgtf-menu-inner ul').width();
var menuItemFromLeft = 0;
if(edgtf.body.hasClass('boxed')){
menuItemFromLeft = edgtf.boxedLayoutWidth - (menuItemPosition - (browserWidth - edgtf.boxedLayoutWidth )/2);
} else {
menuItemFromLeft = browserWidth - menuItemPosition;
}
var dropDownMenuFromLeft; //has to stay undefined beacuse 'dropDownMenuFromLeft < dropdownMenuWidth' condition will be true
if($(this).find('li.edgtf-sub').length > 0){
dropDownMenuFromLeft = menuItemFromLeft - dropdownMenuWidth;
}
if(menuItemFromLeft < dropdownMenuWidth || dropDownMenuFromLeft < dropdownMenuWidth){
$(this).find('.edgtf-menu-second').addClass('right');
$(this).find('.edgtf-menu-second .edgtf-menu-inner ul').addClass('right');
}
});
}
function edgtfDropDownMenu() {
var menu_items = $('.edgtf-drop-down > ul > li');
menu_items.each(function(i) {
if($(menu_items[i]).find('.edgtf-menu-second').length > 0) {
var dropDownSecondDiv = $(menu_items[i]).find('.edgtf-menu-second');
if($(menu_items[i]).hasClass('edgtf-menu-wide')) {
var dropdown = $(this).find('.edgtf-menu-inner > ul');
var dropdownPadding = parseInt(dropdown.css('padding-left').slice(0, -2)) + parseInt(dropdown.css('padding-right').slice(0, -2));
var dropdownWidth = dropdown.outerWidth();
if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
dropDownSecondDiv.css('left', 0);
}
//set columns to be same height - start
var tallest = 0;
$(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').each(function() {
var thisHeight = $(this).height();
if(thisHeight > tallest) {
tallest = thisHeight;
}
});
$(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').css("height", ""); // delete old inline css - via resize
$(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').height(tallest);
//set columns to be same height - end
if(!$(this).hasClass('wide-background')) {
if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
var left_position = (edgtf.windowWidth - 2 * (edgtf.windowWidth - dropdown.offset().left)) / 2 + (dropdownWidth + dropdownPadding) / 2;
dropDownSecondDiv.css('left', -left_position);
}
} else {
if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
var left_position = dropdown.offset().left;
dropDownSecondDiv.css('left', -left_position);
dropDownSecondDiv.css('width', edgtf.windowWidth);
}
}
}
if(!edgtf.menuDropdownHeightSet) {
$(menu_items[i]).data('original_height', dropDownSecondDiv.height() + 'px');
dropDownSecondDiv.height(0);
}
if(navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
$(menu_items[i]).on("touchstart mouseenter", function() {
dropDownSecondDiv.css({
'height': $(menu_items[i]).data('original_height'),
'overflow': 'visible',
'visibility': 'visible',
'opacity': '1'
});
}).on("mouseleave", function() {
dropDownSecondDiv.css({
'height': '0px',
'overflow': 'hidden',
'visibility': 'hidden',
'opacity': '0'
});
});
} else {
if(edgtf.body.hasClass('edgtf-dropdown-animate-height')) {
$(menu_items[i]).mouseenter(function() {
dropDownSecondDiv.css({
'visibility': 'visible',
'height': '0px',
'opacity': '0'
});
dropDownSecondDiv.stop().animate({
'height': $(menu_items[i]).data('original_height'),
opacity: 1
}, 300, function() {
dropDownSecondDiv.css('overflow', 'visible');
});
}).mouseleave(function() {
dropDownSecondDiv.stop().animate({
'height': '0px'
}, 0, function() {
dropDownSecondDiv.css({
'overflow': 'hidden',
'visibility': 'hidden'
});
});
});
} else {
var config = {
interval: 0,
over: function() {
setTimeout(function() {
dropDownSecondDiv.addClass('edgtf-drop-down-start');
dropDownSecondDiv.stop().css({'height': $(menu_items[i]).data('original_height')});
}, 150);
},
timeout: 150,
out: function() {
dropDownSecondDiv.stop().css({'height': '0px'});
dropDownSecondDiv.removeClass('edgtf-drop-down-start');
}
};
$(menu_items[i]).hoverIntent(config);
}
}
}
});
$('.edgtf-drop-down ul li.edgtf-menu-wide ul li a').on('click', function(e) {
if (e.which == 1){
var $this = $(this);
setTimeout(function() {
$this.mouseleave();
}, 500);
}
});
edgtf.menuDropdownHeightSet = true;
}
function edgtfShopDropDownMenu() {
if (edgtf.body.hasClass('edgtf-dropdown-animate-height')) {
var shoppingCart = $('.edgtf-shopping-cart-outer');
shoppingCart.mouseenter(function() {
var shopMenu = $(this).find(".edgtf-shopping-cart-dropdown"),
shopMenuHeight = shopMenu.height();
shopMenu.css({
'visibility': 'visible',
'height': '0px',
'opacity': '0'
});
shopMenu.stop().animate({
'height': shopMenuHeight,
'opacity': '1'
}, 600 ,'easeInOutQuint');
}).mouseleave(function() {
var shopMenu = $(this).find(".edgtf-shopping-cart-dropdown");
shopMenu.css({
'height': 'auto'
});
var shopMenuHeight = shopMenu.height();
$(".edgtf-shopping-cart-dropdown").stop().animate({
'opacity': '0',
'height': shopMenuHeight
}, 0, function() {
shopMenu.css({
'overflow': 'hidden',
'visibility': 'hidden'
});
});
});
}
}
/**
* Init Search Types
*/
function edgtfSearch() {
var searchOpener = $('a.edgtf-search-opener'),
searchClose,
touch = false;
if ( $('html').hasClass( 'touch' ) ) {
touch = true;
}
if ( searchOpener.length > 0 ) {
searchOpener.each(function(){
var thisSearchOpener = $(this);
//Check for type of search
if ( edgtf.body.hasClass( 'edgtf-fullscreen-search' ) ) {
var fullscreenSearchFade = false,
fullscreenSearchFromCircle = false;
searchClose = $( '.edgtf-fullscreen-search-close' );
if (edgtf.body.hasClass('edgtf-search-fade')) {
fullscreenSearchFade = true;
} else if (edgtf.body.hasClass('edgtf-search-from-circle')) {
fullscreenSearchFromCircle = true;
}
edgtfFullscreenSearch( fullscreenSearchFade, fullscreenSearchFromCircle );
} else if ( edgtf.body.hasClass( 'edgtf-search-covers-header' ) ) {
edgtfSearchCoversHeader();
}
//Check for hover color of search
if(typeof thisSearchOpener.data('hover-color') !== 'undefined') {
var changeSearchColor = function(event) {
event.data.searchOpener.css('color', event.data.color);
};
var originalColor = thisSearchOpener.css('color');
var hoverColor = thisSearchOpener.data('hover-color');
thisSearchOpener.on('mouseenter', { searchOpener: thisSearchOpener, color: hoverColor }, changeSearchColor);
thisSearchOpener.on('mouseleave', { searchOpener: thisSearchOpener, color: originalColor }, changeSearchColor);
}
});
}
/**
* Search covers header type of search
*/
function edgtfSearchCoversHeader() {
searchOpener.on('click', function(e) {
e.preventDefault();
var searchFormHeight,
searchFormHolder = $('.edgtf-search-cover .edgtf-form-holder-outer'),
searchFormHolderPosition = $('.edgtf-search-cover .edgtf-form-holder-outer'),
searchClose = searchFormHolder.find('.edgtf-search-close'),
searchForm,
searchFormLandmark; // there is one more div element if header is in grid
if($(this).closest('.edgtf-grid').length){
searchForm = $(this).closest('.edgtf-grid').children().first();
searchFormLandmark = searchForm.parent();
}
else{
searchForm = $(this).closest('.edgtf-menu-area').children().first();
searchFormLandmark = searchForm;
}
if ( $(this).closest('.edgtf-sticky-header').length > 0 ) {
searchForm = $(this).closest('.edgtf-sticky-header').children().first();
searchFormLandmark = searchForm.parent();
searchFormHolderPosition = $(this).closest('.edgtf-sticky-header').find('.edgtf-form-holder-outer');
}
if ( $(this).closest('.edgtf-mobile-header').length > 0 ) {
searchForm = $(this).closest('.edgtf-mobile-header').children().children().first();
}
//Find search form position in header and height
if ( searchFormLandmark.parent().hasClass('edgtf-logo-area') ) {
searchFormHeight = edgtfGlobalVars.vars.edgtfLogoAreaHeight;
} else if ( searchFormLandmark.parent().hasClass('edgtf-top-bar') ) {
searchFormHeight = edgtfGlobalVars.vars.edgtfTopBarHeight;
} else if ( searchFormLandmark.parent().hasClass('edgtf-menu-area') ) {
searchFormHeight = edgtfGlobalVars.vars.edgtfMenuAreaHeight - edgtfGlobalVars.vars.edgtfTopBarHeight;
} else if ( searchFormLandmark.hasClass('edgtf-sticky-header') ) {
searchFormHeight = edgtfGlobalVars.vars.edgtfStickyHeaderHeight;
} else if ( searchFormLandmark.parent().hasClass('edgtf-mobile-header') ) {
searchFormHeight = $('.edgtf-mobile-header-inner').height();
}
searchFormHolder.height(searchFormHeight);
searchForm.stop(true).fadeIn(400, 'easeInOutQuint');
searchClose.css({'left':searchOpener.offset().left - searchFormHolderPosition.offset().left,'right':'auto'});
$('.edgtf-search-cover input[type="text"]').focus();
$('.edgtf-search-close, .edgtf-content, footer').on('click',function(e){
e.preventDefault();
searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
});
searchForm.blur(function() {
searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
});
//Close on escape
$(document).keyup(function(e){
if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
}
});
});
}
/**
* Fullscreen search (two types: fade and from circle)
*/
function edgtfFullscreenSearch( fade, fromCircle ) {
var searchHolder = $( '.edgtf-fullscreen-search-holder'),
searchOverlay = $( '.edgtf-fullscreen-search-overlay' );
searchOpener.on('click', function(e) {
e.preventDefault();
var samePosition = false;
if ( $(this).data('icon-close-same-position') === 'yes' ) {
var closeTop = $(this).offset().top;
var closeLeft = $(this).offset().left;
samePosition = true;
}
//Fullscreen search fade
if ( fade ) {
if ( searchHolder.hasClass( 'edgtf-animate' ) ) {
edgtf.body.removeClass('edgtf-fullscreen-search-opened');
edgtf.body.addClass( 'edgtf-search-fade-out' );
edgtf.body.removeClass( 'edgtf-search-fade-in' );
searchHolder.removeClass( 'edgtf-animate' );
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
} else {
edgtf.body.addClass('edgtf-fullscreen-search-opened');
edgtf.body.removeClass('edgtf-search-fade-out');
edgtf.body.addClass('edgtf-search-fade-in');
searchHolder.addClass('edgtf-animate');
if (samePosition) {
searchClose.css({
'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
'left' : closeLeft
});
}
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfDisableScroll();
}
}
searchClose.on('click', function(e) {
e.preventDefault();
edgtf.body.removeClass('edgtf-fullscreen-search-opened');
searchHolder.removeClass('edgtf-animate');
edgtf.body.removeClass('edgtf-search-fade-in');
edgtf.body.addClass('edgtf-search-fade-out');
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
});
//Close on escape
$(document).keyup(function(e){
if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
edgtf.body.removeClass('edgtf-fullscreen-search-opened');
searchHolder.removeClass('edgtf-animate');
edgtf.body.removeClass('edgtf-search-fade-in');
edgtf.body.addClass('edgtf-search-fade-out');
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
}
});
}
//Fullscreen search from circle
if ( fromCircle ) {
if( searchOverlay.hasClass('edgtf-animate') ) {
searchOverlay.removeClass('edgtf-animate');
searchHolder.css({
'opacity': 0,
'display':'none'
});
searchClose.css({
'opacity' : 0,
'visibility' : 'hidden'
});
searchOpener.css({
'opacity': 1
});
} else {
searchOverlay.addClass('edgtf-animate');
searchHolder.css({
'display':'block'
});
setTimeout(function(){
searchHolder.css('opacity','1');
searchClose.css({
'opacity' : 1,
'visibility' : 'visible',
'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
'left' : closeLeft
});
if (samePosition) {
searchClose.css({
'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
'left' : closeLeft
});
}
searchOpener.css({
'opacity' : 0
});
},200);
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfDisableScroll();
}
}
searchClose.on('click',function(e) {
e.preventDefault();
searchOverlay.removeClass('edgtf-animate');
searchHolder.css({
'opacity' : 0,
'display' : 'none'
});
searchClose.css({
'opacity':0,
'visibility' : 'hidden'
});
searchOpener.css({
'opacity' : 1
});
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
});
//Close on escape
$(document).keyup(function(e){
if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
searchOverlay.removeClass('edgtf-animate');
searchHolder.css({
'opacity' : 0,
'display' : 'none'
});
searchClose.css({
'opacity':0,
'visibility' : 'hidden'
});
searchOpener.css({
'opacity' : 1
});
if(!edgtf.body.hasClass('page-template-full_screen-php')){
edgtf.modules.common.edgtfEnableScroll();
}
}
});
}
});
//Text input focus change
$('.edgtf-fullscreen-search-holder .edgtf-search-field').focus(function(){
$('.edgtf-fullscreen-search-holder .edgtf-field-holder .edgtf-line').css("width","100%");
});
$('.edgtf-fullscreen-search-holder .edgtf-search-field').blur(function(){
$('.edgtf-fullscreen-search-holder .edgtf-field-holder .edgtf-line').css("width","0");
});
}
}
/**
* Function object that represents vertical menu area.
* @returns {{init: Function}}
*/
var edgtfVerticalMenu = function() {
/**
* Main vertical area object that used through out function
* @type {jQuery object}
*/
var verticalMenuObject = $('.edgtf-vertical-menu-area');
/**
* Resizes vertical area. Called whenever height of navigation area changes
* It first check if vertical area is scrollable, and if it is resizes scrollable area
*/
//var resizeVerticalArea = function() {
// if(verticalAreaScrollable()) {
// verticalMenuObject.getNiceScroll().resize();
// }
//};
/**
* Checks if vertical area is scrollable (if it has edgtf-with-scroll class)
*
* @returns {bool}
*/
//var verticalAreaScrollable = function() {
// return verticalMenuObject.hasClass('.edgtf-with-scroll');
//};
/**
* Initialzes navigation functionality. It checks navigation type data attribute and calls proper functions
*/
var initNavigation = function() {
var verticalNavObject = verticalMenuObject.find('.edgtf-vertical-menu');
var navigationType = typeof verticalNavObject.data('navigation-type') !== 'undefined' ? verticalNavObject.data('navigation-type') : '';
switch(navigationType) {
default:
dropdownFloat();
break;
}
/**
* Initializes floating navigation type (it comes from the side as a dropdown)
*/
function dropdownFloat() {
var menuItems = verticalNavObject.find('ul li.menu-item-has-children');
var allDropdowns = menuItems.find(' > .edgtf-menu-second, > ul');
menuItems.each(function() {
var elementToExpand = $(this).find(' > .edgtf-menu-second, > ul');
var menuItem = this;
if(Modernizr.touch) {
var dropdownOpener = $(this).find('> a');
dropdownOpener.on('click tap', function(e) {
e.preventDefault();
e.stopPropagation();
if(elementToExpand.hasClass('edgtf-float-open')) {
elementToExpand.removeClass('edgtf-float-open');
$(menuItem).removeClass('open');
} else {
if(!$(this).parents('li').hasClass('open')) {
menuItems.removeClass('open');
allDropdowns.removeClass('edgtf-float-open');
}
elementToExpand.addClass('edgtf-float-open');
$(menuItem).addClass('open');
}
});
} else {
//must use hoverIntent because basic hover effect doesn't catch dropdown
//it doesn't start from menu item's edge
$(this).hoverIntent({
over: function() {
elementToExpand.addClass('edgtf-float-open');
$(menuItem).addClass('open');
},
out: function() {
elementToExpand.removeClass('edgtf-float-open');
$(menuItem).removeClass('open');
},
timeout: 300
});
}
});
}
};
return {
/**
* Calls all necessary functionality for vertical menu area if vertical area object is valid
*/
init: function() {
if(verticalMenuObject.length) {
initNavigation();
}
}
};
};
})(jQuery);