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(b,c,d,e,a){this.itemClass=d;this.cEl=
$(b);this.cBox=$(c);this.items=$$("#"+c+" ."+this.itemClass);if(this.items.length!=0){if(a!=null){if(a.vertical!=null&&a.vertical)this.vertical=a.vertical;if(a.circular!=null&&a.circular)this.circular=a.circular;if(a.autoRun!=null&&a.autoRun)this.autoRun=a.autoRun;if(a.centered!=null&&a.centered&&this.circular)this.centered=a.centered;if(a.autoRunDir!=null&&a.autoRunDir==-1)this.autoRunDir=-1;if(a.autoRunFreq!=null&&parseFloat(a.autoRunFreq)>0)this.autoRunFreq=a.autoRunFreq;if(a.scrollInc!=null&&
parseInt(a.scrollInc)>0)this.scrollInc=parseInt(a.scrollInc);if(a.duration!=null&&parseFloat(a.duration)>0){this.moveDur=parseInt(a.duration*10/2)/10;this.fadeDur=parseInt(a.duration*10/4)/10;if(this.autoRun&&this.autoRunFreq<a.duration)this.autoRunFreq=a.duration}if(a.noMove!=null&&a.noMove){this.moveDur=0;this.fadeMin=0.1;if(a.duration>0)this.fadeDur=parseInt(a.duration*10/2)/10}if(a.switcher!=null)this.switcher=a.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 b=true;this.cBox.ancestors().each(function(c){if(b)b=c.visible()});return b},init:function(){this.itemsCount=this.items.length;this.itemWidth=this.vertical?this.items[0].getHeight():this.items[0].getWidth();var b={width:this.itemWidth*this.items.length+"px"};if(this.vertical)b=
{height:this.itemWidth*this.items.length+"px"};this.cBox.setStyle(b);b=$(this.cBox.parentNode);var c=parseInt(this.vertical?b.getStyle("borderUpWidth"):b.getStyle("borderLeftWidth")),d=parseInt(this.vertical?b.getStyle("borderBottomWidth"):b.getStyle("borderRightWidth"));c=(isNaN(c)?0:c)+(isNaN(d)?0:d);b=(this.vertical?b.getHeight():b.getWidth())-c;c=b/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-(b-this.itemsVisible*this.itemWidth);if(this.centered&&!this.isMoreVisible&&this.itemsVisible%2==1)this.centered=false;else if(this.centered){this.centeredMove=parseInt(!this.isMoreVisible&&this.itemsVisible%2==0?this.itemWidth/2:this.lastItemMove/2);b=this.vertical?{top:"-"+this.centeredMove+"px"}:{left:"-"+this.centeredMove+"px"};this.cBox.absolutize().setStyle(b).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(a,f){a.nr=f;if(e.swButton[f]!=null){e.swButton[f].swNr=f;a.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 b=this;this.swButton.each(function(c){c.observe("click",function(d){this.move(d)}.bind(b))})}},stopListen:function(){if(this.isDirButtons){this.prevButton.stopObserving("click");this.nextButton.stopObserving("click")}this.swButton!=null&&this.swButton.each(function(b){b.stopObserving("click")})},move:function(b){var c=Event.findElement(b,"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(b);return false},slideTo:function(b){var c=0,d=0,e=this.items[this.itemActual].nr;this.items.each(function(f,g){if(e==f.nr)c=g;if(b==f.nr)d=g});var a=Math.abs(d-c);this.makeMove((d-c)/a,a)},makeMove:function(b,c){this.stopListen();var d=b*c,e=b>0?this.itemsCount-this.itemsVisible-this.itemActual:this.itemActual,
a=this.circular?this.itemActual+d:this.itemActual+(e!=0&&e<c?b*e:d),f=a+this.itemsVisible;this.centered&&this.itemsCount==f&&f++;if(this.centered&&a==0)a=-1;if(a>=0&&f<=this.itemsCount)return this.switchSlide(a-this.itemActual,b,a);else if(this.circular){f=Math.abs(d)-e;this.centered&&f==0&&f++;for(var g=0;g<f;g++){a=b<0?this.itemsCount-f+g:g;this.cBox.removeChild(this.items[a]);b<0?this.cBox.insertBefore(this.items[a],this.items[0]):this.cBox.appendChild(this.items[a])}a=this.isMoreVisible&&this.itemActual!=
0?this.lastItemMove:this.itemWidth;c=b<0?-((c-1)*this.itemWidth+a):-((this.itemsCount-this.itemsVisible-c-1)*this.itemWidth+a);this.items=$$("#"+this.cBox.id+" ."+this.itemClass);if(this.centered)c+=b*this.centeredMove;c=this.vertical?{top:c+"px"}:{left:c+"px"};this.cBox.absolutize().setStyle(c).relativize();return this.switchSlide(d,b,b<0?0:this.itemActual+e)}this.listen();return false},switchSlide:function(b,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 a=this,f={x:-c*((Math.abs(b)-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(b)-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(){a.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 b=this;self.setTimeout(function(){b.slide()},this.autoRunFreq*1E3)}},restart:function(){this.autoRunStop=false;this.autoRunDir=this.lastDir;this.slide()},checkSwitcher:function(b){var c=this;if(b.nodeName==
"A"){c.swButton.each(function(d){d.removeClassName("selected")});c.itemsVisible>1?c.swButton.each(function(d){d.swNr>=b.swNr&&d.swNr<b.swNr+c.itemsVisible&&d.addClassName("selected")}):b.addClassName("selected")}else b.checked=true}};
