/* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html
Revision: http://jsfiddle.net/pasmalin/AyjeZ/
*/
-(function($){
- $.fn.fixFloat = function(options){
+(function ($, window) {
+ "use strict";
+ $.fn.fixFloat = function (options) {
+ var defaults = {
+ enabled: true
+ };
+ options = $.extend(defaults, options);
+ var tbh = $(this);
+ var originalOffset = tbh.position().top;
- var defaults = {
- enabled: true
- };
- var options = $.extend(defaults, options);
-
- var offsetTop; /**Distance of the element from the top of window**/
- var s; /**Scrolled distance from the top of window through which we have moved**/
- var fixMe = true;
- var repositionMe = true;
-
- var tbh = $(this);
- var originalOffset = tbh.position().top; /**Get the actual distance of the element from the top mychange:change to position better work**/
-
- if (tbh.css('position')!='absolute') {
- var tbhBis = $("<div></div>");
- tbhBis.css({"display":tbh.css("display"),"visibility":"hidden"});
- tbhBis.width(tbh.outerWidth(true));
- tbhBis.height(tbh.outerHeight(true));
- tbh.after(tbhBis);
- tbh.width(tbh.width());
- tbh.css({'position':'absolute'});
- }
-
- if(options.enabled){
- $(window).scroll(function(){
- var offsetTop = tbh.offset().top; /**Get the current distance of the element from the top **/
- var s = parseInt($(window).scrollTop(), 10); /**Get the from the top of wondow through which we have scrolled**/
- var fixMe = true;
- if(s > offsetTop){
- fixMe = true;
- }else{
- fixMe = false;
+ if (tbh.css('position') !== 'absolute') {
+ var tbhBis = tbh.clone();
+ tbhBis.css({
+ "display": tbh.css("display"),
+ "visibility": "hidden"
+ });
+ tbhBis.width(tbh.outerWidth(true));
+ tbhBis.height(tbh.outerHeight(true));
+ tbh.after(tbhBis);
+ tbh.width(tbh.width());
+ var tbl = tbh.find("th,td");
+ if (tbl.length > 0) {
+ tbl.each(function () {
+ var $elt = $(this);
+ $elt.width($elt.outerWidth(true));
+ });
+ }
+ tbh.css({
+ 'position': 'absolute',
+ 'top': originalOffset
+ });
}
+ tbh.css({
+ 'z-index': 1000
+ });
- if(s < originalOffset){
- repositionMe = true;
- }else{
- repositionMe = false;
+ if (options.enabled) {
+ $(window).scroll(function () {
+ var offsetTop = tbh.offset().top;
+ var s = parseInt($(window).scrollTop(), 10);
+ var fixMe = (s > offsetTop);
+ var repositionMe = (s < originalOffset);
+ if (fixMe) {
+ tbh.css({
+ 'position': 'fixed',
+ 'top': '0'
+ });
+ }
+ if (repositionMe) {
+ tbh.css({
+ 'position': 'absolute',
+ 'top': originalOffset
+ });
+ }
+ });
}
-
- if(fixMe){
- var cssObj = {
- 'position' : 'fixed',
- 'top' : '0px',
- 'z-index' : '1000'
- }
- tbh.css(cssObj);
- tbh.addClass("floating");
- }
- if(repositionMe){
- var cssObj = {
- 'position' : 'absolute',
- 'top' : originalOffset,
- 'z-index' : '1'
- }
- tbh.css(cssObj);
- tbh.removeClass("floating");
- }
- });
- }
- };
-})(jQuery);
\ No newline at end of file
+ };
+})(jQuery, window);