var obj;
var itemSize = 0;
var containerWidth = 0;
var itemFullWidth = 0;
var scrollIncrement = 0;

var loopOption;

var scrollerElements;

(function($)
{
	$.fn.carousel = function(options)
	{
		var defaults = {
			scrollIncrement: 3,
			loop: 'default',
			previousButton: '#previousSliderBtn',
			nextButton: '#nextSliderBtn'
		};
		
		var options = $.extend(defaults, options);
		
		return this.each(function()
		{
			obj = $(this).attr('id');
			scrollIncrement = options.scrollIncrement;
			loopOption = options.loop;
			
			$('#'+obj+' ul li').width($('#'+obj+' ul li img').width());
			$('#'+obj+' ul li').height($('#'+obj+' ul li img').height() + 30);
			
			// Set UL Width
			setULWidth();
			
			$(options.previousButton).click(sliderPrevious);
			$(options.nextButton).click(sliderNext);
		});
	};
})(jQuery);

function sliderPrevious()
{
	
	if(loopOption == 'seamless')
	{
		var scrollMove = itemFullWidth * scrollIncrement;
		
		if(scrollMove < containerWidth)
		{
			if(parseInt($('#'+obj+' ul').css('left')) == 0)
			{
				scrollerElements = $('#sliderViewWindow ul').html();
				$('#'+obj+' ul').width($('#'+obj+' ul').width() * 2);
				$('#sliderViewWindow ul').append(scrollerElements);
				
				var move = parseInt(containerWidth) - (itemFullWidth * (itemSize % scrollIncrement));
	
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '-'+move
				}, 500);
			}
			
			else
			{
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '+='+scrollMove
				}, 500);
			}
		}
		
		else if(scrollMove >= containerWidth)
		{
			$('#'+obj+' ul').stop(1).animate(
			{
				left: 0
			}, 500);
		}	
	}
	
	else if(loopOption == 'default')
	{
		var scrollMove = itemFullWidth * scrollIncrement;
		
		if(scrollMove < containerWidth)
		{
			if(parseInt($('#'+obj+' ul').css('left')) == 0)
			{
				var move = parseInt(containerWidth) - (itemFullWidth * (itemSize % scrollIncrement));
	
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '-'+move
				}, 500);
			}
			
			else
			{
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '+='+scrollMove
				}, 500);
			}
		}
		
		else if(scrollMove >= containerWidth)
		{
			$('#'+obj+' ul').stop(1).animate(
			{
				left: 0
			}, 500);
		}
	}
}

function sliderNext()
{
	if(loopOption == 'seamless')
	{
		var scrollMove = itemFullWidth * scrollIncrement;
		scrollMove = parseInt(scrollMove) - parseInt($('#'+obj+' ul').css('left'));
		
		containerWidth = $('#'+obj+' ul').width();
		
		if(scrollMove < containerWidth)
		{
			if(parseInt($('#'+obj+' ul').css('left')) == parseInt(containerWidth) || (scrollMove * 2) >= containerWidth)
			{
				scrollerElements = $('#sliderViewWindow ul').html();
				$('#'+obj+' ul').width($('#'+obj+' ul').width() * 2);
				$('#sliderViewWindow ul').append(scrollerElements);
				
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '-'+parseInt(scrollMove)
				}, 500);
			}
			
			else
			{
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '-'+parseInt(scrollMove)
				}, 500);
			}
		}
		
		else if(scrollMove >= containerWidth)
		{
			scrollerElements = $('#sliderViewWindow ul').html();
			$('#'+obj+' ul').width($('#'+obj+' ul').width() * 2);
			$('#sliderViewWindow ul').append(scrollerElements);
			
			$('#'+obj+' ul').stop(1).animate(
			{
				left: '-'+parseInt(scrollMove)
			}, 500);
		}	
	}
	
	else if(loopOption == 'default')
	{
		var scrollMove = itemFullWidth * scrollIncrement;
		scrollMove = parseInt(scrollMove) - parseInt($('#'+obj+' ul').css('left'));
		
		if(scrollMove < containerWidth)
		{
			if(parseInt($('#'+obj+' ul').css('left')) == parseInt(containerWidth))
			{
				$('#'+obj+' ul').stop(1).animate(
				{
					left: 0
				}, 500);
			}
			
			else
			{
				$('#'+obj+' ul').stop(1).animate(
				{
					left: '-'+parseInt(scrollMove)
				}, 500);
			}
		}
		
		else if(scrollMove >= containerWidth)
		{
			$('#'+obj+' ul').stop(1).animate(
			{
				left: 0
			}, 500);
		}
	}
}

function setULWidth()
{
	itemSize = $('#'+obj+' ul li').size();
			
	var itemWidth = $('#'+obj+' ul li').width();
	var itemMarginRight = $('#'+obj+' ul li').css('margin-right');
	var itemMarginLeft = $('#'+obj+' ul li').css('margin-left');
	itemMarginRight = itemMarginRight.replace('px', '');
	itemMarginLeft = itemMarginLeft.replace('px', '');
	itemWidth = parseInt(itemWidth);
	itemMarginRight = parseInt(itemMarginRight);
	itemMarginLeft = parseInt(itemMarginLeft);
	
	itemFullWidth = itemWidth + itemMarginRight + itemMarginLeft;
	
	containerWidth = itemFullWidth * itemSize;

	$('#'+obj+' ul').width(containerWidth);	
}
