/////////////////////////////////
//TWEEN FUCNTIONS
/////////////////////////////////


var tweenTimeFactor	= 75;
var intialScrollSpeed = 15;
var scrollIncrement = 1;

var scrollSpeed = 0;
var maxScrollSpeed = 50;

var tweenDirection = "left";
var tweenDirectionFactor = 1;

var tweenMargin = 0;

function stopTween()
{
	debug(tweenerDebug , "stop tween");
	//speed*time = distance
	tweenDirectionFactor = tweenDirectionFactor*-1;
	
	//var time = (scrollSpeed/scrollIncrement)*tweenTimeFactor;
	
	//scrollSpeed = 0;
	
	
}

//starts a tween on tO
//tO is the object to be tweened
//tD is direction
function startTween(a, value, tO, tD, tM)
{
	debug(tweenerDebug , "start tween");
	if(a != null && value != null)
	{
		tweenDirectionFactor = value;
		if(tD != null)
		{
			tweenDirection = tD;
		}
		if(tM != null)
		{
			tweenMargin = tM;
		}
		if(tO == null)
		{
			tweenObject = $(a).parent().find('ul');
		}
		else
		{
			tweenObject = tO;
		}
		scrollSpeed = intialScrollSpeed*tweenDirectionFactor;
		tween();
	}
	return false;
}

function tween()
{
	if(tweenObject)
	{
		var currentPos 	= getCurrentPosition();
		var newPos 		= processTweenPosition(currentPos);
		if(currentPos != newPos)
		{
			debug(tweenerDebug , currentPos + " to "+newPos);
			var tweenAniObject = {"left": newPos};
			if(tweenDirection == "top")
			{
				tweenAniObject = {"top": newPos};
			}
			tweenObject.animate(tweenAniObject, 0);
			
			incrementTweenSpeed();
			
			debug(tweenerDebug , "scrollSpeed: "+scrollSpeed);
			setTimeout(tween, tweenTimeFactor);
		}
	}
	return false;
}

function incrementTweenSpeed()
{
	if(Math.abs(scrollSpeed) < maxScrollSpeed)
	{
		scrollSpeed+= (scrollIncrement*tweenDirectionFactor);
		if(Math.abs(scrollSpeed) > maxScrollSpeed)
		{
			scrollSpeed = tweenDirectionFactor*maxScrollSpeed;
		}
	}
}

function getCurrentPosition()
{
	var currentPos 	= tweenObject.position().left*1;
	if(tweenDirection == "top")
	{
		currentPos 	= tweenObject.position().top*1;
	}
	if(tweenMargin)
	{
		currentPos += tweenMargin;
	}
	return currentPos;
}

function processTweenPosition(currentPos)
{
	var newPos 		= currentPos + scrollSpeed;
	var maxPos		= tweenObject.parent().width()-tweenObject.width();
	debug(tweenerDebug , "currentPos:"+currentPos+", newPos: "+newPos+", maxPos: "+maxPos);
	if(tweenDirection == "top")
	{
		maxPos		= tweenObject.parent().height() - tweenObject.height();
	}
	if(newPos < maxPos)
	{
		newPos = maxPos;
	}
	else if(newPos > 0)
	{
		newPos = 0;
	}
	return newPos;
}


