var Paginate = (function(){
	var PaginateSlider = new Class({
		
		Extends: Slider,
		
		initialize: function(element, knob, options){
			this.parent(element, knob, options);
			
			this.drag.addEvents({
				beforeStart: (function(){
					this.isDropping = true;
				}).bind(this),
				complete: (function(){
					this.isDropping = false;
				}).bind(this)
			});
		},
		
		clickedElement: function(event){
			if(this.isDropping) return;
			
			this.parent(event);
		}
		
	});
	
	return function(){
		$$('div.paginate').each(function(el){
			if(el.retrieve('paginate')) return;
			
			el.store('paginate', true);
			var link = el.getElement('a.link'),
				per = el.getElement('span.per').get('text').toInt(),
				page = el.getElement('span.current').get('text').toInt()-1;
			
			new PaginateSlider(el.getElement('div.slider'), el.getElement('div.knob'), {
				wheel: false,
				steps: link.get('text').toInt()-1,
				onChange: function(step){
					el.getElement('span.current').set('text', step+1);
				},
				onComplete: function(step){
					if(step!=page) window.location.href = link.get('href').substitute({start: step*per});
				}
			}).set(page);
		});
	};
})();

window.addEvent('domready', Paginate);
