/*! Carousel v1 <http://nvinteractive.co.nz>
	Copyright (c) NV Interactive
	
	References:
		jquery-1.2.6.js
		
	Release Notes:

	Usage:
		Carousel list items must be a fixed width.
		
*/

nv_carousel = function(){
	
	var SPEED = 250;
	
	var init = function(){
		$(".carousel").each(setupCarousel);
	}
	
	var setupCarousel = function(){
		
		$("li a", this).append("<span class='overlay'></span>").hover(function(){$(this).toggleClass("hover")}, function(){$(this).toggleClass("hover")});
		$("li:odd", this).addClass("odd");
		
		//Check that we have enough items
		var li = $("li", this);
		var w = li.length * li.width();
		
		if(w <= $("ul", this).width() ) return;
		
		$("ul", this).width(w + li.width())
		
		$(this).append('<div class="prev"></div><div class="next"></div>');
		
		$("li:first", this).addClass("active");
		$(".next", this).bind("click", {carousel: this, direction: 1}, navigate);
		$(".prev", this).bind("click", {carousel: this, direction: -1}, navigate);
	}
	
	var navigate = function(evt){
		
				
		var carousel = evt.data.carousel;
		
		//Abort if already animating
		if($("ul:animated", carousel).length > 0)return;
		
		var ul = $("ul", carousel);
		var x = ul.position().left;
		var active = $(".active", carousel);
		
		if(evt.data.direction == 1){
			var target = active.next();
			var callback = updateAfterNext;
		}else{

			$("li:last", ul).prependTo(ul);
			ul.css("left", 0 - $(".active", ul).position().left);
			var callback = updateAfterPrev;
			var target = active.prev();
		}
		
		if(target.length==0)return;
		var targetx = 0 - target.position().left;		
		
		ul.animate({left: targetx}, SPEED, callback);
		
		target.addClass("active");
		active.removeClass("active");
		
	}
	
	var updateAfterNext = function(){
		var ul = $(this);
		$("li:first", ul).appendTo(ul);
		ul.css("left", 0 - $(".active", ul).position().left);
	}
	
	var updateAfterPrev = function(){
	}	
	
	return {
	/* Public API
	*/
	init: init
	}
		
}();

$(document).ready(nv_carousel.init);

