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