/*
 NNS AutoScroller plugin v1.0 by NoNo (c) 2011 (http://www.nono-serveur.net)
*/
(function($){$.fn.NNSAutoScroller = function(options){
	return this.each(function(){
		jQuery.fx.interval = 50;
		var settings = jQuery.extend({
			verticalheight: '200px',
			scrollduration: 2000,
			bntplay: false,
			bntstop: false,
			bntup: false,
			bntdown: false,
			bntfaster: false,
			bntslower: false,
			scrollway: 'top'
	 	}, options);
		
		var NNSCS = this;
		var vheight = parseFloat(settings.verticalheight);
		var vpadding = parseFloat(settings.verticalpadding);
		var scrolldur = parseFloat(settings.scrollduration);
		var scrolling = settings.scrollway;
		var stoped = false;
		var scollper = 0;
		$(NNSCS).css({height: vheight+'px'});
		var scrollheight = $(NNSCS)[0].scrollHeight - $(NNSCS)[0].clientHeight;
		
		function autoscroll(pos){
			if(scrolling=='top'){
				if(pos==0){scollper = 1;}else{scollper = 1 - (parseFloat($(NNSCS).scrollTop()) / scrollheight);}
				$(NNSCS).stop().scrollTop(pos).animate({scrollTop : scrollheight},(scrolldur * scollper),'linear',function(){autoscroll(0);});
			}else{
				if(pos==scrollheight){scollper = 0;}else{scollper = (parseFloat($(NNSCS).scrollTop()) / scrollheight);}
				$(NNSCS).stop().scrollTop(pos).animate({scrollTop : 1},(scrolldur * scollper),'linear',function(){$(NNSCS).scrollTop(scrollheight);autoscroll(scrollheight-1);});
			}
		}
		
		if(settings.bntplay){
			$(settings.bntplay).click(function(){
				stoped = false;
				autoscroll($(NNSCS).scrollTop());
			});
		}
		
		if(settings.bntstop){
			$(settings.bntstop).click(function(){
				stoped = true;
				$(NNSCS).stop();
			});
		}
		
		if(settings.bntup){
			$(settings.bntup).click(function(){
				scrolling = 'top';
				$(NNSCS).stop();
				autoscroll($(NNSCS).scrollTop());
			});
		}
		
		if(settings.bntdown){
			$(settings.bntdown).click(function(){
				scrolling = 'down';
				$(NNSCS).stop();
				autoscroll($(NNSCS).scrollTop());
			});
		}
		
		if(settings.bntfaster){
			$(settings.bntfaster).click(function(){
				stoped = false;
				scrolldur = scrolldur / 1.2;
				autoscroll($(NNSCS).scrollTop());
			});
		}
		
		if(settings.bntslower){
			$(settings.bntslower).click(function(){
				stoped = false;
				scrolldur = scrolldur * 1.2;
				autoscroll($(NNSCS).scrollTop());
			});
		}
		
		$(NNSCS).mouseenter(function(){
			$(NNSCS).stop();
		}).mouseleave(function(){
			if(!stoped){autoscroll($(NNSCS).scrollTop());}
		});
		autoscroll(0);
	})
};})(jQuery);
