var Carousel=Class.create();
Carousel.prototype={cEl:null,cBox:null,itemClass:null,isDirButtons:false,prevButton:null,nextButton:null,switchers:null,swButton:null,scrollInc:1,items:null,itemWidth:0,itemActual:0,itemsCount:0,itemsVisible:0,isMoreVisible:false,lastItemMove:0,lastDir:null,moveDur:0.5,fadeDur:0.25,fadeMin:0.7,circular:false,vertical:false,centered:false,centeredMove:0,autoRun:false,autoRunStop:false,autoRunTimeout:null,autoRunDir:1,autoRunFreq:3,initInt:null,initialize:function(a,c,d,e,b){this.itemClass=d;this.cEl=
$(a);this.cBox=$(c);this.items=$$("#"+c+" ."+this.itemClass);if(this.items.length!=0){if(b!=null){if(b.vertical!=null&&b.vertical)this.vertical=b.vertical;if(b.circular!=null&&b.circular)this.circular=b.circular;if(b.autoRun!=null&&b.autoRun)this.autoRun=b.autoRun;if(b.centered!=null&&b.centered&&this.circular)this.centered=b.centered;if(b.autoRunDir!=null&&b.autoRunDir==-1)this.autoRunDir=-1;if(b.autoRunFreq!=null&&parseFloat(b.autoRunFreq)>0)this.autoRunFreq=b.autoRunFreq;if(b.scrollInc!=null&&
parseInt(b.scrollInc)>0)this.scrollInc=parseInt(b.scrollInc);if(b.duration!=null&&parseFloat(b.duration)>0){this.moveDur=parseInt(b.duration*10/2)/10;this.fadeDur=parseInt(b.duration*10/4)/10;if(this.autoRun&&this.autoRunFreq<b.duration)this.autoRunFreq=b.duration}if(b.noMove!=null&&b.noMove){this.moveDur=0;this.fadeMin=0.1;if(b.duration>0)this.fadeDur=parseInt(b.duration*10/2)/10}if(b.switcher!=null)this.switcher=b.switcher}if(e!=null){this.prevButton=$(e.prev);this.nextButton=$(e.next)}this.isDirButtons=
this.prevButton!=null&&this.nextButton!=null;if(this.isVisible())this.init();else this.initInt=self.setInterval(function(){if(this.isVisible()){self.clearInterval(this.initInt);this.init()}}.bind(this),500)}},isVisible:function(){var a=true;this.cBox.ancestors().each(function(c){if(a)a=c.visible()});return a},init:function(){this.itemsCount=this.items.length;this.itemWidth=this.vertical?this.items[0].getHeight():this.items[0].getWidth();var a={width:this.itemWidth*this.items.length+"px"};if(this.vertical)a=
{height:this.itemWidth*this.items.length+"px"};this.cBox.setStyle(a);a=$(this.cBox.parentNode);var c=parseInt(this.vertical?a.getStyle("borderUpWidth"):a.getStyle("borderLeftWidth")),d=parseInt(this.vertical?a.getStyle("borderBottomWidth"):a.getStyle("borderRightWidth"));c=(isNaN(c)?0:c)+(isNaN(d)?0:d);a=(this.vertical?a.getHeight():a.getWidth())-c;c=a/this.itemWidth;this.itemsVisible=parseInt(c);if(this.itemsVisible>=this.itemsCount){if(this.isDirButtons){this.prevButton.hide();this.nextButton.hide()}}else{this.isMoreVisible=
Math.ceil(c*10)/10>this.itemsVisible;this.lastItemMove=c*10%10==0?this.itemWidth:this.itemWidth-(a-this.itemsVisible*this.itemWidth);if(this.centered&&!this.isMoreVisible&&this.itemsVisible%2==1)this.centered=false;if(this.centered){this.shift(-1,parseInt(this.itemsVisible/2),this.itemActual);this.centeredMove=parseInt(!this.isMoreVisible&&this.itemsVisible%2==0?this.itemWidth/2:this.lastItemMove/2);a=this.vertical?{top:"-"+this.centeredMove+"px"}:{left:"-"+this.centeredMove+"px"};this.cBox.absolutize().setStyle(a).relativize()}if(this.scrollInc>
this.itemsVisible)this.scrollInc=this.itemsVisible;if(this.circular&&this.itemsVisible==1||!this.circular){this.swButton=$$("#"+this.cEl.id+" ."+this.switcher);if(this.swButton.length>0){var e=this;this.items.each(function(b,f){b.nr=f;if(e.swButton[f]!=null){e.swButton[f].swNr=f;b.sw=e.swButton[f]}});e.checkSwitcher(e.swButton[0])}}if(this.isDirButtons){this.prevButton.dirt=-1;this.nextButton.dirt=1}this.listen();if(this.autoRun){e=this;self.setTimeout(function(){e.slide()},this.autoRunFreq*1E3)}}},
listen:function(){if(this.isDirButtons){this.prevButton.observe("click",function(c){this.move(c)}.bind(this));this.nextButton.observe("click",function(c){this.move(c)}.bind(this))}if(this.swButton!=null){var a=this;this.swButton.each(function(c){c.observe("click",function(d){this.move(d)}.bind(a))})}},stopListen:function(){if(this.isDirButtons){this.prevButton.stopObserving("click");this.nextButton.stopObserving("click")}this.swButton!=null&&this.swButton.each(function(a){a.stopObserving("click")})},
move:function(a){var c=Event.findElement(a,"a");c.swNr!=null?this.slideTo(c.swNr):this.makeMove(c.dirt,this.scrollInc);this.autoRunStop=true;var d=this;clearTimeout(this.autoRunTimeout);this.autoRunTimeout=self.setTimeout(function(){d.restart()},3*this.autoRunFreq*1E3);Event.stop(a);return false},slideTo:function(a){var c=0,d=0,e=this.items[this.itemActual].nr;this.items.each(function(f,g){if(e==f.nr)c=g;if(a==f.nr)d=g});var b=Math.abs(d-c);this.makeMove((d-c)/b,b)},makeMove:function(a,c){this.stopListen();
var d=a*c,e=a>0?this.itemsCount-this.itemsVisible-this.itemActual:this.itemActual,b=this.circular?this.itemActual+d:this.itemActual+(e!=0&&e<c?a*e:d),f=b+this.itemsVisible;this.centered&&this.itemsCount==f&&f++;if(this.centered&&b==0&&this.itemActual==1)b=-1;if(b>=0&&f<=this.itemsCount)return this.switchSlide(b-this.itemActual,a,b);else if(this.circular){this.shift(a,c,e);return this.switchSlide(d,a,a<0?0:this.itemActual+e)}this.listen();return false},switchSlide:function(a,c,d){var e=this.itemWidth;
if(!(this.lastDir==null&&c<0)&&(this.lastDir!=c||this.lastDir!=c&&c<0&&this.itemActual!=0))e=this.lastItemMove;var b=this,f={x:-c*((Math.abs(a)-1)*this.itemWidth+e),y:0,mode:"relative",duration:this.moveDur,queue:{position:"end",scope:this.cBox.id}};if(this.vertical){f.x=0;f.y=-c*((Math.abs(a)-1)*this.itemWidth+e)}new Effect.Fade(this.cBox,{duration:this.fadeDur,from:1,to:this.fadeMin,queue:{position:"end",scope:this.cBox.id}});new Effect.Move(this.cBox,f);new Effect.Fade(this.cBox,{duration:this.fadeDur,
from:this.fadeMin,to:1,afterFinish:function(){b.listen()},queue:{position:"end",scope:this.cBox.id}});this.itemActual=d;this.lastDir=c;this.items[this.itemActual].sw!=null&&this.checkSwitcher(this.items[this.itemActual].sw);return true},slide:function(){if(this.autoRun&&!this.autoRunStop){for(;!this.makeMove(this.autoRunDir,this.scrollInc);)this.autoRunDir*=-1;var a=this;self.setTimeout(function(){a.slide()},this.autoRunFreq*1E3)}},restart:function(){this.autoRunStop=false;this.autoRunDir=this.lastDir;
this.slide()},checkSwitcher:function(a){var c=this;if(a.nodeName=="A"){c.swButton.each(function(d){d.removeClassName("selected")});c.itemsVisible>1?c.swButton.each(function(d){d.swNr>=a.swNr&&d.swNr<a.swNr+c.itemsVisible&&d.addClassName("selected")}):a.addClassName("selected")}else a.checked=true},shift:function(a,c,d){var e=Math.abs(a*c)-d;this.centered&&e==0&&e++;for(var b=0;b<e;b++){d=a<0?this.itemsCount-e+b:b;this.cBox.removeChild(this.items[d]);a<0?this.cBox.insertBefore(this.items[d],this.items[0]):
this.cBox.appendChild(this.items[d])}d=this.isMoreVisible&&this.itemActual!=0?this.lastItemMove:this.itemWidth;c=a<0?-((c-1)*this.itemWidth+d):-((this.itemsCount-this.itemsVisible-c-1)*this.itemWidth+d);this.items=$$("#"+this.cBox.id+" ."+this.itemClass);if(this.centered)c+=a*this.centeredMove;a=this.vertical?{top:c+"px"}:{left:c+"px"};this.cBox.absolutize().setStyle(a).relativize()}};

