		// We use this script to relocate the nav bar to the bottom left for javascript enabled browsers.
		
		// Width and height of the background image, defines the max size of the innerbody div.
		BGIMG_WIDTH = 1200;
		BGIMG_HEIGHT = 800;
		
		MENU_MAX_HEIGHT = 320;
		MENU_MIN_HEIGHT = 80;
		MENU_SIZE_STEP = 40;
		MENU_SHRINK_DELAY = 250;
		ANIM_STEP_INTERVAL = 17;
		
		// Fudge factor used to limit the size of the innerbody to less than the client window size.
		CLIENT_WINDOW_BUFFER_H = 10;
		CLIENT_WINDOW_BUFFER_V = 10;
		
		// Workaround because Internet Explorer is stupid and throws a fit if I try to use this in the domready event.
		var innerbody = null;
		var navbar = null;
		var newsbar = null;
		var stilesname = null;
		
		// Optimization for the sliding animation.
		var nav_interval = null;
		
		placeNavbar = function ()
		{
			client_size = getWindowClientSize();
			// Resize the innerbody div. We subtract the buffer as a fudge factor to eliminate scrollbars.
			innerwidth = Math.min(client_size.w, BGIMG_WIDTH) - CLIENT_WINDOW_BUFFER_H*2;
			innerheight = Math.min(client_size.h, BGIMG_HEIGHT) - CLIENT_WINDOW_BUFFER_V*2;
			// Set innerbody size.
			$j("#innerbody").css('width',innerwidth+"px");
			$j("#innerbody").css('height',innerheight+"px");
			// Space innerbody to match image centering.
			$j("#innerbody").css('margin-top',(client_size.h - innerheight)/2 + "px");
			
			// Place title bar at bottom right.
			navbar.style.left = innerbody.offsetWidth - navbar.offsetWidth + "px";
			navbar.style.top = innerbody.offsetHeight - navbar.offsetHeight + "px";
			
			// Align middle of stiles name with center line of screen
			stilesname.style.top = (innerbody.offsetHeight - stilesname.offsetHeight)/2 + "px";
		};
		
		callTwice = function(){
			placeNavbar();
			placeNavbar();
		};
		
		$j(document).ready(placeNavbar);
		$j(window).resize(callTwice);
		
		resizeMenu = function(menuColumn){
			var targ = menuColumn.sizeTarget;
			
			var jsizer = $j('.sizer', menuColumn);
			var curSize = jsizer.get(0).offsetHeight;
			
			// Early out.
			if ( curSize == targ )
			{
				clearInterval( menuColumn.animInterval );
				menuColumn.animInterval = null;
			}
			
			var jsizer2 = $j('.sizer2', menuColumn);
			
			// One step closer.
			if ( curSize > targ )
			{
				curSize -= MENU_SIZE_STEP;
				if ( curSize < targ )
					curSize = targ;
			}
			else if ( curSize < targ )
			{
				curSize += MENU_SIZE_STEP;
				if ( curSize > targ )
					curSize = targ;
			}
			
			// Set sizes
			$j(menuColumn).css("display", "none");
			jsizer.css("top", (MENU_MAX_HEIGHT - curSize) + "px").css("height", curSize);
			jsizer2.css("top", (curSize - MENU_MAX_HEIGHT) + "px");
			$j(menuColumn).css("display", "block");
		};
		
		shrinkMenu = function(sizerNode){
			var menuColumn = sizerNode.parentNode.parentNode;
			menuColumn.sizeTarget = MENU_MIN_HEIGHT;
			if ( menuColumn.animInterval == null )
				menuColumn.animInterval = setInterval( function() {resizeMenu(menuColumn);}, ANIM_STEP_INTERVAL );
		};
		
		delayShrinkMenu = function(sizerNode){
			var menuColumn = sizerNode.parentNode.parentNode;
			menuColumn.shrinkDelay = setTimeout( function() {shrinkMenu(sizerNode);}, MENU_SHRINK_DELAY );
		};
		
		expandMenu = function(sizerNode){
			var menuColumn = sizerNode.parentNode.parentNode;
			menuColumn.sizeTarget = MENU_MAX_HEIGHT;
			
			if ( menuColumn.shrinkDelay != null )
			{
				clearTimeout( menuColumn.shrinkDelay );
				menuColumn.shrinkDelay = null;
			}
			
			if ( menuColumn.animInterval == null )
				menuColumn.animInterval = setInterval( function() {resizeMenu(menuColumn);}, ANIM_STEP_INTERVAL );
		};
		
		$j(document).ready( function() {
			$j('.sizer2').mouseover( function() {expandMenu(this);} ).mouseout( function() {delayShrinkMenu(this);} );
		} );
		