/**
	Showcase v1.0
	@uses: MooTools 1.1 
	@author: Constantin Boiangiu ( constantin.b[at]gmail.com )
	@Copyright : Youjoomla LLC
**/
var Showcase=new Class({initialize:function(a){this.options=Object.extend({overallContainer:null,elementScrolled:null,thumbsContainer:null,itemsVisible:5,elemsSlide:null,itemsSelector:null,itemWidth:null,duration:800,direction:1,autoSlide:false,navigationContainer:null,navigationElem:null},a||{});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;if(this.options.elemsSlide==1){this.options.elemsSlide=null}this.begin()},begin:function(){this.setContainersSize();this.myFx=new Fx.Styles(this.options.thumbsContainer,{wait:false,transition:Fx.Transitions.linear,duration:this.options.duration});if(this.options.autoSlide){this.startAutoSlide()}this.navs=$(this.options.navigationContainer).getElements(this.options.navigationElem);this.navs.each(function(b,a){if(a==this.currentElement){b.addClass("selected")}b.addEvent("click",function(c){new Event(c).stop();if(this.endingElem){return}if(this.options.autoSlide){$clear(this.autoSlide);this.autoSlide=this.startIt.periodical(this.autoSlideTotal,this)}if(a==this.currentElement){return}var d=a<this.currentElement?-1:1;this.direction=d;this.options.elemsSlide=(a-this.currentElement)*d;this.slide(d)}.bind(this))}.bind(this))},setContainersSize:function(){$(this.options.overallContainer).set({styles:{width:this.options.itemsVisible*this.elementWidth}});$(this.options.elementScrolled).set({styles:{width:this.options.itemsVisible*this.elementWidth}});$(this.options.thumbsContainer).set({styles:{width:this.totalElements*(this.elementWidth+10)}})},slide:function(c){if(this.started){return}this.direction=c;var a=this.currentIndex();if(this.options.elemsSlide&&this.options.elemsSlide>=1&&this.endingElem==null){this.endingElem=this.currentElement;for(var b=0;b<this.options.elemsSlide;b++){this.endingElem+=c;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}}this.highlightNavs();this.options.elemsSlide=1}.bind(this))},rearange:function(a){if(a){this.started=false}if(a&&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(b,a){this.direction==1?b.injectAfter(a):b.injectBefore(a)},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.elements.addEvents({mouseover:function(){$clear(this.autoSlide)}.bind(this),mouseout:function(){this.autoSlide=this.startIt.periodical(this.autoSlideTotal,this)}.bind(this)})},highlightNavs:function(){this.navs.removeClass("selected");this.navs[this.currentElement].addClass("selected")}});