jQuery.fn.VSlide = function(options){
	
	settings = jQuery.extend({
     delay: 5000, //interval between change
		 speed: 'slow', //speed of animation
		 show: 1 //number of visible slides
  }, options);

	var container = jQuery(this);
	var slides = container.children();
	
	if (slides.length < 1) {
		return this;	
	}
	
	settings.show = (settings.show > (slides.length / 2).toFixed())? (slides.length / 2).toFixed() : settings.show;
	settings.show = (settings.show == 0)? 1 : settings.show;
	
	var h = 0;
	var w = container.innerWidth();
	var borderLeft = parseInt(slides.css('borderLeftWidth').split('px')[0]) || 0;
	var borderRight = parseInt(slides.css('borderRightWidth').split('px')[0]) || 0;
	var paddingLeft = parseInt(slides.css('paddingLeft').split('px')[0]) || 0;
	var paddingRight = parseInt(slides.css('paddingRight').split('px')[0]) || 0;
	
	w -= (borderLeft + borderRight + paddingLeft + paddingRight);
	
	for (var i = 0; i<slides.length; i++){
		h = (jQuery(slides[i]).outerHeight(true) > h) ? jQuery(slides[i]).outerHeight(true) : h;
		jQuery(slides[i]).css('display', 'none');
		jQuery(slides[i]).css('position', 'absolute');
		jQuery(slides[i]).css('top', 0);
	}

	h *= settings.show;
	
	container.height(h);
	container.css('overflow', 'hidden');
	container.css('position', 'relative');
	
	slides.width(w);
	
	container.data('slides', slides);
	container.data('currentSlide', slides.length -1);
	container.data('delay', settings.delay);
	
	function goNext(o, speed, show){
		return function(){
			var h = o.height();
			var slides = o.data('slides');
			var currentSlide = o.data('currentSlide');
			var nextSlide = (currentSlide + 1 >= slides.length)? 0 : currentSlide + 1;
			
			for (var i=0; i<show; i++){
				var nextSlideI = (nextSlide + i >= slides.length)? i : nextSlide + i;
				var currentSlideI = (currentSlide - i < 0)? slides.length - i : currentSlide - i;
				var hI = 0 + ((h/show) * i);
				
				jQuery(slides[currentSlideI]).animate({top:-(h + hI)}, speed);
				jQuery(slides[nextSlideI]).css('top', h + hI);
				jQuery(slides[nextSlideI]).css('display', 'block');
				jQuery(slides[nextSlideI]).animate({top:hI}, speed);
			}
			
			o.data('currentSlide', nextSlideI);
		}
	}
	
	container.data('next', goNext(container, settings.speed, settings.show));
	container.data('timer', setInterval(container.data('next'), settings.delay));
	
	container.bind('mouseenter', function(event){
		var container = jQuery(event.currentTarget);	
		clearInterval(container.data('timer'));
		container.removeData('timer');
	});
	container.bind('mouseleave', function(event){
		var container = jQuery(event.currentTarget);					
		container.data('timer', setInterval(container.data('next'), container.data('delay')));
	});
	
	container.data('next')();
	
	return this;
}