// JavaScript Document

(function($) {
	jQuery.fn.homecarousel = function(settings) {
		
		var settings = jQuery.extend({
			container:			"carousel",
			list:				"carousel-images",
			text:				"carousel-text",
			controls:			"carousel-controls",
			slideWidth:			1070,
			slideHeight:		385,
			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('#'+settings.list+' li', container).length;
		
		if (numChildren<=1) return false;
		
		//var listWidth = settings.slideWidth*numChildren;
		var starting = true;
		var slideIndex = 0;
		var animating = false;
		var pauseBtn = null;
		var playing = true;
		var timer;
		var maskH = 310;
		
		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.controls+' li',container).each(function(i){
				if(i==slideIndex){
					if(!jQuery(this).hasClass("on")){
						jQuery(this).addClass("on");	
					}
				} else {
					if(jQuery(this).hasClass("on")){
						jQuery(this).removeClass("on");
					}
				}
			});	
		}
		
		function _changeText(){
			jQuery(' #'+settings.text+' .carousel-text',container).each(function(i){
				if(i==slideIndex){
					jQuery(this).show();
				} else {
					jQuery(this).hide();
				}
			});	
		}
		
		function _fadeOutOld() {
			var images = $('#'+settings.list+' li',container);
			$('img', 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 = $('#'+settings.list+' li',container);
			$('img', images[slideIndex]).fadeIn(1000,_animatingOff);
			
			_changeThumbs();
			if(!starting){
				_dropMask();
			}
			starting = false;
			
			if(jQuery(pauseBtn).hasClass('pause') || pauseBtn == null){
				_resetTime();
			}
		}
		
		function _animatingOff(){
			animating = false;
		}
		
		function _resetTime(){
			clearTimeout(timer);
			timer = setTimeout(function(){
				_next();
			}, 8000);
		}
		
		function _dropMask() {			
			$('#carousel-info').animate({'height':'35px'},500,'easeOutCubic',function(){
				_changeText();
				$('#carousel-info').animate({'height':maskH+'px'},500,'easeInCubic');
			});
		}
		
		_initialize();
		
		jQuery('#'+settings.controls+' li',container).each(function(i){			
			jQuery(this).click(function(){
				_jumpto(i);
				return false;
			});
		});

	};
})(jQuery);