var Slider = new Class({
	fxScroll: null,
	pages: [],
	page: 0,

	initialize: function(container, pageSelector, horizontal, nextBtn, prevBtn){
		container  = $(container);
		this.pages = container.getElements(pageSelector);

		if (!horizontal) {
			this.pages.setStyle('overflow', 'hidden');
		} else {
			container.setStyles({position: 'relative', overflow: 'hidden'});

			var width  = container.getStyle('width').toInt();
			var height = container.getStyle('height').toInt();
			var margin = 30;

			this.pages.each(function(page, i){
				page.setStyles({
					overflow: 'hidden',
					position: 'absolute',
					height: height + 'px',
					width: width + 'px',
					marginRight: margin + 'px',
					top: 0,
					left: i * (width + margin) + 'px'
				});
			});
		}

		this.fxScroll = new Fx.Scroll(container, {
			wait: false,
			duration: 550,
			transition: Fx.Transitions.Quad.easeInOut,
			wheelStops: false
		});

		if (nextBtn) { $(nextBtn).addEvent('click', this.next.pass(null, this)); }
		if (prevBtn) { $(prevBtn).addEvent('click', this.prev.pass(null, this)); }
	},

	next: function(e){
		new Event(e).stop();
		this.gotoPage(this.page + 1);
		return this;
	},

	prev: function(e){
		new Event(e).stop();
		this.gotoPage(this.page - 1);
		return this;
	},

	gotoPage: function(page){
		this.page = page % this.pages.length;
		if (this.page < 0) {
			this.page += this.pages.length;
		}

		this.fxScroll.toElement(this.pages[this.page]);
		return this;
	},

	gotoSliderPage: function(gotoPage){
		for(i = 0; i < this.pages.length; i++){
			if(this.pages[i] == gotoPage){
				this.page = i;
				break;
			}
		}

		this.fxScroll.toElement(gotoPage);
		return this;
	},

	getImages: function(){
		return this.pages.getElements('img');
	}
});


window.addEvent('domready', function(){
	var ClientScroller = new Slider('slider-body', 'div.slider-page', true, 'slider-right', null);
	var hash = window.location.hash;
	if(hash != ""){
		hash = hash.split('#')[1];
		var elem = $(hash);
		var elemparent = elem.getParent();
		var page = elemparent.getParent();
		ClientScroller.gotoSliderPage(page);
	}
});
