PageSourceSearch

https://www.specialolympicsflorida.org/assets/26cb1baf/javascripts/theme.js

js specialolympicsflorida.org collected 2026-10-03 21:22:34 UTC 8,438 bytes, 261 lines download raw bytes

1//#########################################################################
2// 
3// THEME.JS
4// 
5//#########################################################################
6
7//============================================================
8//  Header Height
9//============================================================
10
11var html;
12
13function siteHeaderHeight() {
14  html = document.getElementsByTagName('html')[0];
15  var height = document.getElementsByClassName('site-header')[0].offsetHeight;
16  html.setAttribute('style','--siteHeaderHeight: '+height+'px');
17}
18
19(function() {
20  siteHeaderHeight();
21  window.addEventListener('resize', function(){
22    html.classList.remove('has-scrolled');
23    siteHeaderHeight();
24  });
25})();
26
27
28//============================================================
29//  Has Scrolled
30//============================================================
31
32(function() {
33  var html = document.getElementsByTagName('html')[0];
34  var siteHeader = document.getElementsByClassName('site-header')[0];
35  var siteHeaderHeight = document.getElementsByClassName('site-header')[0].offsetHeight;
36  var lastScrollTop = 0;
37  var scrollClass = 'has-scrolled';
38  var scrollClassUp = 'has-scrolled-up';
39  var scrollClassDown = 'has-scrolled-down';
40  window.addEventListener('scroll', function(){ 
41    st = window.pageYOffset;
42    if (st > lastScrollTop){
43        html.classList.add(scrollClassDown);
44        html.classList.remove(scrollClassUp);
45        siteHeader.classList.add(scrollClassDown);
46        siteHeader.classList.remove(scrollClassUp);
47    } else {
48        html.classList.add(scrollClassUp);
49        html.classList.remove(scrollClassDown);
50        siteHeader.classList.add(scrollClassUp);
51        siteHeader.classList.remove(scrollClassDown);
52    }
53    if (st >= siteHeaderHeight){
54        html.classList.add(scrollClass);
55        siteHeader.classList.add(scrollClass);
56    } else {
57        html.classList.remove(scrollClass);
58        html.classList.remove(scrollClassUp);
59        html.classList.remove(scrollClassDown);
60        siteHeader.classList.remove(scrollClass);
61        siteHeader.classList.remove(scrollClassUp);
62        siteHeader.classList.remove(scrollClassDown);
63
64    }
65    lastScrollTop = st <= 0 ? 0 : st;
66  });
67})();
68
69
70//============================================================
71//  Nav active
72//============================================================
73
74function navActive() {
75  var current = location.href;
76  var anchor = document.querySelectorAll('.navbar a, .content-nav a');
77  var activeClass = 'active';
78
79  for (var i = 0; i < anchor.length; i++) {
80    anchor[i].classList.remove(activeClass);
81    // anchor[i].setAttribute('aria-current','');
82    if(anchor[i].href == current) {
83       anchor[i].classList.add(activeClass);
84       anchor[i].setAttribute('aria-current','page');
85    }
86  }
87}
88
89(function() {
90  navActive();
91})();
92
93
94//============================================================
95//  Navbar toggle
96//============================================================
97
98(function() {
99  var html = document.getElementsByTagName('html')[0];
100  var navbarCollapse = document.getElementById('navbarSupportedContent');
101  var navbarOpenClass = ('navbar-open');
102
103  $(navbarCollapse).on('show.bs.collapse', function () {
104    this.classList.add(navbarOpenClass);
105    html.classList.add(navbarOpenClass);
106    document.addEventListener('click', function(e){ 
107      var target = e.target;
108      if (target === navbarCollapse || navbarCollapse.contains(target)) {
109        return;
110      } else {
111        $(navbarCollapse).collapse('hide');
112      }
113    });
114  });
115  $(navbarCollapse).on('hide.bs.collapse', function () {
116    this.classList.remove(navbarOpenClass);
117    html.classList.remove(navbarOpenClass);
118  });
119})();
120
121
122//============================================================
123//  Search toggle
124//============================================================
125
126(function() {
127  var html = document.getElementsByTagName('html')[0];
128  var navbarSearchCollapse = document.getElementById('searchSupportedContent');
129  var navbarSearchInput = document.querySelectorAll('#searchSupportedContent .form-control')[0];
130
131  $(navbarSearchCollapse).on('shown.bs.collapse', function () {
132    navbarSearchInput.focus();
133  });
134
135})();
136
137
138//============================================================
139//  Object Fit Fallback
140//  Must include .bg-* (or the deprecated .image-*) styles from _images.scss partial
141//============================================================
142
143(function() {
144  if('objectFit' in document.documentElement.style === false) {
145    var objectFitContainer = document.querySelectorAll('[class*=" bg-cover"], [class^="bg-cover"], [class*=" bg-contain"], [class^="bg-contain"], [class*=" image-"], [class^="image-"]');
146    for (var i = 0; i < objectFitContainer.length; i++) {
147      var obj = objectFitContainer[i];
148      var img = obj.querySelector('img');
149      if(obj.contains(img)) {
150        if (img.hasAttribute('data-src')) {
151          var imgSrc = img.getAttribute('data-src');
152        } else {
153          var imgSrc = img.getAttribute('src');
154        }
155        obj.setAttribute('style','background-image: url('+imgSrc+')');
156        img.setAttribute('style','opacity: 0');
157      }
158    }
159  }
160})();
161
162
163//============================================================
164//  Loader
165//============================================================
166
167(function() {
168  var html = document.getElementsByTagName('html')[0];
169  window.addEventListener('load',function(){
170    html.classList.add('site-loaded');
171    html.classList.remove('site-loading');
172  });
173})();
174
175//============================================================
176//  Quiz
177//============================================================
178
179$('.widget-div form .btn').on('click', function (e) {
180  $('.quiz-error').detach();
181
182  var fieldValue = $('input.custom-control-input:checked').val();
183  var answerValue = $('input.custom-control-input:checked').attr("answer");
184
185  if (answerValue && fieldValue != answerValue ) {
186    e.preventDefault();
187    $('.widget-div form > div > fieldset').append('<div class="quiz-error text-primary pt-2"><p>Incorrect.</p></div>');
188  }
189});
190
191//============================================================
192//  Contrast Mode
193//============================================================
194(function() {
195  var cookieName = 'high-contrast-mode';
196  var highContrastEnabled = (getCookie(cookieName) === 'on');
197
198  if ( (getCookie(cookieName) === 'on') )  {
199    $('body').addClass('high-contrast-on');
200    $('body').removeClass('high-contrast-off');
201    $('.btn-yes').addClass('btn-link--active');
202    $('.btn-no').removeClass('btn-link--active');
203  } else {
204    $('body').addClass('high-contrast-off');
205    $('body').removeClass('high-contrast-on');
206    $('.btn-yes').removeClass('btn-link--active');
207    $('.btn-no').addClass('btn-link--active');
208  }
209  
210  $("#contrast-mode a").click(function() {
211
212    var btnClicked = $(this).data('high-contrast');
213    if ((highContrastEnabled && btnClicked === 'off') || (!highContrastEnabled && btnClicked === 'on')) {
214      var contrastLink = $(this).attr('data-stylesheet');
215
216      $('link#main-stylesheet').attr('href', contrastLink);
217      // $(this).toggleClass("btn-active--yes btn-active--no").siblings('.btn').toggleClass("btn-active--no btn-active--yes");
218      $('body').toggleClass('high-contrast-on');
219      $('body').toggleClass('high-contrast-off');
220
221      setCookie(cookieName, btnClicked);
222      highContrastEnabled = (btnClicked === 'on');
223
224      if ( (getCookie(cookieName) === 'on') )  {
225        $('.btn-yes').addClass('btn-link--active');
226        $('.btn-no').removeClass('btn-link--active');
227      } else {
228        $('.btn-yes').removeClass('btn-link--active');
229        $('.btn-no').addClass('btn-link--active');
230      }
231    }
232
233    return false;
234
235  });
236})();
237
238function setCookie(name, value, path, days) {
239
240  var expires = "";
241
242  if (days) {
243    var date = new Date();
244    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
245    expires = "; expires=" + date.toUTCString();
246  }
247
248  if (!path) {
249    path = '/'
250  }
251
252  var domain = window.location.hostname; domain = ";domain=" + domain.substring(domain.indexOf("."));
253  document.cookie = name + "=" + value + expires + domain +";path=" + path;
254}
255
256function getCookie(name) {
257  var value = "; " + document.cookie;
258  var parts = value.split("; " + name + "=");
259  if(parts.length == 2) return parts.pop().split(";").shift();
260}
261

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.