
var defaultPanel = 'features-panel';
var panelArea = 'featurepane';
var currentPanel = defaultPanel;
var scrollObj = {currentStep:0, totalSteps:0, startPos:0, scrollTo:0, scrollTimer:null, scrollArea: null};

function animateToPanel(newPanel)
{
	if (newPanel == currentPanel) { return;}


	// if there is a current animation going on, cancel the timer that is doing the animation.
	if (scrollObj.scrollTimer != null) {
		clearInterval(scrollObj.scrollTimer);
		scrollObj.scrollTimer = null;
	}
	currentPanel = newPanel;

	// find the difference between the default panel and the current panel.
	newPanelPos = getPosByID(newPanel);
	defaultPanelPos = getPosByID(defaultPanel);
	offsetX = newPanelPos[0] - defaultPanelPos[0];	
	
	// setup the scroll object for this animation.
	scrollObj.currentStep = 0;
	scrollObj.totalSteps = 25;
	scrollObj.scrollArea =  document.getElementById(panelArea);
	scrollObj.startPos = scrollObj.scrollArea.scrollLeft;
	scrollObj.scrollTo = offsetX - scrollObj.scrollArea.scrollLeft;
	scrollObj.scrollTimer = setInterval("animateScroll();", 15);
}

function animateScroll()
{
	if (scrollObj.currentStep <= scrollObj.totalSteps)
	{
		scrollObj.scrollArea.scrollLeft = sineInOut(scrollObj.currentStep, scrollObj.startPos, scrollObj.scrollTo, scrollObj.totalSteps);
		scrollObj.currentStep++;
	} else {
		clearInterval(scrollObj.scrollTimer);
		scrollObj.scrollTimer = null;
	}
}

function getPosByID(elementID)
{
	var posX = 0;
	var posY = 0;

	elementObj = document.getElementById(elementID);
	posX += elementObj.offsetLeft;
	posY += elementObj.offsetTop;

	return Array(posX, posY);	
}

function sineInOut(t, b, c, d)
{
	return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
}
