/* 
	hacked up version of jquery infinite carousel. 
	from http://code.google.com/p/jquery-infinite-carousel/
*/ 

var elmnts, numElmnts, sizeFirstElmnt, shownInViewport, firstElementOnViewPort, increment = null;
var isAnimating = false;

function carouselify(elt) {
	var sliderList = elt.children()[0];
	
	if (sliderList == null) { return; }
	
	increment = $(sliderList).children().outerWidth("true"),
	elmnts = $(sliderList).children(),
	numElmts = elmnts.length,
	sizeFirstElmnt = increment,
	shownInViewport = Math.round(elt.width() / sizeFirstElmnt),
	firstElementOnViewPort = 1,
	isAnimating = false;
		
	for (i = 0; i < shownInViewport; i++) {
		$(sliderList).css('width',(numElmts+shownInViewport)*increment + increment + "px");
		$(sliderList).append(jQuery(elmnts[i]).clone());
	}
}

function moveCarousel(elt, direction) {
	if (isAnimating) { return; }

	var sliderList = elt.children()[0];
	
	if (direction == 'back') {
		if (firstElementOnViewPort == 1) {
			$(sliderList).css('left', "-" + numElmts * sizeFirstElmnt + "px");
			firstElementOnViewPort = numElmts;
		}
		else {
			firstElementOnViewPort--;
		}

		$(sliderList).animate({
			left: "+=" + increment,
			y: 0,
			queue: true
		}, "swing", function(){isAnimating = false;});
		isAnimating = true;
	} else {
		if (firstElementOnViewPort > numElmts) {
			firstElementOnViewPort = 2;
			$(sliderList).css('left', "0px");
		}
		else {
			firstElementOnViewPort++;
		}
		$(sliderList).animate({
			left: "-=" + increment,
			y: 0,
			queue: true
		}, "swing", function(){isAnimating = false;});
		isAnimating = true;
	}
}
