var xcib_scrollToTop = function (el){
	var handler = $(el).getParent('.scroller');
	var content = handler.getElement('.scroller-content');
	var fx = new Fx.Scroll(content);
	fx.set(0,0);
}

var xcib_scrollTo = function (el, target){
	var handler = $(el).getParent('.scroller');
	var content = handler.getElement('.scroller-content');
	var fx = new Fx.Scroll(content);
	if($(target)){
		fx.set(0,$(target).getCoordinates(content).top);
	}
}

window.addEvent('domready', function(){
	new XCIB_scroller($$('.scroller'), {
		step: 2,
		delay: 10,
		stepBlock: 40
	});
});

var XCIB_scroller = new Class({
	Implements: [Options],
	
	options: {
		step: 1,
		stepBlock: 30,
		delay: 10,
		classPrefix: 'scroller'
	},
	
	initialize: function(handlers, options){
		this.setOptions(options);
		if(handlers){
			handlers.each((function(handler, idx){
				var content = handler.getElement('.'+this.options.classPrefix+'-content');
				var up = handler.getElement('.'+this.options.classPrefix+'-up');
				var down = handler.getElement('.'+this.options.classPrefix+'-down');
				if(content && up && down && content.getSize().y < content.getScrollSize().y){
					up.setStyle('display', '');
					down.setStyle('display', '');
					var delay = this.options.delay;
					var step = this.options.step;
					var stepBlock = this.options.stepBlock;
					var fx = new Fx.Scroll(content);
					var interval = null;
					up.addEvent('mouseenter', function(){
						interval = (function(){fx.set(0, content.getScroll().y-step);}).periodical(delay);
					});
					up.addEvent('mouseleave', function(){
						$clear(interval);
					});
					up.addEvent('click', function(){
						fx.set(0, content.getScroll().y-stepBlock);
					});
					down.addEvent('mouseenter', function(){
						interval = (function(){fx.set(0, content.getScroll().y+step);}).periodical(delay);
					});
					down.addEvent('mouseleave', function(){
						$clear(interval);
					});
					down.addEvent('click', function(){
						fx.set(0, content.getScroll().y+stepBlock);
					});
				}
			}).bind(this));
		}
	}
});