/*
 * 	Image thumb slider with mootools
 * 	Oscar Kuchuk 2009
 * 	Needs mootools and motools-more v1.2.3
 */

ImgSlide=new Class({
	Implements: Options,
	options: {
		divid:'imgslide',	// Set to id of slider container
		itemclass:'imgslide_element',	//Set to class of each element
		elementsToSlide:2,				//Number of elements slided
		duration:400,					//Transition duration
		transition:'sine:out'			//Transition formula linear,sine:in:out
		},
	initialize:function(options){
		this.setOptions(options);
		outer=$(this.options.divid);
		aforward=outer.getElement('div.forward');
		if(aforward)
		{
			aforward.addEvent('click',this.slideForward.bind(this));
		}
		aback=outer.getElement('div.back');
		if(aback)
		{
			aback.addEvent('click',this.slideBack.bind(this));
		}
		slideup=outer.getElement('div.slide_up');
		if(slideup)
		{
			slideup.addEvent('click',this.slideUp.bind(this));
		}
		slidedown=outer.getElement('div.slide_down');
		if(slidedown)
		{
			slidedown.addEvent('click',this.slideDown.bind(this));
		}
		this.inner=outer.getElement('div');
		this.items=this.inner.getElement('div');
		this.items.set('tween',{duration:this.options.duration,transition:this.options.transition});
		e=this.items.getElement('.'+this.options.itemclass);
		this.contentW=this.items.clientWidth;
		this.contentH=this.items.clientHeight;
		this.scrollW=this.inner.clientWidth;
		this.scrollH=this.inner.clientHeight;
		this.offsetX=0;
		this.offsetY=0;
		this.dx=e.clientWidth*this.options.elementsToSlide;
		this.dy=e.clientHeight*this.options.elementsToSlide;
	},
	slideForward:function(){
		if(this.offsetX+this.contentW<=this.scrollW)
			return;
		this.offsetX-=this.dx;
		if(this.offsetX+this.contentW<this.scrollW)
			this.offsetX=this.scrollW-this.contentW;
		this.items.tween('left',String(this.offsetX));
		},
	slideBack:function(){
		if(this.offsetX>=0)
			return;
		this.offsetX+=this.dx;
		if(this.offsetX>0)
			this.offsetX=0;
		this.items.tween('left',String(this.offsetX));
	},
	slideUp:function(){
		if(this.offsetY+this.contentH<=this.scrollH)
			return;
		this.offsetY-=this.dy;
		if(this.offsetY+this.contentH<this.scrollH)
			this.offsetY=this.scrollH-this.contentH;
		this.items.tween('top',String(this.offsetY));
	},
	slideDown:function(){
		if(this.offsetY>=0)
			return;
		this.offsetY+=this.dy;
		if(this.offsetY>0)
			this.offsetY=0;
		this.items.tween('top',String(this.offsetY));
	}
});

