//method SlideShow
SlideShow = function(target, settings){
  var slideshow = this;
  
  slideshow.settings = $.extend({timerLength: '3s', transitionLength: 500, type: 'vertical'}, settings);
  
  slideshow.target = target;
  
	//slide info
	slideshow.slides = $('li', slideshow.target);
  slideshow.height = $("li", slideshow.target).height();
	slideshow.width = $("li", slideshow.target).width();
  slideshow.length = $("li", slideshow.target).length;
  
	
	
	//thumb info
  /*slideshow.thumbs = $('#thumbs li');
	slideshow.thumbHolder = $('#thumb_holder');
	slideshow.thumbHolderWidth = slideshow.thumbHolder.width();
	slideshow.margin = '9';
	slideshow.thumbWidth = slideshow.thumbs.width() + (slideshow.margin * 2);	
	slideshow.thumbsTotalWidth = slideshow.thumbWidth * slideshow.thumbs.length;	
	slideshow.thumbEnd = (slideshow.thumbHolderWidth) - slideshow.thumbsTotalWidth;	*/
		
	slideshow.animateTo = {};
	slideshow.animateFrom = {};
	slideshow.animateReset = {};
	
	slideshow.viewAll = false;
	
	switch(slideshow.settings.type) {
		case 'vertical':			
			slideshow.animateProperty = 'top';
			slideshow.animateValue = slideshow.height;
			slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
			slideshow.animateReset[slideshow.animateProperty] = '0px';
			break;
		
		case 'horizontal':
			slideshow.animateProperty = 'left';
			slideshow.animateValue = slideshow.width;
			slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
			slideshow.animateReset[slideshow.animateProperty] = '0px';
			break;
		
		case 'fade':
			slideshow.animateProperty = 'opacity';
			slideshow.animateValue = 'hide';
			slideshow.animateTo[slideshow.animateProperty] = slideshow.animateValue;
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue;
			slideshow.animateReset[slideshow.animateProperty] = 'show';
			break;
		
		case 'horizontal-fade':
			slideshow.animateProperty = 'opacity';
			slideshow.animateValue = 'hide';
			slideshow.animateTo[slideshow.animateProperty] = slideshow.animateValue;
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue;
			slideshow.animateReset[slideshow.animateProperty] = 'show';
			
			slideshow.animateProperty = 'left';
			slideshow.animateValue = slideshow.width;
			slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
			slideshow.animateReset[slideshow.animateProperty] = '0px';
			break;
			
		default:
			slideshow.animateProperty = 'top';
			slideshow.animateValue = slideshow.height;
			slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
			slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
			slideshow.animateReset[slideshow.animateProperty] = '0px';
			break;
	} 
	
	
				
  /*$('#left_arrow').click(function(){
		slideshow.prevImage();
	});  
  $('#right_arrow').click(function(){
		slideshow.nextImage();
	});  
	
	$('#left_arrow, #right_arrow').hover(function(){
		$(this).addClass('hover');
		slideshow.stopTimer();
	}, function(){
		$(this).removeClass('hover');
		slideshow.startTimer();
	});*/
	
	
	
	$(slideshow.target).hover(function(){
		slideshow.stopTimer();
	}, function(){
		slideshow.startTimer();
	});
	
	
	slideshow.slides.css({zIndex: '-1'}).hide();
	
	

  
};

$.extend(SlideShow.prototype, {
  run: function(){
		var slideshow = this;
		
		
    slideshow.selectImage(0);
    
    return this;
  },
  
  startTimer: function(){
    var slideshow = this;
    rid = Math.floor(Math.random() * 100);
    //console.log("Setting up Timer#" + rid);
    slideshow.target.oneTime(slideshow.settings.timerLength, 'foo', function(){
      
     //console.log("Running Timer#" + rid);

      slideshow.nextImage();
    });
  },
  
  stopTimer: function(){
    var slideshow = this;
    
    slideshow.target.stopTime('foo');
  },
  
  nextImage: function(){
    var slideshow = this;
    
		slideshow.stopTimer();
    // Mod operator is your friend; remember 35 % 5 = 0 ; 36 % 5 = 1; 34 % 5 = 4; Mod is the remainder;
    slideshow.selectImage((slideshow.currentIndex + 1) % slideshow.length);
    
  },
  
  prevImage: function(){
    var slideshow = this;
		
		slideshow.stopTimer();
    slideshow.selectImage((slideshow.currentIndex === 0 ? slideshow.length : slideshow.currentIndex) - 1);
  },
  
 
  
  selectImage: function(index){
		
		var slideshow = this;
		
		if(slideshow.currentSlide) {
      
			if(slideshow.currentIndex === index) {
				return false;
			}
			if(slideshow.settings.type != 'fade'){
				if(slideshow.currentIndex === slideshow.length - 1 && index === 0) {
					//custom for first slide to last slide
					slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
					slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
				} else if(slideshow.currentIndex === 0 && index === slideshow.length - 1) {
					//custom for first slide to last slide
					slideshow.animateTo[slideshow.animateProperty] = slideshow.animateValue + 'px';
					slideshow.animateFrom[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
				} else if(slideshow.currentIndex > index && slideshow.settings.type != 'fade') {
					slideshow.animateTo[slideshow.animateProperty] = slideshow.animateValue + 'px';
					slideshow.animateFrom[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
				} else if(slideshow.currentIndex < index ) {
					slideshow.animateTo[slideshow.animateProperty] = '-' + slideshow.animateValue + 'px';
					slideshow.animateFrom[slideshow.animateProperty] = slideshow.animateValue + 'px';
				}
			}
			//slideshow.currentSlide.fadeOut(1000);
		
			/*if(slideshow.currentIndex < index) {
				slideshow.animateTo = -(slideshow.height);
				slideshow.animateFrom = slideshow.height;
			} else if(slideshow.currentIndex > index) {
				slideshow.animateTo = slideshow.height;
				slideshow.animateFrom = -(slideshow.height);
			} else { 
				return false;
			}*/
			
			slideshow.oldSlide = slideshow.currentSlide;
			
			slideshow.oldSlide.stop().css({zIndex: '10'}).animate(slideshow.animateTo, slideshow.settings.transitionLength, function(){
				slideshow.oldSlide.css({zIndex: '-1'});
			});
			
		}
    
		//console.log("Animate to " + slideshow.animateTo + ", Animate from " + slideshow.animateFrom);
		
   /* if(slideshow.currentThumb)
      slideshow.currentThumb.removeClass('active');*/
    
		slideshow.currentIndex = index;
	
		//slideshow.currentThumb = slideshow.thumbs.eq(slideshow.currentIndex).addClass('active');
		slideshow.currentSlide = slideshow.slides.eq(slideshow.currentIndex);
		
		slideshow.currentSlide.css({zIndex: '9'}).css(slideshow.animateFrom);
	
		// slideshow.currentSlide.oneTime('1s', function(){
		slideshow.currentSlide.animate(slideshow.animateReset, slideshow.settings.transitionLength, function(){
			slideshow.startTimer();
		});
		
		//slideshow.hideThumbs();
		
		///slideshow.moveThumbs(index);
    // });
  }, 
	
	/*moveThumbs : function(index){
		
		var slideshow = this;
		
		
		
		//need to clean up when have time	
		var thumbX = slideshow.currentThumb.position().left;
		var newThumbX = (slideshow.thumbHolderWidth * .5) - thumbX - (slideshow.thumbWidth * .5);			
		
		if (newThumbX > 0)
			newThumbX = 1;
		else if (newThumbX < slideshow.thumbEnd)
			newThumbX = slideshow.thumbHolderWidth - slideshow.thumbsTotalWidth - (slideshow.margin * 2);
		
				
	
		$('#thumbs').stop().animate({left: newThumbX + "px"}, slideshow.settings.transitionLength);
	},
	
	showThumbs : function(){
		var slideshow = this;
		
		slideshow.viewAll = true;
		
		$('#view_all').html('Close');
		$('#thumbs').stop().animate({width: slideshow.thumbHolderWidth + "px", left: '1px'});
		
	},
	
	hideThumbs : function(){
		var slideshow = this;
		
		slideshow.viewAll = false;
		
		$('#view_all').html('View All');
		
		$('#thumbs').css({width: slideshow.thumbsTotalWidth + "px"});	
				
	}*/
});

var slideshow;
$(document).ready(function(){
  slideshow = new SlideShow( $('#slides'), {timerLength: '5s', transitionLength: 1000, type: 'fade'}).run();
});


