/**
 * FadeItMoo v0.1 - Image fader
 * Based on SlideItMo v1.1
 *
 * SlideItMoo v1.1 - Image slider
 * (c) 2007-2010 Constantin Boiangiu <http://www.php-help.ro>
 * MIT-style license.
 **/

var FadeItMoo=new Class({Implements:[Events,Options],options:{overallContainer:null,elementScrolled:null,thumbsContainer:null,itemsSelector:null,itemsVisible:1,elemsSlide:null,itemWidth:null,itemHeight:null,navs:{fwd:'.fadeit-forward',bk:'.fadeit-back'},showControls:1,transition:Fx.Transitions.linear,duration:800,direction:1,autoSlide:false,mouseWheelNav:false,startIndex:null},initialize:function(options){this.setOptions(options);this.elements=$(this.options.thumbsContainer).getElements(this.options.itemsSelector);this.totalElements=this.elements.length;this.currentIndex=0;if(this.totalElements<=this.options.itemsVisible)return;var defaultSize=this.elements[0].getSize();this.elementWidth=this.options.itemWidth||defaultSize.x;this.elementHeight=this.options.itemHeight||defaultSize.y;this.sliding=false;this.direction=this.options.direction;this.autoSlideTotal=this.options.autoSlide+this.options.duration;if(this.options.elemsSlide==1)this.options.elemsSlide=null;this.begin();},begin:function(){this.addControls();this.setElementSize();this.elements.setStyle('zIndex',1);this.nextElement=this.elements[this.currentIndex];this.nextElement.setStyle('zIndex',100);if(this.options.mouseWheelNav&&!this.options.autoSlide){$(this.options.thumbsContainer).addEvent('mousewheel',function(ev){new Event(ev).stop();this.slide(-ev.wheel);}.bind(this));}if(this.options.autoSlide&&this.elements.length>this.options.itemsVisible)this.startAutoSlide();},setElementSize:function(){var container=$(this.options.thumbsContainer);container.setStyles({height:this.elementHeight,width:this.elementWidth,position:'relative'});this.elements.setStyles({position:'absolute',left:0,top:0});},resetAll:function(){$(this.options.overallContainer).removeProperty('style');$(this.options.elementScrolled).removeProperty('style');$(this.options.thumbsContainer).removeProperty('style');this.stopAutoSlide();if($defined(this.fwd)){this.fwd.dispose();this.bkwd.dispose();}this.initialize();},addControls:function(){if(!this.options.showControls||this.elements.length<=this.options.itemsVisible)return;this.fwd=$(this.options.overallContainer).getElement(this.options.navs.fwd);this.bkwd=$(this.options.overallContainer).getElement(this.options.navs.bk);this.fwd&&this.fwd.addEvent('click',this.slide.pass(1,this));this.bkwd&&this.bkwd.addEvent('click',this.slide.pass(-1,this));},slide:function(direction){if(this.sliding)return;this.sliding=true;this.direction=direction||this.direction;this.currentIndex=this.nextIndex();this.lastElement=this.nextElement;this.nextElement=this.elements[this.currentIndex];this.elements.setStyles({zIndex:100});this.lastElement&&this.lastElement.setStyles({opacity:1,zIndex:101});this.nextElement.setStyles({opacity:0,zIndex:102});this.fx=new Fx.Tween(this.nextElement,{property:'opacity',wait:true,transition:this.options.transition,duration:this.options.duration});this.fx.start(1).chain((function(){this.sliding=false;}).bind(this));this.fireEvent('onChange',this.currentIndex);},nextIndex:function(){var elemIndex=null;switch(this.direction){case 1:elemIndex=this.currentIndex>=this.totalElements-1?0:this.currentIndex+this.direction;break;case-1:elemIndex=this.currentIndex==0?this.totalElements-1:this.currentIndex+this.direction;break;}return elemIndex;},startAutoSlide:function(){this.startIt=this.slide.bind(this).pass(this.direction||1);this.autoSlide=this.startIt.periodical(this.autoSlideTotal,this);this.isRunning=true;this.elements.addEvents({'mouseenter':function(){$clear(this.autoSlide);this.isRunning=false;}.bind(this),'mouseleave':function(){this.autoSlide=this.startIt.periodical(this.autoSlideTotal,this);this.isRunning=true;}.bind(this)})},stopAutoSlide:function(){$clear(this.autoSlide);this.isRunning=false;}})
