var floatingMenuId = 'menu';
var floatingMenu;

function menu_shit() {
	/*************/
	/* MENU SHIT */
	/*************/
	floatingMenu =
	{
		targetX: -1000,
		targetY: 1,
	
		hasInner: typeof(window.innerWidth) == 'number',
		hasElement: typeof(document.documentElement) == 'object'
			&& typeof(document.documentElement.clientWidth) == 'number',
	
		menu:
			document.getElementById
			? document.getElementById(floatingMenuId)
			: document.all
			  ? document.all[floatingMenuId]
			  : document.layers[floatingMenuId]
	};
	
	floatingMenu.move = function ()
	{
		//floatingMenu.menu.style.left = floatingMenu.nextX + 'px';
		floatingMenu.menu.style.top = floatingMenu.nextY + 'px';
	}
	
	floatingMenu.computeShifts = function ()
	{
		var de = document.documentElement;
	
		floatingMenu.shiftX =  
			floatingMenu.hasInner  
			? pageXOffset  
			: floatingMenu.hasElement  
			  ? de.scrollLeft  
			  : document.body.scrollLeft;  
		if (floatingMenu.targetX < 0)
		{
			floatingMenu.shiftX +=
				floatingMenu.hasElement
				? de.clientWidth
				: document.body.clientWidth;
		}
	
		floatingMenu.shiftY = 
			floatingMenu.hasInner
			? pageYOffset
			: floatingMenu.hasElement
			  ? de.scrollTop
			  : document.body.scrollTop;
		if (floatingMenu.targetY < 0)
		{
			if (floatingMenu.hasElement && floatingMenu.hasInner)
			{
				// Handle Opera 8 problems
				floatingMenu.shiftY +=
					de.clientHeight > window.innerHeight
					? window.innerHeight
					: de.clientHeight
			}
			else
			{
				floatingMenu.shiftY +=
					floatingMenu.hasElement
					? de.clientHeight
					: document.body.clientHeight;
			}
		}
	}
	
	floatingMenu.calculateCornerX = function()
	{
		if (floatingMenu.targetX != 'center')
			return floatingMenu.shiftX + floatingMenu.targetX;
	
		var width = parseInt(floatingMenu.menu.offsetWidth);
	
		var cornerX =
			floatingMenu.hasElement
			? (floatingMenu.hasInner
			   ? pageXOffset
			   : document.documentElement.scrollLeft) + 
			  (document.documentElement.clientWidth - width)/2
			: document.body.scrollLeft + 
			  (document.body.clientWidth - width)/2;
		return cornerX;
	};
	
	floatingMenu.calculateCornerY = function()
	{
		if (floatingMenu.targetY != 'center')
			return floatingMenu.shiftY + floatingMenu.targetY;
	
		var height = parseInt(floatingMenu.menu.offsetHeight);
	
		// Handle Opera 8 problems
		var clientHeight = 
			floatingMenu.hasElement && floatingMenu.hasInner
			&& document.documentElement.clientHeight 
				> window.innerHeight
			? window.innerHeight
			: document.documentElement.clientHeight
	
		var cornerY =
			floatingMenu.hasElement
			? (floatingMenu.hasInner  
			   ? pageYOffset
			   : document.documentElement.scrollTop) + 
			  (clientHeight - height)/2
			: document.body.scrollTop + 
			  (document.body.clientHeight - height)/2;
		return cornerY;
	};
	
	floatingMenu.doFloat = function()
	{
		// Check if reference to menu was lost due
		// to ajax manipuations
		if (!floatingMenu.menu)
		{
			menu = document.getElementById
				? document.getElementById(floatingMenuId)
				: document.all
				  ? document.all[floatingMenuId]
				  : document.layers[floatingMenuId];
	
			initSecondary();
		}
	
		var stepX, stepY;
	
		floatingMenu.computeShifts();
	
		var cornerX = floatingMenu.calculateCornerX();
	
		var stepX = (cornerX - floatingMenu.nextX) * .07;
		if (Math.abs(stepX) < .5)
		{
			stepX = cornerX - floatingMenu.nextX;
		}
	
		var cornerY = floatingMenu.calculateCornerY();
	
		var stepY = (cornerY - floatingMenu.nextY) * .07;
		if (Math.abs(stepY) < .5)
		{
			stepY = cornerY - floatingMenu.nextY;
		}
	
	
	
		if (Math.abs(stepX) > 0 ||
			Math.abs(stepY) > 0)
		{
			floatingMenu.nextX += stepX;
			floatingMenu.nextY += stepY;
			floatingMenu.move();
		}
	
		setTimeout('floatingMenu.doFloat()', 20);
	};
	
	// addEvent designed by Aaron Moore
	floatingMenu.addEvent = function(element, listener, handler)
	{
		if(typeof element[listener] != 'function' || 
		   typeof element[listener + '_num'] == 'undefined')
		{
			element[listener + '_num'] = 0;
			if (typeof element[listener] == 'function')
			{
				element[listener + 0] = element[listener];
				element[listener + '_num']++;
			}
			element[listener] = function(e)
			{
				var r = true;
				e = (e) ? e : window.event;
				for(var i = element[listener + '_num'] -1; i >= 0; i--)
				{
					if(element[listener + i](e) == false)
						r = false;
				}
				return r;
			}
		}
	
		//if handler is not already stored, assign it
		for(var i = 0; i < element[listener + '_num']; i++)
			if(element[listener + i] == handler)
				return;
		element[listener + element[listener + '_num']] = handler;
		element[listener + '_num']++;
	};
	
	floatingMenu.init = function()
	{
		floatingMenu.initSecondary();
		floatingMenu.doFloat();
	};
	
	// Some browsers init scrollbars only after
	// full document load.
	floatingMenu.initSecondary = function()
	{
		floatingMenu.computeShifts();
		floatingMenu.nextX = floatingMenu.calculateCornerX();
		floatingMenu.nextY = floatingMenu.calculateCornerY();
		floatingMenu.move();
	}
	
	if (document.layers)
		floatingMenu.init();
	else
	{
		floatingMenu.targetX='center';
		floatingMenu.targetY=10;
		floatingMenu.init();
		floatingMenu.initSecondary();
	}
	/*************/
	/*</menu shit>*/
	/*************/
}