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.