//
//  jquery.gallery.js
//  Last update on 2009-02-10.
//  Copyright 2009 Octavodia Ltd. All rights reserved.
// 
(function(C){var B=window.$.Gallery={},A=B.settings={classes:[],maxWidth:"parent",beforeMaximise:function(D,E,F){},afterMaximise:function(D,E,F){},beforeMinimise:function(D,E,F){},afterMinimise:function(D,E,F){},thumbnailClass:"galleryThumbnail",loadingImageClass:"loading",normalSizeClass:"galleryNormal",parentClass:"galleryBox",maximisedContainerClass:"galleryBoxLarge",descriptionClass:"galleryDescription"};Gallery=function(G,E){var D=this,H=new Date().valueOf(),E=E||B.settings;D.id=H;D.list=C(G);D.items=C("li",D.list);D.options={};for(var F in E){D.options[F]=E[F];}B[H]=D;return this;};Gallery.minimise=function(){C("body").triggerHandler("click.galleryMinimise");return C("[data-for-gallery-id]");};Gallery.prototype.init=function(){var P=this,L=P.items,N=P.options.maxWidth,H=P.options.thumbnailClass,M=P.options.normalSizeClass,O=P.options.loadingImageClass,D=P.options.parentClass,Q=P.list;P.list.addClass(D);var F=P.options.classes,E=0,K=parseInt(L.length/F.length,10),G;for(var I=K-1;I>=0;I--){var J=L.slice(E,E+F.length);J.each(function(R){C(this).addClass(F[R]);});E+=F.length;G=L.slice(E);}if(G){G.each(function(R){C(this).addClass(F[R]);});}C("img",L).addClass(H);L.addClass(O);if(C.browser.msie){setTimeout(function(){C("body").toggleClass("rebuild").toggleClass("rebuild");},0);}L.each(function(){(function(){var U=C(this),T=C("a",U),R=T.attr("href"),S=new Image();C(S).load(function(){var X=C(this);X.hide().attr("title","Click to maximise").appendTo(T);var Z=X,W=Z.width(),V=(N=="auto")?W:(N=="parent")?Q.innerWidth({margin:true}):C(N).innerWidth({margin:true});var Y=(N!="auto"&&W>V)?(V/W)*100:null;if(Y){Z.width(W*(Y/100));}X.data("options",{cloneMaxWidth:V,widthRatio:Y});setTimeout(function(){X.fadeIn("slow",function(){U.removeClass(O);});},0);});S.className+=" "+M;S.src=R;}).apply(this);});return this;};Gallery.prototype.appendEvents=function(){var D=this,E=D.list;E.unbind("click.galleryMaximise").bind("click.galleryMaximise",function(I){var H=I.target,F=C(H);var G=function(){I.preventDefault();I.stopPropagation();return false;};if(H.nodeName!="A"&&H.nodeName!="IMG"&&H.nodeName!="LI"){return G();}H=(H.nodeName!="LI")?F.parents("li").eq(0):F;F=C(H);if(F.hasClass("loading")){return G();}D.maximise(F);return G();});C("body").unbind("click.galleryMinimise").bind("click.galleryMinimise",function(){var F=C("[data-for-gallery-id]");if(F.length===0){return ;}F.each(function(){var H=C(this).attr("data-for-gallery-id"),G=B[H];if(!G){return ;}G.minimise();});});return this;};Gallery.prototype.maximise=function(O){var P=this,a=O,Y=P.list,F=P.options.beforeMaximise,T=P.options.afterMaximise,X=P.options.maxWidth,V=P.options.maximisedContainerClass,I=P.options.thumbnailClass,E=P.options.normalSizeClass,J=P.options.parentClass,R=P.options.descriptionClass;if(P.hasMaximised){P.minimise();}var b=C('<div class="'+V+'"						data-for-gallery-id="'+P.id+'" title="Click to close"/>').append('<span class="galleryStyles"><span class="galleryStyle1"></span><span class="galleryStyle2"></span><span class="galleryStyle3"></span><span class="galleryStyle4"></span><span class="galleryStyle5"></span><span class="galleryStyle6"></span><span class="galleryStyle7"></span><span class="galleryStyle8"></span></span>').append("<a />"),D=Y,Z=C("img."+E,a);C("a",b).append(Z.clone().animate({marginLeft:0,marginTop:0})).append(C("."+R,a).clone().css("opacity",0));C("body").append(b);if(typeof F=="function"){F=F.apply(P.list,[P,b,a]);}if(F===false){b.remove();return this;}P.hasMaximised=b;var Q=C("img",b),L=Q.width(),N=Z.data("options");Q.attr("title","Click to close");var K=a.offset({margin:true,padding:true,border:true}),G=a.outerWidth({margin:true}),U=a.outerHeight({margin:true}),H=D.offset({margin:true,padding:true,border:true}),S=Q.outerHeight({margin:true});var W=N.cloneMaxWidth,M=N.widthRatio;if(L<W){W=L;}a.css("visibility","hidden");b.data("options",{item:a,itemOffset:K,itemWidth:G,itemHeight:U,galleryOffset:H,cloneHeight:S,cloneMaxWidth:W});b.css({"z-index":5,position:"absolute",width:G,left:K.left,top:K.top,height:U});if(C.scrollTo){C.scrollTo(b,"slow",{offset:{top:-50}});}b.animate({left:H.left,height:S});b.animate({width:W},function(){if(typeof T=="function"){T.apply(P.list,[P,b,a]);}});return this;};Gallery.prototype.minimise=function(){var O=this,F=O.hasMaximised;if(!O.hasMaximised){return ;}var P=O.options.beforeMinimise,H=O.options.afterMinimise,I=O.options.descriptionClass,K=O.options.animation,G=F.data("options"),N=G.item,J=G.itemWidth,M=G.cloneMaxWidth,L=G.itemOffset,D=G.galleryOffset,E=G.itemHeight,Q=O.list;if(typeof P=="function"){P=P.apply(O.list,[O,F,N]);}if(P===false){return this;}delete O.hasMaximised;F.animate({width:J});F.animate({left:L.left});F.animate({height:E},function(){N.css("visibility","visible");if(typeof H=="function"){H.apply(O.list,[O,F,N]);}F.remove();});return this;};C.fn.gallery=function(E){var D=C.extend(B.settings,E);return this.each(function(){var F=new Gallery(this,D).init().appendEvents();C(this).data("gallery",F);});};})(jQuery);