function ueMegaMenu(){
var g_ucTemplateWrapperClass, g_elementorClass, g_subArrowClass, g_ucMegaMenuTitleClass, g_ucConnectedClass, g_sectionErrorClass, g_ucSectionErrorClass, g_ucMegaMenuListItemClass, g_ucMegaMenuSectionClass, g_availableIDsClass, g_ucCollapseIndicatorClass, g_ucExpandIndicatorClass, g_ueTipClass, g_ucMobileModeClass, g_ucActiveItemClass, g_ucMenuOpenCLass, g_ucMegaMenuWrapperClass, g_ucMegaMenuListClass, g_ucMegaMenuOverlayClass;
var g_ucTemplateWrapperSelector, g_elementorSelector, g_subArrowSelector, g_ucMegaMenuTitleSelector, g_ucConnectedSelector, g_ucSectionErrorSelector, g_ucMegaMenuListItemSelector, g_ucMegaMenuSectionSelector, g_ucCollapseIndicatorSelector, g_ueTipSelector, g_ucMobileModeSelector, g_ucActiveItemSelector, g_ucMegaMenuWrapperSelector, g_ucMegaMenuListSelector, g_ucMegaMenuOverlaySelector;
var g_objWidget, g_objUCMegaMenuSection, g_objMenuItems, g_objMenuListWrap, g_objBody, g_objHtml;
var g_dataOpenFirst, g_dataOffsetY, g_objMenuList;
var g_indicator, g_translateX, g_dataMenuOpen, g_objOverlay, g_menuWrapOffsetLeft, g_viewportWidth, g_dataPositionX, g_dataEditor, g_menuItemTitle, g_showErrors, g_offsetX, g_urlBase, g_dataCloseDelay, g_expanIconHTML, g_collapseIconHTML;
var g_isDesktopViewport, g_isNotDesktopViewport, g_isCustomResponsiveViewport, g_isNotCustomResponsiveViewport;
var g_arrItems;
function setTemplateStyle(){
var objLayout=jQuery(g_ucTemplateWrapperSelector+' '+g_elementorSelector);
var objLayoutClass=objLayout.attr('class');
g_objWidget.addClass(objLayoutClass);
}
function hideIcon(objSection){
if(g_indicator.length==0)
return(false);
var objSectionArrow=objSection.find(g_subArrowSelector);
var objSectionTitle=objSection.find(g_ucMegaMenuTitleSelector);
var dataClickable=objSectionTitle.data('clickable-link');
if(dataClickable==false)
return(false);
if(dataClickable==true&&g_dataMenuOpen=='click')
objSectionArrow.hide();
}
function findSections(objSection, menuSectionParent, menuSectionItem, firstMenuSectionParent){
var clonedSectionItem;
if(g_dataEditor=='yes')
clonedSectionItem=menuSectionItem.clone();
if(g_dataEditor=='no')
clonedSectionItem=menuSectionItem.detach();
menuSectionParent.html(clonedSectionItem);
hideIcon(objSection);
var objMenuSection=menuSectionParent.children();
objMenuSection.addClass(g_ucConnectedClass);
if(!objMenuSection.hasClass(g_ucConnectedClass))
return(true);
setTimeout(function(){
objMenuSection.css({
'position': 'absolute',
'visibility': 'hidden'
});
if(g_dataOpenFirst==false)
return(false);
var firstObjMenuSection=firstMenuSectionParent.children();
firstObjMenuSection.css({
'position': '',
'visibility': 'visible'
});
}, 200)
}
function showHideErrors(objSection, menuSectionId, menuSectionParent, menuSectionItem){
if(g_showErrors==false)
return(false);
if(menuSectionItem.length > 0)
return(false);
var menuItemTitle=objSection.find(g_ucMegaMenuTitleSelector);
var menuItemTitleType=menuItemTitle.data('type');
if(menuItemTitleType=='link')
return(false);
objSection.addClass(g_sectionErrorClass);
menuSectionParent.addClass(g_sectionErrorClass);
menuSectionParent.html("<div class='"+g_ucSectionErrorClass+"'><div class='uc-error'>Couldn't find a section with id: '" + menuSectionId + "'</div></div>");
}
function debugHiddenElements(){
if(g_dataEditor=='no')
return(false);
var menuTemplate=jQuery(g_ucTemplateWrapperSelector);
var dataDebug=g_objWidget.data("debug");
if(dataDebug==false)
return(false);
menuTemplate.css({'display': ''});
}
function setFullWidth(menuSectionParent){
menuSectionParent.css({
'width': g_viewportWidth + 'px',
'top': '100%',
'left': - g_menuWrapOffsetLeft + 'px',
'transform': 'translate(0, 0)',
'right': 'unset'
});
var menuItemParent=menuSectionParent.parents(g_ucMegaMenuListItemSelector);
menuItemParent.css({
'position': 'static'
});
}
function setScreenStartPos(menuSectionParent){
menuSectionParent.css({
'left': - g_menuWrapOffsetLeft + 'px',
'transform': 'translate(0, 0)'
});
var objElementorParent=g_objWidget.parents(g_elementorSelector);
if(objElementorParent.length > 0){
var elementorParentOffsetLeft=jQuery(objElementorParent[0]).offset().left;
menuSectionParent.css({
'left': - g_menuWrapOffsetLeft + elementorParentOffsetLeft + 'px',
});
}}
function setWidthType(widthType, widthTypeFull, widthTypeCustom, customWidthNumber, menuSectionParent, each){
var objElementorParent=g_objWidget.parents(g_elementorSelector);
if(objElementorParent.length > 0){
var elementorParentWidth=jQuery(objElementorParent[0]).outerWidth();
menuSectionParent.css({'max-width': elementorParentWidth + 'px'});
}
if(widthType==widthTypeFull){
setScreenStartPos(menuSectionParent);
menuSectionParent.css({'width': g_viewportWidth + 'px'});
return(false);
}
if(widthType==widthTypeCustom){
menuSectionParent.css({'width': customWidthNumber + 'px'});
}
if(customWidthNumber=='0'||customWidthNumber==''||customWidthNumber >=g_viewportWidth){
setFullWidth(menuSectionParent);
}else{
g_objMenuItems.eq(each).css({'position': 'relative'});
if(g_dataPositionX=="item_left"){
menuSectionParent.css({
'left': '0'
});
}
if(g_dataPositionX=="item_right"){
menuSectionParent.css({
'left': 'unset',
'right': '0'
});
}
if(g_dataPositionX=="item_center"){
menuSectionParent.css({
'left': '50%',
'right': 'unset'
});
}}
}
function handleWidthType(){
var menuItemsNumber=g_objMenuItems.length;
for (let i=0; i<menuItemsNumber; i++){
var menuSectionParent=g_objMenuItems.eq(i).find(g_ucMegaMenuSectionSelector);
var widthType=g_arrItems[i].dropdown_width;
var customWidthNumber=g_arrItems[i].dropdown_width_number;
setWidthType(widthType, 'full', 'custom', customWidthNumber, menuSectionParent, i);
if(widthType=='default'){
var defaultWidthType=g_objMenuList.data('default-width-type');
var defaultWidthNumber=g_objMenuList.data('default-width-number');
setWidthType(defaultWidthType, 'default_full', 'default_custom', defaultWidthNumber, menuSectionParent, i)
}}
}
function showHideMenuItemsId(){
var debugMenuItemsId=g_objWidget.data("items-id");
if(debugMenuItemsId==false)
return(false);
var availableItemIDsListClass="available_item_id_s_list";
g_objMenuListWrap.append("<div class='"+g_availableIDsClass+"'>Item Id's List<ul class='"+availableItemIDsListClass+"'></ul></div>");
var objItemIdList=g_objWidget.find("."+availableItemIDsListClass);
var menuItemsNumber=g_objMenuItems.length;
for(let i=0; i<=menuItemsNumber-1; i++){
var objMenuItem=g_objMenuItems.eq(i);
var objMenuItemDataId=objMenuItem.data("id");
if(!objMenuItemDataId){
continue;
}else{
objItemIdList.append("<li>" + objMenuItemDataId + "</li>");
}}
}
function showHideElementsId(){
var debugElementsId=g_objWidget.data("elements-id");
if(debugElementsId==false)
return(false);
var availableSectionIDsListClass="available_section_id_s_list";
g_objMenuListWrap.append("<div class='"+g_availableIDsClass+"'>Section Id's List<ul class='"+availableSectionIDsListClass+"'></ul></div>");
var objSectionIdList=g_objWidget.find("."+availableSectionIDsListClass);
var availableSections=jQuery('section');
availableSections.each(function(){
var objSectionItem=jQuery(this);
var objSectionItemId=objSectionItem.attr('id');
var objSectionItemDisplay=objSectionItem.css('display');
if(objSectionItemDisplay=='none')
return(true);
if(!objSectionItemId){
return(true);
}
if(objSectionItem.hasClass(g_ucConnectedClass)){
return(true);
}else{
objSectionIdList.append("<li>" + objSectionItemId + "</li>");
}});
}
function setOverlayPosition(activeMenuItem){
var dataOverlay=g_objOverlay.data('overlay');
if(dataOverlay==false)
return(false);
if(g_isCustomResponsiveViewport.matches==true||!activeMenuItem.length)
return(false);
var g_menuListWrapOffsetTop=g_objMenuListWrap.offset().top;
var g_menuListWrapOffsetHeight=g_objMenuListWrap.height();
var documentOffsetHeight=jQuery(document).height();
var g_objOverlayOffsetTop=g_menuListWrapOffsetTop + g_menuListWrapOffsetHeight;
var g_objOverlayOffsetHeight=documentOffsetHeight - g_objOverlayOffsetTop - g_dataOffsetY;
g_objOverlay.show();
var dataOverlayPosition=g_objOverlay.data('overlay-position');
g_objOverlay.css({
'width': g_viewportWidth + 'px',
'left': - g_menuWrapOffsetLeft + 'px',
'transform': 'translate(0, 0)',
'height': g_objOverlayOffsetHeight + 'px'
});
if(dataOverlayPosition=='under')
return(false);
var overlayTopPosition=-g_menuListWrapOffsetTop;
g_objOverlay.css({
'top': overlayTopPosition + 'px',
'height': documentOffsetHeight + 'px'
});
}
function setDisactiveResponsiveHeight(){
if(g_isNotCustomResponsiveViewport.matches==true)
return(false);
g_objUCMegaMenuSection.css({'height': '0px'});
}
function setActiveResponsiveHeight(activeMenuItem){
if(!activeMenuItem)
return(false);
var menuSectionActive=activeMenuItem.find(g_ucMegaMenuSectionSelector);
var menuSectionActiveChild=menuSectionActive.children();
var menuSectionActiveHeight=menuSectionActiveChild.outerHeight();
if(g_objUCMegaMenuSection.hasClass(g_ucActiveItemClass)){
setDisactiveResponsiveHeight();
menuSectionActive.css({'height': menuSectionActiveHeight + 'px'});
}else{
setDisactiveResponsiveHeight();
}}
function setActiveArrow(activeItem){
var indicatorActive=activeItem.find(g_subArrowSelector);
var objCollapseIndicator=jQuery(g_ucCollapseIndicatorSelector);
if(objCollapseIndicator.length){
var objCollapseIndicatorItem=objCollapseIndicator.parents(g_ucMegaMenuListItemSelector);
objCollapseIndicatorItem.find(g_subArrowSelector).html("<span class='"+g_ucExpandIndicatorClass+"'>"+g_expanIconHTML+"</span>");
}
indicatorActive.html("<span class='"+g_ucCollapseIndicatorClass+"'>"+g_collapseIconHTML+"</span>");
}
function setDisactiveArrow(){
var objCollapseIndicator=jQuery(g_ucCollapseIndicatorSelector);
if(objCollapseIndicator.length){
var objCollapseIndicatorItem=objCollapseIndicator.parents(g_ucMegaMenuListItemSelector);
objCollapseIndicatorItem.find(g_subArrowSelector).html("<span class='"+g_ucExpandIndicatorClass+"'>"+g_expanIconHTML+"</span>");
}}
function setTopPosition(objElement){
var activeMenuSection=objElement.find(g_ucMegaMenuSectionSelector);
var menuListPaddingBottom=g_objMenuList.css('padding-bottom');
activeMenuSection.css({
'top': 'calc(100% + ' + menuListPaddingBottom + ')'
});
}
function isElementInViewportX(objElement){
var activeMenuSection=objElement.find(g_ucMegaMenuSectionSelector);
if(!activeMenuSection.length)
return(true);
var activeMenuSectionWidth=activeMenuSection.outerWidth();
var elementPositionLeft=activeMenuSection.offset().left;
var elementPositionRight=activeMenuSectionWidth + elementPositionLeft;
var isInViewport;
if(g_dataPositionX=="item_left"){
var menuItemPositionLeft=objElement.offset().left;
var elementPositionRight=activeMenuSectionWidth + menuItemPositionLeft + g_offsetX;
var elementPositionLeft=activeMenuSection.offset().left;
if(activeMenuSectionWidth==g_viewportWidth)
return(true);
setTopPosition(objElement);
if(elementPositionLeft < 0){
g_translateX=0 + 'px';
}else if(elementPositionRight >=g_viewportWidth){
g_translateX=g_viewportWidth - elementPositionRight + g_offsetX + "px";
}
isInViewport=elementPositionLeft > 0&&elementPositionRight < g_viewportWidth;
return(isInViewport);
}
if(g_dataPositionX=="item_right"){
var menuItemPositionRight=objElement.offset().left + objElement.outerWidth();
var elementPositionLeft=menuItemPositionRight - activeMenuSectionWidth + g_offsetX;
var elementPositionRight=activeMenuSection.offset().left + activeMenuSectionWidth;
if(activeMenuSectionWidth==g_viewportWidth)
return(true);
setTopPosition(objElement);
if(elementPositionLeft < 0){
g_translateX=Math.abs(elementPositionLeft) + g_offsetX + "px";
}else{
g_translateX=0 + 'px';
}
isInViewport=elementPositionLeft > 0&&elementPositionLeft + g_offsetX > 0&&elementPositionRight < g_viewportWidth;
return(isInViewport);
}
if(g_dataPositionX=="item_center"){
var menuItemPositionLeft=objElement.offset().left;
var objElementWidth=objElement.outerWidth();
var elementPositionCenter=menuItemPositionLeft + (objElementWidth / 2);
var elementPositionLeft=elementPositionCenter - (activeMenuSectionWidth / 2) + g_offsetX;
var elementPositionRight=elementPositionCenter + (activeMenuSectionWidth / 2) + g_offsetX;
if(activeMenuSectionWidth==g_viewportWidth)
return(true);
setTopPosition(objElement);
if(elementPositionLeft < 0){
g_translateX='-' + (objElementWidth / 2) - menuItemPositionLeft + 'px';
}else if(elementPositionRight > g_viewportWidth){
g_translateX='calc(-50% + ' + (g_viewportWidth - elementPositionRight + g_offsetX) + 'px)';
}
isInViewport=elementPositionLeft > 0&&elementPositionRight < g_viewportWidth;
return(isInViewport);
}}
function setCssVisiblePositionX(activeMenuSection){
activeMenuSection.css({
"transform": "translate(" + g_translateX + ", 0)"
});
}
function setVisiblePositionX(objElement){
if(g_isCustomResponsiveViewport.matches==true)
return(false);
var activeMenuSection=objElement.find(g_ucMegaMenuSectionSelector);
var activeMenuSectionWidth=activeMenuSection.outerWidth();
if(activeMenuSectionWidth > g_viewportWidth)
return(false);
activeMenuSection.css({
"transform": "translate(" + g_offsetX + "px, 0)"
});
if(g_dataPositionX=="item_center"&&activeMenuSectionWidth < g_viewportWidth){
activeMenuSection.css({
"transform": "translate(calc(-50% + " + g_offsetX + "px), 0)"
});
}
if(isElementInViewportX(objElement))
return(false);
setCssVisiblePositionX(activeMenuSection);
}
function setCoverPosition(menuSection, menuSectionChild){
if(menuSection.length==0)
return(false);
if(menuSectionChild.length==0)
return(false);
var objCover=menuSection.next();
var menuItem=menuSectionChild.parents(g_ucMegaMenuListItemSelector);
var objCoverHeight=menuSectionChild.outerHeight();
var objCoverWidth=menuSection.outerWidth();
var menuItemWidth=menuItem.outerWidth();
var menuItemOffsetLeft=menuItem.offset().left;
var menuSectionOffsetLeft=menuSection.offset().left;
var menuItemOffsetRight=menuItemOffsetLeft + menuItemWidth;
var menuSectionOffsetRight=menuSectionOffsetLeft + objCoverWidth;
objCover.css({
'width': objCoverWidth + 'px',
'height': objCoverHeight + 'px'
});
if(menuItemOffsetLeft==menuSectionOffsetLeft){
objCover.css({
'left': '0px',
'right': 'unset'
});
}
if(menuItemOffsetRight==menuSectionOffsetRight){
objCover.css({
'left': 'unset',
'right': '0px'
});
}
if(menuItemOffsetLeft > menuSectionOffsetLeft){
var menuItemSectionPositionDeviation=menuItemOffsetLeft - menuSectionOffsetLeft;
objCover.css({
'right': 'unset',
'left': - menuItemSectionPositionDeviation + 'px'
});
}
if(menuItemOffsetLeft < menuSectionOffsetLeft){
var menuItemSectionPositionDeviation=menuSectionOffsetLeft - menuItemOffsetLeft;
objCover.css({
'right': 'unset',
'left': menuItemSectionPositionDeviation + 'px'
});
}
if(objCoverWidth==g_viewportWidth){
objCover.css({
'right': 'unset',
'left': - g_menuWrapOffsetLeft + 'px'
});
}}
function setActive(activeMenuItem){
g_objMenuItems.removeClass(g_ucActiveItemClass);
g_objUCMegaMenuSection.removeClass(g_ucActiveItemClass);
var activeMenuItemSection=activeMenuItem.find(g_ucMegaMenuSectionSelector);
activeMenuItem.addClass(g_ucActiveItemClass);
activeMenuItemSection.addClass(g_ucActiveItemClass);
var menuItemTitle=activeMenuItem.find(g_ucMegaMenuTitleSelector);
g_objMenuItems.find(g_ucMegaMenuTitleSelector).attr('aria-expanded', 'false');
if(menuItemTitle.attr('data-type')=='section'){
menuItemTitle.attr('aria-expanded', 'true');
}
setTimeout(function(){
activeMenuItemSection.children().css({
'position': '',
'visibility': 'visible'
});
},100);
if(activeMenuItemSection.children().length){
g_objWidget.addClass(g_ucMenuOpenCLass);
if(g_isCustomResponsiveViewport.matches==false){
g_objBody.addClass(g_ucMenuOpenCLass);
g_objHtml.addClass(g_ucMenuOpenCLass);
}}else{
g_objWidget.removeClass(g_ucMenuOpenCLass);
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
}
if(g_isCustomResponsiveViewport.matches==true){
setActiveResponsiveHeight(activeMenuItem);
}
setVisiblePositionX(activeMenuItem);
handleWidthType();
setTipPosition(activeMenuItemSection);
setOverlayPosition(activeMenuItem);
var menuSectionChild=activeMenuItemSection.children();
setCoverPosition(activeMenuItemSection, menuSectionChild);
scrollToHead(activeMenuItem);
}
function setDisactive(){
g_objMenuItems.removeClass(g_ucActiveItemClass);
g_objUCMegaMenuSection.removeClass(g_ucActiveItemClass);
g_objMenuItems.find(g_ucMegaMenuTitleSelector).attr('aria-expanded', 'false');
setDisactiveArrow();
setTimeout(function(){
g_objUCMegaMenuSection.children().css({
'position': 'absolute',
'visibility': 'hidden'
});
},g_dataCloseDelay);
g_objWidget.removeClass(g_ucMenuOpenCLass);
if(g_isCustomResponsiveViewport.matches==false){
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
}
if(g_objOverlay.length)
g_objOverlay.hide();
}
function createTip(menuSectionParent){
var isTipExist=menuSectionParent.data('tip');
if(isTipExist==false)
return(false);
if(g_dataOffsetY < 14){
menuSectionParent.css({'padding-top': '14px'})
}else if(g_dataOffsetY >=14){
menuSectionParent.css({'padding-top': g_dataOffsetY + 'px'})
}
var objsection=menuSectionParent.find(g_ucConnectedSelector);
objsection.prepend('<div class="'+g_ueTipClass+'"></div>');
var objErrorTip;
if(menuSectionParent.hasClass(g_sectionErrorClass)){
menuSectionParent.find(g_ucSectionErrorSelector).prepend('<div class="'+g_ueTipClass+'"></div>');
objErrorTip=menuSectionParent.find(g_ueTipSelector);
objErrorTip.css({
'border-top-color': '#cccccc',
'border-left-color': '#cccccc'
})
}
var objTip=menuSectionParent.find(g_ueTipSelector);
var menuSectionBgColor=objsection.css('background-color');
var dataTipBgColor=menuSectionParent.data('bg-color');
var dataTipMainColor=menuSectionParent.data('tip-color');
var isMenuSectionBorderExist=parseInt(objsection.css('border-width')) > 0;
var menuSectionBorderColor=objsection.css('border-color');
if(menuSectionBgColor=='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false){
objTip.css({
'border-top-color': dataTipBgColor,
'border-left-color': dataTipBgColor,
});
}
if(isMenuSectionBorderExist==true){
objTip.css({
'border-top-color': menuSectionBorderColor,
'border-left-color': menuSectionBorderColor,
});
}
if(menuSectionBgColor!='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false){
objTip.css({
'border-top-color': menuSectionBgColor,
'border-left-color': menuSectionBgColor,
});
}
if(menuSectionParent.hasClass(g_sectionErrorClass)){
objErrorTip.css({
'border-top-color': '#cccccc',
'border-left-color': '#cccccc'
})
}
if(dataTipMainColor!=''){
objTip.css({
'border-top-color': dataTipMainColor,
'border-left-color': dataTipMainColor,
});
}
if(menuSectionBgColor=='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false&&dataTipBgColor==''&&dataTipMainColor==''){
objTip.css({
'border-top-color': '#C9C9C9',
'border-left-color': '#C9C9C9'
});
}}
function setTipPosition(menuSectionParent){
if(menuSectionParent.length==0)
return(false);
var objTip=menuSectionParent.find(g_ueTipSelector);
var objsection=menuSectionParent.find(g_ucConnectedSelector);
var menuSectionBgColor=objsection.css('background-color');
var menuSectionBorderColor=objsection.css('border-color');
var dataTipBgColor=menuSectionParent.data('bg-color');
var dataTipMainColor=menuSectionParent.data('tip-color');
var isMenuSectionBorderExist=parseInt(objsection.css('border-width')) > 0;
var menuItem=menuSectionParent.parents(g_ucMegaMenuListItemSelector);
var menuItemWidth=menuItem.width();
var objTipWidth=objTip.width();
var menuSectionWidth=menuSectionParent.width();
var menuItemCenter=menuItemWidth / 2;
var menuItemOffsetLeft=menuItem.offset().left;
var menuSectionOffsetLeft=menuSectionParent.offset().left;
var menuItemOffsetRight=menuItemOffsetLeft + menuItemWidth;
var menuSectionOffsetRight=menuSectionOffsetLeft + menuSectionWidth;
var menuItemCenterOffsetLeft=menuItemOffsetLeft + menuItemCenter;
if(menuItemOffsetLeft==menuSectionOffsetLeft){
objTip.css({
'left': (menuItemWidth / 2) + 'px',
'right': 'unset'
});
}
if(menuItemOffsetRight==menuSectionOffsetRight){
objTip.css({
'left': 'unset',
'right': (menuItemWidth / 2) + 'px'
});
}
if(menuSectionOffsetLeft < menuItemOffsetLeft&&menuSectionOffsetRight > menuItemCenterOffsetLeft + objTipWidth){
var menuItemSectionPositionDeviation=menuItemOffsetLeft - menuSectionOffsetLeft;
objTip.css({
'left': menuItemSectionPositionDeviation + (menuItemWidth / 2) + 'px',
'right': 'unset'
});
}
if(menuSectionOffsetLeft < menuItemOffsetLeft&&menuSectionOffsetRight <=menuItemCenterOffsetLeft + objTipWidth){
var menuItemSectionPositionDeviation=menuItemOffsetLeft - menuSectionOffsetLeft;
objTip.css({
'left': 'unset',
'right': '0px',
'transform': 'translate(0, -50%) rotate(0)',
'border-top-color': 'transparent',
'border-left-color': 'transparent'
});
if(menuSectionBgColor=='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false){
objTip.css({
'border-right-color': dataTipBgColor
});
}
if(isMenuSectionBorderExist==true){
objTip.css({
'border-right-color': menuSectionBorderColor
});
}
if(menuSectionBgColor!='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false){
objTip.css({
'border-right-color': menuSectionBgColor
});
}
if(menuSectionParent.hasClass(g_sectionErrorClass)){
var objErrorTip=menuSectionParent.find(g_ueTipSelector);
objErrorTip.css({
'border-right-color': '#cccccc',
});
}
if(dataTipMainColor!=''){
objTip.css({
'border-right-color': dataTipMainColor
});
}
if(menuSectionBgColor=='rgba(0, 0, 0, 0)'&&isMenuSectionBorderExist==false&&dataTipBgColor==''&&dataTipMainColor==''){
objTip.css({
'border-right-color': '#C9C9C9'
});
}}
if(menuSectionOffsetLeft > menuItemOffsetLeft&&menuSectionOffsetLeft < menuItemCenterOffsetLeft - objTipWidth){
var menuItemSectionPositionDeviation=menuSectionOffsetLeft - menuItemOffsetLeft;
objTip.css({
'left': (menuItemWidth / 2) - menuItemSectionPositionDeviation + 'px',
'right': 'unset'
});
}
if(menuSectionOffsetLeft > menuItemOffsetLeft&&menuSectionOffsetLeft >=menuItemCenterOffsetLeft - objTipWidth){
var menuItemSectionPositionDeviation=menuSectionOffsetLeft - menuItemOffsetLeft;
objTip.css({
'left': '0px',
'right': 'unset',
'transform': 'translate(0, -50%) rotate(0)',
'border-top-color': 'transparent'
});
}}
function getScrollPos(){
if(g_isNotCustomResponsiveViewport.matches==true)
return(false);
g_objMenuItems.each(function(){
var objItem=jQuery(this);
var menuItemOffsetTop=objItem.offset().top;
objItem.attr('data-scrollpos', menuItemOffsetTop);
});
}
function isElementInViewport(element){
var elementTop=element.offset().top;
var viewportTop=jQuery(window).scrollTop();
var isInViewport=elementTop > viewportTop;
return(isInViewport);
}
function scrollToHead(menuItem){
if(g_isNotCustomResponsiveViewport.matches==true)
return(false);
var menuItemOffsetTop=menuItem.data('scrollpos');
var menuItemSection=menuItem.find(g_ucMegaMenuSectionSelector);
setTimeout(function(){
if(isElementInViewport(menuItemSection)==true)
return(false);
g_objMenuListWrap.animate({
scrollTop: menuItemOffsetTop
}, 400);
}, 400);
}
function showHideArrows(){
if(g_indicator.length==0)
return(false);
var dataAnimation=g_indicator.data('animate-arrows')
if(dataAnimation==false)
return(false);
setTimeout(function(){
g_indicator.css({'opacity': 1});
}, 300)
}
function checkUrl(){
var itemsNumber=g_objMenuItems.length;
for(let i=0; i<itemsNumber; i++){
var menuItemTitle=g_objMenuItems.eq(i).find(g_ucMegaMenuTitleSelector);
var menuItemUrl=menuItemTitle.attr('href');
if(menuItemUrl==g_urlBase){
menuItemTitle.addClass('uc-current-page');
}}
}
function hideSectionInEditor(menuSectionItem){
if(g_dataEditor==false)
return(false);
if(menuSectionItem.hasClass(g_ucConnectedClass)==true)
return(false);
var dataShowInEditor=g_objMenuList.data('show-section');
if(dataShowInEditor=='no'){
menuSectionItem.css({
'position': '',
'visibility': 'visible'
});
}
if(dataShowInEditor=='message'||dataShowInEditor=='hide'){
menuSectionItem.css({
'position': 'absolute',
'visibility': 'hidden'
});
}}
function openFirstItem(){
if(g_isNotCustomResponsiveViewport.matches==true)
return(false);
var firstItem=g_objMenuItems.eq(0);
var firsItemTitle=firstItem.find(g_ucMegaMenuTitleSelector);
var dataFirstItemType=firsItemTitle.data('type');
var dataFirstItemClickable=firsItemTitle.data('clickable-link');
if(dataFirstItemType!='section')
return(false);
if(dataFirstItemClickable!=false)
return(false);
if(g_dataOpenFirst==false)
return(false);
setActive(firstItem);
setActiveArrow(firstItem);
}
function handleItemTypeSection(){
var menuSectionParentItem=g_objUCMegaMenuSection.parents(g_ucMegaMenuListItemSelector);
menuSectionParentItem.each(function(){
var objSection=jQuery(this);
var menuSectionId=objSection.data("id");
var menuSectionItem=jQuery("#" + menuSectionId);
var menuSectionParent=objSection.find(g_ucMegaMenuSectionSelector);
var firstMenuSectionParent=objSection.eq(0).find(g_ucMegaMenuSectionSelector);
setTemplateStyle();
findSections(objSection, menuSectionParent, menuSectionItem, firstMenuSectionParent);
showHideErrors(objSection, menuSectionId, menuSectionParent, menuSectionItem);
debugHiddenElements();
});
handleWidthType();
showHideArrows();
for(let i=0; i < g_objMenuItems.length; i++){
var objMenuItem=g_objMenuItems.eq(i);
var menuSection=objMenuItem.find(g_ucMegaMenuSectionSelector);
var menuSectionChild=menuSection.children();
setVisiblePositionX(objMenuItem);
createTip(menuSection);
setTipPosition(menuSection);
setCoverPosition(menuSection, menuSectionChild);
}
showHideMenuItemsId();
showHideElementsId();
if(g_isCustomResponsiveViewport.matches==true){
g_objMenuListWrap.addClass(g_ucMobileModeClass);
}else{
g_objMenuListWrap.removeClass(g_ucMobileModeClass);
}
getScrollPos();
checkUrl();
openFirstItem();
}
function handleItemTypeSectionInEditor(){
g_objMenuItems.each(function(){
var objSection=jQuery(this);
var menuSectionId=objSection.data("id");
var menuSectionItem=jQuery("#" + menuSectionId);
var menuSectionParent=objSection.find(g_ucMegaMenuSectionSelector);
showHideErrors(objSection, menuSectionId, menuSectionParent, menuSectionItem);
debugHiddenElements();
hideSectionInEditor(menuSectionItem)
});
showHideMenuItemsId();
showHideElementsId();
}
function menuItemClick(objTitle){
var activeMenuItemClick=objTitle.parents(g_ucMegaMenuListItemSelector);
if(activeMenuItemClick.hasClass(g_ucActiveItemClass)){
setDisactive();
if(g_isCustomResponsiveViewport.matches==true)
setDisactiveResponsiveHeight();
}else{
setActive(activeMenuItemClick);
setActiveArrow(activeMenuItemClick);
}}
function closeMenuOnAnchorClick(objTitle){
var url=objTitle.attr('href');
if(url.indexOf("#")==-1)
return(false);
setDisactive();
if(g_isCustomResponsiveViewport.matches==false)
return(false);
setDisactiveResponsiveHeight();
g_objMenuListWrap.removeClass(g_ucMenuOpenCLass);
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
g_objWidget.removeClass(g_ucMenuOpenCLass);
}
function onMenuItemClick(e){
var objTitle=jQuery(this);
var isItemClickable=objTitle.data('clickable-link');
var itemType=objTitle.data('type');
if(g_dataMenuOpen=='hover'){
if(g_isDesktopViewport.matches==true&&g_isCustomResponsiveViewport.matches==false&&itemType!='link'&&isItemClickable==false)
return(false);
if(itemType!='link'&&isItemClickable==false){
menuItemClick(objTitle);
return(false);
}
if(g_isNotDesktopViewport.matches==true&&isItemClickable==true){
var objTarget=jQuery(e.target);
var objTargetParent=objTarget.parent();
if(objTargetParent.hasClass(g_ucMegaMenuTitleClass)==false){
menuItemClick(objTitle);
return(true);
}
if(objTargetParent.hasClass(g_ucMegaMenuTitleClass)==true)
return(true)
}
if(g_isDesktopViewport.matches==true&&isItemClickable==true)
return(true);
if(itemType=='link'){
closeMenuOnAnchorClick(objTitle);
return(true);
}
menuItemClick(objTitle);
}
if(itemType=='link'){
closeMenuOnAnchorClick(objTitle);
return(true);
}
if(g_isDesktopViewport.matches==true&&isItemClickable==true)
return(true);
if(g_isNotDesktopViewport.matches==true&&isItemClickable==true){
var objTarget=jQuery(e.target);
var objTargetParent=objTarget.parent();
if(objTargetParent.hasClass(g_ucMegaMenuTitleClass)==false){
menuItemClick(objTitle);
return(false);
}
if(objTargetParent.hasClass(g_ucMegaMenuTitleClass)==true)
return(true)
}
if(isItemClickable==false)
menuItemClick(objTitle);
}
function setDisactiveOnbodyClick(event){
if(g_objMenuItems.hasClass(g_ucActiveItemClass)==false)
return(false);
if(g_isCustomResponsiveViewport.matches==true)
return(false);
if(jQuery(event.target).hasClass(g_ucExpandIndicatorClass))
return(false);
if(!jQuery(event.target).closest(g_objMenuItems).length)
setDisactive();
}
function bodyClick(event){
if(g_dataMenuOpen=='hover'){
if(g_isDesktopViewport.matches==true&&g_isNotCustomResponsiveViewport.matches==true){
return(false);
}
setDisactiveOnbodyClick(event);
}
setDisactiveOnbodyClick(event);
}
function onInnerLinkClick(){
setDisactive();
if(g_isCustomResponsiveViewport.matches==true){
setDisactiveResponsiveHeight();
g_objMenuListWrap.removeClass(g_ucMenuOpenCLass);
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
g_objWidget.removeClass(g_ucMenuOpenCLass);
}
openFirstItem();
}
function handleMenuItemClick(){
g_menuItemTitle.on("click", onMenuItemClick);
jQuery(document).on('click', function(event){
bodyClick(event);
});
}
function onMenuItemMouseEnter(){
if(g_dataMenuOpen=='click')
return(false);
if(g_isCustomResponsiveViewport.matches==true)
return(false);
var activeMenuItemHover=jQuery(this);
setActive(activeMenuItemHover);
setActiveArrow(activeMenuItemHover);
}
function onMenuItemMouseLeave(){
if(g_dataMenuOpen=='click')
return(false);
if(g_isCustomResponsiveViewport.matches==true)
return(false);
setDisactive();
}
function handleMenuItemHover(){
g_objMenuItems.on('mouseenter', onMenuItemMouseEnter);
g_objMenuListWrap.on('mouseleave', onMenuItemMouseLeave);
}
function handleMenuInnerLinksClick(){
g_objMenuList.on('close_mega_menu', onInnerLinkClick);
}
function menuItemOpen(){
handleMenuItemHover();
handleMenuItemClick();
handleMenuInnerLinksClick();
}
function onBurgerMenuClick(){
g_objMenuListWrap.addClass(g_ucMenuOpenCLass);
g_objBody.addClass(g_ucMenuOpenCLass);
g_objHtml.addClass(g_ucMenuOpenCLass);
}
function onCloseBurgerMenuBtnClick(){
g_objMenuItems.removeClass(g_ucActiveItemClass);
g_objUCMegaMenuSection.removeClass(g_ucActiveItemClass);
setDisactiveArrow();
setDisactiveResponsiveHeight();
g_objMenuListWrap.removeClass(g_ucMenuOpenCLass);
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
g_objWidget.removeClass(g_ucMenuOpenCLass);
openFirstItem();
}
function removeOpenClass(){
if(g_objMenuListWrap.hasClass(g_ucMenuOpenCLass)==false)
return(false);
if(g_objBody.hasClass(g_ucMenuOpenCLass)==false)
return(false);
g_objMenuListWrap.removeClass(g_ucMenuOpenCLass);
g_objBody.removeClass(g_ucMenuOpenCLass);
g_objHtml.removeClass(g_ucMenuOpenCLass);
}
function onWindowResize(){
var activeMenuItem=g_objWidget.find(g_ucMegaMenuListItemSelector+g_ucActiveItemSelector);
if(g_isCustomResponsiveViewport.matches==true){
g_objMenuListWrap.addClass(g_ucMobileModeClass);
setActiveResponsiveHeight(activeMenuItem);
g_objOverlay.hide();
}
if(g_isNotCustomResponsiveViewport.matches==true){
removeOpenClass();
g_objMenuListWrap.removeClass(g_ucMobileModeClass);
g_objUCMegaMenuSection.css({'height': 'unset'});
}
g_viewportWidth=jQuery(window).width();
g_menuWrapOffsetLeft=g_objMenuListWrap.offset().left;
handleWidthType();
for(let i=0; i < g_objMenuItems.length; i++){
var objMenuItem=g_objMenuItems.eq(i);
var menuSection=objMenuItem.find(g_ucMegaMenuSectionSelector);
var menuSectionChild=menuSection.children();
setVisiblePositionX(objMenuItem);
setTipPosition(menuSection);
setCoverPosition(menuSection, menuSectionChild);
}
setOverlayPosition(activeMenuItem);
getScrollPos();
setTimeout(onPageScroll,100);
}
function onPageScroll(){
var objParentSticky=g_objWidget.parents('.elementor-sticky');
if(!objParentSticky.length)
return(false);
var objActiveMenuSections=jQuery(g_ucMegaMenuSectionSelector+g_ucActiveItemSelector);
var visibleMenuSectionNum=objActiveMenuSections.length;
if(!visibleMenuSectionNum)
return(false);
if(visibleMenuSectionNum==1)
return(false);
objActiveMenuSections.each(function(index, el){
if(index==0)
return(true);
el.style.opacity=0;
el.style.pointerEvents='none';
if(g_isNotCustomResponsiveViewport.matches==true)
return(true)
jQuery(this).removeClass(g_ucActiveItemClass);
});
}
function findFocusedAndTrigger(e, eventToTrigger){
g_menuItemTitle.each(function(){
var objTitle=jQuery(this);
if(!objTitle.is(':focus'))
return(true);
if(g_dataMenuOpen=='hover')
objTitle.trigger(eventToTrigger);
var activeMenuItemClick=objTitle.parents(g_ucMegaMenuListItemSelector);
if(g_dataMenuOpen=='click'&&e.keyCode==13){
if(activeMenuItemClick.hasClass(g_ucActiveItemClass)==false){
setActive(activeMenuItemClick);
setActiveArrow(activeMenuItemClick);
}}
if(g_dataMenuOpen=='click'&&e.keyCode==27){
if(activeMenuItemClick.hasClass(g_ucActiveItemClass)==false)
return(true);
setDisactive();
}
e.preventDefault();
});
}
function findFocusedAndOpen(e){
findFocusedAndTrigger(e, 'mouseenter');
}
function findFocusedAndClose(e){
findFocusedAndTrigger(e, 'mouseleave');
}
function onKeyDown(e){
if(g_isCustomResponsiveViewport.matches==true)
return(true);
if(e.keyCode==13)
findFocusedAndOpen(e);
if(e.keyCode==27)
findFocusedAndClose(e);
}
function backdropFilterProtection(){
var objElements=g_objWidget.parents('.elementor-element');
if(!objElements.length)
return(false);
objElements.each(function(){
var objElement=jQuery(this);
var objElementBackdropProperty=objElement.css('backdrop-filter');
if(objElementBackdropProperty=='none')
return(true);
objElement.css('backdrop-filter', 'none');
});
}
function lordIconsProtection(){
var objLordIcons=g_objWidget.find('lord-icon');
if(!objLordIcons.length)
return(false);
objLordIcons.each(function(){
var objIcon=jQuery(this);
var srcIcon=objIcon.attr('src');
objIcon.attr('src','')
setTimeout(function(){
objIcon.attr('src',srcIcon);
},600);
});
}
this.init=function(objMegaMenu, arrItems, urlAjax, expandIconHTML, collapseIconHTML){
g_objWidget=jQuery(objMegaMenu);
if(!g_objWidget.length){
console.log("Mega Menu not found");
return(false);
}
g_ucTemplateWrapperClass="uc-template-wrapper";
g_elementorClass="elementor";
g_subArrowClass="sub-arrow";
g_ucMegaMenuTitleClass="uc-mega_menu_title";
g_ucConnectedClass="uc-connected";
g_sectionErrorClass="section-error";
g_ucSectionErrorClass="uc-section-error";
g_ucMegaMenuListItemClass="uc-mega_menu_list_item";
g_ucMegaMenuSectionClass="uc-mega_menu_section";
g_availableIDsClass="available_id_s";
g_ucCollapseIndicatorClass="uc_collapse_indicator";
g_ucExpandIndicatorClass="uc_expand_indicator";
g_ueTipClass="ue-tip";
g_ucMobileModeClass="uc-mobile-mode";
g_ucActiveItemClass="uc-active_item";
g_ucMenuOpenCLass="uc-menu-open";
g_ucMegaMenuWrapperClass="uc-mega_menu-wrapper";
g_ucMegaMenuListClass="uc-mega_menu_list";
g_ucMegaMenuOverlayClass="uc_mega_menu_overlay";
g_ucTemplateWrapperSelector="."+g_ucTemplateWrapperClass;
g_elementorSelector="."+g_elementorClass;
g_subArrowSelector="."+g_subArrowClass;
g_ucMegaMenuTitleSelector="."+g_ucMegaMenuTitleClass;
g_ucConnectedSelector="."+g_ucConnectedClass;
g_ucSectionErrorSelector="."+g_ucSectionErrorClass;
g_ucMegaMenuListItemSelector="."+g_ucMegaMenuListItemClass;
g_ucMegaMenuSectionSelector="."+g_ucMegaMenuSectionClass;
g_ucCollapseIndicatorSelector="."+g_ucCollapseIndicatorClass;
g_ueTipSelector="."+g_ueTipClass;
g_ucMobileModeSelector="."+g_ucMobileModeSelector;
g_ucActiveItemSelector="."+g_ucActiveItemClass;
g_ucMegaMenuWrapperSelector="."+g_ucMegaMenuWrapperClass;
g_ucMegaMenuListSelector="."+g_ucMegaMenuListClass;
g_ucMegaMenuOverlaySelector="."+g_ucMegaMenuOverlayClass;
g_objMenuItems=g_objWidget.find(g_ucMegaMenuListItemSelector);
g_indicator=g_objMenuItems.find(g_subArrowSelector);
g_menuItemTitle=g_objWidget.find(g_ucMegaMenuTitleSelector);
g_objUCMegaMenuSection=g_objWidget.find(g_ucMegaMenuSectionSelector);
g_objMenuListWrap=g_objWidget.find(g_ucMegaMenuWrapperSelector);
g_objMenuList=g_objWidget.find(g_ucMegaMenuListSelector);
g_objOverlay=g_objWidget.find(g_ucMegaMenuOverlaySelector);
g_objBody=jQuery("body");
g_objHtml=jQuery("html");
g_dataMenuOpen=g_objMenuList.data("menu-open");
g_dataOpenFirst=g_objMenuList.data('open-first');
g_dataOffsetY=g_objMenuList.data("offset-y");
g_dataPositionX=g_objMenuList.data("position-x");
g_dataEditor=g_objWidget.data("editor");
g_showErrors=g_objWidget.data("errors");
g_offsetX=g_objMenuList.data("offset-x");
g_dataCloseDelay=g_objMenuList.data("close-delay");
var customResponsiveBreakpoint=g_objMenuListWrap.data("responsive-breakpoint");
g_menuWrapOffsetLeft=g_objMenuListWrap.offset().left;
g_viewportWidth=jQuery(window).width();
g_urlBase=urlAjax;
g_isDesktopViewport=window.matchMedia("(min-width: 1025px)");
g_isNotDesktopViewport=window.matchMedia("(max-width: 1024px)");
g_isCustomResponsiveViewport=window.matchMedia("(max-width: " + customResponsiveBreakpoint + "px)");
g_isNotCustomResponsiveViewport=window.matchMedia("(min-width: " + (customResponsiveBreakpoint + 1) + "px)");
g_expanIconHTML=expandIconHTML;
g_collapseIconHTML=collapseIconHTML;
g_arrItems=arrItems;
setTimeout(backdropFilterProtection, 200);
var objLoaders=g_objWidget.find('.uc-mega-menu-item-loader');
objLoaders.remove();
if(g_indicator.length)
g_indicator.removeClass('uc-arrow-hidden');
if(g_dataEditor=='no')
handleItemTypeSection();
if(g_dataEditor=='yes')
handleItemTypeSectionInEditor();
var burgerMenu=g_objWidget.find(".uc-mega_menu-burger");
var closeBtn=g_objWidget.find(".uc-mega_menu-close-btn");
burgerMenu.on("click", onBurgerMenuClick);
closeBtn.on("click", onCloseBurgerMenuBtnClick);
if(g_dataEditor=='yes')
return(false);
menuItemOpen();
jQuery(window).on('resize', function(){
setTimeout(onWindowResize,100)
});
jQuery(window).on('scroll', function(){
setTimeout(onPageScroll,100);
});
g_objMenuListWrap.on('scroll', function(){
setTimeout(onPageScroll,100);
});
jQuery(window).on("keydown", function(e){
onKeyDown(e);
});
lordIconsProtection();
window.dispatchEvent(new Event('resize'));
}};