// Scroller

function scroll(N, id, deltaX, backButton, nextButton) {
	var n = 1;
	var x1 = 0;
	this.N = N;
	var obj = document.getElementById(id);

	this.back = function() {
		n--;
		if (n < 1) n = 1;
		x2 = (1-n) * deltaX;
		//document.getElementById(id).style.marginLeft = x2 + 'px';
		moveIt(id,x1,x2);
		x1 = x2;
		
		// modify buttons
		if (backButton && nextButton) {
			classRemove(document.getElementById(backButton),'off');
			classRemove(document.getElementById(nextButton),'off');
			if (n == 1) {classAdd(document.getElementById(backButton),'off')};
		}
		
		return false;	
	}
	this.next = function() {
		n++;
		if (n > N) n = N;
		x2 = (1-n) * deltaX;
		//document.getElementById(id).style.marginLeft = x2 + 'px';
		moveIt(id,x1,x2);
		x1 = x2;
		
		// modify buttons
		if (backButton && nextButton) {
			classRemove(document.getElementById(backButton),'off');
			classRemove(document.getElementById(nextButton),'off');
			if (n == N) {classAdd(document.getElementById(nextButton),'off')};
		}
		
		return false;	
	}
	this.pos = function(X) {
		x2 = (1-X) * deltaX;		
		moveIt(id,x1,x2);
		x1 = x2;
		n=X;
	
		return false;		
	}
}


//var bestof = new scroll(4,'bestOfScroller',900,'bestOfBack','bestOfNext');

var scrollTimer=new Array(); // timeouts for each object using these fns

function moveIt(id,x1,x2) {
    // clear other scrolls for this object
    if (scrollTimer[id]) clearTimeout(scrollTimer[id]);

	vx = 40; // pixels
	if (x2<x1) vx=-Math.abs(vx);
    x1+=vx;
 
    // test to see if reached destination
    if (vx<0) {if (x1<=x2) {x1=x2; vx=0;}}
    else {if (x1>=x2) {x1=x2; vx=0;}}	

	document.getElementById(id).style.marginLeft = x1 + 'px';	
	if (vx!=0) scrollTimer[id] = setTimeout("moveIt('"+id+"',"+x1+","+x2+")",60);
}

<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->


