// -----------------------------------------------------------------------------------
// ImageSlider v1.2
// http://travisjbeck.com/blog/javascript/the-imageslider-mootools-class/
// by Travis Beck - http://travisjbeck.com
// Last Modification: 10/6/08
//
//
// Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//    - Free for use in both personal and commercial projects
//    - Attribution requires leaving author name, author link, and the license info intact.
// -----------------------------------------------------------------------------------
var ImageSlider=new Class(
{Implements:[Options,Events],options:{objToSlide:'',sliderElements:'',numOfElementsToSlide:1,numOfElementsShown:1,leftBtn:'',rightBtn:'',easing:Fx.Transitions.Expo.easeInOut},

initialize:function(options){this.setOptions(options);this.options.objToSlide=$(this.options.objToSlide);if(!(this.options.objToSlide)){return false;}
this.setup();},

setup:function(){var o=this.options;o.sliderElements=(o.objToSlide.getElements(o.sliderElements));o.leftBtn=$(o.leftBtn);o.rightBtn=$(o.rightBtn);o.objToSlide.setStyles({position:'relative',left:0});var element=$(o.sliderElements[0]);var margins=parseFloat(element.getStyle('margin-left'))+parseFloat(element.getStyle('margin-right'));var size=element.getSize();o.elementWidth=size.x+margins;o.objToSlide.setStyle('width',(o.elementWidth*o.sliderElements.length));o.index=0;o.total=o.sliderElements.length-o.numOfElementsShown;o.totalMoves=-(o.total/o.numOfElementsToSlide);o.myFx=new Fx.Morph(o.objToSlide,{duration:500,transition:o.easing,link:'chain'});o.leftBtn.addEvent("click",this.leftClick.bindWithEvent(this));o.rightBtn.addEvent("click",this.rightClick.bindWithEvent(this));},

leftClick:function(e){e.stop();if(this.sliding){return;}
var o=this.options;var newPos;o.index+=1;if(o.index<0){newPos=(o.elementWidth*o.numOfElementsToSlide)*o.index;}else{o.index=0;newPos=0;}
var cur=o.objToSlide.getCoordinates(o.objToSlide.getParent()).left;if(cur==newPos){return false;}
this.slide(newPos);},

rightClick:function(e){e.stop();if(this.sliding){return;}
var o=this.options;var newPos;o.index-=1;if(o.index>=o.totalMoves){newPos=(o.elementWidth*o.numOfElementsToSlide)*o.index;}else{o.index=o.totalMoves;newPos=(o.elementWidth*o.numOfElementsToSlide)*o.index;}
var cur=o.objToSlide.getCoordinates(o.objToSlide.getParent()).left;if(cur==newPos){return false;}
this.slide(newPos);},

slide:function(newPos){this.sliding=true;this.options.myFx.start({'left':newPos}).chain(function(){this.sliding=false;this.fireEvent('onSlideComplete',this.options.index);}.bind(this));},

slideTo:function(pos){if($type(pos)!="number"){return false;}
var o=this.options;pos=pos+1;var newPos;o.index=-(((pos-o.numOfElementsShown)/o.numOfElementsToSlide).round());if(o.index>=o.totalMoves){newPos=(o.elementWidth*o.numOfElementsToSlide)*o.index;}else{o.index=o.totalMoves;newPos=(o.elementWidth*o.numOfElementsToSlide)*o.index;}
this.slide(Math.min(0,newPos));}
});
