function next(id) {
	var count = getCount(id);
	var selected = findSelected(id);
	selected = (selected + 1) % count;
	selectContent(id, selected);
}

function prev(id) {
	var count = getCount(id);
	var selected = findSelected(id);
	selected = (selected + count - 1) % count;
	selectContent(id, selected);
}

function getCount(id) {
	var root = findRoot(id) ;

	var count = 0;

	var tmp = root.getElementsByTagName('LI');
	for(var i = 0; i < tmp.length; i++) {
		if(tmp[i].parentNode == root) {
			count++;
		}
	}

	return count;
}

function findRoot(id) {
	var obj = document.getElementById(id);
	if( obj == null ) {
		return null;
	}

	var tmp = obj.getElementsByTagName('UL');
	if( tmp == null || tmp.length == 0 ) {
		return null;
	}

	return tmp[0];
}

function findSelected(id) {
	var root = findRoot(id);
	var pos = 0;
	var tmp = root.getElementsByTagName('LI');
	for(var i = 0; i < tmp.length; i++) {
		if(tmp[i].parentNode == root) {
			if(tmp[i].className == 'selected') {
				return pos;
			}
			pos++;
		}
	}

	return 0;
}

var scrollElem;
var scrollStart;
var scrollDelta;
var scrollMaxPass;
var scrollPass;
var scrollTimer;

function selectContent(id, index) {
	var root = findRoot(id);
	var pos = 0;
	var tmp = root.getElementsByTagName('LI');
	for(var i = 0; i < tmp.length; i++) {
		if(tmp[i].parentNode == root) {
			if(pos == index) {
				tmp[i].className = 'selected';
				scrollElem = root;
				if( root.style.left == "") {
					scrollStart = 0;
				} else {
					scrollStart = -parseInt(root.style.left);
				}
				scrollDelta = parseInt(tmp[i].offsetLeft) - scrollStart;
				scrollMaxPass = 25;
				scrollPass = 0;
				if( scrollTimer != null) {
					clearInterval(scrollTimer);
				}
				scrollTimer = setInterval('scroll()', 15);
			} else {
				tmp[i].className = '';
			}
			pos++;
		}
	}
}

function scroll() {
	var offset = -scrollDelta / 2 * (Math.cos(Math.PI * scrollPass / scrollMaxPass) - 1) + scrollStart;
	scrollElem.style.left = -parseInt(offset) + "px";

	if (++scrollPass > scrollMaxPass) {
		clearInterval(scrollTimer);
		scrollTimer = null;
	}
}
