var Pager = Class.create({
	initialize: function (rootElement,instanceId) {
		this.sliderBar = rootElement.down('div.orange-pager-slider-bar');
		this.sliderHandle = rootElement.down('div.orange-pager-slider-handle');
		this.tread = rootElement.down('div.orange-pager-region ul');
		this.min = 0;
		this.max = parseInt(rootElement.getAttribute('js:size'));
		this.currentPage = parseInt(rootElement.getAttribute('js:current-page'));
		this.values = this.createValueList();
		this.slider = new Control.Slider(this.sliderHandle, this.sliderBar, {
		      onSlide: this.onSlide.bind(this),
		      onChange: this.onChange.bind(this)
		});

		this.treadWidth = this.calculateWidth(this.tread);
		this.stepSize = this.treadWidth / this.max;
				
		if (this.currentPage > 1) {
			this.jumpToPage(this.currentPage);
		}
	},
	onSlide: function (value) {
		this.tread.style.left = -(value/this.slider.maximum*this.treadWidth) + 'px';
	},
	onChange: function (value) {
		this.tread.style.left = -(value/this.slider.maximum*this.treadWidth) + 'px';
	},
	createValueList: function () {
		var l = [];
		for (var i = 0; i < this.max; i++) {
			l[i] = i;
		}
		
		return l;
	},
	calculateWidth: function (ul) {
		var width = 0;
		ul.select('li').each(function (item) {
			width = width + item.getDimensions().width;
		});
		
		return width - 270;
	},
	calculateWidthUntil: function (ul, until){
		var width = 0;
		if (until > 0){
			var i = 0;
	        ul.select('li').each(function (item) {
	        	if (i < until -1){
	        	   ++i;
	               width = width + item.getDimensions().width;
	        	} 
	        });
		}
	    return width;
	},
	jumpToPage: function (page) {
		var value = (1 / this.max) * page; 
        this.slider.setValue(value);
        
        var widthUntil = -this.calculateWidthUntil(this.tread, page);
        
        var sliderPos = this.slider.translateToPx(value);
        sliderPos = sliderPos.substring(0,sliderPos.length -2);

        this.tread.style.left = (parseInt(widthUntil) + parseInt(sliderPos) +10) + 'px';
	}
});
