jQuery.fn.carousel = function(options){
	var t = [];
	var currentPosition = [];
	var slideWidth = [];
	var defaults = {
	automatic: true,
	tiempo: 15000
	};
  
  var options = $.extend(defaults, options);
  
	$(this).each(function(){
	  
	 //console.debug($(this));
	  
	  var num  = num_global++;
	  obj[num] = $(this);
	  obj[num].hide();
	  currentPosition[num] = 0;
	  
	  
	  
	  slideWidth[num] = obj[num].width();
	  var slides = $(this).find('.slide');
	  numberOfSlides[num] = slides.length;
	   // Remove scrollbar in JS
	  obj[num].find('#slidesContainer').css('overflow', 'hidden');
	
	  // Wrap all .slides with #slideInner div
	  slides
	  .wrapAll('<div id="slideInner"></div>')
	  // Float left to display horizontally, readjust .slides width
	  .css({
	    'float' : 'left',
	    'width' : slideWidth[num]
	  });

	  // Set #slideInner width equal to total width of all slides
	  obj[num].find('#slideInner').css('width', slideWidth[num] * numberOfSlides[num]);
	
	  // Insert left and right arrow controls in the DOM
	  obj[num]
	    .prepend('<span class="control" id="leftControl">Move left</span>')
	    .append('<span class="control" id="rightControl">Move right</span>');
	
	  // Hide left arrow control on first load
	  $.manageControls = function(position,num){
			// Hide left arrow if position is first slide
			if(position==0){ obj[num].find('#leftControl').hide() }
			else{ obj[num].find('#leftControl').show() }
			// Hide right arrow if position is last slide
			if(position==numberOfSlides[num]-1){ obj[num].find('#rightControl').hide() }
			else{ obj[num].find('#rightControl').show() }
   	  };
	  $.manageControls(currentPosition[num],num);
	  if (options.automatic) t[num] = setTimeout("$.automatic("+num+")",options.tiempo);

	  // Create event listeners for .controls clicks
	   obj[num].find('.control')
	    .bind('click', function(){
	    	clearTimeout(t[num]);
	    // Determine new position
	      currentPosition[num] = ($(this).attr('id')=='rightControl')
	    ? currentPosition[num]+1 : currentPosition[num]-1;
	
	      // Hide / show controls
	       $.manageControls(currentPosition[num],num);
	      // Move slideInner using margin-left
	       obj[num].find(' #slideInner').animate({
	        'marginLeft' : slideWidth[num]*(-currentPosition[num])
	      },function(){
	      	if (options.automatic)	t[num] = setTimeout("$.automatic("+num+")",options.tiempo);
	  		});
	    });
	    
	    $('#slidesContainer').hover(function(){
	    	clearTimeout(t[num]);
	    },function(){
	    	if (options.automatic) t[num]= setTimeout("$.automatic("+num+")",options.tiempo);
	    });
		$.automatic = function(num){
		  clearTimeout(t[num]);
		  if (numberOfSlides[num] > currentPosition[num]+1) currentPosition[num]++;
		  else currentPosition[num]=0;
	      // Hide / show controls
	       $.manageControls(currentPosition[num],num);
	      // Move slideInner using margin-left
	      obj[num].find(' #slideInner').animate({
	        'marginLeft' : slideWidth[num]*(-currentPosition[num])
	      });
	     if (options.automatic) t[num] = setTimeout("$.automatic("+num+")",options.tiempo);
		}
		obj[num].show();
	  // manageControls: Hides and shows controls depending on currentPosition
	});
}
