/*V1.0
2010-04-30
*/

(function($)
{
	$.fn.caseSlider = function(options)
	{
		
		options = $.extend({},$.fn.caseSlider.defaults, options);
		
		return this.each(function()
		{
			var $this = $(this);
			
			
			var viewport = $(window).width() * 2;
			var CurrentPos = 0;
			var $SlideObj = $this.find('.caseSlide');
			var $SlideButtonNext = $this.find('.'+ options.NextButtonClass);
			var $SlideButtonPrev = $this.find('.'+ options.PrevButtonClass);
			$SlideObj.filter(':not(:first)').hide();
			if(options.height==null)
			{
				options.height = $this.height();				
			}
			$this.css({overflow:'hidden',height:options.height});
			
			$SlideObj.each(function(i){
				var $lokObj;
				$lokObj = $(this)
				$lokObj.addClass('caseSlide'+i);
				var SlideObjPos;
				$lokObj.css({position:'absolute',top:0,left:0,width:$this.width(), height: $this.height()})
				if(i!=0)
				{
					//Every slide exept the first
					SlideObjPos = $lokObj.position();
					$lokObj.css({left:SlideObjPos.left + viewport});
					
				}
				
			});
			$SlideButtonNext.click(function(){
				doCaseSlide(1);
				return false;							
			});
			$SlideButtonPrev.click(function(){
				doCaseSlide(-1);
				return false;							
			});
			
			function doCaseSlide(argDirection)
			{
				var $CurrentSlide, $NextSlide;
				$this.css({overflow:'visible'});
				$CurrentSlide = $this.find('.caseSlide'+CurrentPos);
				CurrentPos = CurrentPos + argDirection;
				if(CurrentPos < 0)
				{
					CurrentPos = $SlideObj.length - 1;	
				}
				if(CurrentPos >= $SlideObj.length)
				{
					CurrentPos = 0;	
				}
				$NextSlide = $this.find('.caseSlide'+CurrentPos);
				
				$CurrentSlide.animate({left:-viewport},options.animationSpeed,options.outEase,function(){
						$(this).css({left:viewport}).hide();
						$NextSlide.show().animate({left:0},options.animationSpeed,options.inEase,function(){
							$this.css({overflow:'hidden'});															  
						});
				});
				$CurrentSlide.find('.slideItem').each(function(i){
					
					 var thisPos,newPos,$lokThis,lokT,lokL,lokoffset;
					 var $CloneObj;
					 $lokThis = $(this);
					 if($lokThis.css('position')=='absolute')
					 {
						lokoffset = $(this).offset();
						lokoffset.left = lokoffset.left - $this.offset().left;
						lokoffset.top = lokoffset.top - $this.offset().top;
						newPos = lokoffset.left;
						newPos = parseInt(newPos) + ((i+1) * 35);
						  $(this).animate({left:newPos},options.animationSpeed/2,options.inSlideItemEase).animate({left:-viewport},options.animationSpeed/2,function(){
							$(this).css(lokoffset);
						});
					 }
					 else
					 {
						 lokoffset = $(this).offset();					 
						 $CloneObj = $lokThis.clone().appendTo($this);
						 $CloneObj.css({position:'absolute'});
						 lokoffset.left = lokoffset.left - $this.offset().left;
						 lokoffset.top = lokoffset.top - $this.offset().top;
						 $CloneObj.css(lokoffset);
						 $lokThis.css('visibility','hidden');
						 newPos = lokoffset.left;
						 newPos = parseInt(newPos) + ((i+1) * 35);
						 $CloneObj.animate({left:newPos},options.animationSpeed/2,options.inSlideItemEase).animate({left:-viewport},options.animationSpeed/2,function(){
							$(this).remove();
							$lokThis.css('visibility','visible');
						 });
						 
					 }				
					
				});
				
				
			}
			
			
			
			
		});
		
		
	};
	// Public defaults.
	$.fn.caseSlider.defaults = {
		height:null,
		NextButtonClass:'caseSlideNext',
		PrevButtonClass:'caseSlidePrev',
		animationSpeed:600,
		outEase:'easeInQuint',
		inEase:'easeOutBack',
		inSlideItemEase:'linear'
		
	};
	
	
	// Public functions.
	$.fn.caseSlider.Next = function()
	{
		return;
	};
})(jQuery);
