/**
 * $Id: mmcarousel.min.js 558 2010-09-19 02:17:27Z martin $
 */
var mmCarousel=new Class({moduleId:null,iCarousel:null,titles:null,total:null,aItemsLength:null,transition:null,options:{orientation:'horizontal',width:960,height:408,animationType:'scroll',animationDirection:'left',animationTransition:'linear',animationEase:'easeInOut',animationDuration:500,rotateType:'manual',rotateInterval:5000,rotateOnMouseOver:'stop',buttonWidth:165,ctrlAnimationTransition:'linear',ctrlAnimationEase:'easeInOut',ctrlAnimationDuration:500,onInitiated:Class.empty},initialize:function(moduleId,options){this.moduleId=moduleId;this.setOptions(options);if(this.options.animationEase!=''&&this.options.animationTransition!='linear')this.transition=Fx.Transitions[this.options.animationTransition][this.options.animationEase];else this.transition=Fx.Transitions[this.options.animationTransition];if(this.options.ctrlAnimationEase!=''&&this.options.ctrlAnimationTransition!='linear')this.ctrlTransition=Fx.Transitions[this.options.ctrlAnimationTransition][this.options.ctrlAnimationEase];else this.ctrlTransition=Fx.Transitions[this.options.ctrlAnimationTransition];this.titles=$$('#mmCarousel'+this.moduleId+'-controls li.title');this.container=$('mmCarousel'+this.moduleId+'-titles');this.total=this.titles.length;this.titles.each(function(el,i){var result=el.getText().split('::');if(result[1])el.setHTML('<span>'+this.truncate(result[0])+'</span>'+this.truncate(result[1]));else el.setHTML('<span>'+this.truncate(result[0])+'</span>');el.setStyle('width',(this.options.buttonWidth-el.getStyle('paddingLeft').toInt()-el.getStyle('paddingRight').toInt())+'px');}.bind(this));var wrapper;if(this.options.orientation=='horizontal'){wrapper=this.container.getParent();this.stripContainerWidth=this.options.width-(wrapper.getPrevious().getStyle('width').toInt()+wrapper.getNext().getStyle('width').toInt());this.stripWidth=this.total*this.options.buttonWidth;wrapper.setStyles({overflow:'hidden',width:this.stripContainerWidth+'px',height:this.container.getChildren()[0].getStyle('height')});this.container.setStyle('width',this.stripWidth+'px');}
if(this.options.orientation=='vertical'){wrapper=this.container.getParent();this.stripContainerHeight=this.options.height-(wrapper.getPrevious().getStyle('height').toInt()+wrapper.getNext().getStyle('height').toInt());this.buttonHeight=(this.titles[0].getStyle('height').toInt()+this.titles[0].getStyle('padding-top').toInt()+this.titles[0].getStyle('padding-bottom').toInt());this.stripHeight=this.total*this.buttonHeight;wrapper.setStyles({overflow:'hidden',height:this.stripContainerHeight+'px'});this.container.setStyle('height',this.stripHeight+'px');}
this.titles[0].addClass('active');this.fx=new Fx.Styles(this.container,{duration:this.options.ctrlAnimationDuration,wait:false,transition:this.ctrlTransition});var mmCarousel=this;if(this.options.animationType=='fade'){this.iCarousel=new iCarousel('mmCarousel'+this.moduleId+'-items',{animation:{type:this.options.animationType,duration:this.options.animationDuration,amount:1,transition:this.transition,rotate:{type:this.options.rotateType,interval:this.options.rotateInterval,onMouseOver:this.options.rotateOnMouseOver}},item:{klass:'mmCarousel'+this.moduleId+'-item'},onGoTo:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},onNext:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},onPrevious:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},idPrevious:'mmCarousel'+this.moduleId+'-previous',idNext:'mmCarousel'+this.moduleId+'-next'});}else{this.iCarousel=new iCarousel('mmCarousel'+this.moduleId+'-items',{animation:{type:this.options.animationType,direction:this.options.animationDirection,duration:this.options.animationDuration,amount:1,transition:this.transition,rotate:{type:this.options.rotateType,interval:this.options.rotateInterval,onMouseOver:this.options.rotateOnMouseOver}},item:{klass:'mmCarousel'+this.moduleId+'-item',size:(this.options.animationDirection=='top')?this.options.height:this.options.width},onGoTo:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},onNext:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},onPrevious:function(){mmCarousel.activate(this.aItems.length,this.atScreen);},idPrevious:'mmCarousel'+this.moduleId+'-previous',idNext:'mmCarousel'+this.moduleId+'-next'});}
this.titles.each(function(el,i){el.addEvent('click',function(event){new Event(event).stop();mmCarousel.iCarousel.goTo(i);});}.bind(this));this.initState();},activate:function(aItemsLength,atScreen){var titleIndex;if(this.options.animationType=='fade'){titleIndex=atScreen;}else{titleIndex=-(aItemsLength/3-atScreen);if(titleIndex==(aItemsLength/3))titleIndex=0;}
this.titles.each(function(el){el.removeClass('active');});this.titles[titleIndex].addClass('active');var center,offset,stripPosition,stripCenter;if(this.options.orientation=='horizontal'){if(this.stripWidth>this.stripContainerWidth){var fromLeft=this.options.buttonWidth*titleIndex+(this.options.buttonWidth/2);var fromRight=(this.options.buttonWidth*(this.total-(titleIndex+1)))+(this.options.buttonWidth/2);center=this.stripContainerWidth/2;if(fromLeft<=center){offset=0;}
if(fromLeft>center&&fromRight>=center){stripPosition=(this.options.buttonWidth*titleIndex)+(this.options.buttonWidth/2);stripCenter=this.stripContainerWidth/2;offset=stripPosition-stripCenter;}
if(fromRight<center){offset=(this.options.buttonWidth*this.total)-this.stripContainerWidth;}
this.fx.start({'margin-left':-offset+'px'});}}
if(this.options.orientation=='vertical'){if(this.stripHeight>this.stripContainerHeight){var fromTop=this.buttonHeight*titleIndex+(this.buttonHeight/2);var fromBottom=(this.buttonHeight*(this.total-(titleIndex+1)))+(this.buttonHeight/2);center=this.stripContainerHeight/2;if(fromTop<=center){offset=0;}
if(fromTop>center&&fromBottom>=center){stripPosition=(this.buttonHeight*titleIndex)+(this.buttonHeight/2);stripCenter=this.stripContainerHeight/2;offset=stripPosition-stripCenter;}
if(fromBottom<center){offset=(this.buttonHeight*this.total)-this.stripContainerHeight;}
this.fx.start({'margin-top':-offset+'px'});}}},initState:function(){this.fireEvent("onInitialized",this);},truncate:function(string)
{if(string.length>25){var result=string.split(' ');string='';for(i=0;i<result.length;i++){if((string.length+result[i].length)<25)string=string+' '+result[i];}
string=string+' ...';}
return string;}});mmCarousel.implement(new Events,new Options);
