$(function() {
	$(".carousel").each(init_carousel);
});
function init_carousel(index, carousel) {
	var carriage = $('.carousel_carriage', carousel);
	var display = $('.carousel_display', carousel);
	var carts = $('.carousel_cart', carousel);
	var prev = $('.carousel_prev', carousel);
	var next = $('.carousel_next', carousel);
	var cart_width = parseInt($(carousel).attr('cart_width'));
	var num_carts = parseInt($(carousel).attr('num_carts'));
	var dw = num_carts * cart_width;
	var h = parseInt($(carousel).attr('height'));
	var cw = (cart_width + 10) * (carts.length + 1);
	$(display).css('overflow', 'hidden');
	$(display).css('width', dw + "px");
	$(display).css('height', h + "px");
	$(carriage).css('width', cw + "px");
	$(carriage).css('height', h + "px");
	$(carriage).css('position', 'relative');
	$(carriage).css('left', '0');
	$(carousel).css('width', (dw + $(next).width() + $(prev).width()).toString() + 'px');

	if (carts.length > num_carts) {
		$('.carousel_prev', carousel).click(handle_carousel_prev_click);
		$('.carousel_next', carousel).click(handle_carousel_next_click);
		$(prev).removeClass('disabled');
		$(next).removeClass('disabled');
	} else {
		$(prev).addClass('disabled');
		$(next).addClass('disabled');
	}
	$('.carousel_cart', carousel).click(eval($(carousel).attr('cart_click_callback')));
	//$(carts).click(function(){eval($(carousel).attr('cart_click_callback'))});
}
function carousel_move(carousel, direction) {
	var num_carts = parseInt($(carousel).attr('num_carts'));
	var carriage = $('.carousel_carriage', carousel);
	var carts = $('.carousel_cart', carousel);
	if (carts.length > num_carts) {
	var index = direction=='left' ? 0:(carts.length - 1);
	var clone = $(carts[index]).clone();
	var width = $(carts[index]).width() + parseInt($(carts[index]).css('margin-left')) + parseInt($(carts[index]).css('margin-right'));
	var trans_time = parseFloat($(carousel).attr('trans_time'));
	var easing = ($.ui && $.ui.version) ? 'easeOutSine':'linear';

	if (direction=='left'){
		$(clone).insertAfter($(carts[carts.length - 1]));
		carts = $('.carousel_cart', carousel);
		$(carts[num_carts]).css('opacity', '0');
		$(carts[0]).animate({opacity:0}, trans_time);
		$(carts[num_carts]).animate({opacity:1}, trans_time);
	}
	else {
		$(clone).insertBefore($(carts[0]));
		$(carriage).css('left', (0 - width).toString() + "px");
		carts = $('.carousel_cart', carousel);
		$(carts[0]).css('opacity', '0');
		$(carts[num_carts]).animate({opacity:0}, trans_time);
		$(carts[0]).animate({opacity:1}, trans_time);
	}
	$(carriage).animate({
		left: direction=='left' ? (-width).toString()+"px":'0px'
		}, trans_time, easing ,non_ie_animate_end);
	}
}
function non_ie_animate_end(e) {
	var carousel;
	var carousels = $('.carousel');
	for (var i=0; i< carousels.length; i++){
		if ($(carousels[i]).attr('isMoving')=='true') {
			carousel=carousels[i];
			continue;
		}
	}
	var carriage = $('.carousel_carriage', carousel);
	var carts = $('.carousel_cart', carousel);
	var index = $(carriage).css('left')=="0px" ? (carts.length - 1):0;
	$(carts[index]).remove();
	$(carriage).css('left', '0px');
	$(carousel).attr('isMoving','false');
}
function handle_carousel_prev_click(e){
	var carousel = $(this).parent();
	var carts = $('li', carousel);
	if ($(carousel).attr('isMoving') != 'true') {
		$(carousel).attr('isMoving','true');
		carousel_move(carousel, 'left');
	}
}
function handle_carousel_next_click(e){
	var carousel = $(this).parent();
	var carts = $('li', carousel);
	if ($(carousel).attr('isMoving') != 'true') {
		$(carousel).attr('isMoving','true');
		carousel_move(carousel, 'right');
	}
}
function handle_carousel_cart_click(e){
	
}
