// JavaScript Document

(function($) {
	$.fn.homecarousel = function(settings) {
		
		var settings = jQuery.extend({
			container:			"carousel-images-container",
			list:				"carousel-images",
			previousButton: 	"prev-btn", 
			nextButton: 		"next-btn",
			info:				"carousel-info",
			thumbs:				"carousel-thumbs-container",
			slideWidth:			688,
			startSlide:			1,
			slideSpeed:			5000
		}, settings);
		// Caching the jQuery object with all elements matched
		var container = this; // This, in this context, refer to jQuery object
		var containerID = this.attr("id");
		var numChildren = $('#'+containerID+' #'+settings.list+' li').length;
		/*var listWidth = numChildren*settings.slideWidth;*/
		var slideIndex = 0;
		var animating = false;
		var paused = false;
		var timer;
		
		function _initialize(){
			/*$('#'+containerID+' #'+settings.container).width(listWidth);
			$('#'+containerID+' #'+settings.list).width(listWidth);*/
			if(settings.startSlide!=1){
				slideIndex = settings.startSlide-1;
			}
			
			if(!animating){
				animating = true;
				_shift();
			}
		}
		
		function _jumpto(index){
			if(!animating && index!=slideIndex){
				animating = true;
				_fadeOutOld();
				slideIndex = index;
				_shift();
			}
			
		}
		
		function _next(){
			if(!animating){
				animating = true;
				_fadeOutOld();
				if(slideIndex==(numChildren-1)){
					slideIndex = 0;
				} else {
					slideIndex++;
				}
				_shift();
			}
			return false;	
		}
		
		function _changeThumbs(){
			$('#'+containerID+' #'+settings.thumbs+' li').each(function(i){
				if(i==slideIndex){
					if(!$(this).hasClass("highlight")){
						$(this).addClass("highlight");	
					}
				} else {
					if($(this).hasClass("highlight")){
						$(this).removeClass("highlight");
					}
				}
			});	
		}
		
		function _fadeOutOld() {
			var images = $('#'+containerID+' #'+settings.list+' li');
			$('.image, .copy', images[slideIndex]).fadeOut(1000);	
		}
		
		function _shift(){
			var images = $('#'+containerID+' #'+settings.list+' li');
			$('.image, .copy', images[slideIndex]).fadeIn(1000,_animatingOff);
			
			_changeThumbs();
			if(!paused){
				_resetTime();
				startup = false;
			}
		}
		
		function _animatingOff(){
			animating = false;
		}
		
		function _resetTime(){
			clearTimeout(timer);
			timer = setTimeout(function(){
				_next();
			}, settings.slideSpeed);
		}
		
		function _playPause(btn){
			if($(btn).hasClass('pause')){
				paused = true;
				clearTimeout(timer);	
			} else {
				paused = false;
				_resetTime();
			}
			$('#'+containerID+' #'+settings.thumbs+' li a').each(function(i){
				$(this).toggleClass('pause');
				$(this).toggleClass('play');																			  
			});
		}
		
		_initialize();
		$('#'+containerID+' #'+settings.thumbs+' li').each(function(i){
			$(this).click(function(){
				_jumpto(i);
				return false;
			});
		});
		$('#'+containerID+' #'+settings.thumbs+' li a').click(function(){
			_playPause(this);
			return false;
		});

	};
})(jQuery);
