jQuery.fn.coolSlider = function(options) {
	return this.each(function(){
		settings = jQuery.extend({
     		width: 220,
     		buttonWidth: 20,
     		buttonHoverAddWidth: 5,
     		buttonHoverAnimationSpeed: 200,
     		buttonLeaveAnimationSpeed: 400,
     		slidesContainerClass: '.slides',
     		slideSpeed: 600,
     		autoPlay: 5000
	 	}, options);
		
		n_this = this;
		actSlide = 0;
		
		jQuery('.nextBtn, .prevBtn', this).hover(function(){
			jQuery(this).stop(true);
			jQuery(this).animate({
				width: '+='+settings.buttonHoverAddWidth,
				opacity: 1
			}, settings.buttonHoverAnimationSpeed);
		}, function(){
			jQuery(this).stop();
			jQuery(this).animate({
				width: settings.buttonWidth,
				opacity: 0.5
			}, settings.buttonLeaveAnimationSpeed);
		});
		
		NoS = jQuery(settings.slidesContainerClass+' > *', this).length;
		sliderWidth = (NoS+2) * settings.width;
		jQuery(settings.slidesContainerClass, this).css('width', sliderWidth+'px');
		
		NoS2 = NoS-1;
		
		jQuery(settings.slidesContainerClass+' > *:eq('+NoS2+')').clone().insertBefore(settings.slidesContainerClass+' > *:eq(0)');
		jQuery(settings.slidesContainerClass+' > *:eq(1)').clone().insertAfter(settings.slidesContainerClass+' > *:eq('+NoS+')');
		
		jQuery(settings.slidesContainerClass, this).css('left', '-'+settings.width+'px');
		
		nextSlide = function(){
			if(actSlide >= NoS2){
				newLeft = 0;
				jQuery(settings.slidesContainerClass, n_this).css('left', '-'+newLeft+'px');
				actSlide = -1;
			}
			
			jQuery(settings.slidesContainerClass, n_this).animate({
				left: '-='+settings.width
			}, settings.slideSpeed);
			actSlide = actSlide+1;
			return false;
		}
		
		prevSlide = function(){
			if(actSlide <= 0){
				newLeft = (NoS+1)*settings.width;
				jQuery(settings.slidesContainerClass, n_this).css('left', '-'+newLeft+'px');
				actSlide = NoS2+1;
			}
			
			jQuery(settings.slidesContainerClass, n_this).animate({
				left: '+='+settings.width
			}, settings.slideSpeed);
			actSlide = actSlide-1;
			return false;
		}
		
		jQuery('.nextBtn', this).bind('click', function(){
			clearInterval(autoPlayer);
			nextSlide();
			return false;
		});
		
		jQuery('.prevBtn', this).bind('click', function(){
			clearInterval(autoPlayer);
			prevSlide();
			return false;
		});
		
		if(!isNaN(settings.autoPlay)){
			var autoPlayer = window.setInterval('nextSlide()', settings.autoPlay);
		}
	});
};
