// Javascript

var rotClassShow = 'rotate_show';
var rotClassHide = 'rotate_hide';
var rotDelay = 3000;

var rotCurrItemIndex = 0;
var rotPrevItemIndex = 0;
var rotNextItemIndex = 0;
var rotItemCount = -1;
var rotIsPlaying = false;
var rotTimerID = null;

// count the number of items to rotate
function rotCountItems() 
{
	rotItemCount = -1;
	i = 0;
	
	while (document.getElementById(rotItemPrefix+i))
	{
		i++;
		rotItemCount++;
	}
}

// rotate items
function rotAutoRotate()
{
	rotNext();
	rotIsPlaying = true;
	rotTimerID = setTimeout('rotAutoRotate()', rotDelay);
}

// start rotating items
function rotPlay()
{
	if (rotTimerID == null) {
		rotTimerID = setTimeout('rotAutoRotate()', 500);
	}
	rotIsPlaying = true;
}

// stop rotating items
function rotPause() {
	if (rotTimerID != null) {
		clearTimeout(rotTimerID);
		rotTimerID = null;
	}
	rotIsPlaying = false;
}

// display next item
function rotNext()
{
	if (rotIsPlaying) {
		rotPause();
	}
	// update current indexes
	rotPrevItemIndex = rotGetCurr();
	rotCurrItemIndex = rotGetNext();
	rotNextItemIndex = rotGetNext();
	
	// show new item
	document.getElementById(rotItemPrefix + rotPrevItemIndex).className  = rotClassHide;
	document.getElementById(rotItemPrefix + rotCurrItemIndex).className = rotClassShow;
}

// display prev item
function rotPrev()
{
	if (rotIsPlaying) {
		rotPause();
	}
	// update current indexes
	rotNextItemIndex = rotGetCurr();
	rotCurrItemIndex = rotGetPrev();
	rotPrevItemIndex = rotGetPrev();
	
	// show new item
	document.getElementById(rotItemPrefix + rotNextItemIndex).className  = rotClassHide;
	document.getElementById(rotItemPrefix + rotCurrItemIndex).className = rotClassShow;
}

// get next item in sequence
function rotGetNext()
{
	var nextItem = rotGetCurr() + 1;
	if (nextItem > rotItemCount) {
		nextItem = 0;
	}
	return nextItem;
}

// get previous item in sequence
function rotGetPrev()
{
	var prevItem = rotGetCurr() - 1;
	if (prevItem < 0) {
		prevItem = rotItemCount;
	}
	return prevItem;
}

// get previous item in sequence
function rotGetCurr()
{
	return rotCurrItemIndex;
}
