(function(f){var m={},s=0;f.galleriffic={version:"2.0.1",normalizeHash:function(g){return g.replace(/^.*#/,"").replace(/\?.*$/,"")},getImage:function(g){if(g){g=f.galleriffic.normalizeHash(g);return m[g]}},gotoImage:function(g){g=f.galleriffic.getImage(g);if(!g)return false;g.gallery.gotoImage(g);return true},removeImageByHash:function(g,j){g=f.galleriffic.getImage(g);if(!g)return false;var n=g.gallery;if(j&&j!=n)return false;return n.removeImageByIndex(g.index)}};var t={delay:3E3,numThumbs:20,preloadAhead:40,
enableTopPager:false,enableBottomPager:true,maxPagesToShow:7,imageContainerSel:"",captionContainerSel:"",controlsContainerSel:"",loadingContainerSel:"",renderSSControls:true,renderNavControls:true,playLinkText:"Play",pauseLinkText:"Pause",prevLinkText:"Previous",nextLinkText:"Next",nextPageLinkText:"Next &rsaquo;",prevPageLinkText:"&lsaquo; Prev",enableHistory:false,enableKeyboardNavigation:true,autoStart:false,syncTransitions:false,defaultTransitionDuration:1E3,onSlideChange:undefined,onTransitionOut:undefined,
onTransitionIn:undefined,onPageTransitionOut:undefined,onPageTransitionIn:undefined,onImageAdded:undefined,onImageRemoved:undefined};f.fn.galleriffic=function(g){f.extend(this,{version:f.galleriffic.version,isSlideshowRunning:false,slideshowTimeout:undefined,clickHandler:function(a,b){this.pause();if(!this.enableHistory){b=f.galleriffic.normalizeHash(f(b).attr("href"));f.galleriffic.gotoImage(b);a.preventDefault()}},appendImage:function(a){this.addImage(a,false,false);return this},insertImage:function(a,
b){this.addImage(a,false,true,b);return this},addImage:function(a,b,c,d){var e=typeof a==="string"?f(a):a;a=e.find("a.thumb");var k=a.attr("href"),h=a.attr("title"),o=e.find(".caption").remove(),l=a.attr("name");s++;if(!l||m[""+l])l=s;if(!c)d=this.data.length;var p={title:h,slideUrl:k,caption:o,hash:l,gallery:this,index:d};if(c){this.data.splice(d,0,p);this.updateIndices(d)}else this.data.push(p);var q=this;b||this.updateThumbs(function(){var r=q.find("ul.thumbs");c?r.children(":eq("+d+")").before(e):
r.append(e);q.onImageAdded&&q.onImageAdded(p,e)});m[""+l]=p;a.attr("rel","history").attr("href","#"+l).removeAttr("name").click(function(r){q.clickHandler(r,this)});return this},removeImageByIndex:function(a){if(a<0||a>=this.data.length)return false;a=this.data[a];if(!a)return false;this.removeImage(a);return true},removeImageByHash:function(a){return f.galleriffic.removeImageByHash(a,this)},removeImage:function(a){var b=a.index;this.data.splice(b,1);delete m[""+a.hash];this.updateThumbs(function(){var c=
j.find("ul.thumbs").children(":eq("+b+")").remove();j.onImageRemoved&&j.onImageRemoved(a,c)});this.updateIndices(b);return this},updateIndices:function(a){for(i=a;i<this.data.length;i++)this.data[i].index=i;return this},initializeThumbs:function(){this.data=[];var a=this;this.find("ul.thumbs > li").each(function(){a.addImage(f(this),true,false)});return this},isPreloadComplete:false,preloadInit:function(){if(this.preloadAhead==0)return this;this.preloadStartIndex=this.currentImage.index;return this.preloadRecursive(this.preloadStartIndex,
this.getNextIndex(this.preloadStartIndex))},preloadRelocate:function(a){this.preloadStartIndex=a;return this},preloadRecursive:function(a,b){if(a!=this.preloadStartIndex)return this.preloadRecursive(this.preloadStartIndex,this.getNextIndex(this.preloadStartIndex));var c=this,d=b-a;if(d<0)d=this.data.length-1-a+b;if(this.preloadAhead>=0&&d>this.preloadAhead){setTimeout(function(){c.preloadRecursive(a,b)},500);return this}var e=this.data[b];if(!e)return this;if(e.image)return this.preloadNext(a,b);
d=new Image;d.onload=function(){e.image=this;c.preloadNext(a,b)};d.alt=e.title;d.src=e.slideUrl;return this},preloadNext:function(a,b){var c=this.getNextIndex(b);if(c==a)this.isPreloadComplete=true;else{var d=this;setTimeout(function(){d.preloadRecursive(a,c)},100)}return this},getNextIndex:function(a){a=a+1;if(a>=this.data.length)a=0;return a},getPrevIndex:function(a){a=a-1;if(a<0)a=this.data.length-1;return a},pause:function(){this.isSlideshowRunning=false;if(this.slideshowTimeout){clearTimeout(this.slideshowTimeout);
this.slideshowTimeout=undefined}this.$controlsContainer&&this.$controlsContainer.find("div.ss-controls a").removeClass().addClass("play").attr("title",this.playLinkText).attr("href","#play").html(this.playLinkText);return this},play:function(){this.isSlideshowRunning=true;this.$controlsContainer&&this.$controlsContainer.find("div.ss-controls a").removeClass().addClass("pause").attr("title",this.pauseLinkText).attr("href","#pause").html(this.pauseLinkText);if(!this.slideshowTimeout){var a=this;this.slideshowTimeout=
setTimeout(function(){a.ssAdvance()},this.delay)}return this},toggleSlideshow:function(){this.isSlideshowRunning?this.pause():this.play();return this},ssAdvance:function(){this.isSlideshowRunning&&this.next(true);return this},next:function(a,b){this.gotoIndex(this.getNextIndex(this.currentImage.index),a,b);return this},previous:function(a,b){this.gotoIndex(this.getPrevIndex(this.currentImage.index),a,b);return this},nextPage:function(a,b){var c=this.getCurrentPage(),d=this.getNumPages()-1;c<d&&this.gotoIndex(c*
this.numThumbs+this.numThumbs,a,b);return this},previousPage:function(a,b){var c=this.getCurrentPage();c>0&&this.gotoIndex(c*this.numThumbs-this.numThumbs,a,b);return this},gotoIndex:function(a,b,c){b||this.pause();if(a<0)a=0;else if(a>=this.data.length)a=this.data.length-1;a=this.data[a];!c&&this.enableHistory?f.historyLoad(String(a.hash)):this.gotoImage(a);return this},gotoImage:function(a){var b=a.index;this.onSlideChange&&this.onSlideChange(this.currentImage.index,b);this.currentImage=a;this.preloadRelocate(b);
this.refresh();return this},getDefaultTransitionDuration:function(a){if(a)return this.defaultTransitionDuration;return this.defaultTransitionDuration/2},refresh:function(){var a=this.currentImage;if(!a)return this;var b=a.index;this.$controlsContainer&&this.$controlsContainer.find("div.nav-controls a.prev").attr("href","#"+this.data[this.getPrevIndex(b)].hash).end().find("div.nav-controls a.next").attr("href","#"+this.data[this.getNextIndex(b)].hash);var c=this.$imageContainer.find("span.current").addClass("previous").removeClass("current"),
d=0;if(this.$captionContainer)d=this.$captionContainer.find("span.current").addClass("previous").removeClass("current");var e=this.syncTransitions&&a.image,k=true,h=this;b=function(){k=false;c.remove();d&&d.remove();if(!e)if(a.image&&a.hash==h.data[h.currentImage.index].hash)h.buildImage(a,e);else h.$loadingContainer&&h.$loadingContainer.show()};if(c.length==0)b();else if(this.onTransitionOut)this.onTransitionOut(c,d,e,b);else{c.fadeTo(this.getDefaultTransitionDuration(e),0,b);d&&d.fadeTo(this.getDefaultTransitionDuration(e),
0)}e&&this.buildImage(a,e);if(!a.image){b=new Image;b.onload=function(){a.image=this;!k&&a.hash==h.data[h.currentImage.index].hash&&h.buildImage(a,e)};b.alt=a.title;b.src=a.slideUrl}this.relocatePreload=true;return this.syncThumbs()},buildImage:function(a,b){var c=this,d=this.$imageContainer.append('<span class="image-wrapper current"><a class="advance-link" rel="history" href="#'+this.data[this.getNextIndex(a.index)].hash+'" title="'+a.title+'">&nbsp;</a></span>').find("span.current").css("opacity",
"0");d.find("a").append(a.image).click(function(k){c.clickHandler(k,this)});var e=0;if(this.$captionContainer)e=this.$captionContainer.append('<span class="image-caption current"></span>').find("span.current").css("opacity","0").append(a.caption);this.$loadingContainer&&this.$loadingContainer.hide();if(this.onTransitionIn)this.onTransitionIn(d,e,b);else{d.fadeTo(this.getDefaultTransitionDuration(b),1);e&&e.fadeTo(this.getDefaultTransitionDuration(b),1)}if(this.isSlideshowRunning){this.slideshowTimeout&&
clearTimeout(this.slideshowTimeout);this.slideshowTimeout=setTimeout(function(){c.ssAdvance()},this.delay)}return this},getCurrentPage:function(){return Math.floor(this.currentImage.index/this.numThumbs)},syncThumbs:function(){this.getCurrentPage()!=this.displayedPage&&this.updateThumbs();var a=this.find("ul.thumbs").children();a.filter(".selected").removeClass("selected");a.eq(this.currentImage.index).addClass("selected");return this},updateThumbs:function(a){var b=this,c=function(){a&&a();b.rebuildThumbs();
b.onPageTransitionIn?b.onPageTransitionIn():b.show()};if(this.onPageTransitionOut)this.onPageTransitionOut(c);else{this.hide();c()}return this},rebuildThumbs:function(){var a=this.data.length>this.numThumbs;if(this.enableTopPager){var b=this.find("div.top");if(b.length==0)b=this.prepend('<div class="top pagination"></div>').find("div.top");else b.empty();a&&this.buildPager(b)}if(this.enableBottomPager){b=this.find("div.bottom");if(b.length==0)b=this.append('<div class="bottom pagination"></div>').find("div.bottom");
else b.empty();a&&this.buildPager(b)}a=this.getCurrentPage();var c=a*this.numThumbs,d=c+this.numThumbs-1;if(d>=this.data.length)d=this.data.length-1;b=this.find("ul.thumbs");b.find("li").each(function(e){var k=f(this);e>=c&&e<=d?k.show():k.hide()});this.displayedPage=a;b.removeClass("noscript");return this},getNumPages:function(){return Math.ceil(this.data.length/this.numThumbs)},buildPager:function(a){var b=this,c=this.getNumPages(),d=this.getCurrentPage(),e=d*this.numThumbs,k=this.maxPagesToShow-
1,h=d-Math.floor((this.maxPagesToShow-1)/2)+1;if(h>0){var o=c-h;if(o<k)h-=k-o}if(h<0)h=0;d>0&&a.append('<a rel="history" href="#'+this.data[e-this.numThumbs].hash+'" title="'+this.prevPageLinkText+'">'+this.prevPageLinkText+"</a>");if(h>0){this.buildPageLink(a,0,c);h>1&&a.append('<span class="ellipsis">&hellip;</span>');k--}for(;k>0;){this.buildPageLink(a,h,c);k--;h++}if(h<c){d=c-1;h<d&&a.append('<span class="ellipsis">&hellip;</span>');this.buildPageLink(a,d,c)}c=e+this.numThumbs;c<this.data.length&&
a.append('<a rel="history" href="#'+this.data[c].hash+'" title="'+this.nextPageLinkText+'">'+this.nextPageLinkText+"</a>");a.find("a").click(function(l){b.clickHandler(l,this)});return this},buildPageLink:function(a,b,c){var d=b+1,e=this.getCurrentPage();if(b==e)a.append('<span class="current">'+d+"</span>");else b<c&&a.append('<a rel="history" href="#'+this.data[b*this.numThumbs].hash+'" title="'+d+'">'+d+"</a>");return this}});f.extend(this,t,g);if(this.enableHistory&&!f.historyInit)this.enableHistory=
false;if(this.imageContainerSel)this.$imageContainer=f(this.imageContainerSel);if(this.captionContainerSel)this.$captionContainer=f(this.captionContainerSel);if(this.loadingContainerSel)this.$loadingContainer=f(this.loadingContainerSel);this.initializeThumbs();if(this.maxPagesToShow<3)this.maxPagesToShow=3;this.displayedPage=-1;this.currentImage=this.data[0];var j=this;this.$loadingContainer&&this.$loadingContainer.hide();if(this.controlsContainerSel){this.$controlsContainer=f(this.controlsContainerSel).empty();
if(this.renderSSControls){this.autoStart?this.$controlsContainer.append('<div class="ss-controls"><a href="#pause" class="pause" title="'+this.pauseLinkText+'">'+this.pauseLinkText+"</a></div>"):this.$controlsContainer.append('<div class="ss-controls"><a href="#play" class="play" title="'+this.playLinkText+'">'+this.playLinkText+"</a></div>");this.$controlsContainer.find("div.ss-controls a").click(function(a){j.toggleSlideshow();a.preventDefault();return false})}this.renderNavControls&&this.$controlsContainer.append('<div class="nav-controls"><a class="prev" rel="history" title="'+
this.prevLinkText+'">'+this.prevLinkText+'</a><a class="next" rel="history" title="'+this.nextLinkText+'">'+this.nextLinkText+"</a></div>").find("div.nav-controls a").click(function(a){j.clickHandler(a,this)})}g=!this.enableHistory||!location.hash;if(this.enableHistory&&location.hash){var n=f.galleriffic.normalizeHash(location.hash);m[n]||(g=true)}g&&this.gotoIndex(0,false,true);this.enableKeyboardNavigation&&f(document).keydown(function(a){switch(a.charCode?a.charCode:a.keyCode?a.keyCode:0){case 32:j.next();
a.preventDefault();break;case 33:j.previousPage();a.preventDefault();break;case 34:j.nextPage();a.preventDefault();break;case 35:j.gotoIndex(j.data.length-1);a.preventDefault();break;case 36:j.gotoIndex(0);a.preventDefault();break;case 37:j.previous();a.preventDefault();break;case 39:j.next();a.preventDefault();break}});this.autoStart&&this.play();setTimeout(function(){j.preloadInit()},1E3);return this}})(jQuery);
