$(function() { 
	$('.carousel').each(function(){
		if($(this).attr('area')=='horizontal'){
			$(this).find('ul').css({'position':'relative','list-style-type':'none','width':'9999px','left':'0px'});
			$(this).find('li').css({'float':'left'});
		}else{
			$(this).find('ul').css({'position':'relative','list-style-type':'none','height':'9999px','left':'0px'});
		}
	});
	$('.carousel div').css({'overflow':'hidden'});

	$('.carousel img').click(function(){
		var direction = $(this).attr('alt');
		var repeat=false;
		if($(this).parent().attr('repeat')){
			repeat=true;
		}
		switch (direction){
			case 'left':
				var shift = $(this).parent().find('li').width();
				var left = parseInt($(this).parent().find('ul').css('left'));
				if(left < 0){
					$(this).parent().find('ul:not(:animated)').animate({'left' : '+=' + shift + 'px'},500);
				}else if(repeat){
					var count = ($(this).parent().find('div').width() - $(this).parent().find('div').width() % shift) / shift;
					var end = ($(this).parent().find('ul').children('li').length-count) * shift;
					$(this).parent().find('ul:not(:animated)').animate({'left' : '-' + end + 'px'},500);
				}
			break;
			case 'right':
				var shift = $(this).parent().find('li').width();
				var count = ($(this).parent().find('div').width() - $(this).parent().find('div').width() % shift) / shift;
				var end = ($(this).parent().find('ul').children('li').length-count) * shift;
				var left = parseInt($(this).parent().find('ul').css('left'))*(-1);
				if(left < end){
					$(this).parent().find('ul:not(:animated)').animate({'left' : '-=' + shift + 'px'},500);
				}else if(repeat){
					$(this).parent().find('ul:not(:animated)').animate({'left' : '0px'},500);
				}
			break;
			case 'up':
				var li = $(this).parent().find('li')
				var shift = $(li).height()+5;
				var count = ($(this).parent().find('div').height() - $(this).parent().find('div').height() % shift) / shift;
				var end = ($(this).parent().find('ul').children('li').length-count) * shift;
				var up = parseInt($(this).parent().find('ul').css('top'))*(-1);
				if(up < end){
					$(this).parent().find('ul:not(:animated)').animate({'top' : '-=' + shift + 'px'},500);
				}else if(repeat){
					$(this).parent().find('ul:not(:animated)').animate({'top' : '0px'},500);
				}
			break;
			case 'down':
				var li = $(this).parent().find('li')
				var shift = $(li).height()+5;
				var up = parseInt($(this).parent().find('ul').css('top'));
				if(up < 0){
					$(this).parent().find('ul:not(:animated)').animate({'top' : '+=' + shift + 'px'},500);
				}else if(repeat){
					var count = ($(this).parent().find('div').height() - $(this).parent().find('div').height() % shift) / shift;
					var end = ($(this).parent().find('ul').children('li').length-count) * shift;
					$(this).parent().find('ul:not(:animated)').animate({'top' : '-' + end + 'px'},500);
				}
			break;
		}
	});
});
