summaryrefslogtreecommitdiff
path: root/rt/share/static/js/jquery.supposition.js
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/static/js/jquery.supposition.js')
-rw-r--r--rt/share/static/js/jquery.supposition.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/rt/share/static/js/jquery.supposition.js b/rt/share/static/js/jquery.supposition.js
new file mode 100644
index 0000000..0ce5730
--- /dev/null
+++ b/rt/share/static/js/jquery.supposition.js
@@ -0,0 +1,83 @@
+/* This file was modified to look for superfish in $.fn.superfish instead of $.superfish */
+
+/*
+ * Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget
+ *
+ * Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
+ * Special thanks to Karl Swedberg for valuable input.
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($){
+
+ $.fn.supposition = function(){
+ var $w = $(window), /*do this once instead of every onBeforeShow call*/
+ _offset = function(dir) {
+ return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
+ || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
+ || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
+ },
+ onInit = function(){
+ /* I haven't touched this bit - needs work as there are still z-index issues */
+ $topNav = $('li',this);
+ var cZ=parseInt($topNav.css('z-index')) + $topNav.length;
+ $topNav.each(function() {
+ $(this).css({zIndex:--cZ});
+ });
+ },
+ onHide = function(){
+ this.css({marginTop:'',marginLeft:''});
+ },
+ onBeforeShow = function(){
+ this.each(function(){
+ var $u = $(this);
+ $u.css('display','block');
+ var menuWidth = $u.width(),
+ parentWidth = $u.parents('ul').width(),
+ totalRight = $w.width() + _offset('x'),
+ menuRight = $u.offset().left + menuWidth;
+ if (menuRight > totalRight) {
+ $u.css('margin-left', ($u.parents('ul').length == 1 ? totalRight - menuRight : -(menuWidth + parentWidth)) + 'px');
+ }
+
+ var windowHeight = $w.height(),
+ offsetTop = $u.offset().top,
+ menuHeight = $u.height(),
+ baseline = windowHeight + _offset('y');
+ var expandUp = (offsetTop + menuHeight > baseline);
+ if (expandUp) {
+ $u.css('margin-top',baseline - (menuHeight + offsetTop));
+ }
+ $u.css('display','none');
+ });
+ };
+
+ return this.each(function() {
+ var o = $.fn.superfish.o[this.serial]; /* get this menu's options */
+
+ /* if callbacks already set, store them */
+ var _onInit = o.onInit,
+ _onBeforeShow = o.onBeforeShow,
+ _onHide = o.onHide;
+
+ $.extend($.fn.superfish.o[this.serial],{
+ onInit : function() {
+ onInit.call(this); /* fire our Supposition callback */
+ _onInit.call(this); /* fire stored callbacks */
+ },
+ onBeforeShow: function() {
+ onBeforeShow.call(this); /* fire our Supposition callback */
+ _onBeforeShow.call(this); /* fire stored callbacks */
+ },
+ onHide : function() {
+ onHide.call(this); /* fire our Supposition callback */
+ _onHide.call(this); /* fire stored callbacks */
+ }
+ });
+ });
+ };
+
+})(jQuery);