var sw_interval;
var sw_x = 10;
var sw_dx = 0;
var sw_t = 10;
var sw_cursor = 1;

var sw_v;
var sw_w;
var sw_numItems;
var sw_first;
var sw_last;
var sw_clipRight;
var sw_ref;

function movebox(n) {
	if (sw_interval == null) {
		if(n > 0) {
			moveLeft(n);
		} else {
			moveRight(-n);
		}
	}
}

function moveLeft() {
	if(sw_interval == null) {
		var id = "widget_item"+sw_cursor;
		sw_ref = document.getElementById(id);
		
		// calibrate to sw_ref
		var last_wi = sw_ref;
		for(var i=sw_cursor+1; i<=sw_numItems; i++) {
			id = "widget_item"+i;
			wi = document.getElementById(id);
			wi.style.left = (parseInt(last_wi.style.left) + sw_w) + "px";
			last_wi = wi;
		}
		for(var i=1; i<sw_cursor; i++) {
			id = "widget_item"+i;
			wi = document.getElementById(id);
			wi.style.left = (parseInt(last_wi.style.left) + sw_w) + "px";
			last_wi = wi;
		}

		sw_cursor += 1;
		if (sw_cursor == sw_numItems) {
			document.getElementById('right_button').className = 'right_last';
		} else {
			document.getElementById('right_button').className = '';
		}
		document.getElementById('left_button').className = '';
		if(sw_cursor > sw_numItems) {
			sw_cursor = 1;
		}
		sw_interval = setInterval("move("+(-1)+")",sw_t);
	}
}

function moveRight() {
	if(sw_interval == null) {
		var id = "widget_item"+sw_cursor;
		sw_ref = document.getElementById(id);
		
		// calibrate to sw_ref
		var last_wi = sw_ref;
		for(var i=sw_cursor-1; i>=1; i--) {
			id = "widget_item"+i;
			wi = document.getElementById(id);
			wi.style.left = (parseInt(last_wi.style.left) - sw_w) + "px";
			last_wi = wi;
		}
		for(var i=sw_numItems; i>=sw_cursor+1; i--) {
			id = "widget_item"+i;
			wi = document.getElementById(id);
			wi.style.left = (parseInt(last_wi.style.left) - sw_w) + "px";
			last_wi = wi;
		}
		
		sw_cursor -= 1;
		if (sw_cursor == 1) {
			document.getElementById('left_button').className = 'left_last';
		} else {
			document.getElementById('left_button').className = '';
		}
		document.getElementById('right_button').className = '';
		if(sw_cursor < 1) sw_cursor = sw_numItems + sw_cursor;
		sw_interval = setInterval("move("+1+")",sw_t);
	}
}

function move(n) {
	var id;
	var wi;
	var m = Math.abs(n*sw_w);
	var f = 36;
	
	sw_dx = Math.floor(f*Math.sin(sw_x*Math.PI/m));
	if (sw_dx < 1) sw_dx = 1;
	sw_x += sw_dx;
	
	if (n<0) {
		sw_dx *= -1;
		if (parseInt(sw_ref.style.left) <= sw_w*n) {
			clearInterval(sw_interval);
			sw_interval = null;
			sw_x = 10;
			return;
		}
	} else {
		if (parseInt(sw_ref.style.left) >= sw_w*n) {
			clearInterval(sw_interval);
			sw_interval = null;
			sw_x = 10;
			return;
		}
	}

	for(var i=1; i<=sw_numItems; i++) {
		id = "widget_item"+i;
		wi = document.getElementById(id);
		wi.style.left = (parseInt(wi.style.left) + sw_dx) + "px";
		display(wi);
	}

}

function initScrollWidget() {
	var id;
	var wi;
	
	sw_v = document.getElementById("widget_items");
	if(sw_v != null) {
		sw_numItems = sw_v.childNodes.length;
		sw_first = sw_v.firstChild;
		sw_last = sw_v.lastChild;
		sw_w = parseInt(getStyle(sw_first).width);
		sw_clipRight = parseInt(getStyle(sw_first.parentNode).width);  // Assume clip at width of div.
		
		for(var i=1; i<=sw_numItems; i++) {
			id = "widget_item"+i;
			wi = document.getElementById(id);
			wi.style.left = (i-1)*sw_w + "px";
			display(wi);
		}
	}
	if(onloadScrollWidget) onloadScrollWidget();
}

function display(wi) {
	// Display as needed to avoid window scroll bar.
	if (parseInt(wi.style.left) < -sw_w || parseInt(wi.style.left) > sw_clipRight) {
		wi.style.display = "none";
	} else {
		wi.style.display = "block";
	}
}

function getStyle(o) {
	var s;
	if (o.currentStyle != null){
		s = o.currentStyle;
	} else{
		s = document.defaultView.getComputedStyle(o, null);
	}
	return s;
}

function pause(millis){
	var date = new Date();
	var curDate = null;
	do { curDate = new Date(); } 
	while(curDate-date < millis)
}

onloadScrollWidget=window.onload;
window.onload=initScrollWidget;