(function(C){C.fn.adGallery=function(F){var H={start_at_index:0,thumb_opacity:1,animate_first_image:false,animation_speed:0,width:320,height:230,display_next_and_prev:true,display_back_and_forward:true,scroll_jump:0,slideshow:{enable:false,autostart:false,speed:5000,start_label:"Start",stop_label:"Stop",stop_on_scroll:false,countdown_prefix:"(",countdown_sufix:")",onStart:false,onStop:false},effect:"none",enable_keyboard_move:false,cycle:true,callbacks:{init:false,afterImageVisible:false,beforeImageVisible:false}};
var G=C.extend(false,H,F);
if(F&&F.slideshow){G.slideshow=C.extend(false,H.slideshow,F.slideshow)
}if(!G.slideshow.enable){G.slideshow.autostart=false
}var E=[];
C(this).each(function(){var I=new B(this,G);
E[E.length]=I
});
return E
};
function D(E,F,G){E.css("opacity",0);
return{old_image:{opacity:0},new_image:{opacity:1},speed:0}
}function B(F,E){this.init(F,E)
}B.prototype={wrapper:false,image_wrapper:false,nav:false,preloads:false,thumbs_wrapper:false,scroll_back:false,scroll_forward:false,next_link:false,prev_link:false,slideshow:false,image_wrapper_width:0,image_wrapper_height:0,current_index:0,current_image:false,nav_display_width:0,settings:false,images:false,in_transition:false,animations:false,init:function(I,H){var G=this;
this.wrapper=C(I);
this.settings=H;
this.setupElements();
this.setupAnimations();
if(this.settings.width){this.image_wrapper_width=this.settings.width;
this.image_wrapper.width(this.settings.width);
this.wrapper.width(this.settings.width)
}else{this.image_wrapper_width=this.image_wrapper.width()
}if(this.settings.height){this.image_wrapper_height=this.settings.height;
this.image_wrapper.height(this.settings.height)
}else{this.image_wrapper_height=this.image_wrapper.height()
}this.nav_display_width=this.nav.width();
this.current_index=0;
this.current_image=false;
this.in_transition=false;
this.findImages();
if(this.settings.display_next_and_prev){this.initNextAndPrev()
}var E=function(J){return G.nextImage(J)
};
this.slideshow=new A(E,this.settings.slideshow);
if(this.settings.slideshow.enable){this.slideshow.enable()
}else{this.slideshow.disable()
}if(this.settings.display_back_and_forward){this.initBackAndForward()
}if(this.settings.enable_keyboard_move){this.initKeyEvents()
}var F=this.settings.start_at_index;
if(window.location.hash&&window.location.hash.indexOf("#ad-image")===0){F=window.location.hash.replace(/[^0-9]+/g,"");
if((F*1)!=F){F=this.settings.start_at_index
}}this.showImage(F,function(){if(G.settings.slideshow.autostart){G.preloadImage(F+1);
G.slideshow.start()
}});
this.fireCallback(this.settings.callbacks.init)
},setupAnimations:function(){this.animations={none:D}
},setupElements:function(){this.image_wrapper=this.wrapper.find(".ad-image-wrapper");
this.image_desc=this.wrapper.find(".ad-image-description");
this.nav=this.wrapper.find(".ad-nav");
this.thumbs_wrapper=this.nav.find(".ad-thumbs")
},addAnimation:function(E,F){if(C.isFunction(F)){this.animations[E]=F
}},findImages:function(){var J=this;
this.images=[];
var I=0;
var H=0;
var G=this.thumbs_wrapper.find("a");
var F=G.length;
this.total=F;
G.each(function(L){var N=C(this);
var M=N.attr("href");
var K=N.find("img");
if(!J.isImageLoaded(K[0])){K.load(function(){I+=this.parentNode.parentNode.offsetWidth;
H++
})
}else{I+=K[0].parentNode.parentNode.offsetWidth;
H++
}N.addClass("ad-thumb"+L);
N.click(function(){J.showImage(L);
J.slideshow.stop();
return false
}).hover(function(){J.preloadImage(L)
});
var P=false;
if(K.data("ad-desc")){P=K.data("ad-desc")
}var O=false;
O=K.attr("alt");
J.images[L]={thumb:K.attr("src"),image:M,error:false,preloaded:false,desc:P,title:O,size:false}
});
var E=setInterval(function(){if(F==H){J.nav.find(".ad-thumb-list").css("width",I+"px");
clearInterval(E)
}},100)
},initKeyEvents:function(){var E=this;
C(document).keydown(function(F){if(F.keyCode==39){E.nextImage();
E.slideshow.stop()
}else{if(F.keyCode==37){E.prevImage();
E.slideshow.stop()
}}})
},initNextAndPrev:function(){this.next_link=C('<div class="ad-next"><div class="ad-next-image"></div></div>');
this.prev_link=C('<div class="ad-prev"><div class="ad-prev-image"></div></div>');
this.image_wrapper.append(this.next_link);
this.image_wrapper.append(this.prev_link);
var E=this;
this.prev_link.add(this.next_link).click(function(){if(C(this).is(".ad-next")){E.nextImage();
E.slideshow.stop()
}else{E.prevImage();
E.slideshow.stop()
}})
},initBackAndForward:function(){var G=this;
this.scroll_forward=C('<div class="ad-forward ad-next"></div>');
this.scroll_back=C('<div class="ad-back ad-prev"></div>');
if(G.total>4){this.nav.append(this.scroll_forward);
this.nav.prepend(this.scroll_back)
}var F=0;
var E=false;
C(this.scroll_back).add(this.scroll_forward).click(function(){if(C(this).is(".ad-next")){G.nextImage();
G.slideshow.stop()
}else{G.prevImage();
G.slideshow.stop()
}return false
})
},_afterShow:function(){if(!this.settings.cycle){this.prev_link.show().css("height",this.image_wrapper_height);
this.next_link.show().css("height",this.image_wrapper_height);
if(this.current_index==(this.images.length-1)){this.next_link.hide()
}if(this.current_index==0){this.prev_link.hide()
}}this.fireCallback(this.settings.callbacks.afterImageVisible)
},_getContainedImageSize:function(F,E){if(E>this.image_wrapper_height){var G=F/E;
E=this.image_wrapper_height;
F=this.image_wrapper_height*G
}if(F>this.image_wrapper_width){var G=E/F;
F=this.image_wrapper_width;
E=this.image_wrapper_width*G
}return{width:F,height:E}
},_centerImage:function(H,F,E){H.css("top","0px");
if(E<this.image_wrapper_height){var G=this.image_wrapper_height-E;
H.css("top",(G/2)+"px")
}H.css("left","0px");
if(F<this.image_wrapper_width){var G=this.image_wrapper_width-F;
H.css("left",(G/2)+"px")
}},_getDescription:function(E){var G=false;
if(E.desc.length||E.title.length){var F="";
if(E.title.length){G=E.title
}}return G
},showImage:function(E,H){if(this.images[E]&&!this.in_transition){var F=this;
var G=this.images[E];
this.in_transition=true;
if(!G.preloaded){this.preloadImage(E,function(){F._showWhenLoaded(E,H)
})
}else{this._showWhenLoaded(E,H)
}}},_showWhenLoaded:function(L,P){if(this.images[L]){var E=this;
var G=this.images[L];
var H=C(document.createElement("div")).addClass("ad-image");
var J=C(new Image()).attr("src",G.image);
H.append(J);
this.image_wrapper.prepend(H);
var Q=this._getContainedImageSize(G.size.width,G.size.height);
J.attr("width",Q.width);
J.attr("height",Q.height);
H.css({width:Q.width+"px",height:Q.height+"px"});
this._centerImage(H,Q.width,Q.height);
var K=this._getDescription(G,H);
this.image_desc.html(K);
this.highLightThumb(this.nav.find(".ad-thumb"+L));
var N="right";
if(this.current_index<L){N="left"
}this.fireCallback(this.settings.callbacks.beforeImageVisible);
if(this.current_image||this.settings.animate_first_image){var O=this.settings.animation_speed;
var M="swing";
var I=this.animations[this.settings.effect].call(this,H,N,K);
if(typeof I.speed!="undefined"){O=I.speed
}if(typeof I.easing!="undefined"){M=I.easing
}if(this.current_image){var F=this.current_image;
F.animate(I.old_image,O,M,function(){F.remove()
})
}H.animate(I.new_image,O,M,function(){E.current_index=L;
E.current_image=H;
E.in_transition=false;
E._afterShow();
E.fireCallback(P)
})
}else{this.current_index=L;
this.current_image=H;
this.in_transition=false;
E._afterShow();
this.fireCallback(P)
}}},nextIndex:function(){if(this.current_index==(this.images.length-1)){if(!this.settings.cycle){return false
}var E=0
}else{var E=this.current_index+1
}return E
},nextImage:function(F){var E=this.nextIndex();
if(E===false){return false
}this.preloadImage(E+1);
this.showImage(E,F);
return true
},prevIndex:function(){if(this.current_index==0){if(!this.settings.cycle){return false
}var E=this.images.length-1
}else{var E=this.current_index-1
}return E
},prevImage:function(F){var E=this.prevIndex();
if(E===false){return false
}this.preloadImage(E-1);
this.showImage(E,F);
return true
},preloadAll:function(){var F=this;
var E=0;
function G(){if(E<F.images.length){E++;
F.preloadImage(E,G)
}}F.preloadImage(E,G)
},preloadImage:function(F,I){if(this.images[F]){var H=this.images[F];
if(!this.images[F].preloaded){var E=C(new Image());
E.attr("src",H.image);
if(!this.isImageLoaded(E[0])){var G=this;
E.load(function(){H.preloaded=true;
H.size={width:this.width,height:this.height};
G.fireCallback(I)
}).error(function(){H.error=true;
H.preloaded=false;
H.size=false
})
}else{H.preloaded=true;
H.size={width:E[0].width,height:E[0].height};
this.fireCallback(I)
}}else{this.fireCallback(I)
}}},isImageLoaded:function(E){if(typeof E.complete!="undefined"&&!E.complete){return false
}if(typeof E.naturalWidth!="undefined"&&E.naturalWidth==0){return false
}return true
},highLightThumb:function(E){this.thumbs_wrapper.find(".ad-active").removeClass("ad-active");
E.addClass("ad-active");
var F=E[0].parentNode.offsetLeft;
F-=(this.nav_display_width/2)-(E[0].offsetWidth+2);
this.thumbs_wrapper.animate({scrollLeft:F+"px"})
},fireCallback:function(E){if(C.isFunction(E)){E.call(this)
}}};
function A(E,F){this.init(E,F)
}A.prototype={start_link:false,stop_link:false,countdown:false,settings:false,nextimage_callback:false,enabled:false,running:false,countdown_interval:false,init:function(E,G){var F=this;
this.nextimage_callback=E;
this.settings=G
},create:function(){this.start_link=C('<span class="ad-slideshow-start">'+this.settings.start_label+"</span>");
this.stop_link=C('<span class="ad-slideshow-stop">'+this.settings.stop_label+"</span>");
this.countdown=C('<span class="ad-slideshow-countdown"></span>');
this.countdown.hide();
var E=this;
this.start_link.click(function(){E.start()
});
this.stop_link.click(function(){E.stop()
});
C(document).keydown(function(F){if(F.keyCode==83){if(E.running){E.stop()
}else{E.start()
}}})
},disable:function(){this.enabled=false;
this.stop()
},enable:function(){this.enabled=true
},toggle:function(){if(this.enabled){this.disable()
}else{this.enable()
}},start:function(){if(this.running||!this.enabled){return false
}var E=this;
this.running=true;
this._next();
this.fireCallback(this.settings.onStart);
return true
},stop:function(){if(!this.running){return false
}this.running=false;
this.countdown.hide();
clearInterval(this.countdown_interval);
this.fireCallback(this.settings.onStop);
return true
},_next:function(){var G=this;
var H=this.settings.countdown_prefix;
var F=this.settings.countdown_sufix;
clearInterval(G.countdown_interval);
this.countdown.show().html(H+(this.settings.speed/1000)+F);
var E=0;
this.countdown_interval=setInterval(function(){E+=1000;
if(E>=G.settings.speed){var J=function(){if(G.running){G._next()
}E=0
};
if(!G.nextimage_callback(J)){G.stop()
}E=0
}var I=parseInt(G.countdown.text().replace(/[^0-9]/g,""),10);
I--;
if(I>0){G.countdown.html(H+I+F)
}},1000)
},fireCallback:function(E){if(C.isFunction(E)){E.call(this)
}}}
})(jQuery);