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