(function(){
	
	/*
	 * limited window scope
	 */
	var slide = window.slide = {
			
		options: {},
		 
		init: function(){
			
			/*
			 * vars defined here instead of constructor
			 * vars may be used the same way but you loose the ability to set them through construct 
			 * vars are in global scope since they are declared without the var keyword
			 */
			slide.currentPosition = 0;
  			slide.slideWidth = 886;
  			slide.slides = $('.slide');
  			slide.numberOfSlides = slide.slides.length;

  			/*
  			 * remove scrollbar
  			 */
  			$('#slidesContainer').css('overflow', 'hidden');

  			/*
  			 * wrap all slides with slideInner div
  			 */
  			slide.slides.wrapAll('<div id="slideInner"></div>')

    			/*
    			 * chain in css : float left to display horizontally and re-adjust slide width
    			 */
					.css({
		      			'float' : 'left',
						'width' : slide.slideWidth
		    		});

  			/*
  			 * set slideInner width to be equal to the total number of slides
  			 */
  			$('#slideInner').css('width', slide.slideWidth * slide.numberOfSlides);

  			/*
  			 * insert controls to DOM
  			 */
		  	$('#slideshow')
				.prepend('<span class="control" id="leftControl">next</span>')
					.append('<span class="control" id="rightControl">previous</span>');
		
		  	/*
		  	 * hide left arrow control on first item load
		  	 */
		  			slide.manageControls(slide.currentPosition);
		
		  	/*
		  	 * listen for .control clicks
		  	 */
		  	$('.control').bind('click', function(){
												 
				/*
				 * determin position
				 */
				slide.currentPosition = ($(this).attr('id')=='rightControl') ? slide.currentPosition+1 : slide.currentPosition-1;
			
				/*
				 * toggle controls
				 */
				slide.manageControls(slide.currentPosition);
			
				/*
				 * move slide inner using margin-left
				 */
				$('#slideInner').animate({
			  		'marginLeft' : slide.slideWidth*(-slide.currentPosition)
				});
				
		  	});

  				setTimeout("slide.next()", 8000);

		 },
		 
		/*
		 * auto scrolling
		 */
		next: function(){
		
			if(slide.currentPosition < (slide.numberOfSlides-1)){
				$('#rightControl').click();
			}else{
				slide.currentPosition = 0;
				slide.manageControls(slide.currentPosition);
					$('#slideInner').animate({
					  'marginLeft' : slide.currentPosition
					});
			}
			
				setTimeout("slide.next()", 8000);
  		},
	
  		/*
  		 * toggle controls depending on current position
  		 */
		manageControls: function(position){
		
  			/*
  			 * hide left arrow on first slide
  			 */
			if(position == 0)
				$('#leftControl').hide(); 
			else 
				$('#leftControl').show(); 
			
			/*
			 * hide right arrow on last slide
			 */
			if(position == slide.numberOfSlides-1) 
				$('#rightControl').hide();
			else
				$('#rightControl').show(); 
	  	
		}	
		  
	};
	
})();

