var globalRightMenuColumnId = "side-container";
var globalRightMenuElementId = "side-column";
var globalRightMenuLowerBound;
var globalRightMenuUpperBound;
var globalRightMenuColumnTop;
var globalRightMenuAnim = null;
var globalRightMenuAnimDelay = 0.01;
var globalRightMenuAnimStep = 50;
var globalRightMenuTargetPos;
var globalRightMenuCurrentPos;

function globalRightMenuInit(event)
{

	var column = document.getElementById(globalRightMenuColumnId);
	var menu = document.getElementById(globalRightMenuElementId);
	
	var menuHeight = Element.getHeight(menu);
	
	globalRightMenuColumnTop = Position.cumulativeOffset(column)[1];
	globalRightMenuLowerBound = Position.cumulativeOffset(menu)[1];
	globalRightMenuUpperBound = globalRightMenuColumnTop + Element.getHeight(column) - menuHeight;

	Position.absolutize(menu);

	var phantom = document.createElement("div");
	phantom.style.height = menuHeight + "px";
	phantom.style.overflow = "hidden";
	column.appendChild(phantom);

	globalRightMenuReposition(false);
	
	Event.observe(window, "scroll", globalRightMenuRepositionAfterScroll);

}

function globalRightMenuRepositionAfterScroll(event)
{
	globalRightMenuReposition(true);
}

function globalRightMenuReposition(scroll)
{

	var column = document.getElementById(globalRightMenuColumnId);
	var menu = document.getElementById(globalRightMenuElementId);

	var columnScrollTop = Position.page(column)[1];
	var newTop = globalRightMenuColumnTop - columnScrollTop;
	if (newTop < globalRightMenuLowerBound)
	{
		newTop = globalRightMenuLowerBound;
	}
	else if (newTop > globalRightMenuUpperBound)
	{
		newTop = globalRightMenuUpperBound;
	}
	
	if (scroll)
	{
	
		globalRightMenuCurrentPos = Position.cumulativeOffset(menu)[1];
		globalRightMenuTargetPos = newTop;

		if (globalRightMenuAnim) globalRightMenuAnim.stop();
		globalRightMenuAnim = new PeriodicalExecuter(globalRightMenuMove, globalRightMenuAnimDelay);
		
	}
	else
	{
	
		menu.style.top = newTop + "px";
	
	}

}

function globalRightMenuMove()
{

	if (Math.abs(globalRightMenuCurrentPos - globalRightMenuTargetPos) <= globalRightMenuAnimStep)
	{
		globalRightMenuCurrentPos = globalRightMenuTargetPos;
	}
	else if (globalRightMenuCurrentPos < globalRightMenuTargetPos)
	{
		globalRightMenuCurrentPos += globalRightMenuAnimStep;
	}
	else
	{
		globalRightMenuCurrentPos -= globalRightMenuAnimStep;
	}
	
	var menu = document.getElementById(globalRightMenuElementId);
	menu.style.top = globalRightMenuCurrentPos + "px";
	
	if (globalRightMenuCurrentPos == globalRightMenuTargetPos)
	{
		globalRightMenuAnim.stop();
		globalRightMenuAnim = null;
	}

}
// Safari 2.x can't handle this moving menu. Detect Safari
var goOn = true;
var kitName = "applewebkit/";
var browsername = navigator.userAgent.toLowerCase();
var pos = browsername.indexOf(kitName);
var isAppleWebKit = (pos != -1);
if(isAppleWebKit) {
	// Grab the oh-so-informative webkit version
	var kitVersion = browsername.substring(pos + kitName.length,browsername.length);
	kitVersion = kitVersion.substring(0,kitVersion.indexOf(" "));
	if(parseFloat(kitVersion) < 500) {
		// We have Safari 2. Disable the menu motion
		goOn  = false;
	}
}

if(goOn) {
	Event.observe(window, "load", globalRightMenuInit);
}