// JavaScript Document
var visibleItems  = 4;
var widthPerItem = 100;
var heightPerItem = 150;
var horizontalPadding = 20;
var verticalPadding = 0;
var startIndex = 0;
var slideCount;
var slideIncrement = 10;
var isAnimating = "false";
var intervalID;
var items;

function initialize() {
  	//Find all items in the carousel
	if (document.querySelectorAll) {
		items = document.querySelectorAll('.carousel_item');
	} else {
		items = document.getElementsByName("csItem"); 
		if (items.length == 0) {
			var divs = document.getElementsByTagName("div");
			var i = 0;
			items = new Array();
			for (var j = 0; j < divs.length; ++j) {
				if (divs[j].name == "csItem") {
					items[i++] = divs[j];
				}
			}
		}
	}

	isAnimating = "false";
	container = document.getElementById("carousel");
	var wrapper = document.getElementById("carousel_wrapper");
	container.style.width = visibleItems * (widthPerItem + horizontalPadding) + horizontalPadding + "px";
	container.style.height = heightPerItem + "px";
	wrapper.style.width = visibleItems * (widthPerItem + horizontalPadding) + horizontalPadding + 150 + "px";
	wrapper.style.height = heightPerItem + verticalPadding + "px";
	if (visibleItems > items.length)
	  visibleItems = items.length;
	
	for(var i = 0; i < visibleItems; ++i) {
		items[i].style.position = "absolute";
		items[i].style.left = (i * widthPerItem) + ((i + 1) * horizontalPadding) + "px";
		items[i].style.top = verticalPadding + "px";
	}
	
	for (var i = visibleItems; i < items.length; ++i) {
		items[i].style.position = "absolute";
		items[i].style.top = verticalPadding + "px";
		items[i].style.display = "none";
	}
}

function nextItem() {
	if (isAnimating == "true") {
	  return;
	}
	if (visibleItems >= items.length) {
	  return;
	}
	isAnimating = "true";
	
	slideCount = (horizontalPadding + widthPerItem) / slideIncrement;
	
	var leftIndex = startIndex - 1;
	if (leftIndex < 0) {
		leftIndex = Math.abs(leftIndex);
		leftIndex = items.length - leftIndex;
	}
	
	items[leftIndex].style.left = (-1 * widthPerItem) + "px";
	items[leftIndex].style.display = "block";
	
	
	slideRight();
	
}

function slideRight() {
	var curPos;
	var curIndex;
	for (var i = 0; i <= visibleItems; ++i) {
		curIndex = i + (startIndex - 1);
		if (curIndex < 0) {
			curIndex = Math.abs(curIndex);
			curIndex = items.length - curIndex;
		}
		curIndex = curIndex % items.length;
	  										 
		curPos = items[curIndex].style.left;
		curPos = curPos.substring(0, curPos.indexOf('px'));
		curPos = parseInt(curPos);
		curPos += slideIncrement;
		
		items[curIndex].style.left = curPos + "px";
	}
	--slideCount;
	if (slideCount <= 0) {
		--startIndex;
		isAnimating = "false";
		if (startIndex < 0) {
			startIndex = Math.abs(startIndex);
			startIndex = items.length - startIndex;
		}
	}
	else setTimeout(slideRight, 20);
}

function prevItem() {
	if (isAnimating == "true") {
	  return;
	}
	if (visibleItems >= items.length) {
	  return;
	}
	isAnimating = "true";
	
	slideCount = (horizontalPadding + widthPerItem) / slideIncrement;
	var rightIndex = (startIndex + visibleItems) % items.length;
	items[rightIndex].style.left = (widthPerItem + horizontalPadding) * visibleItems + horizontalPadding + "px";
	items[rightIndex].style.display = "block";
	slideLeft();
	
}

function slideLeft() {
	var curPos;
	var curIndex;
	for (var i = 0; i <= visibleItems; ++i) {
		curIndex = i + (startIndex);
		curIndex = curIndex % items.length;
	  										 
		curPos = items[curIndex].style.left;
		curPos = curPos.substring(0, curPos.indexOf('px'));
		curPos = parseInt(curPos);
		curPos -= slideIncrement;
		
		items[curIndex].style.left = curPos + "px";
	}
	--slideCount;
	if (slideCount <= 0) {
		items[startIndex].style.display = "none";
		isAnimating = "false";
		startIndex = (startIndex + 1) % items.length;
	}
	else setTimeout(slideLeft, 20);
}
