jQuery.fn.SlideShowManager = function(options) {
	var defaults = {
		currentPosition: 0
	};
	var options = $.extend({}, defaults, options);
	
    return this.each(function(){
	new SlideShow(this, options);
  });
};
 
 
function SlideShow(base, options){
	var self = this;

	self.currentPosition = options.currentPosition;
	self.slideWidth = 760;
	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);
 
 
	//$('.slidesContainer',base).prepend ('<div class="autoplayControl">PLAY</div>');
 
	//$(base)
	//.prepend('<span class="leftControl">Move left</span>')
	//.append('<span  class="rightControl">Move right</span>');
 
	$('.leftControl', base).bind('click', $.proxy(self.onLeftControlClick, self));
	$('#leftPreviewTrigger', base).bind('click', $.proxy(self.onLeftControlClick, self));
	$('.rightControl', base).bind('click', $.proxy(self.onRightControlClick, self));
	$('#rightPreviewTrigger', base).bind('click', $.proxy(self.onRightControlClick, self));
	$('.autoplayControl',base).bind('click', $.proxy(self.onAutoPlayControlClick, self));
 
    self.manageControls();
	if (options.currentPosition != 0) {
		self.animate();
	}
}
 
        SlideShow.prototype.manageControls = function(){
	    var self = this;
            if (self.currentPosition == 0){
                $('.leftControl', self.base).hide();
				$('#leftPreviewTrigger', self.base).hide();
		self.direction = +1;
            }
            else
            {
                $('.leftControl', self.base).show();
				$('#leftPreviewTrigger', self.base).show();
            }
 
            if (self.currentPosition == (self.numberOfSlides - 1)){
                $('.rightControl', self.base).hide();
				$('#rightPreviewTrigger', self.base).hide();
		self.direction = -1;
            }
            else
            {
                $('.rightControl', self.base).show();
				$('#rightPreviewTrigger', 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();}
						,4000);
		$('.autoplayControl',self.base).html("STOP");
	    }else
	    {
		window.clearInterval(self.Timer);
		self.Timer = null;
		$('.autoplayControl',self.base).html("PLAY")
	    }
	}
