PageSourceSearch

https://bj.org/wp-content/themes/defaultTheme/js/bundle.js?ver=1790360754

js bj.org collected 2026-10-02 05:02:08 UTC 17,380 bytes, 530 lines download raw bytes

1(function ($) {
2  // ========================================================== //
3  // ====== SPECIFIC TO MOBILE NAV OPEN AND CLOSE STATE ======= //
4  // ========================================================== //
5  $("#js-menu-toggle").click(function () {
6    $("#js-icn-menu").toggleClass("open"),
7      $("#js-menu-slide").toggleClass("show");
8    $("#js-menu-toggle").toggleClass("show");
9    $(document.body).toggleClass("menu--open");
10  });
11
12  $("#js-toggle-dd1").on("click", function (e) {
13    $("#js-toggle-dd2, #js-toggle-dd3, #js-toggle-dd4").removeClass("active");
14    $(this).toggleClass("active");
15    $(".dn-dd2, .dn-dd3, .dn-dd4").removeClass("open");
16    $(".dn-dd1").toggleClass("open");
17  });
18
19  $("#js-toggle-dd2").on("click", function (e) {
20    $("#js-toggle-dd1, #js-toggle-dd3, #js-toggle-dd4").removeClass("active");
21    $(this).toggleClass("active");
22    $(".dn-dd1, .dn-dd3, .dn-dd4").removeClass("open");
23    $(".dn-dd2").toggleClass("open");
24  });
25
26  $("#js-toggle-dd3").on("click", function (e) {
27    $("#js-toggle-dd1, #js-toggle-dd2, #js-toggle-dd4").removeClass("active");
28    $(this).toggleClass("active");
29    $(".dn-dd1, .dn-dd2, .dn-dd4").removeClass("open");
30    $(".dn-dd3").toggleClass("open");
31  });
32
33  $("#js-toggle-dd4").on("click", function (e) {
34    $("#js-toggle-dd1, #js-toggle-dd2, #js-toggle-dd3").removeClass("active");
35    $(this).toggleClass("active");
36    $(".dn-dd1, .dn-dd2, .dn-dd3").removeClass("open");
37    $(".dn-dd4").toggleClass("open");
38  });
39
40  const project = {
41    toggleMobileHeader() {
42      const ham = document.getElementById("ham");
43      ham.addEventListener("click", function () {
44        this.classList.toggle("open");
45        document.body.classList.toggle("nav-is-toggled");
46        document.querySelector(".search-field").value = "";
47        document.querySelector(".search-field").classList.remove("input_big");
48        document
49          .querySelector(".site-header")
50          .classList.remove("header_input_big");
51        document.querySelector(".cross-btn").style.display =
52          document.querySelector(".cross-btn").style.display == "none"
53            ? ""
54            : "none";
55      });
56
57      const backLink = `<a class="nav-back-link" href="javascript:;">Back</a>`;
58      ham.insertAdjacentHTML("beforeBegin", backLink);
59
60      const navExpand = [].slice.call(
61        document.querySelectorAll(".menu-item-has-children")
62      );
63      navExpand.forEach((item) => {
64        let subMenuTitle = item.closest("li").firstElementChild.innerHTML;
65        subMenuTitle =
66          `<li class="menu-item sub-menu-title">` + subMenuTitle + `</li>`;
67        item
68          .querySelector(".sub-menu")
69          .insertAdjacentHTML("beforeend", subMenuTitle);
70
71        item
72          .querySelector(".menu-item>a")
73          .addEventListener("click", function (event) {
74            event.preventDefault();
75            let isActive = item.classList.contains("active");
76            if (document.querySelector(".menu-item-has-children.active")) {
77              document
78                .querySelector(".menu-item-has-children.active")
79                .classList.remove("active");
80            }
81            if (!isActive) {
82              item.classList.add("active");
83            }
84            document.querySelector(".nav-back-link").classList.add("active");
85          });
86
87        document
88          .querySelector(".nav-back-link")
89          .addEventListener("click", function () {
90            item.classList.remove("active");
91            document.querySelector(".nav-back-link").classList.remove("active");
92          });
93
94        ham.addEventListener("click", function () {
95          item.classList.remove("active");
96          document.querySelector(".nav-back-link").classList.remove("active");
97        });
98      });
99
100      document
101        .querySelector(".site-content")
102        .addEventListener("click", function () {
103          if (document.querySelector(".menu-item-has-children.active")) {
104            document
105              .querySelector(".menu-item-has-children.active")
106              .classList.remove("active");
107          }
108          if (document.querySelector(".site-header.header_input_big")) {
109            document
110              .querySelector(".site-header.header_input_big")
111              .classList.remove("header_input_big");
112          }
113          if (document.querySelector(".search-field.input_big")) {
114            document
115              .querySelector(".search-field.input_big")
116              .classList.remove("input_big");
117            document.querySelector(".search-field").value = "";
118          }
119          document.getElementById("ham").classList.remove("open");
120          document.querySelector(".cross-btn").style.display = "";
121          document.body.classList.remove("nav-is-toggled");
122          document.querySelector(".nav-back-link").classList.remove("active");
123        });
124    },
125    toggleHeaderSearch() {
126      var executeHeaderSearch = true;
127      $(document).on("click", ".header-search .search-field", function () {
128        if (executeHeaderSearch) {
129          $(this).addClass("input_big");
130          $(".site-header").addClass("header_input_big");
131        }
132        executeHeaderSearch = true;
133      });
134      $(document).on("click", ".header-search .cross-btn", function () {
135        $(".search-field").val("");
136        $(".search-field").toggleClass("input_big");
137        $(".site-header").toggleClass("header_input_big");
138        executeHeaderSearch = false;
139      });
140    },
141    toggleAlertBar() {
142      if ($(".header-alert").length) {
143        let hideAlertBar = document.cookie.match(
144          new RegExp(
145            "(?:^|; )" +
146              "hideAlertBar".replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") +
147              "=([^;]*)"
148          )
149        );
150        hideAlertBar = hideAlertBar
151          ? decodeURIComponent(hideAlertBar[1])
152          : "nope";
153        if (hideAlertBar == "active") {
154          $(".header-alert").removeClass("show-alert");
155        }
156        $(".close-bar-button").on("click", function () {
157          $(".header-alert").removeClass("show-alert");
158          let dateExpires = new Date(Date.now() + 86400e3);
159          dateExpires = dateExpires.toUTCString();
160          document.cookie =
161            "hideAlertBar=active; path=/; expires=" + dateExpires;
162        });
163      }
164    },
165    toggleHeaderFixed() {
166      $(window).on("scroll", function () {
167        if ($(window).width() > 991) {
168          if ($(this).scrollTop() > 80) {
169            $(".site-header").addClass("fixed-me");
170          } else {
171            $(".site-header").removeClass("fixed-me");
172          }
173        }
174      });
175    },
176    toggleAccordion() {
177      $("#js-menu-slide .single-accordion .single-accordion__title").on("click", function () {
178        let thisAccord = $(this).parent('.single-accordion');
179        let isOpened = thisAccord.hasClass("active");
180        let heightActive = $(".single-accordion.active").height();
181        $("#js-menu-slide .single-accordion").removeClass("active");
182        $("#js-menu-slide .single-accordion__content").slideUp();
183        if (!isOpened) {
184          thisAccord.addClass("active");
185          $(".single-accordion__content", thisAccord).slideDown();
186        }
187      });
188
189      $(".single-accordion .single-accordion__title").not("#js-menu-slide .single-accordion .single-accordion__title").on("click", function () {
190        let thisAccord = $(this).parent('.single-accordion');
191        let isOpened = thisAccord.hasClass("active");
192        thisAccord.toggleClass("active", !isOpened);
193        $(".single-accordion__content", thisAccord).slideToggle();
194      });
195    },
196    tabsSwitcher() {
197      if ($(".block-tabs").length) {
198        $(".tabs__link-single a").on("click", function (event) {
199          event.preventDefault();
200
201          $(".tabs__link-single").removeClass("active");
202          $(this).parents("li").addClass("active");
203
204          let tabContent = $(this).attr("href");
205          $(".tabs__tab-content").removeClass("active");
206          $(".tabs__tab-content").each(function (index, item) {
207            if ($(this).data("tab-id") == tabContent) {
208              $(this).addClass("active");
209            }
210          });
211
212          return false;
213        });
214
215        $(".block-tabs").on(
216          "click",
217          "button.tabs-nav-prev, button.tabs-nav-next",
218          function (event) {
219            event.preventDefault();
220
221            if ($(this).hasClass("tabs-nav-next")) {
222              $tabsLinkNeighbour = $(".tabs__link-single.active").next();
223              if ($tabsLinkNeighbour.length) {
224                $tabsLinkNeighbour.children("a").trigger("click");
225              } else {
226                $(".tabs__link-single:first-of-type")
227                  .children("a")
228                  .trigger("click");
229              }
230            } else if ($(this).hasClass("tabs-nav-prev")) {
231              $tabsLinkNeighbour = $(".tabs__link-single.active").prev();
232              if ($tabsLinkNeighbour.length) {
233                $tabsLinkNeighbour.children("a").trigger("click");
234              } else {
235                $(".tabs__link-single:last-of-type")
236                  .children("a")
237                  .trigger("click");
238              }
239            }
240
241            return false;
242          }
243        );
244      }
245    },
246    checkAnchors: function () {
247      $("a").each(function () {
248        let attrLink = $(this).attr("href");
249        if (attrLink && attrLink.length > "#" && attrLink.indexOf("#") == 0) {
250          $(this).on("click", function (event) {
251            event.preventDefault();
252            $("html, body").animate(
253              {
254                scrollTop: $(attrLink).offset().top - 150,
255              },
256              1000
257            );
258
259            return false;
260          });
261        }
262      });
263    },
264    checkAnchorsOnLoad: function () {
265      window.setTimeout(() => {
266        const link = window.location.href;
267        const headerElement = $(".site-header");
268        let id;
269        let stickyOffHeight = 16;
270
271        if (headerElement.hasClass("fixed-me")) {
272          stickyOffHeight += headerElement.outerHeight();
273        }
274
275        if (link.indexOf("#") > -1) {
276          id = link.substring(link.lastIndexOf("#") + 1);
277        }
278        if (id) {
279          const distance =
280            document.querySelector(`#${id}`).getBoundingClientRect().top +
281            window.pageYOffset;
282          $("html, body").animate(
283            {
284              scrollTop: distance - stickyOffHeight,
285            },
286            1000
287          );
288        }
289      }, 500);
290    },
291    sliders() {
292      $(".slider-dafault").slick({
293        dots: false,
294        infinite: true,
295        autoplay: true,
296        speed: 300,
297        slidesToShow: 1,
298        slidesToScroll: 1,
299        centerMode: true,
300        arrows: true,
301        variableWidth: true,
302        respondTo: "slider",
303      });
304      $(".slider-events").slick({
305        dots: false,
306        infinite: true,
307        autoplay: true,
308        speed: 300,
309        slidesToScroll: 1,
310        centerMode: false,
311        arrows: true,
312        variableWidth: true,
313      });
314      $(".slider-programs-events").slick({
315        dots: false,
316        infinite: false,
317        autoplay: false,
318        speed: 300,
319        slidesToShow: 3,
320        slidesToScroll: 1,
321        centerMode: false,
322        arrows: true,
323        variableWidth: true,
324        responsive: [
325          {
326            breakpoint: 992,
327            settings: {
328              slidesToShow: 2,
329            },
330          },
331          {
332            breakpoint: 768,
333            settings: {
334              slidesToShow: 1,
335            },
336          },
337        ],
338      });
339      $(".slider-people").slick({
340        dots: false,
341        infinite: true,
342        autoplay: true,
343        speed: 300,
344        slidesToShow: 3,
345        slidesToScroll: 1,
346        centerMode: true,
347        arrows: true,
348        variableWidth: false,
349        respondTo: "slider",
350        responsive: [
351          {
352            breakpoint: 991,
353            settings: {
354              slidesToShow: 3,
355            },
356          },
357          {
358            breakpoint: 767,
359            settings: {
360              slidesToShow: 1,
361            },
362          },
363        ],
364      });
365      $(".slider-testimonials").slick({
366        dots: false,
367        infinite: true,
368        autoplay: true,
369        speed: 300,
370        slidesToShow: 1,
371        slidesToScroll: 1,
372        centerMode: false,
373        arrows: true,
374        variableWidth: false,
375        respondTo: "slider",
376      });
377      $(".slider-voice-community").slick({
378        dots: false,
379        infinite: true,
380        autoplay: true,
381        speed: 300,
382        slidesToShow: 1,
383        slidesToScroll: 1,
384        centerMode: false,
385        arrows: true,
386        variableWidth: false,
387        respondTo: "slider",
388      });
389    },
390
391    // Stores left offset of nav elements for use in CSS
392    menuAligner() {
393      const menuContainer = document.querySelector(".global-nav-container");
394      if (menuContainer) {
395        const items = menuContainer.querySelectorAll(
396            ".desktop-nav > div > .nav-item"
397        );
398
399        const storeElementLeftOffset = (element) => {
400          // Get left offset of nav item
401          let {left} = element.getBoundingClientRect();
402
403          // Store left offset tot CSS variable
404          element.style.setProperty("--nav-item-left", `${left}px`);
405        };
406
407        items.forEach((navItem) => {
408          // Trigger on interation as well
409          // so it's still aligned correctly in the case of a resize/rotation
410          navItem.addEventListener("mouseenter", (event) => {
411            storeElementLeftOffset(navItem);
412          });
413          // Trigger for initial page load
414          storeElementLeftOffset(navItem);
415        });
416      }
417    },
418
419    setCSSVariables() {
420      const setCSSVariables = () => {
421        const navContainer = document.querySelector(".global-nav-container");
422        const siteHeader = document.querySelector(".site-header");
423
424        const contentContainer = document.querySelector(
425          ".site-content section, .post-list-heading"
426        );
427        let pageGutterWidth = 0;
428        let navGutterWidth = 0;
429
430        if (navContainer) {
431          navGutterWidth = (window.innerWidth - navContainer.offsetWidth) / 2;
432          document.documentElement.style.setProperty(
433            "--nav-gutter-width",
434            navGutterWidth + "px"
435          );
436        }
437        if (contentContainer) {
438          pageGutterWidth =
439            (window.innerWidth - contentContainer.offsetWidth) / 2;
440          document.documentElement.style.setProperty(
441            "--page-gutter-width",
442            pageGutterWidth + "px"
443          );
444        }
445        if (siteHeader) {
446          const headerHeight = siteHeader.offsetHeight;
447
448          document.documentElement.style.setProperty(
449            "--header-height",
450            `${headerHeight}px`
451          );
452        }
453      };
454      window.addEventListener("resize", setCSSVariables);
455      setCSSVariables();
456    },
457
458    init() {
459      //this.toggleMobileHeader();
460      //this.toggleHeaderSearch();
461      //this.toggleAlertBar();
462      //this.toggleHeaderFixed();
463      this.toggleAccordion();
464      this.tabsSwitcher();
465      // 			//this.checkAnchors();
466      // 			//this.checkAnchorsOnLoad();
467      this.sliders();
468      this.menuAligner();
469      this.setCSSVariables();
470    },
471  };
472
473  window.addEventListener("DOMContentLoaded", project.init());
474
475
476
477
478})(jQuery);
479
480// Give page Iframe change listener
481document.addEventListener('DOMContentLoaded', function() {
482    let elementToObserve = document.getElementById('giveIframe');
483    let resizeObserver;
484
485    if (elementToObserve) {
486        let scrollListener = () => {
487            if (!resizeObserver) {
488                resizeObserver = new ResizeObserver(() => {
489                    // Scroll element into view
490                    let scrollElement = document.getElementById('iFrameResizer0');
491                    if (scrollElement) {
492                        scrollElement.scrollIntoView({behavior: 'smooth'});
493                    } else {
494                        console.log('Cannot find element for Givebutter Iframe. Did embed code change?');
495                    }
496                });
497
498                resizeObserver.observe(elementToObserve);
499                window.removeEventListener('scroll', scrollListener); // Remove scroll listener after activation
500            }
501        };
502        window.addEventListener('scroll', scrollListener);
503    }
504});
505
506// We need to dynamically set the content top margin depending on the height of the header to accommodate optional alert.
507// Get the header height
508const siteHeader = document.querySelector('.site-header');
509// get the site content element
510const siteContent = document.querySelector('.site-content');
511
512function setMarginTop() {
513  if (siteHeader) {
514    const headerHeight = siteHeader.offsetHeight;
515    if (headerHeight > 0 && siteContent) {
516      siteContent.style.marginTop = `${headerHeight}px`;
517      siteContent.style.paddingTop = `0px`;
518    }
519  }
520}
521
522if (siteHeader) {
523  // Run the function on page load
524  setMarginTop();
525  // Create a Resize Observer instance
526  const resizeObserver = new ResizeObserver(setMarginTop);
527  // Observe changes to the header element
528
529  resizeObserver.observe(siteHeader);
530}

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.