jQuery.fn.floatDown = function() {
	if($(this).length > 0) {
		var $float_this = $(this);		
		var $place_holder = $(document.createElement("div")).hide();
		var is_floating = false;
	
		var this_top = Math.round($float_this.offset().top);
		var this_left = Math.round($float_this.offset().left);
		var this_height = $float_this.outerHeight(true);	
		$float_this.css('width', $float_this.width());
		//$float_this.css('left', this_left);
	
		$float_this.css('zIndex', 1000);
		$float_this.after($place_holder);	
		$place_holder.css({'height':this_height, 'width':$float_this.width()});
		
		var fadeSpeed = 200, fadeTo = 0.85, topDistance = 30;
		var topbarME = function() { $float_this.fadeTo(fadeSpeed,1); };
		var topbarML = function() { $float_this.fadeTo(fadeSpeed,fadeTo); };
		
		$(window).scroll(function(){
			onscroll();
		});
		$(window).resize(function(){
			onscroll();
		});
		
		var position = null;
		
		function onscroll() {
			var position = getPosition(); 
			
			if ($(window).scrollTop() + $(window).height() < Math.round(position.top) + this_height) {
				if (is_floating == false) {					
					$place_holder.show();
					$float_this.css('position','fixed').css('bottom','0px');
					is_floating = true;
					topbarML();
					$float_this.bind('mouseenter',topbarME);
					$float_this.bind('mouseleave',topbarML);
					$float_this.addClass('floating');
				}
			} else {
				if (is_floating == true) {
					$place_holder.hide();
					$float_this.css('position','').css('bottom','');
					is_floating = false;
					this_top = Math.round($float_this.offset().top);
					this_height = $float_this.outerHeight(true);
					topbarME();
					$float_this.unbind('mouseenter',topbarME);
					$float_this.unbind('mouseleave',topbarML);
					$float_this.removeClass('floating');
					
				}
			}
		}
		
		function getPosition() {
			if (is_floating == true) {
				var position = $place_holder.offset();
				return position;	
			} else {
				return $float_this.offset();
			}
		}
		
		$(window).trigger("scroll");
		
	}
	return $float_this; // for chaining
}
