PageSourceSearch

https://www.sandimashigh.com/scripts/main-navigation.js

js sandimashigh.com collected 2026-10-02 08:10:49 UTC 36,339 bytes, 803 lines download raw bytes

1// ==========================================================================
2// 2025-11-25
3// ==========================================================================
4
5const internalNumberOfDropdownNavItems = {
6  '1440': typeof numberOfDropdownNavItemsXl === 'undefined' ? 3 : numberOfDropdownNavItemsXl,
7  '1500': typeof numberOfDropdownNavItemsXxl === 'undefined' ? 4 : numberOfDropdownNavItemsXxl
8}
9
10if (!navigationType) {
11  console.log('Navigation Type is not selected');
12}
13
14if (!mobileNavigationType) {
15  console.log('Mobile Navigation Type is not selected');
16}
17
18const CheckMobile = (sizeToCheck = 992, useSizeToCheckParameter = false) => {
19
20  if (!useSizeToCheckParameter) {
21    switch (mobileNavigationExpandSize) {
22      case mobileNavigationExpandSizes.None:
23        sizeToCheck = 0;
24        break;
25      case mobileNavigationExpandSizes.Small:
26        sizeToCheck = 556;
27        break;
28      case mobileNavigationExpandSizes.Medium:
29        sizeToCheck = 748;
30        break;
31      case mobileNavigationExpandSizes.Large:
32        sizeToCheck = 992;
33        break;
34      case mobileNavigationExpandSizes.ExtraLarge:
35        sizeToCheck = 1200;
36        break;
37      case mobileNavigationExpandSizes.ExtraExtraLarge:
38        sizeToCheck = 1400;
39        break;
40
41      default:
42        break;
43    }
44  }
45
46  return $(window).width() < sizeToCheck;
47}
48
49
50// Quick change expand to lg for testing
51$('.navbar.navbar-expand-md').removeClass('navbar-expand-md').addClass(`navbar-expand-${mobileNavigationExpandSize}`);
52
53let didThePrependAppend = false;
54
55const offCanvasToggle = `<button class="navbar-toggler d-inline-flex d-${mobileNavigationExpandSize}-none mobile-nav-toggle" type="button" data-bs-toggle="offcanvas" data-bs-target="#mainNavigation" aria-controls="mainNavigation" aria-expanded="false" aria-label="Toggle navigation">
56                                        <div class="mobile-nav-toggle-icon"><span class="navbar-toggler-icon"><div></div></span></div>
57                                    </button>`;
58
59const mobileSearchBar = `<div id="mobileSearchBar" class="search-bar d-block d-lg-none">
60  <form action="Site-Search/index.html" method="get">
61    <label class="site-search-label">
62      <span class="ada">Search</span>
63      <input id="siteSearchInput" name="search_string" type="text" value="Search" placeholder="Search" onclick="if (this.value == 'Search') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search';}">
64    </label>
65    <button class="mobile-search-submit-button" type="submit" onclick="forms.freedom_search_form.referring_page_url.value=location.href;forms.freedom_search_form.submit();" value="Search Site" alt="Search"><i class="fa fa-search" aria-hidden="true"></i><span class="ada">Submit</span></button>
66  </form>
67</div>`;
68
69function MobileNavInHeader() {
70  if (!separateMobileNav) {
71    navigationType === navigationTypes.UnderHeader ? $('.top-bar-logo-container').after(offCanvasToggle) : $('.navigation').after(offCanvasToggle);
72    $('.navigation .navbar-toggler').hide();
73  }
74  $('.navigation .offcanvas > .offcanvas-body').prepend(mobileSearchBar);
75}
76
77function MobilePlacement() {
78  // $('.top-bar-grid').on('init', function (slick) {
79  if (CheckMobile()) {
80    const subpageOffCanvasHeaderHeight = $('.offcanvas-header.subpage-offcanvas-header').height();
81    const subpageOffCanvasHeaderDifference = subpageOffCanvasHeaderHeight / 2;
82    const subpageOffCanvasHeaderPadding = ($('.navbar-toggler').position().top + ($('.navbar-toggler').outerHeight() / 2)) - subpageOffCanvasHeaderDifference;
83    $('.offcanvas-header.subpage-offcanvas-header').css('padding-top', subpageOffCanvasHeaderPadding);
84    $('.navigation > .navbar > .offcanvas > .offcanvas-body').css('padding-top', $('.top-bar-header').outerHeight());
85  }
86  // });
87
88  // $('.top-bar-grid').on('destroy', function (slick) {
89  else {
90    $('.navigation > .navbar > .offcanvas > .offcanvas-body').css('padding-top', '');
91  }
92  // });
93
94}
95
96function CheckSeparateMobileNav() {
97  if (!separateMobileNav && CheckMobile()) {
98    $('.navigation').css('height', '0');
99    $('.top-bar-title-wrapper').addClass('hamburger-nav-padding');
100  }
101  else {
102    $('.navigation').css('height', '');
103    $('.top-bar-title-wrapper').removeClass('hamburger-nav-padding');
104  }
105}
106
107const offCanvasHeader = `<div class="offcanvas-header main-offcanvas-header">
108                              <!-- <h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5> -->
109                              <!-- <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> -->
110                           </div>`;
111$('.navbar .navbar-toggler').attr('data-bs-toggle', 'offcanvas');
112$('#mainNavigation').removeClass('collapse navbar-collapse').addClass(`offcanvas ${mobileOffCanvasNavigationSide}`).attr('data-bs-backdrop', 'false');
113$('#mainNavigation > .navbar-nav').wrap('<div class="offcanvas-body" />');
114
115function OffCanvasMobileNav() {
116
117  if (mobileNavigationType === mobileNavigationTypes.OffCanvas && CheckMobile()) {
118    $('#mainNavigation .nav-item >
118 i:not(.more-dropdown-ellipsis)').addClass('mobile-dropdown-arrow');
119    const allDropdownToggles = $('.mobile-dropdown-arrow');
120    const subOffCanvasHeader = `<div class="offcanvas-header subpage-offcanvas-header">
121                              <!-- <h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5> -->
122                              <button type="button" class="text-reset mobile-nav-off-canvas-back-button" data-bs-dismiss="offcanvas" aria-label="Back"><i class="fa-thin fa-angle-left"></i></button>
123                           </div>`;
124
125    if (!didThePrependAppend) {
126      $('#mainNavigation .dropdown-menu').addClass(`offcanvas ${mobileOffCanvasNavigationSide}`).attr('data-bs-backdrop', 'false').removeClass('dropdown-menu').prepend(subOffCanvasHeader);
127    }
128
129    else {
130      $('#mainNavigation .dropdown-menu').addClass(`offcanvas ${mobileOffCanvasNavigationSide}`).attr('data-bs-backdrop', 'false').removeClass('dropdown-menu');
131    }
132
133	try {
134		$('.mobile-dropdown-arrow').attr('tabindex', '0');
135	} catch(error) {
136		console.log(error)
137	}
138
139    $('.subpage-offcanvas-header').each(function (index) {
140      const linkText = $(this).parent('.mobile-dropdown').siblings('a').text();
141      if (!didThePrependAppend) {
142        $(this).append(`<div class="subpage-offcanvas-header-link-text">${linkText}</div>`);
143      }
144
145    });
146
147    $(allDropdownToggles).each(function (index) {
148      $(this).attr('offcanvas-target', `offcanvas-toggle-${index}`);
149      $(this).parent('a').siblings('.mobile-dropdown').attr('id', `offcanvas-toggle-${index}`);
150      $(this).siblings('.mobile-dropdown').attr('id', `offcanvas-toggle-${index}`);
151    });
152
153	$('.mobile-dropdown-arrow').on('click keydown', function (event) {
154	  if (event.type === 'click' || (event.type === 'keydown' && event.key === 'Enter')) {
155		try {
156		  if (event.type === 'click') {
157			event.preventDefault();
158		  }
159		  
160		  if (event.type === 'keydown') {
161			if (event.key !== 'Enter') {
162			  return;
163			}
164		  }
165
166		  const thisTarget = $(this).attr('offcanvas-target');
167		  const myOffcanvas = document.getElementById(thisTarget);
168		  const bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas);
169		  bsOffcanvas.show();
170
171		} catch (error) {
172		  console.log(error);
173		}
174	  }
175	});
176
177    didThePrependAppend = true;
178  }
179  else {
180    $(`.offcanvas .${mobileOffCanvasNavigationSide}`).removeClass(`offcanvas ${mobileOffCanvasNavigationSide}`).attr('data-bs-backdrop', '');
181    $('#mainNavigation .more-dropdown > ul').addClass('dropdown-menu');
182    $('#mainNavigation .nav-link > i').removeClass('mobile-dropdown-arrow');
183  }
184}
185
186function NavigationSocialLinks() {
187  const facebookLink = $('.navigation-social .social-facebook')[0].dataset.navigationSocial?.trim();
188  const twitterLink = $('.navigation-social .social-twitter')[0].dataset.navigationSocial?.trim();
189  const instagramLink = $('.navigation-social .social-instagram')[0].dataset.navigationSocial?.trim();
190  const linkedInLink = $('.navigation-social .social-linkedin')[0].dataset.navigationSocial?.trim();
191  const youtubeLink = $('.navigation-social .social-youtube')[0].dataset.navigationSocial?.trim();
192
193  const parallelogramFooterLinks = $('.parallelogram-footer-link');
194  let socialLinksObject = {};
195  const socialWebsites = ['facebook', 'twitter', 'instagram', 'linkedin', 'youtube'];
196
197  $(parallelogramFooterLinks).each(function (index) {
198    let thisLinksHREF = $(this).attr('href').trim();
199
200    for (let i = 0; i < socialWebsites.length; i++) {
201      if (thisLinksHREF.includes(socialWebsites[i])) {
202        socialLinksObject[socialWebsites[i]] = thisLinksHREF;
203      }
204    }
205  });
206
207  const socialLinks = `<a class="navigation-social-link" href="${socialLinksObject.facebook || facebookLink}" target="_blank"><span class="ada">Facebook</span><i class="fa-brands fa-facebook-square"></i></a>
208                         <a class="navigation-social-link" href="${socialLinksObject.twitter || twitterLink}" target="_blank"><span class="ada">Twitter</span><i class="fa-brands fa-square-x-twitter"></i></a>
209                         <a class="navigation-social-link" href="${socialLinksObject.instagram || instagramLink}" target="_blank"><span class="ada">Instagram</span><i class="fa-brands fa-instagram"></i></a>
210                         <a class="navigation-social-link" href="${socialLinksObject.linkedin || linkedInLink}" target="_blank"><span class="ada">Linked In</span><i class="fa-brands fa-linkedin-in"></i></a>
211                         <a class="navigation-social-link" href="${socialLinksObject.youtube || youtubeLink}" target="_blank"><span class="ada">Youtube</span><i class="fa-brands fa-youtube"></i></a>`;
212
213  const desktopSocial = `<li class="inside-more-dropdown more-dropdown-social d-none d-lg-block"><div class="more-dropdown-social-text">CONNECT WITH US</div>${socialLinks}</li>`;
214  const mobileSocial = `<li class="mobile-navigation-social d-block d-lg-none">${socialLinks}</li>`;
215
216  $('.navbar .navbar-nav').append(mobileSocial)
217  $('.more-dropdown .dropdown-menu').append(desktopSocial);
218
219  const navigationSocialLinks = $('.navigation-social-link');
220  let navigationSocialLinksExist = false;
221  $(navigationSocialLinks).each(function (index) {
222    const currentHref = $(this).attr('href');
223    if (currentHref && currentHref !== 'undefined') {
224      navigationSocialLinksExist = true;
225    }
226  });
227
228  navigationSocialLinksExist || $('.more-dropdown-social-text').hide();
229}
230
231const navItemsWithDropdowns = $('.navbar-nav .dropdown-menu').parent('.nav-item');
232const firstLevelNavItems = $('.navbar-nav > .nav-item');
233const firstLevelDropdowns = $(firstLevelNavItems).children('.dropdown-menu');
234const secondLevelDropdowns = $(firstLevelDropdowns).find('> li > .dropdown-menu');
235const thirdLevelDropdowns = $(secondLevelDropdowns).find('> li > .dropdown-menu');
236const fourthLevelDropdowns = $(thirdLevelDropdowns).find('> li > .dropdown-menu');
237$(navItemsWithDropdowns).addClass('dropdown');
238$(navItemsWithDropdowns).find('> .nav-link').addClass('dropdown-toggle').attr('data-bs-toggle', 'dropdown').attr('data-bs-auto-close', 'outside');
239$(firstLevelNavItems).addClass('first-level-nav-item');
240$(firstLevelDropdowns).addClass('first-level-dropdown');
241$(secondLevelDropdowns).addClass('second-level-dropdown');
242$(thirdLevelDropdowns).addClass('third-level-dropdown');
243$(fourthLevelDropdowns).addClass('fourth-level-dropdown');
244
245try {
246  $(firstLevelNavItems).each(function (index) {
247    let thisNavItemsHREF = $(this).children('a.nav-link').attr('href');
248
249    if (thisNavItemsHREF === 'index.html') {
250      $(this).addClass('nav-home-link');
251
252      if (!showHome) {
253        $(this).addClass('hide-home-link');
254        numberOfTopNavItems++;
255      }
256
257      return false;
258    }
259  });
260
261  let navLinkWidths = 0;
262  let navWidth = $('.navigation').innerWidth() - 100;
263  const navItemPadding = CheckMobile(1200, true) ? 30 : 64;
264
265  if (autoNavWidth && CheckMobile(1700, true) && $(window).width() > 992) {
266    $(firstLevelNavItems).each(function (index) {
267      let currentNavLinksWidth = $(this).innerWidth() + navItemPadding;
268      if ($(this).find('.second-level-dropdown')) {
269        currentNavLinksWidth += 30;
270      }
271
272      navLinkWidths += currentNavLinksWidth;
273      if (navLinkWidths >= navWidth) {
274        numberOfTopNavItems = index;
275        return false;
276      }
277    });
278  }
279
280  if (useMoreDropdown && firstLevelNavItems.length > numberOfTopNavItems || allowSingleMoreDropdownLink) {
281    $(firstLevelNavItems).each(function (index) {
282      if (index < numberOfTopNavItems - 1) {
283        $(this).addClass(`top-level-nav`);
284      }
285      else {
286        $(this).addClass('inside-more-dropdown').removeClass('nav-item first-level-nav-item');
287        $(this).children('a').removeClass('nav-link dropdown-toggle').addClass('dropdown-item').attr('data-bs-toggle', '');
288      }
289    });
290
291    $('.inside-more-dropdown').wrapAll('<li class="nav-item dropdown more-dropdown top-level-nav"><ul class="dropdown-menu"></ul></li>');
292    if (CheckMobile()) {
293      $('.more-dropdown ul').addClass('first-level-dropdown');
294    }
295    else {
296      $('.more-dropdown ul').removeClass('first-level-dropdown');
297    }
298
299    $('.more-dropdown').prepend('<a class="nav-link dropdown-toggle more-dropdown-toggle" href="javascript:void(0);" target="_self" data-bs-toggle="dropdown">More<i class="fa-regular fa-ellipsis-vertical more-dropdown-ellipsis"></i></a>');
300  }
301
302  else {
303    $(firstLevelNavItems).each(function (index) {
304      $(this).addClass(`top-level-nav`);
305    });
306  }
307
308  $('.first-level-dropdown').each(function (index) {
309    let hasSecondLevel = false;
310    const secondLevelsToCheck = $(this).children('li');
311    const navImagesInThisDropdown = $(this).find('.dropdown-item[data-featured-photo]').filter(function (index) {
312      return $(this).attr('data-featured-photo').trim().length;
313    });
314    $(secondLevelsToCheck).each(function (index) {
315      if (($(this).find('.second-level-dropdown').length > 0 && index < numberOfDropdownNavItems - 1) || navImagesInThisDropdown.length > 1) {
316        hasSecondLevel = true;
317      }
318    });
319    if (!hasSecondLevel && !twoLevelNav) {
320      $(this).addClass('no-second-level');
321      $(this).find('.second-level-dropdown').hide();
322    }
323
324    else if (twoLevelNav) {
325      $(this).addClass('no-second-level');
326      $(this).find('.second-level-dropdown').addClass('d-lg-none');
327    }
328  });
329
330  if (!useTopLevelNavDividers) {
331    $('.navigation .navbar .navbar-nav').addClass('no-dividers');
332  }
333}
334
335catch (error) {
336  console.log(error);
337}
338
339function MorePagesInDropdowns(numberOfDropdownNavItems) {
340  if (useMoreInDropdowns && !CheckMobile()) {
341    $(firstLevelDropdowns).each(function (index) {
342      const thisDropdownsSubPages = $(this).find('> li');
343      const hasSecondLevelDropdowns = !$(this).hasClass('no-second-level');
344      if ($(thisDropdownsSubPages).length > numberOfDropdownNavItems + 1 && hasSecondLevelDropdowns) {
345        $(thisDropdownsSubPages).each(function (index) {
346          if (index > numberOfDropdownNavItems - 1) {
347            $(this).clone().appendTo($(this).parents('.dropdown-menu')).addClass('cloned-sub-page under-more-subpage').css('width', '').find('.second-level-dropdown').hide();
348            $(this).addClass('moved-under-more-pages').hide();
349          }
350        });
351        $(this).find('.under-more-subpage').wrapAll('<li class="more-subpages-container"><ul class="second-level-dropdown"></ul></li>');
352        $(this).find('.more-subpages-container').prepend('<span class="dropdown-item more-subpages-text">More Pages<i class="fa-regular fa-ellipsis-vertical more-subpages-ellipsis"></i></span>');
353      }
354    });
355  }
356}
357
358function responsiveMorePagesInDropdowns() {
359  const scrollbarWidth = (window.innerWidth - $(window).width());
360  $('.moved-under-more-pages').show().removeClass('moved-under-more-pages');
361  $('.more-subpages-container').remove();
362  switch (true) {
363    case $(window).width() < 1024 - scrollbarWidth:
364      break;
365    case $(window).width() < 1440 - scrollbarWidth:
366      MorePagesInDropdowns(internalNumberOfDropdownNavItems['1440']);
367      break;
368    case $(window).width() < 1500 - scrollbarWidth:
369      MorePagesInDropdowns(internalNumberOfDropdownNavItems['1500']);
370      break;
371    default:
372      MorePagesInDropdowns(numberOfDropdownNavItems);
373  }
374  $('.more-subpages-container .second-level-dropdown').addClass('fa-ul');
375  if (!$('.more-subpages-container > .second-level-dropdown > li').find('> span.fa-li').length) {
376    $('.more-subpages-container > .second-level-dropdown > li').prepend(`<span class="fa-li d-none d-${mobileNavigationExpandSize}-inline-block"><i class="fa-thin fa-angle-right"></i></span>`);
377  }
378}
379
380
381const firstLevelNavItemsWithDropdowns = $('.top-level-nav.dropdown > .dropdown-toggle').not('.more-dropdown-toggle');
382
383$(firstLevelNavItemsWithDropdowns).on('show.bs.dropdown', function (event) {
384  mobileNavigationType !== mobileNavigationTypes.OffCanvas || !CheckMobile() && $(this).find('> i').toggleClass('fa-angle-down fa-angle-up');
385});
386
387$(firstLevelNavItemsWithDropdowns).on('hide.bs.dropdown', function (event) {
388  mobileNavigationType !== mobileNavigationTypes.OffCanvas || !CheckMobile() && $(this).find('> i').toggleClass('fa-angle-down fa-angle-up');
389});
390
391// Mobile
392// Toggle the class mobile-nav-active when the mobile nav toggler is clicked
393function MobileNavIconToX() {
394  $('.navbar-toggler').click(function (event) {
395    try {
396      $('body').css('padding-right', '');
397      if ($(this).find('.navbar-toggler-icon').hasClass('mobile-nav-active')) {
398        $('.navigation .offcanvas').each(function () {
399          const thisOne = bootstrap.Offcanvas.getInstance(this);
400          thisOne?.hide();
401        });
402      }
403      mobileNavTogglerToX && $('.navbar-toggler-icon').toggleClass('mobile-nav-active');
404      $('.top-bar').addClass('offcanvas-nav-active');
405
406    } catch (error) {
407      console.log(error);
408    }
409  });
410}
411
412// Adds Font Awesome Bullets to nav items with dropdowns
413function FontAwesomeNavigationBullets() {
414  try {
415    const mobileDropdownArrow = '<i class="fa-thin fa-angle-right nav-link dropdown-toggle mobile-dropdown-arrow" data-bs-toggle="dropdown" data-bs-auto-close
415="outside"></i>';
416    $('.dropdown-menu.third-level-dropdown').parent('li').prepend(mobileDropdownArrow);
417    $('.dropdown-menu.fourth-level-dropdown').parent('li').prepend(mobileDropdownArrow);
418    $('.second-level-dropdown').addClass('fa-ul');
419    $('.second-level-dropdown > li').prepend(`<span class="fa-li d-none d-${mobileNavigationExpandSize}-inline-block"><i class="fa-thin fa-angle-right"></i></span>`);
420    $('.top-level-nav:not(".nav-home-link") > .nav-link').after(`<i class="fa-thin fa-angle-right d-${mobileNavigationExpandSize}-none"></i>`);
421    $('.top-level-nav:not(".nav-home-link"):not(".more-dropdown") > .nav-link').append(`<i class="fa-thin fa-angle-down d-none d-${mobileNavigationExpandSize}-inline-block"></i>`);
422    $('.dropdown-menu.second-level-dropdown').parent('li:not(".uses-nav-image")').prepend(mobileDropdownArrow);
423  }
424  catch (error) {
425    console.log('Navigation font awesome bullets did not work');
426  }
427}
428
429function FullWidthDropdownOffset() {
430  const firstLevelDropdowns = $('.first-level-dropdown:not(.no-second-level)');
431  const firstLevelDropdownPadding = ($(window).width() - parseInt($('.navigation.container').css('max-width'))) / 2;
432
433  if (CheckMobile()) {
434    $(firstLevelDropdowns).css('top', '');
435    $(firstLevelDropdowns).css('left', '');
436    $(firstLevelDropdowns).css('padding-left', '');
437    $(firstLevelDropdowns).css('padding-right', '');
438  }
439  else {
440    setTimeout(function () {
441      $(firstLevelDropdowns).css('display', 'flex');
442      const topBarHeaderHeight = $('.top-bar-header').height();
443      const topBarHeaderTopOffset = $('.top-bar-header').offset().top;
444      $(firstLevelDropdowns).offset({ top: topBarHeaderTopOffset + topBarHeaderHeight - 2, left: 0 });
445      firstLevelDropdownPadding > 0 ? $(firstLevelDropdowns).css('padding-left', firstLevelDropdownPadding) : $(firstLevelDropdowns).css('padding-left', '');
446      firstLevelDropdownPadding > 0 ? $(firstLevelDropdowns).css('padding-right', firstLevelDropdownPadding) : $(firstLevelDropdowns).css('padding-right', '');
447      $(firstLevelDropdowns).css('display', '');
448    }, 200);
449  }
450}
451
452function AddMobileDropdownArrow() {
453  if (CheckMobile()) {
454    $('.second-level-dropdown').parent('li').addClass('nav-item dropdown');
455    $('.third-level-dropdown').parent('li').addClass('nav-item dropdown');
456    $('.fourth-level-dropdown').parent('li').addClass('nav-item dropdown');
457  }
458  else {
459    $('.second-level-dropdown').parent('li').removeClass('nav-item dropdown');
460    $('.third-level-dropdown').parent('li').removeClass('nav-item dropdown');
461    $('.fourth-level-dropdown').parent('li').removeClass('nav-item dropdown');
462  }
463}
464
465function AddMobileDropdownClass() {
466  if (CheckMobile()) {
467    $('.more-dropdown ul').addClass('first-level-dropdown');
468    $('.first-level-dropdown').addClass('mobile-dropdown');
469    $('.second-level-dropdown').addClass('mobile-dropdown').addClass('dropdown-menu').show();
470    $('.third-level-dropdown').addClass('mobile-dropdown').show();
471    $('.fourth-level-dropdown').addClass('mobile-dropdown').show();
472    $('.top-level-nav:not(".nav-home-link") .nav-link').removeClass('dropdown-toggle').attr('data-bs-toggle', '');
473  }
474  else {
475    $('.more-dropdown .inside-more-dropdown .mobile-dropdown').css('display', 'none');
476    $('.more-dropdown ul').removeClass('first-level-dropdown mobile-dropdown');
477    $('.more-dropdown > ul').css('visibility', 'visible');
478    $('.first-level-dropdown').css('visibility', '');
479    $('.second-level-dropdown').css('visibility', '');
480    $('.third-level-dropdown').css('visibility', '');
481    $('.fourth-level-dropdown').css('visibility', '');
482    $('.first-level-dropdown').removeClass('mobile-dropdown').addClass('dropdown-menu');
483    $('.second-level-dropdown').removeClass('mobile-dropdown').removeClass('dropdown-menu');
484    $('.third-level-dropdown').removeClass('mobile-dropdown').addClass('dropdown-menu').hide();
485    $('.fourth-level-dropdown').removeClass('mobile-dropdown').addClass('dropdown-menu').hide();
486    $('.top-level-nav:not(".nav-home-link") .nav-link').each(function () {
487      if ($(this).parents('.first-level-nav-item').find('ul').length) {
488        $(this).addClass('dropdown-toggle').attr('data-bs-toggle', 'dropdown');
489      }
490    });
491
492  }
493}
494
495// Checks if stringToCheck has any slashes in it. If it does it adds <wbr> after each one and then wraps it all in a span.
496// If stringToCheck doesn't have any slashes it just wraps the string in a span
497function breakOnSlashes(stringToCheck) {
498  if (stringToCheck.includes("/") && (typeof breakSlashes === 'undefined' || breakSlashes)) {
499    const stringToCheckBreakSlashes = stringToCheck.replace(/\//g, '/<wbr>');
500    return `<span>${stringToCheckBreakSlashes}</span>`;
501  }
502  else {
503    return `<span>${stringToCheck}</span>`;
504  }
505}
506
507function LoadNavImages() {
508  const navItemsToCheck = $('.dropdown.first-level-nav-item');
509  let navItemsWithImagesCount = 1;
510  const navImageVisitText = "Visit Web Page"
511  $(navItemsToCheck).each(function (index) {
512    const secondLevelNavItems = $(this).children('.first-level-dropdown').children('li');
513    const allNavItemsToCheck = $(secondLevelNavItems).add($(this));
514    let counter = 0;
515    $(allNavItemsToCheck).each(function (index) {
516
517      const theCurrentItem = $(this);
518      try {
519        const currentLink = $(this).children('a');
520        const currentLinksHREF = $(currentLink).attr('href');
521        const currentLinksText = $(currentLink).text();
522        const currentLinksTextFirstSpace = currentLinksText.indexOf(' ');
523        let currentLinksFirstWord = currentLinksTextFirstSpace === -1 ? currentLinksText : currentLinksText.slice(0, currentLinksTextFirstSpace);
524        let currentLinksOtherWords = currentLinksTextFirstSpace === -1 ? '' : currentLinksText.slice(currentLinksTextFirstSpace + 1, currentLinksText.length);
525        const currentLinksFeaturedPhoto = $(currentLink).attr('data-featured-photo');
526        const currentLinksPageIconPath = $(currentLink).attr('data-page-icon');
527        const currentLinksPageIcon = currentLinksPageIconPath ? `<img src="${currentLinksPageIconPath}" class="page-icon" alt="...">` : `<i class="fa-thin fa-link-horizontal default-nav-icon"></i>`;
528        let currentLinksPageTagline = $(currentLink).attr('data-page-tagline');
529        const navImageDisplayClasses = showMobileNavImages ? '' : 'd-none d-md-block';
530        const navImageColorOverlayClass = index === 0 ? 'left' : 'right';
531        let topNavImageText = currentLinksPageTagline ? currentLinksText : currentLinksFirstWord;
532        currentLinksFirstWord = currentLinksFirstWord && breakOnSlashes(currentLinksFirstWord);
533        currentLinksOtherWords = currentLinksOtherWords && breakOnSlashes(currentLinksOtherWords);
534        topNavImageText = topNavImageText && breakOnSlashes(topNavImageText);
535        currentLinksPageTagline = currentLinksPageTagline && breakOnSlashes(currentLinksPageTagline);
536
537        if (currentLinksFeaturedPhoto) {
538          const currentLinksNewElement = `<a class="dropdown-item nav-image ${navImageDisplayClasses}" href="${currentLinksHREF}" target="_self"><div class="card navigation-image-${navItemsWithImagesCount} nav-image-color-${navImageColorOverlayClass}"><img src="${currentLinksFeaturedPhoto}" class="card-img-top" alt="..."><div class="card-body"><h5 class="card-title">${topNavImageText}${currentLinksPageIcon}</h5><p class="card-text">${currentLinksPageTagline || currentLinksOtherWords}</p><p class="card-text visit-website">${navImageVisitText}<i class="fa-thin fa-arrow-right-long"></i></p></div></div></a>`;
539
540          if ($(theCurrentItem).hasClass('first-level-nav-item')) {
541            const currentLinksNewElementWrapped = `<li class="uses-nav-image first-nav-image"><a class="dropdown-item nav-image ${navImageDisplayClasses}" href="${currentLinksHREF}" target="_self"><div class="card navigation-image-${navItemsWithImagesCount} nav-image-color-${navImageColorOverlayClass}"><img src="${currentLinksFeaturedPhoto}" class="card-img-top" alt="..."><div class="card-body"><h5 class="card-title">${topNavImageText}${currentLinksPageIcon}</h5><p class="card-text">${currentLinksPageTagline || currentLinksOtherWords}</p><p class="card-text visit-website">${navImageVisitText}<i class="fa-thin fa-arrow-right-long"></i></p></div></div></a></li>`;
542            $(theCurrentItem).children('.first-level-dropdown').prepend(currentLinksNewElementWrapped);
543          }
544          else {
545            $(theCurrentItem).prepend(currentLinksNewElement);
546
547            counter === 0 && $(theCurrentItem).addClass('first-nav-image');
548            if (showMobileNavImages) {
549              $(currentLink).addClass('d-none');
550            }
551            else {
552              $(currentLink).addClass('d-block d-md-none');
553            }
554          }
555          $(theCurrentItem).addClass('uses-nav-image');
556          $(currentLink).addClass(`uses-sub-page-nav-image-${navItemsWithImagesCount}`);
557          $(this).children('.current-page-nav-image').removeClass('current-page-nav-image').addClass(`sub-page-nav-image-${navItemsWithImagesCount} loaded-nav-image`).appendTo('.nav-images .sub-page-nav-images');
558          navItemsWithImagesCount++;
559          counter++;
560        }
561
562      }
563
564      catch (error) {
565        console.log(error);
566      }
567    });
568  });
569}
570
571function NoSubsSingleDropdown() {
572  $('.first-level-dropdown').each(function (index) {
573    if ($(this).find('.second-level-dropdown').length <= 0) {
574      $(this).addClass('no-second-level');
575    }
576  });
577}
578
579function FirstLevelDropdownItemWidths() {
580  const topLevelDropdowns = $('.first-level-dropdown').not('.no-second-level');
581  $(topLevelDropdowns).each(function (index) {
582    const dropdownItems = $(this).children('li:not(.moved-under-more-pages)');
583    const numberOfDropdownItems = $(dropdownItems).length;
584    const navImages = $(this).children('.uses-nav-image');
585    $(navImages).css('max-width', '25%');
586    const subWidth = 100 / (numberOfDropdownItems);
587    CheckMobile() ? $(dropdownItems).css('width', '') : $(dropdownItems).css('width', `${subWidth}%`);
588    if(CheckMobile(375, true)){
589      $(navImages).css('max-width', '90%');
590    }
591    else if(CheckMobile(425, true)){
592      $(navImages).css('max-width', '80%');
593    }
594    else if(CheckMobile(700, true)){
595      $(navImages).css('max-width', '60%');
596    }
597    else if(CheckMobile(992, true)){
598      $(navImages).css('max-width', '40%');
599    }
600  });
601}
602
603// Moves the topbar right side links into the nav when in mobile (< 992)
604let topBarLinksForNav = $('.top-bar-link');
605
606const topBarLinksForNavFiltered = $(topBarLinksForNav).filter(function (index) {
607  return $(this).find('.schools-dropdown').length <= 0 && $(this).find('.translate-dropdown').length <= 0;
608});
609
610function MoveTopBarLinksToNav() {
611  try {
612    if (typeof separateMobileNav !== 'undefined' && separateMobileNav) {
613      elementEmptyCheck($('.top-bar-link'), '992');
614
615      if (CheckMobile()) {
616        if ($(topBarLinksForNavFiltered).exists()) {
617          $('.navbar .container-fluid').append($(topBarLinksForNavFiltered));
618        }
619      }
620
621      else if ($(window).width() > 992) {
622        if ($(topBarLinksForNavFiltered).exists()) {
623          $('.top-bar-title-wrapper').after($(topBarLinksForNavFiltered));
624        }
625      }
626    }
627  }
628  catch (error) {
629    console.log('Top bar links to under banner did not work');
630  }
631}
632
633function NavImageColorOverlay() {
634  const navImageCards = $('.navbar .card');
635  $(navImageCards).each(function (index) {
636    if ($(this).css('background-color') == 'rgba(0, 0, 0, 0)') {
637      $(this).children('.card-img-top').css('opacity', '1');
638    }
639  });
640}
641
642function AddNavTopOnScroll() {
643  const topBar = $('.top-bar-header.home-page');
644  const header = $(topBar).parent('header');
645  const topBarHeader = $(topBar).add($(header));
646  $(topBarHeader).addClass('navTop');
647
648  $(window).scroll(function () {
649    if ($(window).scrollTop() >= 100) {
650      $(topBarHeader).removeClass('navTop');
651    }
652
653    else {
654      $(topBarHeader).addClass('navTop');
655    }
656  });
657}
658
659function NavTypeClasses() {
660  if (navigationType === navigationTypes.InsideHeader) {
661    if (typeof insideHeaderTransparency === 'undefined' || insideHeaderTransparency) {
662      AddNavTopOnScroll();
663    }
664    $('.navigation .navbar-nav').attr('id', 'navbarNav');
665    $('.navigation').addClass('inside-header-nav');
666    $('.top-bar-header').addClass('nav-inside');
667  }
668
669  if (navigationType === navigationTypes.ElkGrove) {
670    $('.navigation').addClass('elk-grove-nav');
671  }
672}
673
674function navGrid() {
675  if (navigationType === navigationTypes.InsideHeader) {
676    const gridTopBarLinks = $('.top-bar-grid .top-bar-logo-container').add('.top-bar-grid .top-bar-title-wrapper').add('.top-bar-grid .topbar-contrast-button').add('.top-bar-grid .top-bar-link');
677    const gridTopBarLinksFiltered = $(gridTopBarLinks).filter(function (index) {
678      return $(this).css('display') != 'none';
679    });
680    const numberOfTopBarLinks = gridTopBarLinksFiltered.length + 1;
681    document.getElementById("navbarNav").style.gridColumnEnd = numberOfTopBarLinks;
682  }
683}
684
685function addSlashBreaks() {
686  const allLinks = $('.navbar .first-level-dropdown li:not(.uses-nav-image) .dropdown-item');
687  $(allLinks).each(function () {
688    const newHtml = breakOnSlashes($(this).text());
689    $(this).html(newHtml);
690  });
691}
692
693function MoreDropdownPlacement() {
694  try {
695    if (typeof autoMoreDropdownPlacement === 'undefined' || autoMoreDropdownPlacement) {
696      const moreDropdown = $('.more-dropdown > .dropdown-menu');
697      const mobileMoreDropdown = $('.more-dropdown > .first-level-dropdown');
698      const scrollbarWidth = (window.innerWidth - $(window).width());
699      $(moreDropdown).show();
700      if (!CheckMobile()) {
701        const topbarHeaderBottomBorderWidth = parseInt($('.top-bar-header').css('border-bottom-width'));
702        const moreDropdownTopOffset = $('.navbar-nav').offset().top + ($('.navbar-nav').outerHeight() - topbarHeaderBottomBorderWidth);
703        $(moreDropdown).offset({ top: moreDropdownTopOffset });
704        placeElementAgainstWindowEdge($(moreDropdown), 'right', scrollbarWidth);
705        // TODO: Add what to change display to after placeElementAgainstWindowEdge like the other placement functions
706        $(moreDropdown).show();
707        const moreDropdownLeftOffset = $(window).width() - $(moreDropdown).offset().left;
708        $(moreDropdown).css('min-width', moreDropdownLeftOffset + scrollbarWidth);
709      }
710      else {
711        $(mobileMoreDropdown).removeClass('went-off-right');
712        $(moreDropdown).removeClass('more-auto-placement');
713        $(mobileMoreDropdown).css('left', '');
714        $(mobileMoreDropdown).css('top', '');
715        $(mobileMoreDropdown).css('min-width', '');
716      }
717      $(moreDropdown).css('display', '');
718    }
719
720  }
721
722  catch (error) {
723    console.log(error);
724  }
725}
726
727function lastSingleDropdownWidth() {
728  try {
729    const moreDropdown = $('.more-dropdown');
730    const lastNavItem = $('.first-level-nav-item').last();
731    const lastDropdown = $(lastNavItem).children('.first-level-dropdown.no-second-level');
732    $(lastDropdown).css({ left: '', width: '' });
733    $(lastDropdown).find('.dropdown-item').css('white-space', '');
734    if (!CheckMobile()) {
735      if ($(moreDropdown).length && $(lastDropdown).is(':off-right')) {
736        $(lastDropdown).css('width', $(lastDropdown).width() - getOffScreenAmount(lastDropdown));
737        $(lastDropdown).find('.dropdown-item').css('white-space', 'normal');
738      }
739      else if ($(lastDropdown).is(':off-right')) {
740        moveOffScreenElementBackOnScreen(lastDropdown);
741      }
742    }
743  }
744
745  catch (error) {
746    console.log(error);
747  }
748}
749
750$(document).ready(function () {
751  responsiveMorePagesInDropdowns();
752  FullWidthDropdownOffset();
753  NavTypeClasses();
754  // CheckSeparateMobileNav();
755  useNavImages && LoadNavImages();
756  FirstLevelDropdownItemWidths();
757  NavigationSocialLinks();
758  AddMobileDropdownArrow();
759  FontAwesomeNavigationBullets();
760  AddMobileDropdownClass();
761  OffCanvasMobileNav();
762  MobileNavInHeader();
763  MoveTopBarLinksToNav();
764  MobileNavIconToX();
765  MobilePlacement();
766  typeof breakSlashes === 'undefined' || breakSlashes && addSlashBreaks();
767  NavImageColorOverlay();
768  MoreDropdownPlacement();
769  lastSingleDropdownWidth();
770  CheckSeparateMobileNav();
771
772  // Quickly fixing arrows next to links with no dropdowns for now
773  const allTopLevel = $('.first-level-nav-item');
774  $(allTopLevel).each(function () {
775    if ($(this).find('.first-level-dropdown').length <= 0) {
776      $(this).find('.fa-angle-down').remove();
777      $(this).find('.fa-angle-right').remove();
778      $(this).find('a').removeClass('dropdown-toggle');
779      $(this).find('a').attr('data-bs-toggle', '');
780    }
781  });
782});
783
784$(window).debouncedResize(function () {
785  CheckMobile();
786  // CheckSeparateMobileNav();
787  AddMobileDropdownArrow();
788  AddMobileDropdownClass();
789  responsiveMorePagesInDropdowns();
790  OffCanvasMobileNav();
791  FirstLevelDropdownItemWidths();
792  MoveTopBarLinksToNav();
793  setTimeout(() => { MoreDropdownPlacement() }, 500);
794  FullWidthDropdownOffset();
795  setTimeout(() => { lastSingleDropdownWidth() }, 500);
796  MobilePlacement();
797});
798
799window.addEventListener('load', (event) => {
800  FullWidthDropdownOffset();
801  // navGrid();
802  MoreDropdownPlacement();
803});

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.