// JavaScript Document

(function($) {
	$.fn.homecarousel = function(settings) {
		
		var settings = $.extend({
			container:			"#carousel",
			list:				"#carousel-images",
			controls:			"#carousel-controls",
			counter:			"#carousel-counter",
			text:				"#carousel-text",
			slideWidth:			950,
			slideHeight:		303,
			startSlide:			1
		}, settings);
		
		// Caching the $ object with all elements matched
		var container = this; // This, in this context, refer to $ object
		var containerID = this.attr("id");
		
		var numChildren = $(settings.list+' li', 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(){
			$(settings.list, container).width(listWidth);
			if(settings.startSlide!=1){
				slideIndex = settings.startSlide-1;
			}
			
			if(!animating){
				animating = true;
				_shift();
			}
		}
		
		function _prev(){
			if(!animating){
				animating = true;
				if(slideIndex==0){
					slideIndex = numChildren-1;
				} else {
					slideIndex--;
				}
				_shift();
			}
			return false;	
		}
		
		function _next(){
			if(!animating){
				animating = true;
				if(slideIndex==(numChildren-1)){
					slideIndex = 0;
				} else {
					slideIndex++;
				}
				_shift();
			}
			return false;
		}
		
		function _shift(){
			var endX = -1*((settings.slideWidth)*slideIndex);
			$(settings.list,container).animate({left:endX+'px'},1000,'easeInOutQuint',_animatingOff);
			var images = $(settings.list+' li',container);
			
			_changeCounter();
			//_changeText();
			
			if(playing){
				_resetTime();
			}
		}
		
		function _animatingOff(){
			animating = false;
		}
		
		function _resetTime(){
			clearTimeout(timer);
			timer = setTimeout(function(){
				_next();
			}, 8000);
		}
		
		function _playPause(){
			if(playing){
				$('.playpause-btn',container).toggleClass('play');
				clearTimeout(timer);
				playing = false;
			} else {
				if(!animating){
					$('.playpause-btn',container).toggleClass('play');
					playing = true;
					_next();
				}
			}
		}
		
		function _changeCounter(){
			$(settings.counter,container).text((slideIndex+1)+' of '+numChildren);
		}
		
		/*function _changeText(){
			var imgs = $(settings.list+' li img', container);
			$(settings.text,container).html($(imgs[slideIndex]).attr('title'));
		}*/
		
		_initialize();
		
		$(settings.controls+' li',container).each(function(i){
			if($(this).hasClass('prev-btn')){
				$('a',this).click(function(){
					_prev();
					return false;
				});
			}
			if($(this).hasClass('next-btn')){
				$('a',this).click(function(){
					_next();
					return false;
				});
			}
			if($(this).hasClass('playpause-btn')){
				$('a',this).click(function(){
					_playPause();
					return false;
				});
			}
		});

	};
})($);
