dojo.require("dojo.fx");dojo.require("dojo.fx.easing");var ThumbCarouselFactory=(function(){var createdThumbCarousels={};return{createThumbCarousel:function(id,thumbs_per_page,duration_milli,easing_style){if(createdThumbCarousels[id]){return createdThumbCarousels[id]}else{var caros=new ThumbCarousel(id,thumbs_per_page,duration_milli,easing_style);createdThumbCarousels[id]=caros;return caros}}}})();var ThumbCarousel=function(carousel_wrapper,thumbs_per_page,duration_milli,easing_style){this.shown=3;if(thumbs_per_page){this.shown=thumbs_per_page}this.animProps={duration:550};if(duration_milli){this.animProps=duration_milli}this.easingStyle="backOut";if(easing_style){this.easingStyle=easing_style}this.wrapper=dojo.byId(carousel_wrapper);this.animG,this.offsetW,this.offsetH=null;this.animationMethod="chain";this.newLeft=0;this.newPage=0;this.pagePos=1;this.thumbs=dojo.query(".carousel-thumbs > li",this.wrapper).length;this.extra=this.thumbs%this.shown;this.pages=(this.thumbs-this.extra)/this.shown;this.actualPages=Math.ceil(this.pages+(this.extra/this.shown));this.prev=dojo.query(".carousel-prev",this.wrapper)[0];this.next=dojo.query(".carousel-next",this.wrapper)[0];this.carouselView=dojo.query(".carousel-view",this.wrapper)[0];this.carouselThumbs=dojo.query(".carousel-thumbs",this.wrapper)[0];this.thumbWidth=dojo.marginBox(dojo.query(".carousel-thumbs > li",this.wrapper)[0]).w;this.carouselViewWidth=this.shown*this.thumbWidth;this.carouselThumbsWidth=this.thumbs*this.thumbWidth;this.paginationItems=dojo.query(".carousel-page > li",this.wrapper);dojo.style(this.carouselThumbs,"width",this.carouselThumbsWidth+"px");dojo.style(this.carouselView,"width",this.carouselViewWidth+"px");dojo.style(this.wrapper,"width",this.carouselViewWidth+"px");dojo.connect(this.prev,"onmouseover",this.prev,this.reflectNavigationHover);dojo.connect(this.prev,"onmouseout",this.prev,this.reflectNavigationHover);dojo.connect(this.next,"onmouseover",this.next,this.reflectNavigationHover);dojo.connect(this.next,"onmouseout",this.next,this.reflectNavigationHover);dojo.connect(this.prev,"onclick",this,this.moveLeft);dojo.connect(this.next,"onclick",this,this.moveRight);this.paginationItems.forEach(function(item,index,array){dojo.connect(item,"onmouseout",item,this.reflectPaginationHover)},this).forEach(function(item,index,array){dojo.connect(item,"onmouseover",item,this.reflectPaginationHover)},this);this.paginationItems.forEach(function(item,index,array){dojo.connect(item,"onclick",this,this.movePage)},this)};ThumbCarousel.prototype={moveRight:function(){cViewWidth=this.carouselView.offsetWidth;cThumbsWidth=this.carouselThumbs.offsetWidth;var difference=cViewWidth-cThumbsWidth;if(this.newLeft>difference){this.pagePos++;if(this.pagePos>this.pages){this.newLeft=this.newLeft-(this.extra*this.thumbWidth)}else{this.newLeft=this.newLeft-this.carouselViewWidth}var style=this.carouselThumbs.style;var anim1=dojo.animateProperty({node:this.carouselThumbs,duration:this.animProps.duration,easing:dojo.fx.easing[this.easingStyle],properties:{left:{end:this.newLeft,unit:"px"}}});this.animG=dojo.fx[this.animationMethod]([anim1]).play();this.reflectPaginationClick();this.reflectNavigationClick()}},moveLeft:function(){if(this.newLeft<0){if(this.pagePos>this.pages){this.newLeft=this.newLeft+(this.extra*this.thumbWidth)}else{this.newLeft=this.newLeft+this.carouselViewWidth}this.pagePos--;var style=this.carouselThumbs.style;var anim1=dojo.animateProperty({node:this.carouselThumbs,duration:this.animProps.duration,easing:dojo.fx.easing[this.easingStyle],properties:{left:{end:this.newLeft,unit:"px"}}});this.animG=dojo.fx[this.animationMethod]([anim1]).play();this.reflectPaginationClick();this.reflectNavigationClick()}},movePage:function(event){dojo.forEach(event.target.className.split(" "),function(item,index,array){if(item.indexOf("page-")>-1){this.newPage=parseInt(item.substr(item.indexOf("page")+5));return }},this);if(this.newPage<=this.actualPages){if(this.pagePos<this.newPage){while(this.pagePos<this.newPage){this.moveRight()}}else{if(this.pagePos>this.newPage){while(this.pagePos>this.newPage){this.moveLeft()}}}this.reflectPaginationClick();this.reflectNavigationClick()}},reflectNavigationClick:function(){if(this.pagePos>=(this.pages+(this.extra/this.shown))){dojo.query("span",this.next).addClass("disabled")}else{dojo.query("span",this.next).removeClass("disabled")}if(this.pagePos==1){dojo.query("span",this.prev).addClass("disabled")}else{dojo.query("span",this.prev).removeClass("disabled").addClass("enabled")}},reflectPaginationClick:function(){dojo.query("ol > li > span.enabled",this.wrapper).removeClass("enabled").addClass("disabled");dojo.query("ol > li:nth-child("+this.pagePos+") > span.disabled",this.wrapper).removeClass("disabled").addClass("enabled")},reflectNavigationHover:function(event){dojo.query(".enabled",this).toggleClass("hover")},reflectPaginationHover:function(event){dojo.query("span",this).toggleClass("hover")}}