var scroll_flag = false;
var scroll_x = 0;
var scroll_y = 0;
var speed = 2;
var prev_x = -100000;
var prev_y = -100000;
var slide_repeat = false;

function scroll_vertical(n, d) {
	if (scroll_flag) {
		return;
	}

	var div = document.getElementById(d);
	var height = div.clientHeight;
	var y = div.scrollTop;

	scroll_y = y + (n * height);
	scroll_y = scroll_y < 0 ? 0 : scroll_y;

	if (div.scrollHeight - scroll_y < height) {
		scroll_y = div.scrollTop + div.scrollHeight - scroll_y;
	}

	scroll_flag = true;

	t1 = setTimeout("scroll('" + d + "')", 50);
}

function scroll_horizontal(n, d) {
	if (scroll_flag) {
		return;
	}

	var div = document.getElementById(d);
	if ((slide_repeat)&&(div.scrollLeft + div.clientWidth == div.scrollWidth)){
		div.scrollLeft = 0;
	}
	var width = div.clientWidth;
	var x = div.scrollLeft;

	scroll_x = x + (n * width);
	scroll_x = scroll_x < 0 ? 0 : scroll_x;

	if (div.scrollWidth - scroll_x < width) {
		scroll_x = div.scrollLeft + div.scrollWidth - scroll_x;
	}

	scroll_flag = true;

	t1 = setTimeout("scroll('" + d + "')", 50);
}

function scroll(d) {
	var div = document.getElementById(d);

	if (scroll_x > div.scrollLeft) {
		var new_x = Math.ceil((scroll_x - div.scrollLeft) / speed);
	} else {
		var new_x = Math.floor((scroll_x - div.scrollLeft) / speed);
	}

	if (scroll_y > div.scrollTop) {
		var new_y = Math.ceil((scroll_y - div.scrollTop) / speed);
	} else {
		var new_y = Math.floor((scroll_y - div.scrollTop) / speed);
	}

	var timeout = false;

	div.scrollLeft += new_x;
	div.scrollTop += new_y;

	if (new_x != prev_x) {
		prev_x = new_x;
		timeout = true;
	}

	if (new_y != prev_y) {
		prev_y = new_y;
		timeout = true;
	}

	if (timeout) {
		t1 = setTimeout("scroll('" + d + "')", 50);
	} else {
		scroll_flag = false;
	}
}
