PageSourceSearch

https://www.aspca.org/sites/default/files/js/js_oZrc7SHvMViClpJ42ja58I7CVQMGomhS6fDBJWBm6zc.js

js aspca.org collected 2026-10-01 08:32:19 UTC 22,250 bytes, 546 lines download raw bytes

1/**
2 * @file
3 * Loads content of blocks via AJAX just after page loading, updates Drupal.settings, reattaches behaviors.
4 */
5
6(function ($) {
7
8Drupal.ajaxblocksSendRequest = function (request, delay) {
9  if (delay) {
10    setTimeout(function () { Drupal.ajaxblocksSendRequest(request, 0); }, delay);
11    return;
12  }
13  $.ajax({
14    url: ((typeof Drupal.settings.ajaxblocks_path !== 'undefined') ? Drupal.settings.ajaxblocks_path : (Drupal.settings.basePath + Drupal.settings.pathPrefix + "ajaxblocks")),
15    type: "GET",
16    dataType: "json",
17    data: request + '&nocache=1',
18    cache: false,
19    success: function (data) {
20      // Replaces the placeholder divs by the actual block contents returned by the AJAX call,
21      // executes the extra JavaScript code and attach behaviours if the apply to the blocks.
22      Drupal.freezeHeight();
23      for (var id in data) {
24        Drupal.ajaxblocksSetBlockContent(id, data[id]);
25      }
26      Drupal.unfreezeHeight();
27    }
28  });
29};
30
31Drupal.ajaxblocksSetBlockContent = function (id, data) {
32  if (data['delay']) {
33    setTimeout(function () {data['delay'] = 0; Drupal.ajaxblocksSetBlockContent(id, data);}, data['delay']);
34    return;
35  }
36  var wrapper = $('#block-' + id + '-ajax-content');
37  if (!wrapper) {
38    return;
39  }
40  var context = wrapper.parent();
41  Drupal.detachBehaviors(context);
42  if (!context) {
43    return;
44  }
45  $('#block-' + id).addClass('ajaxblocks-loaded');
46  wrapper.replaceWith(data['content']);
47  if (data['ajaxblocks_settings']) {
48    $.extend(true, Drupal.settings, data['ajaxblocks_settings']);
49  }
50  Drupal.attachBehaviors(context);
51};
52
53$(document).ready(function () {
54  if (typeof Drupal.settings.ajaxblocks !== 'undefined') {
55    Drupal.ajaxblocksSendRequest(Drupal.settings.ajaxblocks, Drupal.settings.ajaxblocks_delay);
56  }
57});
58
59$(window).load(function () {
60  if (typeof Drupal.settings.ajaxblocks_late !== 'undefined') {
61    Drupal.ajaxblocksSendRequest(Drupal.settings.ajaxblocks_late, Drupal.settings.ajaxblocks_late_delay);
62  }
63});
64
65})(jQuery);
66;
67/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */
68!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):"object"==typeof exports?module.exports=e:t.echo=e(t)}(this,function(t){"use strict";var e,n,o,r,c,a={},u=function(){},d=function(t){return null===t.offsetParent},l=function(t,e){if(d(t))return!1;var n=t.getBoundingClientRect();return n.right>=e.l&&n.bottom>=e.t&&n.left<=e.r&&n.top<=e.b},i=function(){(r||!n)&&(clearTimeout(n),n=setTimeout(function(){a.render(),n=null},o))};return a.init=function(n){n=n||{};var d=n.offset||0,l=n.offsetVertical||d,f=n.offsetHorizontal||d,s=function(t,e){return parseInt(t||e,10)};e={t:s(n.offsetTop,l),b:s(n.offsetBottom,l),l:s(n.offsetLeft,f),r:s(n.offsetRight,f)},o=s(n.throttle,250),r=n.debounce!==!1,c=!!n.unload,u=n.callback||u,a.render(),document.addEventListener?(t.addEventListener("scroll",i,!1),t.addEventListener("load",i,!1)):(t.attachEvent("onscroll",i),t.attachEvent("onload",i))},a.render=function(n){for(var o,r,d=(n||document).querySelectorAll("[data-echo], [data-echo-background]"),i=d.length,f={l:0-e.l,t:0-e.t,b:(t.innerHeight||document.documentElement.clientHeight)+e.b,r:(t.innerWidth||document.documentElement.clientWidth)+e.r},s=0;i>s;s++)r=d[s],l(r,f)?(c&&r.setAttribute("data-echo-placeholder",r.src),null!==r.getAttribute("data-echo-background")?r.style.backgroundImage="url("+r.getAttribute("data-echo-background")+")":r.src!==(o=r.getAttribute("data-echo"))&&(r.src=o),c||(r.removeAttribute("data-echo"),r.removeAttribute("data-echo-background")),u(r,"load")):c&&(o=r.getAttribute("data-echo-placeholder"))&&(null!==r.getAttribute("data-echo-background")?r.style.backgroundImage="url("+o+")":r.src=o,r.removeAttribute("data-echo-placeholder"),u(r,"unload"));i||a.detach()},a.detach=function(){document.removeEventListener?t.removeEventListener("scroll",i):t.detachEvent("onscroll",i),clearTimeout(n)},a});;
69/**
70 * @file
71 * Lazyloader echo integration.
72 */
73
74(function($){
75  // Cache the icon and it's dimensions.
76  var lazyloader_icon;
77
78  Drupal.behaviors.lazyloader = {
79    attach: function (context, settings) {
80      if (lazyloader_icon == undefined) {
81        lazyloader_icon = new Image();
82
83        $(lazyloader_icon).attr({src: settings.lazyloader.icon}).attr({alt: 'placeholder'}).addClass('lazyloader-icon');
84      }
85
86      // add the loader icon
87      if(settings.lazyloader.icon != '') {
88        $('img[data-echo]').each(function() {
89          var $img = $(this);
90          var $icon = $(lazyloader_icon).clone();
91          $icon.css({
92            position: 'relative',
93            top: '-' + Math.floor($img.height() / 2 - settings.lazyloader.offsetY) + 'px',
94            left: '-'+ Math.floor($img.width() / 2 + settings.lazyloader.offsetX) + 'px',
95          });
96          $($icon).insertAfter($img);
97        });
98      }
99
100      // Initialize echo.
101      echo.init({
102        offset: settings.lazyloader.offset,
103        throttle: settings.lazyloader.throttle,
104        unload: settings.lazyloader.unload,
105        debounce: settings.lazyloader.debounce,
106        callback: function (element, op) {
107          // Remove the loader icon when the image is loaded.
108          $(element).next('.lazyloader-icon').remove();
109        }
110      });
111
112      // Add a scroll eventlistener to every parent element with overflow:scroll; so we can trigger echo when the
113      // element is scrolled.
114      $('img[data-echo], [data-echo-background]').each(function() {
115        $(this).parents().each(function() {
116          if ($(this).css('overflow') == 'scroll') {
117            $(this).bind('scroll', function() {
118              lazyloaderDebounceOrThrottle(settings.lazyloader.debounce, settings.lazyloader.throttle)
119            });
120          }
121        });
122      });
123    },
124
125    detach: function (context, settings) {
126      // Detach echo.
127      echo.detach();
128    },
129
130    // Variable for throttling.
131    poll: null
132  };
133
134})(jQuery);
135
136function lazyloaderDebounceOrThrottle(debounce, throttle) {
137  if(!debounce && !!Drupal.behaviors.lazyloader.poll) {
138    return;
139  }
140  clearTimeout(Drupal.behaviors.lazyloader.poll);
141  Drupal.behaviors.lazyloader.poll = setTimeout(function(){
142    echo.render();
143    Drupal.behaviors.lazyloader.poll = null;
144  }, throttle);
145}
146;
147/**
148* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
149* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
150* 
151* @param  f  onMouseOver function || An object with configuration options
152* @param  g  onMouseOut function  || Nothing (use configuration options object)
153* @author    Brian Cherne brian(at)cherne(dot)net
154*/
155(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);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.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;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=0;return cfg.out.apply(ob,[ev])};var handleHover=function(e){var ev=jQuery.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).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob)},cfg.timeout)}}};return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover)}})(jQuery);;
156/*
157 * Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget.
158 *
159 * Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
160 * Special thanks to Karl Swedberg for valuable input.
161 *
162 * Dual licensed under the MIT and GPL licenses:
163 *  http://www.opensource.org/licenses/mit-license.php
164 *  http://www.gnu.org/licenses/gpl.html
165 */
166/*
167 * This is not the original jQuery Supposition plugin.
168 * Please refer to the README for more information.
169 */
170
171(function($){
172  $.fn.supposition = function(){
173    var $w = $(window), /*do this once instead of every onBeforeShow call*/
174    _offset = function(dir) {
175      return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
176      || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
177      || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
178    },
179    onHide = function(){
180      this.css({bottom:''});
181    },
182    onBeforeShow = function(){
183      this.each(function(){
184        var $u = $(this);
185        $u.css('display','block');
186        var $mul = $u.closest('.sf-menu'),
187        level = $u.parents('ul').length,
188        menuWidth = $u.width(),
189        menuParentWidth = $u.closest('li').outerWidth(true),
190        menuParentLeft = $u.closest('li').offset().left,
191        totalRight = $w.width() + _offset('x'),
192        menuRight = $u.offset().left + menuWidth,
193        exactMenuWidth = (menuRight > (menuParentWidth + menuParentLeft)) ? menuWidth - (menuRight - (menuParentWidth + menuParentLeft)) : menuWidth;
194        if ($u.parents('.sf-js-enabled').hasClass('rtl')) {
195          if (menuParentLeft < exactMenuWidth) {
196            if (($mul.hasClass('sf-horizontal') && level == 1) || ($mul.hasClass('sf-navbar') && level == 2)){
197              $u.css({left:0,right:'auto'});
198            }
199            else {
200              $u.css({left:menuParentWidth + 'px',right:'auto'});
201            }
202          }
203        }
204        else {
205          if (menuRight > totalRight && menuParentLeft > menuWidth) {
206            if (($mul.hasClass('sf-horizontal') && level == 1) || ($mul.hasClass('sf-navbar') && level == 2)){
207              $u.css({right:0,left:'auto'});
208            }
209            else {
210              $u.css({right:menuParentWidth + 'px',left:'auto'});
211            }
212          }
213        }
214        var windowHeight = $w.height(),
215        offsetTop = $u.offset().top,
216        menuParentShadow = ($mul.hasClass('sf-shadow') && $u.css('padding-bottom').length > 0) ? parseInt($u.css('padding-bottom').slice(0,-2)) : 0,
217        menuParentHeight = ($mul.hasClass('sf-vertical')) ? '-' + menuParentShadow : $u.parent().outerHeight(true) - menuParentShadow,
218        menuHeight = $u.height(),
219        baseline = windowHeight + _offset('y');
220        var expandUp = ((offsetTop + menuHeight > baseline) && (offsetTop > menuHeight));
221        if (expandUp) {
222          $u.css({bottom:menuParentHeight + 'px',top:'auto'});
223        }
224        $u.css('display','none');
225      });
226    };
227
228    return this.each(function() {
229      var o = $.fn.superfish.o[this.serial]; /* get this menu's options */
230
231      /* if callbacks already set, store them */
232      var _onBeforeShow = o.onBeforeShow,
233      _onHide = o.onHide;
234
235      $.extend($.fn.superfish.o[this.serial],{
236        onBeforeShow: function() {
237          onBeforeShow.call(this); /* fire our Supposition callback */
238          _onBeforeShow.call(this); /* fire stored callbacks */
239        },
240        onHide: function() {
241          onHide.call(this); /* fire our Supposition callback */
242          _onHide.call(this); /* fire stored callbacks */
243        }
244      });
245    });
246  };
247})(jQuery);;
248/*
249 * Superfish v1.4.8 - jQuery menu widget
250 * Copyright (c) 2008 Joel Birch
251 *
252 * Dual licensed under the MIT and GPL licenses:
253 *  http://www.opensource.org/licenses/mit-license.php
254 *  http://www.gnu.org/licenses/gpl.html
255 *
256 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
257 */
258/*
259 * This is not the original jQuery Superfish plugin.
260 * Please refer to the README for more information.
261 */
262
263(function($){
264  $.fn.superfish = function(op){
265    var sf = $.fn.superfish,
266      c = sf.c,
267      $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
268      over = function(){
269        var $$ = $(this), menu = getMenu($$);
270        clearTimeout(menu.sfTimer);
271        $$.showSuperfishUl().siblings().hideSuperfishUl();
272      },
273      out = function(){
274        var $$ = $(this), menu = getMenu($$), o = sf.op;
275        clearTimeout(menu.sfTimer);
276        menu.sfTimer=setTimeout(function(){
277          if ($$.children('.sf-clicked').length == 0){
278            o.retainPath=($.inArray($$[0],o.$path)>-1);
279            $$.hideSuperfishUl();
280            if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
281          }
282        },o.delay);
283      },
284      getMenu = function($menu){
285        var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
286        sf.op = sf.o[menu.serial];
287        return menu;
288      },
289      addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
290
291    return this.each(function() {
292      var s = this.serial = sf.o.length;
293      var o = $.extend({},sf.defaults,op);
294      o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels),
295      p = o.$path;
296      for (var l = 0; l < p.length; l++){
297        p.eq(l).addClass([o.hoverClass,c.bcClass].join(' ')).filter('li:has(ul)').removeClass(o.pathClass);
298      }
299      sf.o[s] = sf.op = o;
300
301      $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
302        if (o.autoArrows) addArrow( $(this).children('a:first-child, span.nolink:first-child') );
303      })
304      .not('.'+c.bcClass)
305        .hideSuperfishUl();
306
307      var $a = $('a, span.nolink',this);
308      $a.each(function(i){
309        var $li = $a.eq(i).parents('li');
310        $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
311      });
312      o.onInit.call(this);
313
314    }).each(function() {
315      var menuClasses = [c.menuClass],
316      addShadow = true;
317      if ($.browser !== undefined){
318        if ($.browser.msie && $.browser.version < 7){
319          addShadow = false;
320        }
321      }
322      if (sf.op.dropShadows && addShadow){
323        menuClasses.push(c.shadowClass);
324      }
325      $(this).addClass(menuClasses.join(' '));
326    });
327  };
328
329  var sf = $.fn.superfish;
330  sf.o = [];
331  sf.op = {};
332  sf.IE7fix = function(){
333    var o = sf.op;
334    if ($.browser !== undefined){
335      if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity != undefined) {
336        this.toggleClass(sf.c.shadowClass+'-off');
337      }
338    }
339  };
340  sf.c = {
341    bcClass: 'sf-breadcrumb',
342    menuClass: 'sf-js-enabled',
343    anchorClass: 'sf-with-ul',
344    arrowClass: 'sf-sub-indicator',
345    shadowClass: 'sf-shadow'
346  };
347  sf.defaults = {
348    hoverClass: 'sfHover',
349    pathClass: 'overideThisToUse',
350    pathLevels: 1,
351    delay: 800,
352    animation: {opacity:'show'},
353    speed: 'fast',
354    autoArrows: true,
355    dropShadows: true,
356    disableHI: false, // true disables hoverIntent detection
357    onInit: function(){}, // callback functions
358    onBeforeShow: function(){},
359    onShow: function(){},
360    onHide: function(){}
361  };
362  $.fn.extend({
363    hideSuperfishUl : function(){
364      var o = sf.op,
365        not = (o.retainPath===true) ? o.$path : '';
366      o.retainPath = false;
367      var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
368          .children('ul').addClass('sf-hidden');
369      o.onHide.call($ul);
370      return this;
371    },
372    showSuperfishUl : function(){
373      var o = sf.op,
374        sh = sf.c.shadowClass+'-off',
375        $ul = this.addClass(o.hoverClass)
376          .children('ul.sf-hidden').hide().removeClass('sf-hidden');
377      sf.IE7fix.call($ul);
378      o.onBeforeShow.call($ul);
379      $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
380      return this;
381    }
382  });
383})(jQuery);;
384/*
385 * Supersubs v0.4b - jQuery plugin
386 * Copyright (c) 2013 Joel Birch
387 *
388 * Dual licensed under the MIT and GPL licenses:
389 *  http://www.opensource.org/licenses/mit-license.php
390 *  http://www.gnu.org/licenses/gpl.html
391 *
392 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
393 * their longest list item children. If you use this, please expect bugs and report them
394 * to the jQuery Google Group with the word 'Superfish' in the subject line.
395 *
396 */
397/*
398 * This is not the original jQuery Supersubs plugin.
399 * Please refer to the README for more information.
400 */
401
402(function($){ // $ will refer to jQuery within this closure
403  $.fn.supersubs = function(options){
404    var opts = $.extend({}, $.fn.supersubs.defaults, options);
405    // return original object to support chaining
406    // Although this is unnecessary due to the way the module uses these plugins.
407    for (var a = 0; a < this.length; a++) {
408      // cache selections
409      var $$ = $(this).eq(a),
410      // support metadata
411      o = $.meta ? $.extend({}, opts, $$.data()) : opts;
412      // Jump one level if it's a "NavBar"
413      if ($$.hasClass('sf-navbar')) {
414        $$ = $$.children('li').children('ul');
415      }
416      // cache all ul elements
417      var $ULs = $$.find('ul'),
418      // get the font size of menu.
419      // .css('fontSize') returns various results cross-browser, so measure an em dash instead
420      fontsize = $('<li id="menu-fontsize">&#8212;</li>'),
421      size = fontsize.attr('style','padding:0;position:absolute;top:-99999em;width:auto;')
422      .appendTo($$)[0].clientWidth; //clientWidth is faster than width()
423      // remove em dash
424      fontsize.remove();
425
426      // loop through each ul in menu
427      for (var b = 0; b < $ULs.length; b++) {
428        var
429        // cache this ul
430        $ul = $ULs.eq(b);
431        // If a multi-column sub-menu, and only if correctly configured.
432        if (o.megamenu && $ul.hasClass('sf-megamenu') && $ul.find('.sf-megamenu-column').length > 0){
433          // Look through each column.
434          var $column = $ul.find('div.sf-megamenu-column > ol'),
435          // Overall width.
436          mwWidth = 0;
437          for (var d = 0; d < $column.length; d++){
438            resize($column.eq(d));
439            // New column width, in pixels.
440            var colWidth = $column.width();
441            // Just a trick to convert em unit to px.
442            $column.css({width:colWidth})
443            // Making column parents the same size.
444            .parents('.sf-megamenu-column').css({width:colWidth});
445            // Overall width.
446            mwWidth += parseInt(colWidth);
447          }
448          // Resizing the columns container too.
449          $ul.add($ul.find('li.sf-megamenu-wrapper, li.sf-megamenu-wrapper > ol')).css({width:mwWidth});
450        }
451        else {
452          resize($ul);
453        }
454      }
455    }
456    function resize($ul){
457      var
458      // get all (li) children of this ul
459      $LIs = $ul.children(),
460      // get all anchor grand-children
461      $As = $LIs.children('a');
462      // force content to one line and save current float property
463      $LIs.css('white-space','nowrap');
464      // remove width restrictions and floats so elements remain vertically stacked
465      $ul.add($LIs).add($As).css({float:'none',width:'auto'});
466      // this ul will now be shrink-wrapped to longest li due to position:absolute
467      // so save its width as ems.
468      var emWidth = $ul.get(0).clientWidth / size;
469      // add more width to ensure lines don't turn over at certain sizes in various browsers
470      emWidth += o.extraWidth;
471      // restrict to at least minWidth and at most maxWidth
472      if (emWidth > o.maxWidth) {emWidth = o.maxWidth;}
473      else if (emWidth < o.minWidth) {emWidth = o.minWidth;}
474      emWidth += 'em';
475      // set ul to width in ems
476      $ul.css({width:emWidth});
477      // restore li floats to avoid IE bugs
478      // set li width to full width of this ul
479      // revert white-space to normal
480      $LIs.add($As).css({float:'',width:'',whiteSpace:''});
481      // update offset position of descendant ul to reflect new width of parent.
482      // set it to 100% in case it isn't already set to this in the CSS
483      for (var c = 0; c < $LIs.length; c++) {
484        var $childUl = $LIs.eq(c).children('ul');
485        var offsetDirection = $childUl.css('left') !== undefined ? 'left' : 'right';
486        $childUl.css(offsetDirection,'100%');
487      }
488    }
489    return this;
490  };
491  // expose defaults
492  $.fn.supersubs.defaults = {
493    megamenu: true, // define width for multi-column sub-menus and their columns.
494    minWidth: 12, // requires em unit.
495    maxWidth: 27, // requires em unit.
496    extraWidth: 1 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
497  };
498})(jQuery); // plugin code ends
499;
500/**
501 * @file
502 * The Superfish Drupal Behavior to apply the Superfish jQuery plugin to lists.
503 */
504
505(function ($) {
506  Drupal.behaviors.superfish = {
507    attach: function (context, settings) {
508      // Take a look at each list to apply Superfish to.
509      $.each(settings.superfish || {}, function(index, options) {
510        // Process all Superfish lists.
511        $('#superfish-' + options.id, context).once('superfish', function() {
512          var list = $(this);
513
514          // Check if we are to apply the Supersubs plug-in to it.
515          if (options.plugins || false) {
516            if (options.plugins.supersubs || false) {
517              list.supersubs(options.plugins.supersubs);
518            }
519          }
520
521          // Apply Superfish to the list.
522          list.superfish(options.sf);
523
524          // Check if we are to apply any other plug-in to it.
525          if (options.plugins || false) {
526            if (options.plugins.touchscreen || false) {
527              list.sftouchscreen(options.plugins.touchscreen);
528            }
529            if (options.plugins.smallscreen || false) {
530              list.sfsmallscreen(options.plugins.smallscreen);
531            }
532            if (options.plugins.automaticwidth || false) {
533              list.sfautomaticwidth();
534            }
535            if (options.plugins.supposition || false) {
536              list.supposition();
537            }
538            if (options.plugins.bgiframe || false) {
539              list.find('ul').bgIframe({opacity:false});
540            }
541          }
542        });
543      });
544    }
545  };
546})(jQuery);;

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.