(function($){
	var settings;
	var status=[];
	var last=0;
	$.fn.UXDcarousel = function(options){
		settings = $.extend({}, $.fn.UXDcarousel.defaults, options);
		var self=this;
	
		$(this).each(function(){
			var container_width=$(this).width();
			$(this).addClass('UXDcarousel_list');
			$(this).wrap('<div id="UXDcarousel_'+last+'" class="UXDcarousel"><div class="slide"></div></div>');
			$('#UXDcarousel_'+last+' .slide').css({overflow:"hidden",width:container_width});
			var outer_width=$('li',this).outerWidth(true);
			var width=$('li',this).width();
			var num=$(this).children('li').length;
			var viewport_num=0;
			if(num>0){
				viewport_num=Math.floor(container_width/outer_width)-1;
			}
			if((outer_width*(viewport_num-1)+width)<container_width){
				viewport_num++;
			}
			$(this).css({width:(outer_width*num)});
			status[last]={
				num_items:num,
				at_index:0,
				viewport_num:viewport_num,
				item_width:outer_width
				};
			var self=$('#UXDcarousel_'+last);
			$.fn.UXDcarousel.initArrows(self,last);
			$.fn.UXDcarousel.setArrows(self,last);
			last++;
		});
	};
	$.fn.UXDcarousel.initArrows = function(curr,item_num){
		if(status[item_num].viewport_num<status[item_num].num_items){
			$('#UXDcarousel_'+item_num).append('<ul class="pager_arrows"><li class="left"><a href="#">Left</a></li><li class="right"><a href="#">Right</a></li></ul>');
		}
		$('ul.pager_arrows li',curr).bind('click',function(e){$.fn.UXDcarousel.page(e,curr,item_num)});
	}
	$.fn.UXDcarousel.page = function(e,curr,item_num){
		e.preventDefault();
		if($('a',e.target).hasClass('disabled')){
			return;
		}
		var move=0;
		if($(e.target).parent().hasClass('left')){
			if(status[item_num].at_index-status[item_num].viewport_num>0){
				move=status[item_num].at_index-status[item_num].viewport_num;
			}
		}
		else{
			if((status[item_num].at_index+status[item_num].viewport_num)<(status[item_num].num_items-1)){
				move=status[item_num].at_index+(status[item_num].viewport_num);
				
			}
			else{
				move=status[item_num].num_items-status[item_num].viewport_num;
			}
		}
		$('ul.UXDcarousel_list',curr).animate({left:-(move*status[item_num].item_width)},'slow');
		status[item_num].at_index=move;
		$.fn.UXDcarousel.setArrows(curr,item_num);
	}
	$.fn.UXDcarousel.setArrows = function(curr,item_num){
		if(status[item_num].at_index==0){
			$('li.left a',curr).addClass('disabled');
		}
		else{
			$('li.left a',curr).removeClass('disabled');
		}
		if((status[item_num].at_index+status[item_num].viewport_num)>=(status[item_num].num_items)){
			$('li.right a',curr).addClass('disabled');
		}
		else{
			$('li.right a',curr).removeClass('disabled');
		}
	}

	$.fn.UXDcarousel.defaults = {

	};
})(jQuery);