var $removeEvents=function(A,C){if(!A.events){return A}if(C){if(!A.events[C]){return A}for(var B in A.events[C]){A.removeEvent(C,B)}A.events[C]=null}else{for(var D in A.events){A.removeEvents(D)}A.events=null}return A};var gallery=new Class({initialize:function(C,D,B){this.setOptions({showArrows:true,showCarousel:true,showInfopane:true,thumbHeight:140,thumbWidth:220,thumbSpacing:10,embedLinks:true,fadeDuration:1800,timed:false,delay:8000,preloader:false,slideInfoZoneOpacity:0.9,carouselMinimizedOpacity:0.9,carouselMinimizedHeight:20,carouselMaximizedOpacity:0.9,baseClass:"jdGallery",withArrowsClass:"withArrows",textShowCarousel:"Close",useThumbGenerator:false,thumbGenerator:"resizer.php",loadingImageUrl:"http://www.zipcodezoo.com/gallery/css/img/loading.gif"},B);this.preloadQueue=new ImagePreloadQueue();this.thumbPreloadArray=new Array();this.imagePreloadArray=new Array();this.fireEvent("onInit");this.currentIter=0;this.lastIter=0;this.maxIter=0;this.galleryElement=C;this.galleryData=D;this.galleryInit=1;this.galleryElements=Array();this.thumbnailElements=Array();this.galleryElement.addClass(this.options.baseClass);C.style.display="block";if(this.options.embedLinks){this.currentLink=new Element("a").addClass("open").setProperties({href:"#",title:"",rel:""}).injectInside(C);if((!this.options.showArrows)&&(!this.options.showCarousel)){this.galleryElement=C=this.currentLink}else{this.currentLink.setStyle("display","none")}}this.constructElements();var E=new Element("a").addClass("left").addEvent("click",this.prevItem.bind(this)).addEvent("click",function(F){decoGreyboxLinks()}).injectInside(C);var A=new Element("a").addClass("right").addEvent("click",this.nextItem.bind(this)).addEvent("click",function(F){decoGreyboxLinks()}).injectInside(C);this.galleryElement.addClass(this.options.withArrowsClass);this.loadingElement=new Element("div").addClass("loadingElement").injectInside(C);if(this.options.showInfopane){this.initInfoSlideshow()}if(this.options.showCarousel){this.initCarousel()}this.preloadQueue.addArrayToBack(this.thumbPreloadArray);if(this.options.preloader){this.preloadQueue.addArrayToBack(this.imagePreloadArray)}this.preloadQueue.addToFront(this.imagePreloadArray[0]);this.doSlideShow(1)},constructElements:function(){el=this.galleryElement;this.maxIter=this.galleryData.length;var A;for(i=0;i<this.galleryData.length;i++){var B=new Element("div");var A=new Fx.Style(B.addClass("slideElement").setStyles({position:"absolute",left:"0px",right:"0px",margin:"0px",padding:"0px",backgroundImage:"url('"+this.options.loadingImageUrl+"')",backgroundPosition:"center center",opacity:"0"}).injectInside(el),"opacity",{duration:this.options.fadeDuration});this.imagePreloadArray[i]=this.preloadQueue.backgroundReplacer(B,this.galleryData[i].image);this.galleryElements[parseInt(i)]=A}},destroySlideShow:function(A){var B=A.className;var C=new Element("div").addClass("myClassName");A.parentNode.replaceChild(C,A)},startSlideShow:function(){this.fireEvent("onStart");this.loadingElement.style.display="none";this.lastIter=this.maxIter-1;this.currentIter=0;this.galleryInit=0;this.galleryElements[parseInt(this.currentIter)].set(1);if(this.options.showInfopane){this.showInfoSlideShow.delay(1000,this)}this.prepareTimer();if(this.options.embedLinks){this.makeLink(this.currentIter)}},nextItem:function(){this.fireEvent("onNextCalled");this.nextIter=this.currentIter+1;if(this.nextIter>=this.maxIter){this.nextIter=0}this.galleryInit=0;this.goTo(this.nextIter)},prevItem:function(){this.fireEvent("onPreviousCalled");this.nextIter=this.currentIter-1;if(this.nextIter<=-1){this.nextIter=this.maxIter-1}this.galleryInit=0;this.goTo(this.nextIter)},goTo:function(A){this.clearTimer();if(this.options.embedLinks){this.clearLink()}if(this.options.showInfopane){this.slideInfoZone.clearChain();this.hideInfoSlideShow().chain(this.changeItem.pass(A,this))}else{this.changeItem.delay(500,this,A)}if(this.options.embedLinks){this.makeLink(A)}this.prepareTimer()},changeItem:function(A){this.fireEvent("onStartChanging");this.galleryInit=0;if(this.currentIter!=A){this.preloadQueue.addToFront(this.imagePreloadArray[A]);for(i=0;i<this.maxIter;i++){if((i!=this.currentIter)){this.galleryElements[i].set(0)}}if(A>this.currentIter){this.galleryElements[A].custom(1)}else{this.galleryElements[A].set(1);this.galleryElements[this.currentIter].custom(0)}this.currentIter=A}this.doSlideShow.bind(this)();this.fireEvent("onChanged");decoGreyboxLinks()},clearTimer:function(){if(this.options.timed){$clear(this.timer)}},prepareTimer:function(){if(this.options.timed){this.timer=this.nextItem.delay(this.options.delay,this)}},doSlideShow:function(A){if(this.galleryInit==1){this.startSlideShow()}else{if(this.options.showInfopane){if(this.options.showInfopane){this.showInfoSlideShow.delay((500+this.options.fadeDuration),this)}else{if(this.options.showCarousel){this.centerCarouselOn(A)}}}}},initCarousel:function(){var B=new Element("div").addClass("carouselContainer").injectInside($("myCarousel"));this.carouselContainer=new Fx.Styles(B,{transition:Fx.Transitions.expoOut});this.carouselContainer.normalHeight=B.offsetHeight;this.carouselContainer.set({opacity:this.options.carouselMinimizedOpacity,top:(this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight)});this.carouselBtn=new Element("a").addClass("carouselBtn").setProperties({title:this.options.textShowCarousel});this.carouselBtn.addEvent("click",function(){this.carouselContainer.clearTimer();this.toggleCarousel()}.bind(this));this.carouselActive=false;var A=new Element("div").addClass("carousel").injectInside(B);this.carousel=new Fx.Styles(A);this.carouselLabel=new Element("p").addClass("label").injectInside(this.carousel.element);this.carouselInfo=new Element("p").addClass("picinfo").injectInside(this.carousel.element).setHTML("<< place your mouse pointer to left or right of thumbnails to scroll. Click on the center of the large image for advanced or zoom view >>");this.carouselWrapper=new Element("div").addClass("carouselWrapper").injectInside(this.carousel.element);this.carouselInner=new Element("div").addClass("carouselInner").injectInside(this.carouselWrapper);this.carouselWrapper.scroller=new Scroller(this.carouselWrapper,{area:100,velocity:0.2});this.carouselWrapper.elementScroller=new Fx.Scroll(this.carouselWrapper,{duration:400,onStart:this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller),onComplete:this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller)});this.constructThumbnails();this.carouselInner.style.width=((this.maxIter*(this.options.thumbWidth+this.options.thumbSpacing))-this.options.thumbSpacing+this.options.thumbWidth)+"px"},toggleCarousel:function(){if(this.carouselActive){this.hideCarousel()}else{this.showCarousel()}},showCarousel:function(){this.fireEvent("onShowCarousel");this.carouselContainer.custom({opacity:this.options.carouselMaximizedOpacity,top:0}).addEvent("onComplete",function(){this.carouselActive=true;this.carouselWrapper.scroller.start()}.bind(this))},hideCarousel:function(){this.fireEvent("onHideCarousel");this.carouselContainer.custom({opacity:this.options.carouselMinimizedOpacity,top:(this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight)}).addEvent("onComplete",function(){this.carouselActive=false;this.carouselWrapper.scroller.stop()}.bind(this))},constructThumbnails:function(){element=this.carouselInner;for(i=0;i<this.galleryData.length;i++){var A=new Element("div");var B=new Fx.Style(A.addClass("thumbnail").setStyles({backgroundImage:"url('"+this.options.loadingImageUrl+"')",backgroundPosition:"center center",backgroundRepeat:"no-repeat",marginLeft:this.options.thumbSpacing+"px",width:this.options.thumbWidth+"px",height:this.options.thumbHeight+"px"}).injectInside(element),"opacity",{duration:200}).set(0.7);this.thumbPreloadArray[i]=this.preloadQueue.backgroundReplacer(A,this.galleryData[i].thumbnail);B.element.addEvents({mouseover:function(C){C.clearTimer();C.custom(0.99);$(this.carouselLabel).setHTML('<span class="number">'+(C.relatedImage.number+1)+"/"+this.maxIter+":</span> "+C.relatedImage.title)}.pass(B,this),mouseout:function(C){C.clearTimer();C.custom(0.7)}.pass(B,this),click:function(C){this.goTo(C.relatedImage.number);decoGreyboxLinks()}.pass(B,this)});B.relatedImage=this.galleryData[i];this.thumbnailElements[parseInt(i)]=B}},clearThumbnailsHighlights:function(){for(i=0;i<this.galleryData.length;i++){this.thumbnailElements[i].clearTimer();this.thumbnailElements[i].custom(0.2)}},centerCarouselOn:function(D){var F=this.thumbnailElements[D];var A=F.element.offsetLeft+(F.element.offsetWidth/2);var E=this.carouselWrapper.offsetWidth;var B=this.carouselInner.offsetWidth;var C=E/2;var G=A-C;this.carouselWrapper.elementScroller.scrollTo(G,0)},initInfoSlideshow:function(){this.slideInfoZone=new Fx.Styles(new Element("div").addClass("mySlideInfoZone").injectInside($("myInfoContainer"))).set({opacity:0});var B=new Element("h4").injectInside(this.slideInfoZone.element);var A=new Element("p").injectInside(this.slideInfoZone.element);this.slideInfoZone.normalHeight=this.slideInfoZone.element.offsetHeight;this.slideInfoZone.element.setStyle("opacity",0)},changeInfoSlideShow:function(){this.hideInfoSlideShow.delay(10,this);this.showInfoSlideShow.delay(500,this)},showInfoSlideShow:function(){this.fireEvent("onShowInfopane");this.slideInfoZone.clearTimer();element=this.slideInfoZone.element;element.getElement("h4").setHTML(this.galleryData[this.currentIter].title);element.getElement("p").setHTML(this.galleryData[this.currentIter].description);this.slideInfoZone.custom({opacity:[0,this.options.slideInfoZoneOpacity],height:[0,this.slideInfoZone.normalHeight]});if(this.options.showCarousel){this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter,this))}return this.slideInfoZone},hideInfoSlideShow:function(){this.fireEvent("onHideInfopane");this.slideInfoZone.clearTimer();this.slideInfoZone.custom({opacity:0,height:0});return this.slideInfoZone},makeLink:function(A){this.currentLink.setProperties({href:this.galleryData[A].link,title:this.galleryData[A].linkTitle,rel:this.galleryData[A].rel});if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel))){this.currentLink.setStyle("display","block")}decoGreyboxLinks()},clearLink:function(){this.currentLink.setProperties({href:"",title:"",rel:""});if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel))){this.currentLink.setStyle("display","none")}}});gallery.implement(new Events);gallery.implement(new Options);