HEX
Server: LiteSpeed
System: Linux server240.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: creaqbdc (8964)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /home/creaqbdc/www/wp-content/uploads/ac_assets/ue-side-menu/menu.js
function UCSideMenu(menuWrapperID, urlAjax){
  
  var g_menuWrapper, g_menuID, g_objButtonToggle, g_objInputBox, g_isCloseOnOpen, g_isClickable, g_isOpenOnLoad;
  var g_pushOnOpen, g_pushOnOpenMobile, g_lastBodyPadding;
  var g_startExpanded;
  var g_dataLinkNum;
  var g_dataSpeed;
  var g_menuOpenedClass;
  
  //add support to swiper container
  function pushSwipers(num){
    
    var objSwipers = jQuery(".swiper-container");
    
    objSwipers.each(function(){
      
      var objSwiper = jQuery(this);
      
      objSwiper.css("transform", "translate("+num+"px, 0)");
      
    });
    
  }
  
  function releaseSwipers(){
    
    var objSwipers = jQuery(".swiper-container");
    
    objSwipers.each(function(){
      
      var objSwiper = jQuery(this);
      
      objSwiper.css("transform", "");
    });
    
  }
  
  function openNav() {
    
    var objBody = jQuery("body");
    var menuWidth = g_menuWrapper.width();
    
    objBody.addClass(g_menuOpenedClass);   
    
    if ( g_menuWrapper.hasClass("menu-right-close")) {
      
      function pushContentToLeft(){
        objBody.addClass("uc-menu-push");
        objBody.css("padding-right",menuWidth+"px");
        
        pushSwipers(-menuWidth);
        
      }
      
      g_menuWrapper.removeClass("menu-right-close");
      g_menuWrapper.addClass("menu-right-open");
      
      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
        pushContentToLeft();
      }
      
      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){
        pushContentToLeft();
      }
      
      g_lastBodyPadding = objBody.css("padding-right");
      
    } else if (g_menuWrapper.hasClass("menu-left-close")) {
      
      function pushContentToRight(){
        objBody.addClass("uc-menu-push");
        objBody.css("padding-left",menuWidth+"px");
        
        pushSwipers(menuWidth);
        
      }
      
      g_menuWrapper.removeClass("menu-left-close");
      g_menuWrapper.addClass("menu-left-open");			
      
      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
        pushContentToRight();
      }
      
      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){
        pushContentToRight();
      }
      
      g_lastBodyPadding = objBody.css("padding-left");
      
    }
    
    g_objButtonToggle.addClass("uc-close-action");
    
  }
  
  /**
  * close the menu
  */
  function closeNav() {
    
    g_objButtonToggle.removeClass("uc-close-action");
    
    checkUrlAndSelectActive();
    
    var objBody = jQuery("body");
    objBody.removeClass(g_menuOpenedClass);
    
    if (g_menuWrapper.hasClass("menu-left-open")) {
      
      function lastBodyPaddingLeft() {
        
        setTimeout(function(){
          objBody.removeClass("uc-menu-push");
        },g_dataSpeed*1000);
        
        objBody.css("padding-left", '');
        
        releaseSwipers();
        
      }
      
      g_menuWrapper.toggleClass("menu-left-close");
      
      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true) {
        lastBodyPaddingLeft();
      }
      
      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) {
        lastBodyPaddingLeft();
      }
      
    } else if (g_menuWrapper.hasClass("menu-right-open")) {
      
      function lastBodyPaddingRight() {
        
        setTimeout(function(){
          objBody.removeClass("uc-menu-push");
        },g_dataSpeed*1000)
        
        objBody.css("padding-right", '');
        
        releaseSwipers();
        
      }
      
      g_menuWrapper.toggleClass("menu-right-close");
      
      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
        lastBodyPaddingRight();
      }
      
      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) {
        lastBodyPaddingRight();
      }
      
    }
    
    
  }
  
  
  function isMenuClosed(){
    
    var isClose = g_objButtonToggle.hasClass("uc-close-action");
    
    return(!isClose);
  }
  
  function onButtonToggleClick(){
    
    var isClose = g_objButtonToggle.hasClass("uc-close-action");
    
    if(isClose == true)
    closeNav();
    else
    openNav();
    
  }
  
  /**
  * collapse inner section
  */
  function collapseInnerSection(element){
    
    var sectionHeight = element.scrollHeight;
    
    var elementTransition = element.style.transition;
    element.style.transition = '';
    
    requestAnimationFrame(function() {
      
      element.style.height = sectionHeight + 'px';
      element.style.transition = elementTransition;
      
      requestAnimationFrame(function() {
        element.style.height = 0 + 'px';
      });
      
    });
    
    element.setAttribute('data-collapsed', 'true');
  }
  
  /**
  * expand the inner of the section
  */
  function expandSectionInner(element){
    
    var sectionHeight = element.scrollHeight;
    element.style.height = sectionHeight + 'px';
    
    element.addEventListener('transitionend', function(e) {
      element.removeEventListener('transitionend', arguments.callee);
      element.style.height = null;
    });
    element.setAttribute('data-collapsed', 'false');
  }
  
  /**
  * expand section
  */
  function expandSection(section, objLink){
    
    expandSectionInner(section);
    
    section.setAttribute('data-collapsed', 'false')
    objLink.removeClass("collapsed");
    objLink.addClass("expanded");
    
  }
  
  /**
  * collapse the section
  */
  function collapseSection(section, objLink){
    
    collapseInnerSection(section);
    
    objLink.addClass("collapsed");
    objLink.removeClass("expanded");
  }
  
  /**
  * collapse all expanded sections
  */
  function collapseAllExpanded(clickedItem){
    
    var clickedParentExpanded = jQuery(clickedItem).parents('.sub-menu').prev();    
    var clickedChildrenExpanded = jQuery(clickedItem).next().find('.expanded');   
    
    var objAllExpanded = g_menuWrapper.find(".expanded").not(clickedChildrenExpanded).not(clickedParentExpanded);
    
    if(objAllExpanded.length == false)
    return(false);
    
    jQuery.each(objAllExpanded, function(index, link){
      var objLink = jQuery(link);
      var section = link.nextElementSibling;
      
      collapseSection(section, objLink);
      
    });
  }
  
  /**
  * close or open link
  */
  function toggleSection(objLink){
    
    var link = objLink[0];
    var section = link.nextElementSibling;
    
    var isCollapsed = section.getAttribute('data-collapsed') === 'true';
    
    if (isCollapsed) {		//expend current
      
      if(g_isCloseOnOpen == true)
      collapseAllExpanded(link);
      
      expandSection(section, objLink);
      
    } else {		//collapse current
      
      collapseSection(section,objLink);
    }
    
  }
  
  /**
  * toggle menu item icon
  */
  function menuItemIconToggle(link){
    
    var objWrapper = jQuery("#"+menuWrapperID);
    
    //add icons to pointer elements
    var pointerSelector = ".uc-menu-item-pointer";
    
    var objPointer = jQuery(link).find(pointerSelector);
    var objPsrentsMenuItems = jQuery(link).parents(".menu-item-has-children");
    var objParentsPointers = objPsrentsMenuItems.find(pointerSelector);
    var objAllPointers = g_menuWrapper.find(pointerSelector).not(objParentsPointers);
    
    var objExpandedIcon = objWrapper.find(".uc-side-menu-expand-icon");
    var objCollapsedIcon = objWrapper.find(".uc-side-menu-collapse-icon");
    
    if(!objExpandedIcon.length || !objCollapsedIcon)
    return(false);
    
    var expandedIconHtml = objExpandedIcon.html();
    var collapsedIconHtml = objCollapsedIcon.html();  
    
    if(jQuery(link).hasClass("collapsed") == true){
      
      objAllPointers.html(expandedIconHtml);
      objPointer.html(expandedIconHtml);
      
    }
    
    if(jQuery(link).hasClass("expanded") == true){
      
      objAllPointers.html(expandedIconHtml);
      objPointer.html(collapsedIconHtml);
      
    }
    
    
  }
  
  /**
  * open or close some item
  */
  function openCloseItem(link, event, isPointer, isOnlyOpen){
    
    var section = link.nextElementSibling;
    
    if(isPointer == true){
      section = jQuery(link).parents("a")[0].nextElementSibling;
    }
    
    if(!section)
    return(true);
    
    var objSection = jQuery(section);
    
    if(objSection.hasClass("sub-menu") == false)
    return(true);
    
    if(event)
    event.preventDefault();
    
    var objLink = jQuery(link);
    
    var isCollapsed = section.getAttribute('data-collapsed') === 'true';
    
    
    if(isCollapsed == true && isOnlyOpen == true){
      
      expandSection(section, objLink);
      
      return(true);
      
    }
    
    
    
    if (isCollapsed == true && !isOnlyOpen) {		//expend current
      
      if(g_isCloseOnOpen == true)
      collapseAllExpanded(link);
      
      expandSection(section, objLink);
      
    } else if(isCollapsed == false && !isOnlyOpen) {		//collapse current
      
      collapseSection(section,objLink);
    }
    
    menuItemIconToggle(link);
    
  }
  
  /**
  * if clicked link is an anchor then close nav
  */
  function closeNavOnAnchorLinkClick(objLink, event){
    
    var url = objLink.attr("href");
    url = jQuery.trim(url);
    
    if(!url)
    return(true);
    
    var objLinkIcon = objLink.find('.uc-menu-item-pointer');
    
    if(!objLinkIcon)
    return(true);
    
    var target = event.target;
    
    if(target == objLinkIcon[0])
    return(true);
    
    var objLinkParent = objLink.parent();
    
    if(g_isClickable == false){
      
      if(objLinkParent.hasClass('menu-item-has-children'))
      return(true)
      
      //check if clicked link is an anchor link 
      if (url.indexOf("#") > -1)
      closeNav();
      
    }else{
      
      //check if clicked link is an anchor link
      if (url.indexOf("#") > -1)
      closeNav();
      
    }
    
  }
  
  
  /**
  * on menu item click, if sub menu, open or close
  */
  function onMenuItemClick(event){    
    
    openCloseItem(this,event);
    
    var objLink = jQuery(this);
    
    closeNavOnAnchorLinkClick(objLink, event)
    
  }
  
  /**
  * console log shorcut
  */
  function trace(str){
    
    console.log(str);
  }
  
  /**
  * do search
  */
  function doSearch(){
    
    if(!g_objInputBox)
    return(false);
    
    var searchString = g_objInputBox.val();
    
    searchString = jQuery.trim(searchString);
    
    if(!searchString)
    return(true);
    
    var urlBase = g_objInputBox.data("urlbase");
    var urlSearch = urlBase+"?s="+searchString;
    
    location.href = urlSearch;
    
  }
  
  
  /**
  * on input box key up - if enter clicked - go to search
  */
  function onInputBoxKeyUp(event){
    
    if(event.keyCode !== 13)
    return(true);
    
    doSearch();
  }
  
  /**
  * on menu body click - disable propogation
  */
  function onMenuBodyClick(event){
    
    event.stopPropagation();
  }
  
  /**
  * on body click - close the menu if needed
  */
  function onBodyClick(){
    
    var isClosed = isMenuClosed();
    
    if(isClosed == true)
    return(true);
    
    closeNav();
  }
  
  //on trigger link click
  
  function onLinkClick(e){
    
    var objLink = jQuery(this);
    
    var dataMenuName = g_menuWrapper.data('name');
    var dataLinkName = objLink.data('name');
    
    if(dataLinkName == undefined){
      return(false);
    }
    
    e.preventDefault();
    if(dataLinkName == dataMenuName){
      g_objButtonToggle.trigger("click");
    }else{
      return(false);
    }
  }
  
  /**
  * init open links
  */
  function initLinks(){
    
    var objLinks = jQuery('.ue-link-open-menu').not(".uc-link-inited");
    
    if(objLinks.length == 0){
      return(false);
    }
    
    var elementName = g_menuWrapper.data("name");
    
    jQuery.each(objLinks, function(index, linkElement){
      
      var objLink = jQuery(linkElement);
      
      var name = objLink.data("name");
      
      if(name != elementName)
      return(true);
      
      objLink.addClass("uc-link-inited");
      
      objLink.on("click", onLinkClick);
      
    });
    
    
  }
  
  /*
  * scrolls to elment
  */
  function scrollMenuToElement(elementOffsetTop){	
    
    var objScrollableHolder = jQuery("#"+menuWrapperID).find(".uc-side-menu-items");
    
    //wait untill all transitions are finished
    setTimeout(function(){      
      
      objScrollableHolder.animate({
        scrollTop: elementOffsetTop
      }, 100)
      
    }, 500);
    
  }
  
  /**
  * finds if element is in viewport
  */
  function isElementInViewport(element) {
    
    var elementTop = element.offset().top;
    var elementBottom = elementTop + element.outerHeight();
    
    var viewportTop = jQuery(window).scrollTop();
    var viewportBottom = viewportTop + jQuery(window).height();
    
    var isInViwport = elementBottom > viewportTop && elementTop < viewportBottom;
    
    return(isInViwport);
  } 
  
  /*
  * check url and select active item
  */
  function checkUrlAndSelectActive(){
    
    var currentPageClass = "current_page_item";
    
    var objlinks = jQuery("#"+menuWrapperID).find('a');
    
    objlinks.each(function(){
      
      var objLink = jQuery(this);
      var linkHref = objLink.attr("href");
      
      //if link has same link adress as menu item then open menu item
      if(linkHref != urlAjax)
      return(true);
      
      var objMenuListItem = objLink.parents('li');
      
      objlinks.removeClass(currentPageClass);
      objMenuListItem.addClass(currentPageClass);
      
      var objParentLinks = objLink.parents('.sub-menu').prev();
      
      objParentLinks.each(function(index, elem){
        
        var objParentLink = jQuery(this);
        
        if(objParentLink.hasClass("collapsed")){
          
          if(g_isClickable == false){
            
            openCloseItem(objParentLink[0]);            
            
          }
          
          if(g_isClickable == true){
            
            var objPointer = objParentLink.find(".uc-menu-item-pointer");
            
            openCloseItem(objPointer[0], false, true, true);
            
          }
          
        }        
        
      });
      
      //check if item is in viewport and scroll if needed
      objLinkOffsetTop = objLink.offset().top;
      
      if(isElementInViewport(objLink) == false){
        
        scrollMenuToElement(objLinkOffsetTop);
        
      }
      
    });
    
  }
  
  /*
  * open current page menu item
  */
  function checkUrlAndTriggerClick(){
    
    if(g_startExpanded == true)
    return(false);
    
    var currentPageClass = "current_page_item";
    
    var objlinks = jQuery("#"+menuWrapperID).find('a');
    
    objlinks.each(function(){
      
      var objLink = jQuery(this);
      var linkHref = objLink.attr("href");
      
      //if link has same link adress as menu item then open menu item
      if(linkHref != urlAjax)
      return(true);
      
      var objMenuListItem = objLink.parents('li');
      
      objlinks.removeClass(currentPageClass);
      objMenuListItem.addClass(currentPageClass);
      
      
      //check if item is in viewport and scroll if needed
      objLinkOffsetTop = objLink.offset().top;
      
      if(isElementInViewport(objLink) == false){
        
        scrollMenuToElement(objLinkOffsetTop);
        
      }
      
      var objLinkToOpens = objLink.parents('.sub-menu').prev();  
      
      if(g_isClickable == false){
        
        objLinkToOpens.each(function(){
          
          var objLinkToOpen = jQuery(this);
          openCloseItem(objLinkToOpen[0]);
          
        });                
        
      }
      
      if(g_isClickable == true){
        
        objLinkToOpens.each(function(){
          
          var objLinkToOpen = jQuery(this);
          var objPointer = objLinkToOpen.find(".uc-menu-item-pointer");
          
          openCloseItem(objPointer[0], false, true, true);
          
        });
        
      }
      
    });
    
  }
  
  /**
  * check if menu is hidden after resize
  */
  function onWindowResize(){
    
    var isMenuOpened = jQuery("body").hasClass(g_menuOpenedClass);
    
    //only if menu is opened and body has overflow hidden
    if(isMenuOpened == false)
    return(false);
    
    var objParents = g_menuWrapper.parents();
    
    objParents.each(function(){      
      
      var objParent = jQuery(this);
      var isParentVisible = objParent.is(":visible");
      
      if(isParentVisible == true)
      return(true);
      
      closeNav();
      
    });
    
  }
  
  /**
  * collapse inner section after init
  */
  function initCollapsedState(item){
    
    collapseInnerSection(item.nextElementSibling);
    
    jQuery(item).addClass("collapsed");    
    jQuery(item).removeClass("expanded");
    
  }
  
  /**
  * run the menu, init
  */
  function runMenu(){
    
    var objWrapper = jQuery("#"+menuWrapperID);  
    
    g_menuWrapper = objWrapper.find(".uc-side-menu-wrapper");
    g_isClickable = objWrapper.data("clickable");
    g_isCloseOnOpen = objWrapper.data("closeothers");
    
    var isCloseOnBody = objWrapper.data("closeonbody");
    g_isOpenOnLoad = g_menuWrapper.data("openonload");
    
    g_pushOnOpen = objWrapper.data("push");
    g_pushOnOpenMobile = objWrapper.data("push-mobile")
    g_dataSpeed = objWrapper.data("speed");
    
    g_startExpanded = objWrapper.data("expand");
    
    var objButtonClose = g_menuWrapper.find(".uc-close-side-menu");
    
    g_objButtonToggle = objWrapper.find(".open_side_menu");
    
    g_objInputBox = g_menuWrapper.find("input[type='text']");
    
    g_menuID = menuWrapperID;
    
    g_menuOpenedClass = "menu-opened";
    
    
    
    if(g_menuWrapper.length == 0){
      console.log("menu with ID: "+menuWrapperID+" not found!");
      return(false);
    }
    
    if(objButtonClose.length == 0){
      console.log("The close button not found");
      return(false);
    }
    
    if(g_objButtonToggle.length == 0){
      console.log("The trigger button not found");
      return(false);
    }
    
    //collapse or expand all			
    var dataExpandFirst = objWrapper.data("first-expand");

    g_menuWrapper.find("ul.uc-list-menu li a").each((i, item) => {
      
      if(item.nextElementSibling){
        
        var objItem = jQuery(item);
        objItem.append("<span class='uc-menu-item-pointer'></span>");
        
        if(g_startExpanded == false){
          
          //expand first 
          if(dataExpandFirst == true && i != 0)
          initCollapsedState(item);
          else if(dataExpandFirst == false)
          initCollapsedState(item);          
          
        }else{
          
          jQuery(item).removeClass("collapsed");
          jQuery(item).addClass("expanded");
          
        }
        
        //add icons to pointer elements
        menuItemIconToggle(item);
        
      }
      
    });
    
    initLinks();
    
    //init events
    
    if(g_objInputBox.length == 0)
    g_objInputBox = null;
    
    if(g_objInputBox)
    g_objInputBox.on("keyup",onInputBoxKeyUp);
    
    var objButtonSearch = g_menuWrapper.find(".side-menu-search-button-search");
    objButtonSearch.on("click", doSearch);
    
    var objLinks = g_menuWrapper.find("ul.uc-list-menu li a");
    
    if(g_isClickable == false){
      objLinks.on("click", onMenuItemClick);
    }else{
      
      var objPointers = g_menuWrapper.find("ul.uc-list-menu li .uc-menu-item-pointer");
      
      //pointer click - toggle section      
      objPointers.on("click", function(event){
        
        event.preventDefault();
        
        var objLink = jQuery(this);
        var objParentLink = objLink.parent();
        
        toggleSection(objParentLink);
        
        menuItemIconToggle(objParentLink[0]);
        
      });
      
      //close nav if anchor link clicked
      objLinks.on("click", function(event){
        
        var objLink = jQuery(this);
        
        closeNavOnAnchorLinkClick(objLink, event);
        
      });
      
    }
    
    if(dataExpandFirst == false)
    setTimeout(checkUrlAndTriggerClick,500);
    
    objButtonClose.on("click", closeNav);
    
    g_objButtonToggle.on("click", onButtonToggleClick);
    
    if(isCloseOnBody === true){
      
      var objOverlay = g_menuWrapper.find(".ue_side_menu_overlay");
      
      if(objOverlay.length)
      objOverlay.on("click", closeNav);
      else{
        g_menuWrapper.on("click", onBodyClick);
        g_objButtonToggle.on("click", onBodyClick);
        
        jQuery("body").on("click", onBodyClick);
      }			
      
    }
    
    if(g_isOpenOnLoad === true){
      g_objButtonToggle.trigger("click");
    }
    
    jQuery(window).on("resize", onWindowResize);
  }
  
  runMenu();
  
}