/**
 *    SlideItMoo v1.1 - Image slider
 *    (c) 2007-2010 Constantin Boiangiu <http://www.php-help.ro>
 *    MIT-style license.
 **/
var SlideItMoo=new Class({Implements:[Events,Options],options:{overallContainer:null,elementScrolled:null,thumbsContainer:null,itemsSelector:null,itemsVisible:5,elemsSlide:null,itemWidth:null,itemHeight:null,navs:{fwd:".slider-fwd",bk:".slider-bk"},slideVertical:false,showControls:1,transition:Fx.Transitions.linear,duration:800,direction:1,autoSlide:false,mouseWheelNav:false,startIndex:null},initialize:function(a){this.setOptions(a);this.elements=$(this.options.thumbsContainer).getElements(this.options.itemsSelector);this.totalElements=this.elements.length;if(this.totalElements<=this.options.itemsVisible){$$(this.options.navs.fwd).setStyle("display","none");$$(this.options.navs.bk).setStyle("display","none");return}var b=this.elements[0].getSize();this.elementWidth=this.options.itemWidth||b.x;this.elementHeight=this.options.itemHeight||b.y;this.currentElement=0;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.setContainersSize();this.myFx=new Fx.Tween(this.options.thumbsContainer,{property:this.options.slideVertical?"margin-top":"margin-left",wait:true,transition:this.options.transition,duration:this.options.duration});if(this.options.mouseWheelNav&&!this.options.autoSlide){$(this.options.thumbsContainer).addEvent("mousewheel",function(a){(new Event(a)).stop();this.slide(-a.wheel)}.bind(this))}if(this.options.startIndex&&this.options.startIndex>0&&this.options.startIndex<this.elements.length){for(var a=1;a<this.options.startIndex;a++){this.rearange()}}if(this.options.autoSlide&&this.elements.length>this.options.itemsVisible){this.startAutoSlide()}},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()},setContainersSize:function(){var a={};var b={};var c={};if(this.options.slideVertical){b.height=this.options.itemsVisible*this.elementHeight;c.height=this.totalElements*(this.elementHeight+10)}else{var d=0;if(this.options.showControls){var e=this.fwd.getSize();var f=this.bkwd.getSize();d=e.x+f.x}a.width=this.options.itemsVisible*this.elementWidth+d;b.width=this.options.itemsVisible*this.elementWidth;c.width=this.totalElements*(this.elementWidth+10)}$(this.options.overallContainer).set({styles:a});$(this.options.elementScrolled).set({styles:b});$(this.options.thumbsContainer).set({styles:c})},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);if(this.fwd){this.fwd.addEvent("click",this.slide.pass(1,this))}if(this.bkwd){this.bkwd.addEvent("click",this.slide.pass(-1,this))}},slide:function(a){if(this.started){return}this.direction=a?a:this.direction;var b=this.currentIndex();if(this.options.elemsSlide&&this.options.elemsSlide>1&&this.endingElem==null){this.endingElem=this.currentElement;for(var c=0;c<this.options.elemsSlide;c++){this.endingElem+=a;if(this.endingElem>=this.totalElements){this.endingElem=0}if(this.endingElem<0){this.endingElem=this.totalElements-1}}}var d=new Hash;var e=0;if(this.options.slideVertical){d.include("margin-top",-this.elementHeight);e=this.direction==1?-this.elementHeight:0}else{d.include("margin-left",-this.elementWidth);e=this.direction==1?-this.elementWidth:0}if(this.direction==-1){this.rearange();$(this.options.thumbsContainer).setStyles(d)}this.started=true;this.myFx.start(e).chain(function(){this.rearange(true);if(this.options.elemsSlide){if(this.endingElem!==this.currentElement){if(this.options.autoSlide){this.stopAutoSlide()}this.slide(this.direction)}else{if(this.options.autoSlide){this.startAutoSlide()}this.endingElem=null}}}.bind(this));this.fireEvent("onChange",b)},rearange:function(a){if(a){this.started=false}if(a&&this.direction==-1){return}this.currentElement=this.currentIndex(this.direction);var b=new Hash;if(this.options.slideVertical){b.include("margin-top",0)}else{b.include("margin-left",0)}$(this.options.thumbsContainer).setStyles(b);if(this.currentElement==1&&this.direction==1){this.elements[0].injectAfter(this.elements[this.totalElements-1]);return}if(this.currentElement==0&&this.direction==1||this.direction==-1&&this.currentElement==this.totalElements-1){this.rearrangeElement(this.elements.getLast(),this.direction==1?this.elements[this.totalElements-2]:this.elements[0]);return}if(this.direction==1){this.rearrangeElement(this.elements[this.currentElement-1],this.elements[this.currentElement-2])}else{this.rearrangeElement(this.elements[this.currentElement],this.elements[this.currentElement+1])}},rearrangeElement:function(a,b){this.direction==1?a.injectAfter(b):a.injectBefore(b)},currentIndex:function(){var a=null;switch(this.direction){case 1:a=this.currentElement>=this.totalElements-1?0:this.currentElement+this.direction;break;case-1:a=this.currentElement==0?this.totalElements-1:this.currentElement+this.direction;break}return a},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}})
