diff --git a/airtime_mvc/public/js/libs/jquery.stickyPanel.js b/airtime_mvc/public/js/libs/jquery.stickyPanel.js index e666200e5..bb1cb2bc9 100644 --- a/airtime_mvc/public/js/libs/jquery.stickyPanel.js +++ b/airtime_mvc/public/js/libs/jquery.stickyPanel.js @@ -1,12 +1,12 @@ /* * jQuery.stickyPanel * ---------------------- -* version: 1.0.0 -* date: 1/17/11 +* version: 1.4.1 +* date: 7/21/11 * * Copyright (c) 2011 Donny Velazquez * http://donnyvblog.blogspot.com/ -* http://code.google.com/p/stickyPanel +* http://code.google.com/p/sticky-panel/ * * Licensed under the Apache License 2.0 * @@ -24,55 +24,71 @@ }; function Scroll(event) { + var node = event.data.selected; var o = event.data.options; + var isMobile = navigator.userAgent.toLowerCase().indexOf('mobile') > 0; + + var windowHeight = $(window).height(); + var nodeHeight = node.outerHeight(true); + var scrollTop = $(document).scrollTop(); + // when top of window reaches the top of the panel detach - if ($(document).scrollTop() >= node.offset().top) { + if (!isMobile && + scrollTop <= $(document).height() - windowHeight && // Fix for rubberband scrolling in Safari on Lion + scrollTop > node.offset().top - o.topPadding) { // topPadding - var top = 0; + var newNodeTop = 0; if (o.topPadding != "undefined") { - top = top + o.topPadding; + newNodeTop = newNodeTop + o.topPadding; } + // get left before adding spacer + var nodeLeft = node.offset().left; + // save panels top - node.data("PanelsTop", node.offset().top - top); + node.data("PanelsTop", node.offset().top - newNodeTop); + + // MOVED: savePanelSpace before afterDetachCSSClass to handle afterDetachCSSClass changing size of node + // savePanelSpace + if (o.savePanelSpace == true) { + var nodeWidth = node.outerWidth(true); + var nodeCssfloat = node.css("float"); + var nodeCssdisplay = node.css("display"); + var randomNum = Math.ceil(Math.random() * 9999); /* Pick random number between 1 and 9999 */ + node.data("PanelSpaceID", "stickyPanelSpace" + randomNum); + node.before("
 
"); + } // afterDetachCSSClass if (o.afterDetachCSSClass != "") { node.addClass(o.afterDetachCSSClass); } - // savePanelSpace - if (o.savePanelSpace == true) { - var width = node.outerWidth(true); - var height = node.outerHeight(true); - var float = node.css("float"); - var randomNum = Math.ceil(Math.random() * 9999); /* Pick random number between 1 and 9999 */ - node.data("PanelSpaceID", "stickyPanelSpace" + randomNum); - node.before("
"); - } + // save inline css + node.data("Original_Inline_CSS", (!node.attr("style") ? "" : node.attr("style"))); // detach panel node.css({ - "top": top, + "margin": 0, + "left": nodeLeft, + "top": newNodeTop, "position": "fixed" }); } - if ($(document).scrollTop() <= node.data("PanelsTop")) { + // ADDED: css top check to avoid continuous reattachment + if (scrollTop <= node.data("PanelsTop") && node.css("top") != "auto") { + + if (o.savePanelSpace == true) { + $("#" + node.data("PanelSpaceID")).remove(); + } - if (o.savePanelSpace == true) { - $("#" + node.data("PanelSpaceID")).remove(); - } - // attach panel - node.css({ - "top": "auto", - "position": "static" - }); + node.attr("style", node.data("Original_Inline_CSS")); if (o.afterDetachCSSClass != "") { node.removeClass(o.afterDetachCSSClass);