
SLIDESHOW=function(){var prop;var parent;var slides;var current=0;var next;var delta=0;var total;var slideWidth;var slideheight;var currentPosition=0;var deltaPosition;var frame=0;var frames=10;var duration;var frameRate=40;var slowness=0.6;var animationID;var isAnimating=false;var onStart;var onFinish;function easeOutSine(t,b,c,d){return c*Math.sin(t/d*(Math.PI*0.5))+b;}
function animate(){if(isAnimating){if(frame<=duration){parent.style[prop]=easeOutSine(frame,currentPosition,deltaPosition,duration)+"px";frame+=1;}else{isAnimating=false;frame=0;current=next;if(onFinish){onFinish(current);}
clearInterval(animationID);}}}
function update(){duration=frames*Math.ceil(slowness*Math.abs(delta));if(prop==="left"){currentPosition=-(current*slideWidth);deltaPosition=-(delta*slideWidth);}else{currentPosition=-(current*slideHeight);deltaPosition=-(delta*slideHeight);}
animationID=setInterval(animate,frameRate);}
return{init:function(params){parent=params.parent;slides=DOM.getElementsByClass(params.className,parent);total=slides.length;prop=params.prop||"left";slideWidth=slides[0].offsetWidth;slideHeight=slides[0].offsetHeight;onStart=params.onStart;onFinish=params.onFinish;current=params.first||0;if(prop==="left"){parent.style[prop]=-(current*slideWidth)+"px";}else{parent.style[prop]=-(current*slideHeight)+"px";}
if(onStart){onStart(current);}
if(onFinish){onFinish(current);}},gotoSlide:function(num){if(num!==current&&(!isAnimating)){next=num;delta=next-current;isAnimating=true;if(onStart){onStart(next);}
update();}},next:function(){if(current<(total-1)){SLIDESHOW.gotoSlide(current+1);}},previous:function(){if(current>0){SLIDESHOW.gotoSlide(current-1);}},first:function(){return(current===0);},last:function(){return(current===(total-1));}};}();