// Image Scroller

var scroller = new Object();

// ----------------------------------  Variables --------------------------------------------

scroller.speed      =     1;       //  Number of pixels to scroll per frame
scroller.enterspeed =     20;      //  Number of pixels to scroll per frame during initial slide-in
scroller.delay      =     20;      //  Delay between frames (in milliseconds)
scroller.pause      =     500;     //  Extra delay when switching directions (in milliseconds)

scroller.accframes  =     80;      //  Number of frames to decelerate/accelerate before/after switching directions
scroller.accamount  =     1;       //  Amount of time (in milliseconds) to change the delay for each frame during acceleration/deceleration

// ------------------------------------------------------------------------------------------

scroller.start = function(outid, inid) {
	scroller.outerdiv = document.getElementById(outid);
	scroller.innerdiv = document.getElementById(inid);
	scroller.offset = scroller.innerdiv.offsetLeft;
	scroller.toleft = true;
	scroller.slidein();
}

scroller.slidein = function() {
	var offset = scroller.offset - scroller.enterspeed;
	if (offset > (scroller.enterspeed * scroller.enterspeed)) {
		scroller.offset = offset;
		scroller.innerdiv.style.left = offset+"px";
		setTimeout("scroller.slidein()", scroller.delay);
	} else if (scroller.offset > 0) {
		if (scroller.offset > scroller.enterspeed) {
			scroller.offset = scroller.offset - (scroller.offset / scroller.enterspeed);
		} else {
			scroller.offset = scroller.offset - scroller.speed;
		}
		scroller.innerdiv.style.left = scroller.offset+"px";
		setTimeout("scroller.slidein()", scroller.delay);
	} else if (scroller.offset > -(scroller.speed * scroller.accframes)) {
		scroller.offset = scroller.offset - scroller.speed;
		scroller.innerdiv.style.left = scroller.offset+"px";
		setTimeout("scroller.slidein()", scroller.delay);
	} else {
		scroller.frame();
	}
}

scroller.frame = function() {
	scroller.innerdiv.style.left = scroller.offset+"px";

	var pause = false;
	var delay = scroller.delay;

	if (scroller.innerdiv.clientWidth <= (scroller.outerdiv.clientWidth - scroller.offset)) {
		scroller.toleft = false;
		pause = true;
	} else if (scroller.offset >= 0) {
		scroller.toleft = true;
		pause = true;
	}
	
	if (scroller.accframes > 0) {
		if (scroller.innerdiv.clientWidth <= ((scroller.outerdiv.clientWidth - scroller.offset) + (scroller.speed * scroller.accframes))) {
			delay = scroller.delay + scroller.accamount * ((((scroller.outerdiv.clientWidth - scroller.offset) + (scroller.speed * scroller.accframes)) - scroller.innerdiv.clientWidth) / scroller.speed);
		} else if (scroller.offset >= -(scroller.speed * scroller.accframes)) {
			delay = scroller.delay + scroller.accamount * ((scroller.offset + (scroller.speed * scroller.accframes)) / scroller.speed);
		}
	}

	if (scroller.toleft) {
		scroller.offset = scroller.offset - scroller.speed;
	} else {
		scroller.offset = scroller.offset + scroller.speed;
	}
	
	if (pause) {
		setTimeout("scroller.frame()", scroller.pause);
	} else {
		setTimeout("scroller.frame()", delay);
	}
	
	// document.getElementById('scrollerinfo').innerHTML = "offset: "+scroller.offset+"<br />innner div width: "+scroller.innerdiv.clientWidth+"<br />outer div width: "+scroller.outerdiv.clientWidth+"<br />delay: "+delay;
}
