PageSourceSearch

https://www.thef.info/sites/all/libraries/superfish/supposition.js?tlx0ki

js thef.info collected 2026-10-07 23:30:11 UTC 3,053 bytes, 82 lines download raw bytes

1/*
2* Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget - LAST UPDATE: MARCH 23rd, 2011
3*
4* Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
5* Special thanks to Karl Swedberg for valuable input.
6* 
7* Dec 28th, 2010 - Modified for the Superfish project for Drupal (http://drupal.org/project/superfish)
8*
9* jQuery version: 1.3.x or higher.
10*
11* Dual licensed under the MIT and GPL licenses:
12* 	http://www.opensource.org/licenses/mit-license.php
13* 	http://www.gnu.org/licenses/gpl.html
14*/
15
16(function($){
17  $.fn.supposition = function(){
18    var $w = $(window), /*do this once instead of every onBeforeShow call*/
19    _offset = function(dir) {
20      return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
21      || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
22      || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
23    },
24    onHide = function(){
25      this.css({Top:'',Right:'',Bottom:'',Left:''});
26    },
27    onBeforeShow = function(){
28      this.each(function(){
29        var $u = $(this);
30        $u.css('display','block');
31        var menuWidth = $u.width(),
32        menuParentWidth = $u.closest('li').outerWidth(true),
33        menuParentLeft = $u.closest('li').offset().left,
34        totalRight = $w.width() + _offset('x'),
35        menuRight = $u.offset().left + menuWidth,
36        exactMenuWidth = (menuRight > (menuParentWidth + menuParentLeft)) ? menuWidth - (menuRight - (menuParentWidth + menuParentLeft)) : menuWidth;  
37        if ($u.parents('.sf-js-enabled').hasClass('rtl')) {
38          if (menuParentLeft < exactMenuWidth) {
39            $u.css('left', menuParentWidth + 'px');
40            $u.css('right', 'auto');
41          }
42        }
43        else {
44          if (menuRight > totalRight && menuParentLeft > menuWidth) {
45            $u.css('right', menuParentWidth + 'px');
46            $u.css('left', 'auto');
47          }
48        }
49        var windowHeight = $w.height(),
50        offsetTop = $u.offset().top,
51        menuParentHeight = $u.parent().outerHeight(true),
52        menuHeight = $u.height(),
53        baseline = windowHeight + _offset('y');
54        var expandUp = ((offsetTop + menuHeight > baseline) && (offsetTop > menuHeight));
55        if (expandUp) {
56          $u.css('bottom', menuParentHeight + 'px');
57          $u.css('top', 'auto');
58        }
59        $u.css('display','none');
60      });
61    };
62
63    return this.each(function() {
64    var o = $.fn.superfish.o[this.serial]; /* get this menu's options */
65
66    /* if callbacks already set, store them */
67    var _onBeforeShow = o.onBeforeShow,
68    _onHide = o.onHide;
69
70    $.extend($.fn.superfish.o[this.serial],{
71    onBeforeShow: function() {
72    onBeforeShow.call(this); /* fire our Supposition callback */
73    _onBeforeShow.call(this); /* fire stored callbacks */
74    },
75    onHide: function() {
76    onHide.call(this); /* fire our Supposition callback */
77    _onHide.call(this); /* fire stored callbacks */
78    }
79    });
80    });
81  };
82})(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.