PageSourceSearch

https://breakawayropingjournal.com/wp-content/uploads/ac_assets/ue-side-menu/menu.js?ver=2.0.20

js breakawayropingjournal.com collected 2026-09-26 08:23:58 UTC 15,004 bytes, 653 lines download raw bytes

1
2function UCSideMenu(menuWrapperID, urlAjax){
3  
4  var g_menuWrapper, g_menuID, g_objButtonToggle, g_objInputBox, g_isCloseOnOpen, g_isClickable, g_isOpenOnLoad;
5  var g_pushOnOpen, g_pushOnOpenMobile, g_lastBodyPadding;
6  var g_startExpanded;
7  var g_dataLinkNum;
8  
9  
10  function openNav() {
11    
12    var objBody = jQuery("body");
13    var menuWidth = g_menuWrapper.width();
14    
15    objBody.addClass("menu-opened");
16    
17    if ( g_menuWrapper.hasClass("menu-right-close")) {
18      
19      function pushContentToLeft(){
20        objBody.addClass("uc-menu-push");
21        objBody.css("padding-right",menuWidth+"px");
22      }
23      
24      g_menuWrapper.removeClass("menu-right-close");
25      g_menuWrapper.addClass("menu-right-open");
26      
27      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
28        pushContentToLeft();
29      }
30      
31      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){
32        pushContentToLeft();
33      }
34      
35      g_lastBodyPadding = objBody.css("padding-right");
36      
37    } else if (g_menuWrapper.hasClass("menu-left-close")) {
38      
39      function pushContentToRight(){
40        objBody.addClass("uc-menu-push");
41        objBody.css("padding-left",menuWidth+"px");
42      }
43      
44      g_menuWrapper.removeClass("menu-left-close");
45      g_menuWrapper.addClass("menu-left-open");			
46      
47      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
48        pushContentToRight();
49      }
50      
51      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){
52        pushContentToRight();
53      }
54      
55      g_lastBodyPadding = objBody.css("padding-left");
56      
57    }
58    
59    g_objButtonToggle.addClass("uc-close-action");
60    
61  }
62  
63  /**
64  * close the menu
65  */
66  function closeNav() {
67    
68    g_objButtonToggle.removeClass("uc-close-action");
69    
70    var objBody = jQuery("body");
71    objBody.removeClass("menu-opened");
72    
73    if (g_menuWrapper.hasClass("menu-left-open")) {
74      
75      function lastBodyPaddingLeft() {
76        objBody.css("padding-left",g_lastBodyPadding);
77      }
78      
79      g_menuWrapper.toggleClass("menu-left-close");
80      
81      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true) {
82        lastBodyPaddingLeft();
83      }
84      
85      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) {
86        lastBodyPaddingLeft();
87      }
88      
89    } else if (g_menuWrapper.hasClass("menu-right-open")) {
90      
91      function lastBodyPaddingRight() {
92        objBody.css("padding-right",g_lastBodyPadding);
93      }
94      
95      g_menuWrapper.toggleClass("menu-right-close");
96      
97      if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){
98        lastBodyPaddingRight();
99      }
100      
101      if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) {
102        lastBodyPaddingRight();
103      }
104      
105    }
106    
107    
108  }
109  
110  
111  function isMenuClosed(){
112    
113    var isClose = g_objButtonToggle.hasClass("uc-close-action");
114    
115    return(!isClose);
116  }
117  
118  function onButtonToggleClick(){
119    
120    var isClose = g_objButtonToggle.hasClass("uc-close-action");
121    
122    if(isClose == true)
123    closeNav();
124    else
125    openNav();
126    
127  }
128  
129  /**
130  * collapse inner section
131  */
132  function collapseInnerSection(element){
133    
134    var sectionHeight = element.scrollHeight;
135    
136    var elementTransition = element.style.transition;
137    element.style.transition = '';
138    
139    requestAnimationFrame(function() {
140      element.style.height = sectionHeight + 'px';
141      element.style.transition = elementTransition;
142      requestAnimationFrame(function() {
143        element.style.height = 0 + 'px';
144      });
145    });
146    
147    element.setAttribute('data-collapsed', 'true');
148  }
149  
150  /**
151  * expand the inner of the section
152  */
153  function expandSectionInner(element){
154    
155    var sectionHeight = element.scrollHeight;
156    element.style.height = sectionHeight + 'px';
157    element.addEventListener('transitionend', function(e) {
158      element.removeEventListener('transitionend', arguments.callee);
159      
160      element.style.height = null;
161    });
162    element.setAttribute('data-collapsed', 'false');
163  }
164  
165  /**
166  * expand section
167  */
168  function expandSection(section, objLink){
169    
170    expandSectionInner(section);
171    
172    section.setAttribute('data-collapsed', 'false')
173    objLink.removeClass("collapsed");
174    objLink.addClass("expanded");
175    
176  }
177  
178  /**
179  * collapse the section
180  */
181  function collapseSection(section, objLink){
182    
183    collapseInnerSection(section);
184    
185    objLink.addClass("collapsed");
186    objLink.removeClass("expanded");
187  }
188  
189  /**
190  * collapse all expanded sections
191  */
192  function collapseAllExpanded(clickedItem){
193    
194    var clickedParentExpanded = jQuery(clickedItem).parents('.sub-menu').prev();    
195    var clickedChildrenExpanded = jQuery(clickedItem).next().find('.expanded');   
196    
197    var objAllExpanded = g_menuWrapper.find(".expanded").not(clickedChildrenExpanded).not(clickedParentExpanded);
198    
199    if(objAllExpanded.length == false)
200    return(false);
201    
202    jQuery.each(objAllExpanded, function(index, link){
203      var objLink = jQuery(link);
204      var section = link.nextElementSibling;
205      
206      collapseSection(section, objLink);
207      
208    });
209  }
210  
211  /**
212  * close or open link
213  */
214  function toggleSection(objLink){
215    
216    var link = objLink[0];
217    var section = link.nextElementSibling;
218    
219    var isCollapsed = section.getAttribute('data-collapsed') === 'true';
220    
221    if (isCollapsed) {		//expend current
222      
223      if(g_isCloseOnOpen == true)
224      collapseAllExpanded(link);
225      
226      expandSection(section, objLink);
227      
228    } else {		//collapse current
229      
230      collapseSection(section,objLink);
231    }
232    
233  }
234  
235  /**
236  * toggle menu item icon
237  */
238  function menuItemIconToggle(link){
239    
240    var objWrapper = jQuery("#"+menuWrapperID);
241    
242    //add icons to pointer elements
243    var objPointer = jQuery(link).find(".uc-menu-item-pointer");
244    var objExpandedIcon = objWrapper.find(".uc-side-menu-expand-icon");
245    var objCollapsedIcon = objWrapper.find(".uc-side-menu-collapse-icon");
246
247    if(!objExpandedIcon.length || !objCollapsedIcon)
248    return(false);
249    
250    var expandedIconHtml = objExpandedIcon.html();
251    var collapsedIconHtml = objCollapsedIcon.html();  
252    
253    if(jQuery(link).hasClass("collapsed") == true)
254    objPointer.html(expandedIconHtml);
255    
256    if(jQuery(link).hasClass("expanded") == true)
257    objPointer.html(collapsedIconHtml);
258    
259    
260  }
261  
262  /**
263  * open or close some item
264  */
265  function openCloseItem(link, event){
266    
267    var section = link.nextElementSibling;
268    if(!section)
269    return(true);
270    
271    var objSection = jQuery(section);
272    if(objSection.hasClass("sub-menu") == false)
273    return(true);
274    
275    if(event)
276    event.preventDefault();
277    
278    var objLink = jQuery(link);
279    
280    var isCollapsed = section.getAttribute('data-collapsed') === 'true';
281    
282    if (isCollapsed) {		//expend current
283      
284      if(g_isCloseOnOpen == true)
285      collapseAllExpanded(link);
286      
287      expandSection(section, objLink);
288      
289    } else {		//collapse current
290      
291      collapseSection(section,objLink);
292    }
293    
294    menuItemIconToggle(link);
295    
296  }
297  
298  /**
299  * if clicked link is an anchor then close nav
300  */
301  function closeNavOnAnchorLinkClick(objLink, event){
302    
303    var url = objLink.attr("href");
304    url = jQuery.trim(url);
305    
306    if(!url)
307    return(true);
308    
309    var objLinkIcon = objLink.find('.uc-menu-item-pointer');
310    
311    if(!objLinkIcon)
312    return(true);
313    
314    var target = event.target;
315    
316    if(target == objLinkIcon[0])
317    return(true);
318    
319    var objLinkParent = objLink.parent();
320    
321    if(g_isClickable == false){
322      
323      if(objLinkParent.hasClass('menu-item-has-children'))
324      return(true)
325      
326      //check if clicked link is an anchor link 
327      if (url.indexOf("#") > -1)
328      closeNav();
329      
330    }else{
331      
332      //check if clicked link is an anchor link
333      if (url.indexOf("#") > -1)
334      closeNav();
335      
336    }
337    
338  }
339  
340  
341  /**
342  * on menu item click, if sub menu, open or close
343  */
344  function onMenuItemClick(event){
345    
346    
347    /*return*/ openCloseItem(this,event);
348    
349    var objLink = jQuery(this);
350    
351    closeNavOnAnchorLinkClick(objLink, event)
352    
353  }
354  
355  /**
356  * console log shorcut
357  */
358  function trace(str){
359    
360    console.log(str);
361  }
362  
363  /**
364  * do search
365  */
366  function doSearch(){
367    
368    if(!g_objInputBox)
369    return(false);
370    
371    var searchString = g_objInputBox.val();
372    
373    searchString = jQuery.trim(searchString);
374    
375    if(!searchString)
376    return(true);
377    
378    var urlBase = g_objInputBox.data("urlbase");
379    var urlSearch = urlBase+"?s="+searchString;
380    
381    location.href = urlSearch;
382    
383  }
384  
385  
386  /**
387  * on input box key up - if enter clicked - go to search
388  */
389  function onInputBoxKeyUp(event){
390    
391    if(event.keyCode !== 13)
392    return(true);
393    
394    doSearch();
395  }
396  
397  /**
398  * on menu body click - disable propogation
399  */
400  function onMenuBodyClick(event){
401    
402    event.stopPropagation();
403  }
404  
405  /**
406  * on body click - close the menu if needed
407  */
408  function onBodyClick(){
409    
410    var isClosed = isMenuClosed();
411    
412    if(isClosed == true)
413    return(true);
414    
415    closeNav();
416  }
417  
418  //on trigger link click
419  
420  function onLinkClick(e){
421    
422    var objLink = jQuery(this);
423    
424    var dataMenuName = g_menuWrapper.data('name');
425    var dataLinkName = objLink.data('name');
426    
427    if(dataLinkName == undefined){
428      return(false);
429    }
430    
431    e.preventDefault();
432    if(dataLinkName == dataMenuName){
433      g_objButtonToggle.trigger("click");
434    }else{
435      return(false);
436    }
437  }
438  
439  /**
440  * init open links
441  */
442  function initLinks(){
443    
444    var objLinks = jQuery('.ue-link-open-menu').not(".uc-link-inited");
445    
446    if(objLinks.length == 0){
447      return(false);
448    }
449    
450    var elementName = g_menuWrapper.data("name");
451    
452    jQuery.each(objLinks, function(index, linkElement){
453      
454      var objLink = jQuery(linkElement);
455      
456      var name = objLink.data("name");
457      
458      if(name != elementName)
459      return(true);
460      
461      objLink.addClass("uc-link-inited");
462      
463      objLink.on("click", onLinkClick);
464      
465    });
466    
467    
468  }
469
470  /*
471  * open current page menu item
472  */
473   function checkUrl(){
474
475    var objCurrentPageItem = jQuery("#"+menuWrapperID).find('.current_page_item');
476
477    if(!objCurrentPageItem)
478    return(false);
479
480    if(g_startExpanded == true)
481    return(false);
482
483    var objCurrentPageLink = objCurrentPageItem.find('> a');
484    var currentPageHref = objCurrentPageLink.attr('href');
485    
486    //if current page has same link adress as menu item then open menu item
487    if(currentPageHref != urlAjax)
488    return(false);
489
490    var objLinkToOpen = objCurrentPageLink.parents('.sub-menu').prev();   
491    
492    if(g_isClickable == false)
493    objLinkToOpen.trigger('click');
494
495    if(g_isClickable == true){
496
497      var objPointer = objLinkToOpen.find(".uc-menu-item-pointer");
498
499      objPointer.trigger('click');
500
501    }
502       
503  }
504    
505  /**
506  * run the menu, init
507  */
508  function runMenu(){
509    
510    var objWrapper = jQuery("#"+menuWrapperID);  
511    
512    g_menuWrapper = objWrapper.find(".uc-side-menu-wrapper");
513    g_isClickable = objWrapper.data("clickable");
514    g_isCloseOnOpen = objWrapper.data("closeothers");
515    
516    var isCloseOnBody = objWrapper.data("closeonbody");
517    g_isOpenOnLoad = g_menuWrapper.data("openonload");
518    
519    g_pushOnOpen = objWrapper.data("push");
520    g_pushOnOpenMobile = objWrapper.data("push-mobile")
521    
522    g_startExpanded = objWrapper.data("expand");
523    
524    var objButtonClose = g_menuWrapper.find(".uc-close-side-menu");
525    
526    g_objButtonToggle = objWrapper.find(".open_side_menu");
527    
528    g_objInputBox = g_menuWrapper.find("input[type='text']");
529    
530    g_menuID = menuWrapperID;
531
532
533    
534    if(g_menuWrapper.length == 0){
535      console.log("menu with ID: "+menuWrapperID+" not found!");
536      return(false);
537    }
538    
539    if(objButtonClose.length == 0){
540      console.log("The close button not found");
541      return(false);
542    }
543    
544    if(g_objButtonToggle.length == 0){
545      console.log("The trigger button not found");
546      return(false);
547    }
548    
549    //collapse or expand all			
550    
551    g_menuWrapper.find("ul.uc-list-menu li a").each((i, item) => {
552      
553      if(item.nextElementSibling){
554        
555        var objItem = jQuery(item);
556        objItem.append("<span class='uc-menu-item-pointer'></span>");
557        
558        if(g_startExpanded == false){
559          
560          collapseInnerSection(item.nextElementSibling);
561          jQuery(item).addClass("collapsed");
562          jQuery(item).removeClass("expanded");
563          
564        }else{
565          
566          jQuery(item).removeClass("collapsed");
567          jQuery(item).addClass("expanded");
568          
569        }
570        
571        //add icons to pointer elements
572        menuItemIconToggle(item);
573        
574      }
575      
576    });
577    
578    initLinks();
579    
580    //init events
581    
582    if(g_objInputBox.length == 0)
583    g_objInputBox = null;
584    
585    if(g_objInputBox)
586    g_objInputBox.on("keyup",onInputBoxKeyUp);
587    
588    var objButtonSearch = g_menuWrapper.find(".side-menu-search-button-search");
589    objButtonSearch.on("click", doSearch);
590    
591    var objLinks = g_menuWrapper.find("ul.uc-list-menu li a");
592    
593    if(g_isClickable == false){
594      objLinks.on("click", onMenuItemClick);
595    }else{
596      
597      var objPointers = g_menuWrapper.find("ul.uc-list-menu li .uc-menu-item-pointer");
598      
599      //pointer click - toggle section      
600      objPointers.on("click", function(event){
601        
602        event.preventDefault();
603        
604        var objLink = jQuery(this);
605        var objParentLink = objLink.parent();
606        
607        toggleSection(objParentLink);
608
609        menuItemIconToggle(objParentLink[0]);
610        
611      });
612      
613      //close nav if anchor link clicked
614      objLinks.on("click", function(event){
615        
616        var objLink = jQuery(this);
617        
618        closeNavOnAnchorLinkClick(objLink, event);
619        
620      });
621      
622    }
623
624    setTimeout(checkUrl,500);
625
626    objButtonClose.on("click", closeNav);
627    
628    g_objButtonToggle.on("click", onButtonToggleClick);
629    
630    if(isCloseOnBody === true){
631      
632      var objOverlay = g_menuWrapper.find(".ue_side_menu_overlay");
633      
634      if(objOverlay.length)
635      objOverlay.on("click", closeNav);
636      else{
637        g_menuWrapper.on("click", onMenuBodyClick);
638        g_objButtonToggle.on("click", onMenuBodyClick);
639        
640        jQuery("body").on("click", onBodyClick);
641      }			
642      
643    }
644    
645    if(g_isOpenOnLoad === true){
646      g_objButtonToggle.trigger("click");
647    }
648  }
649  
650  runMenu();
651  
652}
653

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.