// JavaScript Document

(function(jQuery) {
	jQuery.fn.homecarousel = function(settings) {
		
		var settings = jQuery.extend({
			container:			"carousel-container",
			list:				"carousel-content",
			thumbs:				"carousel-controls",
			controls:			"carousel-control-container",
			slideWidth:			300,
			slideHeight:		360,
			startSlide:			1
		}, 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 = jQuery('.picture-box',container).length;
		if (numChildren<=1) return false;
		//var listWidth = settings.slideWidth*numChildren;
		var slideIndex = 0;
		var animating = false;
		var pauseBtn = null;
		var playing = true;
		var timer;
		
		function _initialize(){
			/*jQuery('#'+containerID+' #'+settings.container).width(listWidth);
			jQuery('#'+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(){
			jQuery('#'+settings.thumbs+' li').each(function(i){
				if(i==slideIndex){
					if(!jQuery(this).hasClass("highlight")){
						jQuery(this).addClass("highlight");	
					}
				} else {
					if(jQuery(this).hasClass("highlight")){
						jQuery(this).removeClass("highlight");
					}
				}
			});	
		}
		
		function _fadeOutOld() {
			var images = jQuery('.picture-box',container);
			jQuery(images[slideIndex]).fadeOut(1000);	
		}
		
		function _shift(){
			var endX = -1*((settings.slideWidth)*slideIndex);
			/*var dir = jQuery(jQuery('#'+containerID+' #'+settings.list+' img')[slideIndex]).attr('align');
			switch(dir){
				case 'left' :
					jQuery('#'+containerID+' #'+settings.controls).animate({left:110});
					break;
				case 'right' :
					jQuery('#'+containerID+' #'+settings.controls).animate({left:560});
					break;
			}*/
			//jQuery('#'+containerID+' #'+settings.list).animate({left:endX+'px'},1000,'easeInOutQuint',_animatingOff);
			var images = jQuery('.picture-box',container);
			jQuery(images[slideIndex]).fadeIn(1000,_animatingOff);
			
			_changeThumbs();
			if(jQuery(pauseBtn).hasClass('pause') || pauseBtn == null){
				_resetTime();
			}
		}
		
		function _animatingOff(){
			animating = false;
		}
		
		function _resetTime(){
			clearTimeout(timer);
			timer = setTimeout(function(){
				_next();
			}, 5000);
		}
		
		function _playPause(){
			if(jQuery(pauseBtn).hasClass('pause')){
				jQuery(pauseBtn).toggleClass('pause');
				jQuery(pauseBtn).toggleClass('play');
				clearTimeout(timer);
				playing = false;
			} else {
				jQuery(pauseBtn).toggleClass('pause');
				jQuery(pauseBtn).toggleClass('play');
				_resetTime();
				playing = true;
			}
		}
		
		_initialize();
		jQuery('#'+settings.thumbs+' li',container).each(function(i){
			if(jQuery(this).hasClass('pause') || jQuery(this).hasClass('play')){
				pauseBtn = this;
				jQuery(this).click(function(){
					_playPause();
					return false;
				});
			} else {
				jQuery(this).click(function(){
					_jumpto(i);
					return false;
				});
			}
		});

	};
})(jQuery);