$(document).ready(function(){
  $(".slideshow").SlideShowManager();
});
 
jQuery.fn.SlideShowManager = function() {
    return this.each(function(){
	new SlideShow(this);
  });
};
 
 
function SlideShow(base){
  var self = this;
 
  self.currentPosition = 0;
  self.slideWidth = 1040;
  self.slides = $('.slide', base);
  self.numberOfSlides = this.slides.length;
  self.base = base;
  self.direction = 1;
  self.Timer = null;
 
 
  self.slides
    .wrapAll('<div class="slideInner"></div>')
    // Float left to display horizontally, readjust .slides width
	.css({
	    'float' : 'left',
	    'width' : self.slideWidth
    });
 
  $('.slidesContainer',base).css('overflow', 'hidden');
  $('.slideInner',base).css('width', self.slideWidth * self.numberOfSlides);
  
  $(base)
  .prepend('<span class="leftControl">Move left</span>')
  .append('<span  class="rightControl">Move right</span>')
  .append('<div class="autoplayControl">Play</div>');
 
  $('.leftControl', base).bind('click', $.proxy(self.onLeftControlClick, self));
  $('.rightControl', base).bind('click', $.proxy(self.onRightControlClick, self));
  $('.autoplayControl',base).bind('click', $.proxy(self.onAutoPlayControlClick, self));
  
  //set default state to 'play'
  $('.autoplayControl').click();

  self.manageControls();
}
 
        SlideShow.prototype.manageControls = function(){
	    var self = this;
            if (self.currentPosition == 0){
                $('.leftControl', self.base).hide();
		self.direction = +1;
            }
            else
            {
                $('.leftControl', self.base).show();
            }
 
            if (self.currentPosition == (self.numberOfSlides - 1)){
                $('.rightControl', self.base).hide();
		self.direction = -1;
            }
            else
            {
                $('.rightControl', self.base).show();
            }
        }
 
        SlideShow.prototype.animate = function(){
            var self = this;
	    	$('.slideInner', self.base).animate({ 'marginLeft' : self.slideWidth * (-self.currentPosition)});    	
        }      
 
        SlideShow.prototype.onLeftControlClick = function(){
	    //for( k in this)   console.log(k);
	    var self = this;
            self.currentPosition--;
            self.manageControls();
            self.animate();
        }
 
        SlideShow.prototype.onRightControlClick = function(){
	    //for( k in this)   console.log(k);
	    var self = this;
            self.currentPosition++;
            self.manageControls();
            self.animate();
        } 		
 
 		
        SlideShow.prototype.autoAnimate = function(){
	    var self = this;
	    if (self.direction == 1){
	      self.currentPosition++;
	    }
	    else
	    {
	      self.currentPosition--;
	    }
	    //for (k in o) console.log(k);
	    self.manageControls();
	    self.animate();
        }  
 
	SlideShow.prototype.onAutoPlayControlClick = function(){
	    var self = this;
 
	    if (self.Timer == null){
			self.Timer = window.setInterval(function(){self.autoAnimate();} ,9000);
			$('.autoplayControl',self.base).html('<span class="pause">Pause</span>');
	    }
	    else {
			window.clearInterval(self.Timer);
			self.Timer = null;
			$('.autoplayControl',self.base).html('<span class="play">Play</span>');
	    }
	}
