jQuery.fn.sticky = function(delay)
{
	delay = delay || 0;
	offset = 16;
	
	var win = { height : jQuery(window).height() }
	
	var element = {
		bottom : 0,
		top : jQuery(this).offset().top,
		height : jQuery(this).outerHeight()
		}
	
	var footer = {
		top : jQuery('div.footer:first').offset().top,
		height : jQuery('div.footer:first').outerHeight()
	}
	
	var nav = { height: jQuery('ul#nav').outerHeight() }
	
	var header = { height: jQuery('div#header').outerHeight() }
	
	var scroll_control = { top : jQuery('span#scroll-control').offset().top }
	
	//Work out proposed top
	element.top = ((win.height - element.height) + (scroll_control.top - offset));
	
	//Check if we are going to cover the footer
	if((element.top + element.height + offset) >= footer.top) element.top = (footer.top - element.height) - offset;
	
	//Check if we are going to cover header or nav
	if(element.top < (nav.height + header.height)) element.top = nav.height + header.height;
	
	//Move the element
	jQuery(this).animate({'top' : element.top}, delay);
}