var gallery=new Moo.Class({initialize:function(_1,_2){this.setOptions({showArrows:true,showCarousel:true,showInfopane:true,thumbHeight:75,thumbWidth:100,thumbSpacing:10,embedLinks:true,fadeDuration:500,timed:false,delay:7000,preloader:true,manualData:[],populateFrom:false,populateData:true,destroyAfterPopulate:true,elementSelector:"div.imageElement",titleSelector:"h3",subtitleSelector:"p",linkSelector:"a.open",imageSelector:"img.full",thumbnailSelector:"img.thumbnail",slideInfoZoneOpacity:1,slideInfoZoneSlide:true,carouselMinimizedOpacity:0.9,carouselMinimizedHeight:20,carouselMaximizedOpacity:0.9,carouselAutohide:true,textShowCarousel:"Pictures",showCarouselLabel:true,useThumbGenerator:false,thumbGenerator:"resizer.php",useExternalCarousel:false,carouselElement:false,activateCarouselScroller:true,baseClass:"jdGallery",withArrowsClass:"withArrows",useHistoryManager:false,customHistoryKey:false},_2);this.fireEvent("onInit");this.currentIter=0;this.lastIter=0;this.maxIter=0;this.galleryElement=_1;this.galleryData=this.options.manualData;this.galleryInit=1;this.galleryElements=Array();this.thumbnailElements=Array();this.galleryElement.addClass(this.options.baseClass);this.populateFrom=_1;if(this.options.populateFrom){this.populateFrom=this.options.populateFrom;}if(this.options.populateData){this.populateData();}_1.style.display="block";if(this.options.useHistoryManager){this.initHistory();}if(this.options.embedLinks){this.currentLink=new Moo.Element("a").addClass("open").setProperties({href:"#",title:""}).injectInside(_1);if((!this.options.showArrows)&&(!this.options.showCarousel)){this.galleryElement=_1=this.currentLink;}else{this.currentLink.setStyle("display","none");}}this.constructElements();if((this.galleryData.length>1)&&(this.options.showArrows)){var _3=new Moo.Element("a").addClass("left").addEvent("click",this.prevItem.bind(this)).injectInside(_1);var _4=new Moo.Element("a").addClass("right").addEvent("click",this.nextItem.bind(this)).injectInside(_1);this.galleryElement.addClass(this.options.withArrowsClass);}this.loadingElement=new Moo.Element("div").addClass("loadingElement").injectInside(_1);if(this.options.showInfopane){this.initInfoSlideshow();}if(this.options.showCarousel){this.initCarousel();}this.doSlideShow(1);},populateData:function(){currentArrayPlace=this.galleryData.length;options=this.options;var _5=this.galleryData;this.populateFrom.getElements(options.elementSelector).each(function(el){elementDict={image:el.getElement(options.imageSelector).getProperty("src"),number:currentArrayPlace};if((options.showInfopane)|(options.showCarousel)){Object.extend(elementDict,{title:el.getElement(options.titleSelector).innerHTML,description:el.getElement(options.subtitleSelector).innerHTML});}if(options.embedLinks){Object.extend(elementDict,{link:el.getElement(options.linkSelector).href||false,linkTitle:el.getElement(options.linkSelector).title||false});}if((!options.useThumbGenerator)&&(options.showCarousel)){Object.extend(elementDict,{thumbnail:el.getElement(options.thumbnailSelector).src});}else{if(options.useThumbGenerator){Object.extend(elementDict,{thumbnail:options.thumbGenerator+"?imgfile="+elementDict.image+"&max_width="+options.thumbWidth+"&max_height="+options.thumbHeight});}}_5[currentArrayPlace]=elementDict;currentArrayPlace++;if(this.options.destroyAfterPopulate){el.remove();}});this.galleryData=_5;this.fireEvent("onPopulated");},constructElements:function(){el=this.galleryElement;this.maxIter=this.galleryData.length;var _7;for(i=0;i<this.galleryData.length;i++){var _7=new Moo.Fx.Style(new Moo.Element("div").addClass("slideElement").setStyles({"position":"absolute","left":"0px","right":"0px","margin":"0px","padding":"0px","backgroundImage":"url('"+this.galleryData[i].image+"')","backgroundPosition":"center center","opacity":"0"}).injectInside(el),"opacity",{duration:this.options.fadeDuration});this.galleryElements[parseInt(i)]=_7;}},destroySlideShow:function(_8){var _9=_8.className;var _a=new Moo.Element("div").addClass("myClassName");_8.parentNode.replaceChild(_a,_8);},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(_b){this.clearTimer();if(this.options.embedLinks){this.clearLink();}if(this.options.showInfopane){this.slideInfoZone.clearChain();this.hideInfoSlideShow().chain(this.changeItem.pass(_b,this));}else{this.changeItem.delay(500,this,_b);}if(this.options.embedLinks){this.makeLink(_b);}this.prepareTimer();},changeItem:function(_c){this.fireEvent("onStartChanging");this.galleryInit=0;if(this.currentIter!=_c){for(i=0;i<this.maxIter;i++){if((i!=this.currentIter)){this.galleryElements[i].set(0);}}if(_c>this.currentIter){this.galleryElements[_c].custom(1);}else{this.galleryElements[_c].set(1);this.galleryElements[this.currentIter].custom(0);}this.currentIter=_c;}this.doSlideShow.bind(this)();this.fireEvent("onChanged");},clearTimer:function(){if(this.options.timed){Moo.$clear(this.timer);}},prepareTimer:function(){if(this.options.timed){this.timer=this.nextItem.delay(this.options.delay,this);}},doSlideShow:function(_d){if(this.galleryInit==1){imgPreloader=new Image();imgPreloader.onload=function(){this.startSlideShow.delay(5,this);}.bind(this);imgPreloader.src=this.galleryData[0].image;}else{if(this.options.showInfopane){if(this.options.showInfopane){this.showInfoSlideShow.delay((500+this.options.fadeDuration),this);}else{if((this.options.showCarousel)&&(this.options.activateCarouselScroller)){this.centerCarouselOn(_d);}}}}},initCarousel:function(){var _e;if(!this.options.useExternalCarousel){var _f=new Moo.Element("div").addClass("carouselContainer").injectInside(this.galleryElement);this.carouselContainer=new Moo.Fx.Styles(_f,{transition:Moo.Fx.Transitions.expoOut});this.carouselContainer.normalHeight=_f.offsetHeight;this.carouselContainer.set({"opacity":this.options.carouselMinimizedOpacity,"top":(this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight)});this.carouselBtn=new Moo.Element("a").addClass("carouselBtn").setProperties({title:this.options.textShowCarousel}).setHTML(this.options.textShowCarousel).injectInside(_f);this.carouselBtn.addEvent("click",function(){this.carouselContainer.clearTimer();this.toggleCarousel();}.bind(this));this.carouselActive=false;_e=new Moo.Element("div").addClass("carousel").injectInside(_f);this.carousel=new Moo.Fx.Styles(_e);}else{_e=this.options.carouselElement.addClass("jdExtCarousel");}if(this.options.showCarouselLabel){this.carouselLabel=new Moo.Element("p").addClass("label").injectInside(_e);}this.carouselWrapper=new Moo.Element("div").addClass("carouselWrapper").injectInside(_e);this.carouselInner=new Moo.Element("div").addClass("carouselInner").injectInside(this.carouselWrapper);if(this.options.activateCarouselScroller){this.carouselWrapper.scroller=new Moo.Scroller(this.carouselWrapper,{area:100,velocity:0.2});this.carouselWrapper.elementScroller=new Moo.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+2))+this.options.thumbSpacing)+"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 _10=new Moo.Fx.Style(new Moo.Element("div").addClass("thumbnail").setStyles({backgroundImage:"url('"+this.galleryData[i].thumbnail+"')",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.2);_10.element.addEvents({"mouseover":function(_11){_11.clearTimer();_11.custom(0.99);if(this.options.showCarouselLabel){Moo.$(this.carouselLabel).setHTML("<span class=\"number\">"+(_11.relatedImage.number+1)+"/"+this.maxIter+":</span> "+_11.relatedImage.title);}}.pass(_10,this),"mouseout":function(_12){_12.clearTimer();_12.custom(0.2);}.pass(_10,this),"click":function(_13){this.goTo(_13.relatedImage.number);if(this.options.carouselAutohide){this.hideCarousel();}}.pass(_10,this)});_10.relatedImage=this.galleryData[i];this.thumbnailElements[parseInt(i)]=_10;}},clearThumbnailsHighlights:function(){for(i=0;i<this.galleryData.length;i++){this.thumbnailElements[i].clearTimer();this.thumbnailElements[i].custom(0.2);}},centerCarouselOn:function(num){var _15=this.thumbnailElements[num];var _16=_15.element.offsetLeft+(_15.element.offsetWidth/2);var _17=this.carouselWrapper.offsetWidth;var _18=this.carouselInner.offsetWidth;var _19=_17/2;var _1a=_16-_19;try{this.carouselWrapper.elementScroller.scrollTo(_1a,0);}catch(e){this.carouselWrapper.elementScroller.scrollTo=(_1a,0);}},initInfoSlideshow:function(){this.slideInfoZone=new Moo.Fx.Styles(new Moo.Element("div").addClass("slideInfoZone").injectInside(Moo.$(this.galleryElement))).set({"opacity":0});var _1b=new Moo.Element("h2").injectInside(this.slideInfoZone.element);var _1c=new Moo.Element("p").injectInside(this.slideInfoZone.element);this.slideInfoZone.normalHeight=this.slideInfoZone.element.offsetHeight;this.slideInfoZone.element.setStyle("opacity",0);},changeInfoSlideShow:function(){this.hideInfoSlideShow.delay(5,this);this.showInfoSlideShow.delay(200,this);},showInfoSlideShow:function(){this.fireEvent("onShowInfopane");this.slideInfoZone.clearTimer();element=this.slideInfoZone.element;element.getElement("h2").setHTML(this.galleryData[this.currentIter].title);element.getElement("p").setHTML(this.galleryData[this.currentIter].description);if(this.options.slideInfoZoneSlide){this.slideInfoZone.custom({"opacity":[0,this.options.slideInfoZoneOpacity],"height":[0,this.slideInfoZone.normalHeight]});}else{this.slideInfoZone.custom({"opacity":[0,this.options.slideInfoZoneOpacity]});}if(this.options.showCarousel){this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter,this));}return this.slideInfoZone;},hideInfoSlideShow:function(){this.fireEvent("onHideInfopane");this.slideInfoZone.clearTimer();if(this.options.slideInfoZoneSlide){this.slideInfoZone.custom({"opacity":0,"height":0});}else{this.slideInfoZone.custom({"opacity":0});}return this.slideInfoZone;},makeLink:function(num){this.currentLink.setProperties({href:this.galleryData[num].link,title:this.galleryData[num].linkTitle});if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel))){this.currentLink.setStyle("display","block");}},clearLink:function(){this.currentLink.setProperties({href:"",title:""});if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel))){this.currentLink.setStyle("display","none");}},initHistory:function(){this.historyKey=this.galleryElement.id+"-picture";if(this.options.customHistoryKey){this.historyKey=this.options.customHistoryKey();}this.history=HistoryManager.register(this.historyKey,[1],function(_1e){if(parseInt(_1e[0])-1<this.maxIter){this.goTo(parseInt(_1e[0])-1);}}.bind(this),function(_1f){return [this.historyKey,"(",_1f[0],")"].join("");}.bind(this),this.historyKey+"\\((\\d+)\\)");this.addEvent("onChanged",function(){this.history.setValue(0,this.currentIter+1);}.bind(this));}});gallery.implement(new Moo.Events);gallery.implement(new Moo.Options);
