PageSourceSearch

https://georgiamagazine.org/sites/default/files/js/js_LBMZO9VYTMFWS5mIqdYI1NdTUfHrCZvrSIUlxCiU3mM.js

js georgiamagazine.org collected 2026-09-24 22:28:50 UTC 37,231 bytes, 826 lines download raw bytes

1/**
2 * @file
3 * Contains javascript to refresh alert div contents.
4 */
5
6(function ($, Drupal, drupalSettings) {
7
8  let callback;
9
10  // Function to update alert text.
11  let loadAlert = function (siteAlert) {
12    // Object contains information about the currently loaded theme for
13    // processing by our theme callback. Without it the default theme is always
14    // assumed.
15    let options = {
16      ajax_page_state: drupalSettings.ajaxPageState
17    };
18    siteAlert.load(callback, options);
19
20    if (drupalSettings.siteAlert.timeout > 0) {
21      setTimeout(function () {
22        loadAlert(siteAlert);
23      }, drupalSettings.siteAlert.timeout * 1000);
24    }
25  };
26
27  Drupal.behaviors.siteAlert = {
28    attach: function (context, settings) {
29      // Work around a core bug that prevents cached pages from being
30      // invalidated in time for scheduled alerts to appear. Immediately load
31      // the alerts.
32      // @todo Remove this workaround once the bug is fixed.
33      // @see https://www.drupal.org/project/site_alert/issues/3121988
34      if (drupalSettings.siteAlert.workaround_needed) {
35        callback = settings.path.baseUrl + 'ajax/site_alert';
36        loadAlert($('.site-alert', context));
37      }
38
39      // Update content at configured interval.
40      if (drupalSettings.siteAlert.timeout > 0) {
41        callback = settings.path.baseUrl + 'ajax/site_alert';
42        setTimeout(function () {
43          loadAlert($('.site-alert', context));
44        }, drupalSettings.siteAlert.timeout * 1000);
45      }
46    }
47  };
48
49})(jQuery, Drupal, drupalSettings);
50;
51/*
52 * Superfish v1.4.8 - jQuery menu widget
53 * Copyright (c) 2008 Joel Birch
54 *
55 * Dual licensed under the MIT and GPL licenses:
56 *  http://www.opensource.org/licenses/mit-license.php
57 *  http://www.gnu.org/licenses/gpl.html
58 *
59 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
60 */
61/*
62 * This is not the original jQuery Superfish plugin.
63 * Please refer to the README for more information.
64 */
65
66(function($){
67  $.fn.superfish = function(op){
68    var sf = $.fn.superfish,
69      c = sf.c,
70      $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
71      over = function(){
72        var $$ = $(this), menu = getMenu($$);
73        clearTimeout(menu.sfTimer);
74        $$.showSuperfishUl().siblings().hideSuperfishUl();
75      },
76      out = function(){
77        var $$ = $(this), menu = getMenu($$), o = sf.op;
78        clearTimeout(menu.sfTimer);
79        menu.sfTimer=setTimeout(function(){
80          if ($$.children('.sf-clicked').length == 0){
81            o.retainPath=($.inArray($$[0],o.$path)>-1);
82            $$.hideSuperfishUl();
83            if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
84          }
85        },o.delay);
86      },
87      getMenu = function($menu){
88        var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
89        sf.op = sf.o[menu.serial];
90        return menu;
91      },
92      addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
93
94    return this.each(function() {
95      var s = this.serial = sf.o.length;
96      var o = $.extend({},sf.defaults,op);
97      o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels);
98      var p = o.$path;
99      for (var l = 0; l < p.length; l++){
100        p.eq(l).addClass([o.hoverClass,c.bcClass].join(' ')).filter('li:has(ul)').removeClass(o.pathClass);
101      }
102      sf.o[s] = sf.op = o;
103
104      $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
105        if (o.autoArrows) addArrow( $(this).children('a:first-child, span.nolink:first-child') );
106      })
107      .not('.'+c.bcClass)
108        .hideSuperfishUl();
109
110      var $a = $('a, span.nolink',this);
111      $a.each(function(i){
112        var $li = $a.eq(i).parents('li');
113        $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
114      });
115      o.onInit.call(this);
116
117    }).each(function() {
118      var menuClasses = [c.menuClass];
119      if (sf.op.dropShadows){
120        menuClasses.push(c.shadowClass);
121      }
122      $(this).addClass(menuClasses.join(' '));
123    });
124  };
125
126  var sf = $.fn.superfish;
127  sf.o = [];
128  sf.op = {};
129
130  sf.c = {
131    bcClass: 'sf-breadcrumb',
132    menuClass: 'sf-js-enabled',
133    anchorClass: 'sf-with-ul',
134    arrowClass: 'sf-sub-indicator',
135    shadowClass: 'sf-shadow'
136  };
137  sf.defaults = {
138    hoverClass: 'sfHover',
139    pathClass: 'overideThisToUse',
140    pathLevels: 1,
141    delay: 800,
142    animation: {opacity:'show'},
143    speed: 'fast',
144    autoArrows: true,
145    dropShadows: true,
146    disableHI: false, // true disables hoverIntent detection
147    onInit: function(){}, // callback functions
148    onBeforeShow: function(){},
149    onShow: function(){},
150    onHide: function(){}
151  };
152  $.fn.extend({
153    hideSuperfishUl : function(){
154      var o = sf.op,
155        not = (o.retainPath===true) ? o.$path : '';
156      o.retainPath = false;
157      var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
158          .children('ul').addClass('sf-hidden');
159      o.onHide.call($ul);
160      return this;
161    },
162    showSuperfishUl : function(){
163      var o = sf.op,
164        sh = sf.c.shadowClass+'-off',
165        $ul = this.addClass(o.hoverClass)
166          .children('ul.sf-hidden').hide().removeClass('sf-hidden');
167      o.onBeforeShow.call($ul);
168      $ul.animate(o.animation,o.speed,function(){ o.onShow.call($ul); });
169      return this;
170    }
171  });
172})(jQuery);;
173/*!
174 * hoverIntent v1.10.1 // 2019.10.05 // jQuery v1.7.0+
175 * http://briancherne.github.io/jquery-hoverIntent/
176 *
177 * You may use hoverIntent under the terms of the MIT license. Basically that
178 * means you are free to use hoverIntent as long as this header is left intact.
179 * Copyright 2007-2019 Brian Cherne
180 */
181!function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("jquery")):jQuery&&!jQuery.fn.hoverIntent&&factory(jQuery)}(function($){"use strict";function track(ev){cX=ev.pageX,cY=ev.pageY}var cX,cY,_cfg={interval:100,sensitivity:6,timeout:0},INSTANCE_COUNT=0,compare=function(ev,$el,s,cfg){if(Math.sqrt((s.pX-cX)*(s.pX-cX)+(s.pY-cY)*(s.pY-cY))<cfg.sensitivity)return $el.off(s.event,track),delete s.timeoutId,s.isActive=!0,ev.pageX=cX,ev.pageY=cY,delete s.pX,delete s.pY,cfg.over.apply($el[0],[ev]);s.pX=cX,s.pY=cY,s.timeoutId=setTimeout(function(){compare(ev,$el,s,cfg)},cfg.interval)};$.fn.hoverIntent=function(handlerIn,handlerOut,selector){var instanceId=INSTANCE_COUNT++,cfg=$.extend({},_cfg);$.isPlainObject(handlerIn)?(cfg=$.extend(cfg,handlerIn),$.isFunction(cfg.out)||(cfg.out=cfg.over)):cfg=$.isFunction(handlerOut)?$.extend(cfg,{over:handlerIn,out:handlerOut,selector:selector}):$.extend(cfg,{over:handlerIn,out:handlerIn,selector:handlerOut});function handleHover(e){var ev=$.extend({},e),$el=$(this),hoverIntentData=$el.data("hoverIntent");hoverIntentData||$el.data("hoverIntent",hoverIntentData={});var state=hoverIntentData[instanceId];state||(hoverIntentData[instanceId]=state={id:instanceId}),state.timeoutId&&(state.timeoutId=clearTimeout(state.timeoutId));var mousemove=state.event="mousemove.hoverIntent.hoverIntent"+instanceId;if("mouseenter"===e.type){if(state.isActive)return;state.pX=ev.pageX,state.pY=ev.pageY,$el.off(mousemove,track).on(mousemove,track),state.timeoutId=setTimeout(function(){compare(ev,$el,state,cfg)},cfg.interval)}else{if(!state.isActive)return;$el.off(mousemove,track),state.timeoutId=setTimeout(function(){!function(ev,$el,s,out){var data=$el.data("hoverIntent");data&&delete data[s.id],out.apply($el[0],[ev])}(ev,$el,state,cfg.out)},cfg.timeout)}}return this.on({"mouseenter.hoverIntent":handleHover,"mouseleave.hoverIntent":handleHover},cfg.selector)}});;
182/*
183 * sf-Smallscreen v1.3b - Provides small-screen compatibility for the jQuery Superfish plugin.
184 *
185 * Developer's note:
186 * Built as a part of the Superfish project for Drupal (http://drupal.org/project/superfish)
187 * Found any bug? have any cool ideas? contact me right away! http://drupal.org/user/619294/contact
188 *
189 * jQuery version: 1.3.x or higher.
190 *
191 * Dual licensed under the MIT and GPL licenses:
192 *  http://www.opensource.org/licenses/mit-license.php
193 *  http://www.gnu.org/licenses/gpl.html
194  */
195
196(function($){
197  $.fn.sfsmallscreen = function(options){
198    options = $.extend({
199      mode: 'inactive',
200      type: 'accordion',
201      breakpoint: 768,
202      breakpointUnit: 'px',
203      useragent: '',
204      title: '',
205      addSelected: false,
206      menuClasses: false,
207      hyperlinkClasses: false,
208      excludeClass_menu: '',
209      excludeClass_hyperlink: '',
210      includeClass_menu: '',
211      includeClass_hyperlink: '',
212      accordionButton: 1,
213      expandText: 'Expand',
214      collapseText: 'Collapse'
215    }, options);
216
217    // We need to clean up the menu from anything unnecessary.
218    function refine(menu){
219      var
220      refined = menu.clone(),
221      // Things that should not be in the small-screen menus.
222      rm = refined.find('span.sf-sub-indicator'),
223      // This is a helper class for those who need to add extra markup that shouldn't exist
224      // in the small-screen versions.
225      rh = refined.find('.sf-smallscreen-remove'),
226      // Mega-menus has to be removed too.
227      mm = refined.find('ul.sf-multicolumn');
228      for (var a = 0; a < rh.length; a++){
229        rh.eq(a).replaceWith(rh.eq(a).html());
230      }
231      if (options.accordionButton == 2 || options.type == 'select'){
232        for (var b = 0; b < rm.length; b++){
233          rm.eq(b).remove();
234        }
235      }
236      if (mm.length > 0){
237        mm.removeClass('sf-multicolumn');
238        var ol = refined.find('div.sf-multicolumn-column > ol');
239        for (var o = 0; o < ol.length; o++){
240          ol.eq(o).replaceWith('<ul>' + ol.eq(o).html() + '</ul>');
241        }
242        var elements = ['div.sf-multicolumn-column','.sf-multicolumn-wrapper > ol','li.sf-multicolumn-wrapper'];
243        for (var i = 0; i < elements.length; i++){
244          obj = refined.find(elements[i]);
245          for (var t = 0; t < obj.length; t++){
246            obj.eq(t).replaceWith(obj.eq(t).html());
247          }
248        }
249        refined.find('.sf-multicolumn-column').removeClass('sf-multicolumn-column');
250      }
251      refined.add(refined.find('*')).css({width:''});
252      return refined;
253    }
254
255    // Creating <option> elements out of the menu.
256    function toSelect(menu, level){
257      var
258      items = '',
259      childLI = $(menu).children('li');
260      for (var a = 0; a < childLI.length; a++){
261        var list = childLI.eq(a), parent = list.children('a, span');
262        for (var b = 0; b < parent.length; b++){
263          var
264          item = parent.eq(b),
265          path = (item.is('a') && !!item.attr('href')) ? item.attr('href') : '',
266          // Class names modification.
267          itemClone = item.clone(),
268          classes = (options.hyperlinkClasses) ? ((options.excludeClass_hyperlink && itemClone.hasClass(options.excludeClass_hyperlink)) ? itemClone.removeClass(options.excludeClass_hyperlink).attr('class') : itemClone.attr('class')) : '',
269          classes = (options.includeClass_hyperlink && !itemClone.hasClass(options.includeClass_hyperlink)) ? ((options.hyperlinkClasses) ? itemClone.addClass(options.includeClass_hyperlink).attr('class') : options.includeClass_hyperlink) : classes;
270          // Retaining the active class if requested.
271          if (options.addSelected && item.hasClass('active')){
272            classes += ' active';
273          }
274          classes = (classes) ? ' class="' + classes + '"' : '';
275          // <option> has to be disabled if the item is not a link.
276          disable = (path == '') || (path == '#') ? ' disabled="disabled"' : '',
277          // Crystal clear.
278          subIndicator = 1 < level ? Array(level).join('-') + ' ' : '';
279          // Preparing the <option> element.
280          items += '<option value="' + path + '"' + classes + disable + '>' + subIndicator + $.trim(item.text()) +'</option>',
281          childUL = list.find('> ul');
282          // Using the function for the sub-menu of this item.
283          for (var u = 0; u < childUL.length; u++){
284            items += toSelect(childUL.eq(u), level + 1);
285          }
286        }
287      }
288      return items;
289    }
290
291    // Create the new version, hide the original.
292    function convert(menu){
293      var menuID = menu.attr('id'),
294      // Creating a refined version of the menu.
295      refinedMenu = refine(menu);
296      // Currently the plugin provides two reactions to small screens.
297      // Converting the menu to a <select> element, and converting to an accordion version of the menu.
298      if (options.type == 'accordion'){
299        var
300        toggleID = menuID + '-toggle',
301        accordionID = menuID + '-accordion';
302        // Making sure the accordion does not exist.
303        if ($('#' + accordionID).length == 0){
304          var
305          // Getting the style class.
306          styleClass = menu.attr('class').split(' ').filter(function(item){
307            return item.indexOf('sf-style-') > -1 ? item : '';
308          }),
309          // Creating the accordion.
310          accordion = $(refinedMenu).attr('id', accordionID);
311          // Removing unnecessary classes.
312          accordion.removeClass('sf-horizontal sf-vertical sf-navbar sf-shadow sf-js-enabled');
313          // Adding necessary classes.
314          accordion.addClass('sf-accordion sf-hidden');
315          // Removing style attributes and any unnecessary class.
316          accordion.find('li').each(function(){
317            $(this).removeAttr('style').removeClass('sfHover').attr('id', $(this).attr('id') + '-accordion');
318          });
319          // Doing the same and making sure all the sub-menus are off-screen (hidden).
320          accordion.children('ul').removeAttr('style').not('.sf-hidden').addClass('sf-hidden');
321          // Creating the accordion toggle switch.
322          var toggle = '<div class="sf-accordion-toggle ' + styleClass + '"><a href="#" id="' + toggleID + '"><span>' + options.title + '</span></a></div>';
323
324          // Adding Expand\Collapse buttons if requested.
325          if (options.accordionButton == 2){
326            accordion.addClass('sf-accordion-with-buttons');
327            var parent = accordion.find('li.menuparent');
328            for (var i = 0; i < parent.length; i++){
329              parent.eq(i).prepend('<a href="#" class="sf-accordion-button">' + options.expandText + '</a>');
330            }
331          }
332          // Inserting the according and hiding the original menu.
333          menu.before(toggle).before(accordion).hide();
334
335          var
336          accordionElement = $('#' + accordionID),
337          // Deciding what should be used as accordion buttons.
338          buttonElement = (options.accordionButton < 2) ? 'a.menuparent,span.nolink.menuparent' : 'a.sf-accordion-button',
339          button = accordionElement.find(buttonElement);
340
341          // Attaching a click event to the toggle switch.
342          $('#' + toggleID).on('click', function(e){
343            // Preventing the click.
344            e.preventDefault();
345            // Adding the sf-expanded class.
346            $(this).toggleClass('sf-expanded');
347
348            if (accordionElement.hasClass('sf-expanded')){
349              // If the accordion is already expanded:
350              // Hiding its expanded sub-menus and then the accordion itself as well.
351              accordionElement.add(accordionElement.find('li.sf-expanded')).removeClass('sf-expanded')
352              .end().children('ul').hide()
353              // This is a bit tricky, it's the same trick that has been in use in the main plugin for some time.
354              // Basically we'll add a class that keeps the sub-menu off-screen and still visible,
355              // and make it invisible and removing the class one moment before showing or hiding it.
356              // This helps screen reader software access all the menu items.
357              .end().hide().addClass('sf-hidden').show();
358              // Changing the caption of any existing accordion buttons to 'Expand'.
359              if (options.accordionButton == 2){
360                accordionElement.find('a.sf-accordion-button').text(options.expandText);
361              }
362            }
363            else {
364              // But if it's collapsed,
365              accordionElement.addClass('sf-expanded').hide().removeClass('sf-hidden').show();
366            }
367          });
368
369          // Attaching a click event to the buttons.
370          button.on('click', function(e){
371            // Making sure the buttons does not exist already.
372            if ($(this).closest('li').children('ul').length > 0){
373              e.preventDefault();
374              // Selecting the parent menu items.
375              var parent = $(this).closest('li');
376              // Creating and inserting Expand\Collapse buttons to the parent menu items,
377              // of course only if not already happened.
378              if (options.accordionButton == 1 && parent.children('a.menuparent,span.nolink.menuparent').length > 0 && parent.children('ul').children('li.sf-clone-parent').length == 0){
379                var
380                // Cloning the hyperlink of the parent menu item.
381                cloneLink = parent.children('a.menuparent').clone();
382                // Removing unnecessary classes and element(s).
383                cloneLink.removeClass('menuparent sf-with-ul').children('.sf-sub-indicator').remove();
384                // Wrapping the hyerplinks in <li>.
385                cloneLink = $('<li class="sf-clone-parent" />').html(cloneLink);
386                // Adding a helper class and attaching them to the sub-menus.
387                parent.children('ul').addClass('sf-has-clone-parent').prepend(cloneLink);
388              }
389              // Once the button is clicked, collapse the sub-menu if it's expanded.
390              if (parent.hasClass('sf-expanded')){
391                parent.children('ul').slideUp('fast', function(){
392                  // Doing the accessibility trick after hiding the sub-menu.
393                  $(this).closest('li').removeClass('sf-expanded').end().addClass('sf-hidden').show();
394                });
395                // Changing the caption of the inserted Collapse link to 'Expand', if any is inserted.
396                if (options.accordionButton == 2 && parent.children('.sf-accordion-button').length > 0){
397                  parent.children('.sf-accordion-button').text(options.expandText);
398                }
399              }
400              // Otherwise, expand the sub-menu.
401              else {
402                // Doing the accessibility trick and then showing the sub-menu.
403                parent.children('ul').hide().removeClass('sf-hidden').slideDown('fast')
404                // Changing the caption of the inserted Expand link to 'Collape', if any is inserted.
405                .end().addClass('sf-expanded').children('a.sf-accordion-button').text(options.collapseText)
406                // Hiding any expanded sub-menu of the same level.
407                .end().siblings('li.sf-expanded').children('ul')
408                .slideUp('fast', function(){
409                  // Doing the accessibility trick after hiding it.
410                  $(this).closest('li').removeClass('sf-expanded').end().addClass('sf-hidden').show();
411                })
412                // Assuming Expand\Collapse buttons do exist, resetting captions, in those hidden sub-menus.
413                .parent().children('a.sf-accordion-button').text(options.expandText);
414              }
415            }
416          });
417        }
418      }
419      else {
420        var
421        // Class names modification.
422        menuClone = menu.clone(), classes = (options.menuClasses) ? ((options.excludeClass_menu && menuClone.hasClass(options.excludeClass_menu)) ? menuClone.removeClass(options.excludeClass_menu).attr('class') : menuClone.attr('class')) : '',
423        classes = (options.includeClass_menu && !menuClone.hasClass(options.includeClass_menu)) ? ((options.menuClasses) ? menuClone.addClass(options.includeClass_menu).attr('class') : options.includeClass_menu) : classes,
424        classes = (classes) ? ' class="' + classes + '"' : '';
425
426        // Making sure the <select> element does not exist already.
427        if ($('#' + menuID + '-select').length == 0){
428          // Creating the <option> elements.
429          var newMenu = toSelect(refinedMenu, 1),
430          // Creating the <select> element and assigning an ID and class name.
431          selectList = $('<select' + classes + ' id="' + menuID + '-select"/>')
432          // Attaching the title and the items to the <select> element.
433          .html('<option>' + options.title + '</option>' + newMenu)
434          // Attaching an event then.
435          .change(function(){
436            // Except for the first option that is the menu title and not a real menu item.
437            if ($('option:selected', this).index()){
438              window.location = selectList.val();
439            }
440          });
441          // Applying the addSelected option to it.
442          if (options.addSelected){
443            selectList.find('.active').attr('selected', !0);
444          }
445          // Finally inserting the <select> element into the document then hiding the original menu.
446          menu.before(selectList).hide();
447        }
448      }
449    }
450
451    // Turn everything back to normal.
452    function turnBack(menu){
453      var
454      id = '#' + menu.attr('id');
455      // Removing the small screen version.
456      $(id + '-' + options.type).remove();
457      // Removing the accordion toggle switch as well.
458      if (options.type == 'accordion'){
459        $(id + '-toggle').parent('div').remove();
460      }
461      // Remove inline CSS display property; less clear than simply using .show(), but respects stylesheet
462      $(id).css('display', '');
463    }
464
465    // Return original object to support chaining.
466    // Although this is unnecessary because of the way the module uses these plugins.
467    for (var s = 0; s < this.length; s++){
468      var
469      menu = $(this).eq(s),
470      mode = options.mode;
471      // The rest is crystal clear, isn't it? :)
472      if (menu.children('li').length == 0){
473        // Skip empty menu which will not be visible and don't want to suddenly make it visible.
474      }
475      else if (mode == 'always_active'){
476        convert(menu);
477      }
478      else if (mode == 'window_width'){
479        var breakpoint = (options.breakpointUnit == 'em') ? (options.breakpoint * parseFloat($('body').css('font-size'))) : options.breakpoint,
480        windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
481        timer;
482        if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){
483          convert(menu);
484        }
485        else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) {
486          convert(menu);
487        }
488        $(window).resize(function(){
489          clearTimeout(timer);
490          timer = setTimeout(function(){
491            var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
492            if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){
493              convert(menu);
494            }
495            else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) {
496              convert(menu);
497            }
498            else {
499              turnBack(menu);
500            }
501          }, 50);
502        });
503      }
504      else if (mode == 'useragent_custom'){
505        if (options.useragent != ''){
506          var ua = RegExp(options.useragent, 'i');
507          if (navigator.userAgent.match(ua)){
508            convert(menu);
509          }
510        }
511      }
512      else if (mode == 'useragent_predefined' && navigator.userAgent.match(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i)){
513        convert(menu);
514      }
515    }
516    return this;
517  }
518})(jQuery);
519;
520/*
521 * Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget.
522 *
523 * Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
524 * Special thanks to Karl Swedberg for valuable input.
525 *
526 * Dual licensed under the MIT and GPL licenses:
527 *  http://www.opensource.org/licenses/mit-license.php
528 *  http://www.gnu.org/licenses/gpl.html
529 */
530/*
531 * This is not the original jQuery Supposition plugin.
532 * Please refer to the README for more information.
533 */
534
535(function($){
536  $.fn.supposition = function(){
537    var $w = $(window), /*do this once instead of every onBeforeShow call*/
538    _offset = function(dir) {
539      return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
540      || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
541      || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
542    },
543    onHide = function(){
544      this.css({bottom:''});
545    },
546    onBeforeShow = function(){
547      this.each(function(){
548        var $u = $(this);
549        $u.css('display','block');
550        var $mul = $u.closest('.sf-menu'),
551        level = $u.parents('ul').length,
552        menuWidth = $u.width(),
553        menuParentWidth = $u.closest('li').outerWidth(true),
554        menuParentLeft = $u.closest('li').offset().left,
555        totalRight = $w.width() + _offset('x'),
556        menuRight = $u.offset().left + menuWidth,
557        exactMenuWidth = (menuRight > (menuParentWidth + menuParentLeft)) ? menuWidth - (menuRight - (menuParentWidth + menuParentLeft)) : menuWidth;
558        if ($u.parents('.sf-js-enabled').hasClass('rtl')) {
559          if (menuParentLeft < exactMenuWidth) {
560            if (($mul.hasClass('sf-horizontal') && level == 1) || ($mul.hasClass('sf-navbar') && level == 2)){
561              $u.css({left:0,right:'auto'});
562            }
563            else {
564              $u.css({left:menuParentWidth + 'px',right:'auto'});
565            }
566            $u.parent().addClass('sf-supposition-active');
567          }
568        }
569        else {
570          if (menuRight > totalRight && menuParentLeft > menuWidth) {
571            if (($mul.hasClass('sf-horizontal') && level == 1) || ($mul.hasClass('sf-navbar') && level == 2)){
572              $u.css({right:0,left:'auto'});
573            }
574            else {
575              $u.css({right:menuParentWidth + 'px',left:'auto'});
576            }
577            $u.parent().addClass('sf-supposition-active');
578          }
579        }
580        var windowHeight = $w.height(),
581        offsetTop = $u.offset().top,
582        menuParentShadow = ($mul.hasClass('sf-shadow') && $u.css('padding-bottom').length > 0) ? parseInt($u.css('padding-bottom').slice(0,-2)) : 0,
583        menuParentHeight = ($mul.hasClass('sf-vertical')) ? '-' + menuParentShadow : $u.parent().outerHeight(true) - menuParentShadow,
584        menuHeight = $u.height(),
585        baseline = windowHeight + _offset('y');
586        var expandUp = ((offsetTop + menuHeight > baseline) && (offsetTop > menuHeight));
587        if (expandUp) {
588          $u.css({bottom:menuParentHeight + 'px',top:'auto'});
589        }
590        $u.css('display','none');
591      });
592    };
593
594    return this.each(function() {
595      var o = $.fn.superfish.o[this.serial]; /* get this menu's options */
596
597      /* if callbacks already set, store them */
598      var _onBeforeShow = o.onBeforeShow,
599      _onHide = o.onHide;
600
601      $.extend($.fn.superfish.o[this.serial],{
602        onBeforeShow: function() {
603          onBeforeShow.call(this); /* fire our Supposition callback */
604          _onBeforeShow.call(this); /* fire stored callbacks */
605        },
606        onHide: function() {
607          onHide.call(this); /* fire our Supposition callback */
608          _onHide.call(this); /* fire stored callbacks */
609        }
610      });
611    });
612  };
613})(jQuery);;
614/*
615 * Supersubs v0.4b - jQuery plugin
616 * Copyright (c) 2013 Joel Birch
617 *
618 * Dual licensed under the MIT and GPL licenses:
619 *  http://www.opensource.org/licenses/mit-license.php
620 *  http://www.gnu.org/licenses/gpl.html
621 *
622 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
623 * their longest list item children. If you use this, please expect bugs and report them
624 * to the jQuery Google Group with the word 'Superfish' in the subject line.
625 *
626 */
627/*
628 * This is not the original jQuery Supersubs plugin.
629 * Please refer to the README for more information.
630 */
631
632(function($){ // $ will refer to jQuery within this closure
633  $.fn.supersubs = function(options){
634    var opts = $.extend({}, $.fn.supersubs.defaults, options);
635    // return original object to support chaining
636    // Although this is unnecessary due to the way the module uses these plugins.
637    for (var a = 0; a < this.length; a++) {
638      // cache selections
639      var $$ = $(this).eq(a),
640      // support metadata
641      o = $.meta ? $.extend({}, opts, $$.data()) : opts;
642      // Jump one level if it's a "NavBar"
643      if ($$.hasClass('sf-navbar')) {
644        $$ = $$.children('li').children('ul');
645      }
646      // cache all ul elements
647      var $ULs = $$.find('ul');
648      if ($ULs.length) {
649        // get the font size of menu.
650        // .css('fontSize') returns various results cross-browser, so measure an em dash instead
651        var fontsize = $('<li id="menu-fontsize">&#8212;</li>'),
652        size = fontsize.attr('style','padding:0;position:absolute;top:-99999em;width:auto;')
653        .appendTo($$)[0].clientWidth; //clientWidth is faster than width()
654        // remove em dash
655        fontsize.remove();
656
657        // loop through each ul in menu
658        for (var b = 0; b < $ULs.length; b++) {
659          var
660          // cache this ul
661          $ul = $ULs.eq(b);
662          // If a multi-column sub-menu, and only if correctly configured.
663          if (o.multicolumn && $ul.hasClass('sf-multicolumn') && $ul.find('.sf-multicolumn-column').length > 0){
664            // Look through each column.
665            var $column = $ul.find('div.sf-multicolumn-column > ol'),
666            // Overall width.
667            mwWidth = 0;
668            for (var d = 0; d < $column.length; d++){
669              resize($column.eq(d));
670              // New column width, in pixels.
671              var colWidth = Math.ceil($column.width());
672              // Just a trick to convert em unit to px.
673              $column.css({width:colWidth})
674              // Making column parents the same size.
675              .parents('.sf-multicolumn-column').css({width:colWidth});
676              // Overall width.
677              mwWidth += colWidth;
678            }
679            // Resizing the columns container too.
680            $ul.add($ul.find('li.sf-multicolumn-wrapper, li.sf-multicolumn-wrapper > ol')).css({width:mwWidth});
681          }
682          else {
683            resize($ul);
684          }
685        }
686      }
687    }
688    function resize($ul){
689      var
690      // get all (li) children of this ul
691      $LIs = $ul.children(),
692      // get all anchor grand-children
693      $As = $LIs.children('a');
694      // force content to one line and save current float property
695      $LIs.css('white-space','nowrap');
696      // remove width restrictions and floats so elements remain vertically stacked
697      $ul.add($LIs).add($As).css({float:'none',width:'auto'});
698      // this ul will now be shrink-wrapped to longest li due to position:absolute
699      // so save its width as ems.
700      var emWidth = $ul.get(0).clientWidth / size;
701      // add more width to ensure lines don't turn over at certain sizes in various browsers
702      emWidth += o.extraWidth;
703      // restrict to at least minWidth and at most maxWidth
704      if (emWidth > o.maxWidth) {emWidth = o.maxWidth;}
705      else if (emWidth < o.minWidth) {emWidth = o.minWidth;}
706      emWidth += 'em';
707      // set ul to width in ems
708      $ul.css({width:emWidth});
709      // restore li floats to avoid IE bugs
710      // set li width to full width of this ul
711      // revert white-space to normal
712      $LIs.add($As).css({float:'',width:'',whiteSpace:''});
713      // update offset position of descendant ul to reflect new width of parent.
714      // set it to 100% in case it isn't already set to this in the CSS
715      for (var c = 0; c < $LIs.length; c++) {
716        var $childUl = $LIs.eq(c).children('ul');
717        var offsetDirection = $childUl.css('left') !== undefined ? 'left' : 'right';
718        $childUl.css(offsetDirection,'100%');
719      }
720    }
721    return this;
722  };
723  // expose defaults
724  $.fn.supersubs.defaults = {
725    multicolumn: true, // define width for multi-column sub-menus and their columns.
726    minWidth: 12, // requires em unit.
727    maxWidth: 27, // requires em unit.
728    extraWidth: 1 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
729  };
730})(jQuery); // plugin code ends
731;
732(function ($, Drupal) {
733  Drupal.behaviors.superfish = {
734    attach(context, drupalSettings) {
735      // Take a look at each menu to apply Superfish to.
736      $.each(drupalSettings.superfish || {}, function (index, options) {
737        const $menu = $(`ul#${options.id}`, context);
738
739        // Check if we are to apply the Supersubs plug-in to it.
740        if (options.plugins) {
741          if (options.plugins.supersubs) {
742            $menu.supersubs(options.plugins.supersubs);
743          }
744        }
745
746        // Apply Superfish to the menu.
747        $menu.superfish(options.sf);
748
749        // Check if we are to apply any other plug-in to it.
750        if (options.plugins) {
751          if (options.plugins.touchscreen) {
752            $menu.sftouchscreen(options.plugins.touchscreen);
753          }
754          if (options.plugins.smallscreen) {
755            $menu.sfsmallscreen(options.plugins.smallscreen);
756          }
757          if (options.plugins.supposition) {
758            $menu.supposition();
759          }
760        }
761      });
762    },
763  };
764})(jQuery, Drupal);
765;
766jQuery(document).ready(function($) {
767  $(".to-top").click(function() {
768    $("body,html").animate({scrollTop:0},800);
769  });
770});
771;
772(function ($, Drupal, once) {
773  Drupal.behaviors.mtWaypointsAnimations = {
774    attach: function (context, settings) {
775      once('mtWaypointsAnimations', "body:not(.path-admin) [data-animate-effect]", context).forEach(function(item) {
776        var thisObject = $(item);
777        var animation = thisObject.attr("data-animate-effect");
778        if(animation != "no-animation") {
779          var waypoints = thisObject.waypoint(function(direction) {
780            var animatedObject = $(this.element);
781            setTimeout(function() {
782              animatedObject.addClass("animated " + animation);
783            }, 100);
784            this.destroy();
785          },{
786            offset: "75%"
787          });
788        }
789      });
790    }
791  };
792})(jQuery, Drupal, once);
793;
794/*!
795Waypoints Sticky Element Shortcut - 4.0.1
796Copyright © 2011-2016 Caleb Troughton
797Licensed under the MIT license.
798https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
799*/
800!function(){"use strict";function t(s){this.options=e.extend({},i.defaults,t.defaults,s),this.element=this.options.element,this.$element=e(this.element),this.createWrapper(),this.createWaypoint()}var e=window.jQuery,i=window.Waypoint;t.prototype.createWaypoint=function(){var t=this.options.handler;this.waypoint=new i(e.extend({},this.options,{element:this.wrapper,handler:e.proxy(function(e){var i=this.options.direction.indexOf(e)>-1,s=i?this.$element.outerHeight(!0):"";this.$wrapper.height(s),this.$element.toggleClass(this.options.stuckClass,i),t&&t.call(this,e)},this)}))},t.prototype.createWrapper=function(){this.options.wrapper&&this.$element.wrap(this.options.wrapper),this.$wrapper=this.$element.parent(),this.wrapper=this.$wrapper[0]},t.prototype.destroy=function(){this.$element.parent()[0]===this.wrapper&&(this.waypoint.destroy(),this.$element.removeClass(this.options.stuckClass),this.options.wrapper&&this.$element.unwrap())},t.defaults={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i.Sticky=t}();;
801(function ($, Drupal, once) {
802  Drupal.behaviors.mtWaypointsFixedHeader = {
803    attach: function (context, settings) {
804      once('mtWaypointsFixedHeaderInit', ".header-container .header", context).forEach(function(item) {
805        var sticky = new Waypoint.Sticky ({
806          element: $('.header-container .header')[0],
807          stuckClass: 'js-fixed',
808          handler: function(direction) {
809            if (Waypoint.viewportWidth() > 752) {
810              $('body', context).toggleClass('onscroll');
811            } else {
812              $('body', context).removeClass('onscroll');
813            }
814            var topValue = $('body').css('padding-top');
815            $(".header.js-fixed").css("top", topValue);
816          },
817          offset: function() {
818            var offsetValue = parseInt($('body').css('padding-top')) - 1;
819            return offsetValue;
820          }
821        });
822      });
823    }
824  };
825})(jQuery, Drupal, once);
826;

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.