/**SlideItMoo v1.1 - Image slider(c) 2007-2008 Constantin Boiangiu <http://www.php-help.ro> MIT-style license.	**/
var SlideItMoo = new Class({Implements: [Options], options: {overallContainer: null, elementScrolled: null,	thumbsContainer: null, itemsVisible:5, elemsSlide: null, itemsSelector: null, itemWidth: null, showControls:1, transition: Fx.Transitions.linear, duration: 800, direction: 1, autoSlide: false, mouseWheelNav: false}, initialize: function(options){this.setOptions(options);	this.elements = $(this.options.thumbsContainer).getElements(this.options.itemsSelector);this.totalElements = this.elements.length;if( this.totalElements <= this.options.itemsVisible ) return; this.elementWidth = this.options.itemWidth || this.elements[0].getSize().x; this.currentElement = 0; this.direction = this.options.direction; this.autoSlideTotal = this.options.autoSlide + this.options.duration; this.begin();},	begin: function(){this.setContainersSize();	this.myFx = new Fx.Morph(this.options.thumbsContainer, {wait: true, transition: this.options.transition, duration: this.options.duration});	this.addControls();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.startAutoSlide();},setContainersSize: function(){$(this.options.overallContainer).set({styles:{'width': this.options.itemsVisible * this.elementWidth + 50 * this.options.showControls}}); $(this.options.elementScrolled).set({styles:{'width': this.options.itemsVisible * this.elementWidth}});	$(this.options.thumbsContainer).set({styles:{'width': this.totalElements * (this.elementWidth + 10)}});}, addControls: function(){if( !this.options.showControls ) return; this.fwd = new Element('div', {'class': 'SlideItMoo_forward', 'events':{'click':this.slide.pass(1, this)}}); this.bkwd = new Element('div', {'class': 'SlideItMoo_back','events':{'click': this.slide.pass(-1, this)}}); $(this.options.overallContainer).adopt(this.fwd, this.bkwd);}, slide: function( direction ){if(this.started) return; this.direction = direction; var currentIndex = this.currentIndex(); if( this.options.elemsSlide && this.options.elemsSlide>1 && this.endingElem==null ){this.endingElem = this.currentElement; for(var i = 0; i < this.options.elemsSlide; i++ ){this.endingElem += direction;if( this.endingElem >= this.totalElements ) this.endingElem = 0;if( this.endingElem < 0 ) this.endingElem = this.totalElements-1;}} if( this.direction == -1 ){this.rearange();$(this.options.thumbsContainer).setStyle('margin-left', -this.elementWidth);} this.started = true; this.myFx.start({'margin-left': this.direction == 1 ? -this.elementWidth : 0 }).chain( function(){this.rearange(true); if(this.options.elemsSlide){if( this.endingElem !== this.currentElement ) this.slide(this.direction); else this.endingElem=null; }}.bind(this));}, rearange: function( rerun ){if(rerun) this.started = false;	if( rerun && this.direction == -1 ) { return; }this.currentElement = this.currentIndex( this.direction ); $(this.options.thumbsContainer).setStyle('margin-left',0); 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( element , indicator ){this.direction == 1 ? element.injectAfter(indicator) : element.injectBefore(indicator);}, currentIndex: function(){ var elemIndex = null;	switch( this.direction ){case 1: elemIndex = this.currentElement >= this.totalElements-1 ? 0 : this.currentElement + this.direction; break;	case -1: elemIndex = this.currentElement == 0 ? this.totalElements - 1 : this.currentElement + 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.elements.addEvents({'mouseover':function(){$clear(this.autoSlide);}.bind(this),'mouseout':function(){this.autoSlide = this.startIt.periodical(this.autoSlideTotal, this);}.bind(this)})}})
