PM.Carousel=function(D,F,A,C,B){this.containerElt=$(D);this.containerId=D;this.nbTotalItems=C;PM.Dom.Class.add(this.containerElt,"carousel_js");this.visibleDiv=$s("div.listing",this.containerElt)[0];this.movingDiv=$s("div.listing_ctn",this.containerElt)[0];this.items=$s("div.item",this.containerElt);this.targetItem=1;if(!B){B={}}this.nbVisibleItems=B.nbVisibleItems?B.nbVisibleItems:5;this.nbItemsStep=B.nbItemsStep?B.nbItemsStep:1;this.movementDuration=B.movementDuration?B.movementDuration:0.5;this.isContinuClickActivated=B.isContinuClickActivated?B.isContinuClickActivated:false;this.afterMoveCallbackMethod=B.afterMoveCallbackMethod;this.withoutEffect=B.withoutEffect?B.withoutEffect:false;this.inactiveClass=!ie6?new Array("inactive_btn","inactive_btn"):new Array("back_btn_inactive","next_btn_inactive");this.isButtonDown=new Array(false,false);this.buttonsText=new Array(F,A);var E=this.initNavigationButton(PM.Carousel.ButtonType.PREVIOUS);var G=this.initNavigationButton(PM.Carousel.ButtonType.NEXT);this.buttons=new Array(E,G);this.buttonSize=$s("a",E)[0].offsetWidth;PM.Event.add(this.containerElt,PM.Event.Type.INIT,this.computeItemsSize.bindObj(this));PM.Event.add(window,"resize",this.computeItemsSize.bindObj(this));PM.Event.add(window,"resize",this.putMovingDivInPlace.bindObj(this));PM.Event.add(this.containerElt,PM.Event.Type.INIT,this.checkNavigationButtonsActivation.bindObj(this))};PM.Carousel.ButtonType={PREVIOUS:0,NEXT:1};PM.Carousel.prototype.initNavigationButton=function(C){var A=((C==PM.Carousel.ButtonType.PREVIOUS)?"back_btn":"next_btn");var B=PM.Dom.createLink("#",this.buttonsText[C]);B.title=this.buttonsText[C];B.id=this.containerId+"_"+A;var F="nav_btn "+A;var D=PM.Dom.createElement("div",{className:F,content:B});this.containerElt.appendChild(D);var E=(C==PM.Carousel.ButtonType.PREVIOUS)?-1:1;PM.Event.add(B,"mousedown",this.mouseDownOnButton.bindObj(this,C,E));if(this.isContinuClickActivated){PM.Event.add(B,"mouseup",this.mouseUpOnButton.bindObj(this,C));PM.Event.add(B,"mouseout",this.mouseUpOnButton.bindObj(this,C))}PM.Event.add(B,"click",function(G){PM.Util.preventDefault(G)});return D};PM.Carousel.prototype.computeItemsSize=function(){var C=this.containerElt.offsetWidth-(this.buttonSize*4);this.visibleDiv.style.width=C+"px";var B=Math.floor(this.visibleDiv.offsetWidth/this.nbVisibleItems);for(var A=0;A<this.items.length;A++){this.items[A].style.width=B+"px"}var D=B*this.items.length;if(ie6){D+=10}this.movingDiv.style.width=D+"px"};PM.Carousel.prototype.putMovingDivInPlace=function(){this.movingDiv.style.left=this.getTargetPosition()+"px"};PM.Carousel.prototype.mouseDownOnButton=function(A,B){if(this.hasButtonToBeActive(A)){this.isButtonDown[A]=true;this.move(A,B)}};PM.Carousel.prototype.move=function(A,C){if(!this.isContinuClickActivated||(this.isContinuClickActivated&&this.isButtonDown[A])){this.targetItem+=(C*this.nbItemsStep);var B=Effect.Transitions.linear;if(this.withoutEffect){B=Effect.Transitions.full}new Effect.Move(this.movingDiv,{x:this.getTargetPosition(),mode:"absolute",duration:this.movementDuration,afterFinish:this.afterMovementFinish.bindObj(this,A,C),transition:B})}};PM.Carousel.prototype.afterMovementFinish=function(A,B){this.checkNavigationButtonsActivation();if(this.isContinuClickActivated&&this.isButtonDown[A]){this.move(A,B)}if(this.afterMoveCallbackMethod){this.afterMoveCallbackMethod.call(null,{startElement:this.targetItem})}};PM.Carousel.prototype.mouseUpOnButton=function(A){this.isButtonDown[A]=false};PM.Carousel.prototype.getTargetPosition=function(){var A=-(this.items[0].offsetWidth*(this.targetItem-1));return A};PM.Carousel.prototype.checkNavigationButtonsActivation=function(){for(buttonType in PM.Carousel.ButtonType){buttonType=PM.Carousel.ButtonType[buttonType];if(this.isButtonActive(buttonType)){if(!this.hasButtonToBeActive(buttonType)){PM.Dom.Class.add(this.buttons[buttonType],this.inactiveClass[buttonType]);this.buttons[buttonType].firstChild.title="";this.isButtonDown[buttonType]=false}}else{if(this.hasButtonToBeActive(buttonType)){PM.Dom.Class.remove(this.buttons[buttonType],this.inactiveClass[buttonType]);this.buttons[buttonType].firstChild.title=this.buttonsText[buttonType]}}}};PM.Carousel.prototype.isButtonActive=function(A){return !(this.buttons[A].className.match(this.inactiveClass[A]))};PM.Carousel.prototype.hasButtonToBeActive=function(A){var B;if(A==PM.Carousel.ButtonType.PREVIOUS){if(this.targetItem<=1){B=false}else{B=true}}else{if(A==PM.Carousel.ButtonType.NEXT){if((this.targetItem+this.nbItemsStep)>this.nbTotalItems){B=false}else{B=true}}}return B};