function isBody(a){return/^(?:body|html)$/i.test(a.tagName)}Element.implement({getPosition:function(a){if(isBody(this))return{x:0,y:0};for(var b=this,c=0,d=0;b;)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;a=a?$(a).getPosition():{x:0,y:0};return{x:c-a.x,y:d-a.y}}});
var gallery={Implements:[Events,Options],options:{showArrows:!0,showCarousel:!0,showInfopane:!0,embedLinks:!0,fadeDuration:500,timed:!1,delay:9E3,preloader:!0,preloaderImage:!0,preloaderErrorImage:!0,manualData:[],populateFrom:!1,populateData:!0,destroyAfterPopulate:!0,elementSelector:"div.imageElement",titleSelector:"h3",subtitleSelector:"p",linkSelector:"a.open",imageSelector:"img.full",thumbnailSelector:"img.thumbnail",defaultTransition:"fade",slideInfoZoneOpacity:0.7,slideInfoZoneSlide:!0,carouselMinimizedOpacity:0.4,
carouselMinimizedHeight:20,carouselMaximizedOpacity:0.9,thumbHeight:75,thumbWidth:100,thumbSpacing:10,thumbIdleOpacity:0.2,textShowCarousel:"Pictures",showCarouselLabel:!0,thumbCloseCarousel:!0,useThumbGenerator:!1,thumbGenerator:"resizer.php",useExternalCarousel:!1,carouselElement:!1,carouselHorizontal:!0,activateCarouselScroller:!0,carouselPreloader:!0,textPreloadingCarousel:"Loading...",baseClass:"jdGallery",withArrowsClass:"withArrows",useHistoryManager:!1,customHistoryKey:!1,useReMooz:!1},initialize:function(a,
b){this.setOptions(b);this.fireEvent("onInit");this.maxIter=this.lastIter=this.currentIter=0;this.galleryElement=a;this.galleryData=this.options.manualData;this.galleryInit=1;this.galleryElements=[];this.thumbnailElements=[];this.galleryElement.addClass(this.options.baseClass);if(this.options.useReMooz&&"fade"==this.options.defaultTransition)this.options.defaultTransition="crossfade";this.populateFrom=a;if(this.options.populateFrom)this.populateFrom=this.options.populateFrom;this.options.populateData&&
this.populateData();a.style.display="block";this.options.useHistoryManager&&this.initHistory();if(this.options.embedLinks|this.options.useReMooz)this.currentLink=(new Element("a")).addClass("open").setProperties({href:"#",title:""}).injectInside(a),!this.options.showArrows&&!this.options.showCarousel?this.galleryElement=a=this.currentLink:this.currentLink.setStyle("display","none");this.constructElements();1<this.galleryData.length&&this.options.showArrows&&((new Element("a")).addClass("left").addEvent("click",
this.prevItem.bind(this)).injectInside(a),(new Element("a")).addClass("right").addEvent("click",this.nextItem.bind(this)).injectInside(a),this.galleryElement.addClass(this.options.withArrowsClass));this.loadingElement=(new Element("div")).addClass("loadingElement").injectInside(a);this.options.showInfopane&&this.initInfoSlideshow();this.options.showCarousel&&this.initCarousel();this.doSlideShow(1)},populateData:function(){currentArrayPlace=this.galleryData.length;options=this.options;var a=$A(this.galleryData);
a.extend(this.populateGallery(this.populateFrom,currentArrayPlace));this.galleryData=a;this.fireEvent("onPopulated")},populateGallery:function(a,b){var c=[];options=this.options;currentArrayPlace=b;a.getElements(options.elementSelector).each(function(a){elementDict=$H({image:a.getElement(options.imageSelector).getProperty("src"),number:currentArrayPlace,transition:this.options.defaultTransition});options.showInfopane|options.showCarousel&&elementDict.extend({title:a.getElement(options.titleSelector).innerHTML,
description:a.getElement(options.subtitleSelector).innerHTML});options.embedLinks|options.useReMooz&&elementDict.extend({link:a.getElement(options.linkSelector).href||!1,linkTitle:a.getElement(options.linkSelector).title||!1,linkTarget:a.getElement(options.linkSelector).getProperty("target")||!1});!options.useThumbGenerator&&options.showCarousel?elementDict.extend({thumbnail:a.getElement(options.thumbnailSelector).getProperty("src")}):options.useThumbGenerator&&elementDict.extend({thumbnail:options.thumbGenerator+
"?imgfile="+elementDict.image+"&max_width="+options.thumbWidth+"&max_height="+options.thumbHeight});c.extend([elementDict]);currentArrayPlace++;this.options.destroyAfterPopulate&&a.dispose()});return c},constructElements:function(){el=this.galleryElement;if(this.options.embedLinks&&!this.options.showArrows)el=this.currentLink;this.maxIter=this.galleryData.length;var a;for(i=0;i<this.galleryData.length;i++)a=new Fx.Morph((new Element("div")).addClass("slideElement").setStyles({position:"absolute",
left:"0px",right:"0px",margin:"0px",padding:"0px",backgroundPosition:"center center",opacity:"0"}).injectInside(el),{duration:this.options.fadeDuration}),this.options.preloader?(a.source=this.galleryData[i].image,a.loaded=!1,a.load=function(a,c){if(!a.loaded)this.galleryData[c].imgloader=new Asset.image(a.source,{onload:function(a,b){a.element.setStyle("backgroundImage","url('"+a.source+"')");a.loaded=!0;a.width=this.galleryData[b].imgloader.width;a.height=this.galleryData[b].imgloader.height}.pass([a,
c],this)})}.pass([a,i],this)):a.element.setStyle("backgroundImage","url('"+this.galleryData[i].image+"')"),this.galleryElements[parseInt(i)]=a},destroySlideShow:function(a){var b=(new Element("div")).addClass("myClassName");a.parentNode.replaceChild(b,a)},startSlideShow:function(){this.fireEvent("onStart");this.loadingElement.style.display="none";this.lastIter=this.maxIter-1;this.galleryInit=this.currentIter=0;this.galleryElements[parseInt(this.currentIter)].set({opacity:1});this.options.showInfopane&&
this.showInfoSlideShow.delay(1E3,this);this.options.useReMooz&&this.makeReMooz.delay(1E3,this);var a=formatString(this.options.textShowCarousel,this.currentIter+1,this.maxIter);this.options.showCarousel&&!this.options.carouselPreloader&&!this.options.useExternalCarousel&&this.carouselBtn.set("html",a).setProperty("title",a);this.prepareTimer();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(-1>=this.nextIter)this.nextIter=this.maxIter-1;this.galleryInit=0;this.goTo(this.nextIter)},goTo:function(a){this.clearTimer();this.options.preloader&&(this.galleryElements[a].load(),0==a?this.galleryElements[this.maxIter-1].load():this.galleryElements[a-1].load(),a==this.maxIter-1?this.galleryElements[0].load():this.galleryElements[a+
1].load());this.options.embedLinks&&this.clearLink();this.options.showInfopane?(this.slideInfoZone.clearChain(),this.hideInfoSlideShow().chain(this.changeItem.pass(a,this))):this.currentChangeDelay=this.changeItem.delay(500,this,a);this.options.embedLinks&&this.makeLink(a);this.prepareTimer()},changeItem:function(a){this.fireEvent("onStartChanging");this.galleryInit=0;if(this.currentIter!=a){for(i=0;i<this.maxIter;i++)i!=this.currentIter&&this.galleryElements[i].set({opacity:0});gallery.Transitions[this.galleryData[a].transition].pass([this.galleryElements[this.currentIter],
this.galleryElements[a],this.currentIter,a],this)();this.currentIter=a;this.options.useReMooz&&this.makeReMooz()}a=formatString(this.options.textShowCarousel,a+1,this.maxIter);this.options.showCarousel&&!this.options.useExternalCarousel&&this.carouselBtn.set("html",a).setProperty("title",a);this.doSlideShow.bind(this)();this.fireEvent("onChanged")},clearTimer:function(){this.options.timed&&$clear(this.timer)},prepareTimer:function(){if(this.options.timed)this.timer=this.nextItem.delay(this.options.delay,
this)},doSlideShow:function(a){1==this.galleryInit?(imgPreloader=new Image,imgPreloader.onload=function(){this.startSlideShow.delay(10,this)}.bind(this),imgPreloader.src=this.galleryData[0].image,this.options.preloader&&this.galleryElements[0].load()):this.options.showInfopane&&(this.options.showInfopane?this.showInfoSlideShow.delay(500+this.options.fadeDuration,this):this.options.showCarousel&&this.options.activateCarouselScroller&&this.centerCarouselOn(a))},createCarousel:function(){var a;this.options.useExternalCarousel?
a=$(this.options.carouselElement).addClass("jdExtCarousel"):(a=(new Element("div")).addClass("carouselContainer").injectInside(this.galleryElement),this.carouselContainer=new Fx.Morph(a,{transition:Fx.Transitions.Expo.easeOut}),this.carouselContainer.normalHeight=a.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}).injectInside(a),
this.options.carouselPreloader?this.carouselBtn.set("html",this.options.textPreloadingCarousel):this.carouselBtn.set("html",this.options.textShowCarousel),this.carouselBtn.addEvent("click",function(){this.carouselContainer.cancel();this.toggleCarousel()}.bind(this)),this.carouselActive=!1,a=(new Element("div")).addClass("carousel").injectInside(a),this.carousel=new Fx.Morph(a));this.carouselElement=new Fx.Morph(a,{transition:Fx.Transitions.Expo.easeOut});this.carouselElement.normalHeight=a.offsetHeight;
if(this.options.showCarouselLabel)this.carouselLabel=(new Element("p")).addClass("label").injectInside(a);carouselWrapper=(new Element("div")).addClass("carouselWrapper").injectInside(a);this.carouselWrapper=new Fx.Morph(carouselWrapper,{transition:Fx.Transitions.Expo.easeOut});this.carouselWrapper.normalHeight=carouselWrapper.offsetHeight;this.carouselInner=(new Element("div")).addClass("carouselInner").injectInside(carouselWrapper);if(this.options.activateCarouselScroller)this.carouselWrapper.scroller=
new Scroller(carouselWrapper,{area:100,velocity:0.2}),this.carouselWrapper.elementScroller=new Fx.Scroll(carouselWrapper,{duration:400,onStart:this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller),onComplete:this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller)})},fillCarousel:function(){this.constructThumbnails();this.carouselInner.normalWidth=this.maxIter*(this.options.thumbWidth+this.options.thumbSpacing+2)+this.options.thumbSpacing+"px";if(this.options.carouselHorizontal)this.carouselInner.style.width=
this.carouselInner.normalWidth},initCarousel:function(){this.createCarousel();this.fillCarousel();this.options.carouselPreloader&&this.preloadThumbnails()},flushCarousel:function(){this.thumbnailElements.each(function(a){a.element.dispose();a.element=null});this.thumbnailElements=[]},toggleCarousel:function(){this.carouselActive?this.hideCarousel():this.showCarousel()},showCarousel:function(){this.fireEvent("onShowCarousel");this.carouselContainer.start({opacity:this.options.carouselMaximizedOpacity,
top:0}).chain(function(){this.carouselActive=!0;this.carouselWrapper.scroller.start();this.fireEvent("onCarouselShown");this.carouselContainer.options.onComplete=null}.bind(this))},hideCarousel:function(){this.fireEvent("onHideCarousel");this.carouselContainer.start({opacity:this.options.carouselMinimizedOpacity,top:this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight}).chain(function(){this.carouselActive=!1;this.carouselWrapper.scroller.stop();this.fireEvent("onCarouselHidden");
this.carouselContainer.options.onComplete=null}.bind(this))},constructThumbnails:function(){element=this.carouselInner;for(i=0;i<this.galleryData.length;i++){var a=(new Fx.Morph((new 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),{duration:200})).start({opacity:this.options.thumbIdleOpacity});
a.element.addEvents({mouseover:function(a){a.cancel();a.start({opacity:0.99});this.options.showCarouselLabel&&$(this.carouselLabel).set("html",'<span class="number">'+(a.relatedImage.number+1)+"/"+this.maxIter+":</span> "+a.relatedImage.title)}.pass(a,this),mouseout:function(a){a.cancel();a.start({opacity:this.options.thumbIdleOpacity})}.pass(a,this),click:function(a){this.goTo(a.relatedImage.number);this.options.thumbCloseCarousel&&!this.options.useExternalCarousel&&this.hideCarousel()}.pass(a,this)});
a.relatedImage=this.galleryData[i];this.thumbnailElements[parseInt(i)]=a}},log:function(a){console.log&&console.log(a)},preloadThumbnails:function(){var a=[];for(i=0;i<this.galleryData.length;i++)a[parseInt(i)]=this.galleryData[i].thumbnail;this.thumbnailPreloader=new Preloader;this.options.useExternalCarousel||this.thumbnailPreloader.addEvent("onComplete",function(){var a=formatString(this.options.textShowCarousel,this.currentIter+1,this.maxIter);this.carouselBtn.set("html",a).setProperty("title",
a)}.bind(this));this.thumbnailPreloader.load(a)},clearThumbnailsHighlights:function(){for(i=0;i<this.galleryData.length;i++)this.thumbnailElements[i].cancel(),this.thumbnailElements[i].start(0.2)},changeThumbnailsSize:function(a,b){for(i=0;i<this.galleryData.length;i++)this.thumbnailElements[i].cancel(),this.thumbnailElements[i].element.setStyles({width:a+"px",height:b+"px"})},centerCarouselOn:function(a){this.carouselWallMode||(a=this.thumbnailElements[a],this.carouselWrapper.elementScroller.start(a.element.offsetLeft+
a.element.offsetWidth/2-this.carouselWrapper.element.offsetWidth/2,0))},initInfoSlideshow:function(){this.slideInfoZone=(new Fx.Morph((new Element("div")).addClass("slideInfoZone").injectInside($(this.galleryElement)))).set({opacity:0});(new Element("h2")).injectInside(this.slideInfoZone.element);(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.cancel();element=this.slideInfoZone.element;element.getElement("h2").set("html",this.galleryData[this.currentIter].title);element.getElement("p").set("html",this.galleryData[this.currentIter].description);this.options.slideInfoZoneSlide?this.slideInfoZone.start({opacity:[0,this.options.slideInfoZoneOpacity],height:[0,this.slideInfoZone.normalHeight]}):this.slideInfoZone.start({opacity:[0,
this.options.slideInfoZoneOpacity]});this.options.showCarousel&&this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter,this));return this.slideInfoZone},hideInfoSlideShow:function(){this.fireEvent("onHideInfopane");this.slideInfoZone.cancel();this.options.slideInfoZoneSlide?this.slideInfoZone.start({opacity:0,height:0}):this.slideInfoZone.start({opacity:0});return this.slideInfoZone},makeLink:function(a){this.currentLink.setProperties({href:this.galleryData[a].link,title:this.galleryData[a].linkTitle});
(!this.options.embedLinks||this.options.showArrows||this.options.showCarousel)&&this.currentLink.setStyle("display","block")},clearLink:function(){this.currentLink.setProperties({href:"",title:""});(!this.options.embedLinks||this.options.showArrows||this.options.showCarousel)&&this.currentLink.setStyle("display","none")},makeReMooz:function(){this.currentLink.setProperties({href:"#"});this.currentLink.setStyles({display:"block"});this.galleryElements[this.currentIter].element.set("title",this.galleryData[this.currentIter].title+
" :: "+this.galleryData[this.currentIter].description);this.ReMooz=new ReMooz(this.galleryElements[this.currentIter].element,{link:this.galleryData[this.currentIter].link,shadow:!1,dragging:!1,addClick:!1,resizeOpacity:1});var a=this.galleryElements[this.currentIter],b=a.element.getCoordinates();delete b.right;delete b.bottom;widthDiff=b.width-a.width;heightDiff=b.height-a.height;b.width=a.width;b.height=a.height;b.left+=Math.ceil(widthDiff/2)+1;b.top+=Math.ceil(heightDiff/2)+1;this.ReMooz.getOriginCoordinates=
function(a){return a}.bind(this,b);this.currentLink.onclick=function(){this.ReMooz.open.bind(this.ReMooz)();return!1}.bind(this)},flushGallery:function(){this.galleryElements.each(function(a){a.element.dispose();a.element=null});this.galleryElements=[]},changeData:function(a){this.galleryData=a;this.clearTimer();this.flushGallery();this.options.showCarousel&&this.flushCarousel();this.constructElements();this.options.showCarousel&&this.fillCarousel();this.options.showInfopane&&this.hideInfoSlideShow();
this.galleryInit=1;this.currentIter=this.lastIter=0;this.doSlideShow(1)},initHistory:function(){this.fireEvent("onHistoryInit");this.historyKey=this.galleryElement.id+"-picture";if(this.options.customHistoryKey)this.historyKey=this.options.customHistoryKey;this.history=new History.Route({defaults:[1],pattern:this.historyKey+"\\((\\d+)\\)",generate:function(a){return[this.historyKey,"(",a[0],")"].join("")}.bind(this),onMatch:function(a){parseInt(a[0])-1<this.maxIter&&this.goTo(parseInt(a[0])-1)}.bind(this)});
this.addEvent("onChanged",function(){this.history.setValue(0,this.currentIter+1);this.history.defaults=[this.currentIter+1]}.bind(this));this.fireEvent("onHistoryInited")}},gallery=new Class(gallery);
gallery.Transitions=new Hash({fade:function(a,b,c,d){a.options.transition=b.options.transition=Fx.Transitions.linear;a.options.duration=b.options.duration=this.options.fadeDuration;d>c?b.start({opacity:1}):(b.set({opacity:1}),a.start({opacity:0}))},crossfade:function(a,b){a.options.transition=b.options.transition=Fx.Transitions.linear;a.options.duration=b.options.duration=this.options.fadeDuration;b.start({opacity:1});a.start({opacity:0})},fadebg:function(a,b){a.options.transition=b.options.transition=
Fx.Transitions.linear;a.options.duration=b.options.duration=this.options.fadeDuration/2;a.start({opacity:0}).chain(b.start.pass([{opacity:1}],b))}});
var Preloader=new Class({Implements:[Events,Options],options:{root:"",period:100},initialize:function(a){this.setOptions(a)},load:function(a){this.index=0;this.images=[];this.sources=this.temps=a;this.total=this.sources.length;this.fireEvent("onStart",[this.index,this.total]);this.timer=this.progress.periodical(this.options.period,this);this.sources.each(function(a,c){this.images[c]=new Asset.image(this.options.root+a,{onload:function(){this.index++;this.images[c]&&this.fireEvent("onLoad",[this.images[c],
c,a])}.bind(this),onerror:function(){this.index++;this.fireEvent("onError",[this.images.splice(c,1),c,a])}.bind(this),onabort:function(){this.index++;this.fireEvent("onError",[this.images.splice(c,1),c,a])}.bind(this)})},this)},progress:function(){this.fireEvent("onProgress",[Math.min(this.index,this.total),this.total]);this.index>=this.total&&this.complete()},complete:function(){$clear(this.timer);this.fireEvent("onComplete",[this.images])},cancel:function(){$clear(this.timer)}});
function formatString(){for(var a=arguments.length,b=arguments[0],c=1;c<a;c++)b=b.replace(RegExp("\\{"+(c-1)+"\\}","g"),arguments[c]);return b};
