
//
// Animated Scroll Functions
// Scrolls are synchronous -- only one at a time.
//

var scrollanim = {time:0, begin:0, change:0.0, duration:0.0, element:null, timer:null};

function scrollStart(elem, start, end, direction, callback)
{
	//console.log("scrollStart from "+start+" to "+end+" in direction "+direction);

	if (scrollanim.timer != null) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	scrollanim.time = 0;
	scrollanim.begin = start;
	scrollanim.change = end - start;
	scrollanim.duration = 25;
	scrollanim.element = elem;
	
	if (direction == "horiz") {
		scrollanim.timer = setInterval(scrollHorizAnim, 15);
	}
	else {
		scrollanim.timer = setInterval(scrollVertAnim, 15);
	}

	function scrollVertAnim()
	{
		if (scrollanim.time > scrollanim.duration) {
			clearInterval(scrollanim.timer);
			scrollanim.timer = null;
			callback();
		}
		else {
			move = sineInOut(scrollanim.time, scrollanim.begin, scrollanim.change, scrollanim.duration);
			scrollanim.element.scrollTop = move; 
			scrollanim.time++;
		}
	}
	
	function scrollHorizAnim()
	{
		if (scrollanim.time > scrollanim.duration) {
			clearInterval(scrollanim.timer);
			scrollanim.timer = null;
			callback();
		}
		else {
			move = sineInOut(scrollanim.time, scrollanim.begin, scrollanim.change, scrollanim.duration);
			//console.log(move)
			scrollanim.element.scrollLeft = move;
			scrollanim.time++;
		}
	}
	
	function sineInOut(t, b, c, d)
	{
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	}

}

