var Milkbox=new Class({Implements:Options,options:{overlayOpacity:0.7,topPosition:80,initialWidth:250,initialHeight:250,resizeDuration:500,resizeTransition:"sine:in:out",hoverBackgroundPosition:"0 -23px",autoPlay:false,autoPlayDelay:7,removeTitle:true},initialize:function(B){this.setOptions(B);this.galleries=[];this.currentImage=null;this.currentIndex=null;this.currentGallery=null;this.specialDescription=null;this.activated=false;this.mode=null;this.closed=true;this.busy=true;this.intObj=null;this.formtags=null;this.loadedImages=[];this.prepareGalleries();if(this.galleries.length==0){return }this.initMilkbox()},initMilkbox:function(){this.prepareHTML();this.prepareEffects();this.prepareEvents();this.activated=true;this.formtags=$$("select","textarea")},openMilkbox:function(P,N){if(this.formtags.length!=0){this.formtags.setStyle("display","none")}this.overlay.setStyles({top:-$(window).getScroll().y,height:$(window).getScrollSize().y+$(window).getScroll().y});this.center.addClass("mbLoading");this.center.setStyle("top",$(window).getScroll().y+this.options.topPosition);this.currentGallery=P;this.currentIndex=N;this.overlay.tween("opacity",this.options.overlayOpacity);if(P.length==1){this.mode="singleImage";this.loadImages(P[N].href)}else{this.mode="imageGallery";var I=P.map(function(A){return A.href});$$(this.prev,this.next,this.count).setStyles({display:"block"});var O=this.center.getStyle("border-right-width").toInt();var J=this.prev.getSize().x+this.next.getSize().x+this.close.getSize().x+O;this.navigation.setStyle("width",J);this.description.setStyle("margin-right",J);var L=(N!=I.length-1)?I[N+1]:I[0];var K=(N!=0)?I[N-1]:I[I.length-1];var M=(K==L)?[K]:[K,L];this.loadImages(I[N],M)}this.closed=false},showThisImage:function(D,C){if(!this.activated){this.initMilkbox()}this.mode="showThisImage";this.specialDescription=C;this.overlay.setStyles({top:-$(window).getScroll().y,height:$(window).getScrollSize().y+$(window).getScroll().y});this.center.addClass("mbLoading");this.center.setStyle("top",$(window).getScroll().y+this.options.topPosition);this.overlay.tween("opacity",this.options.overlayOpacity);this.loadImages(D);this.closed=false},showImage:function(J){if(this.closed){return }var N=this.image.getSize();this.image.setStyles({opacity:0,width:"",height:""});var K=new Hash(J.getProperties("width","height")).map(function(A,B){return A.toInt()});var M=new Hash(this.center.getStyles("width","height")).map(function(A,B){return A.toInt()});var L={};if(K.width!=M.width){L.width=K.width;L.marginLeft=-(K.width/2).round()}var I=(N.y>0)?M.height-N.y:0;var H=K.height+I;L.height=H;this.image.setStyles({width:K.width,height:K.height});this.center.removeClass("mbLoading");this.center.morph(L)},loadImages:function(G,H){var F=new Asset.image(G,{onload:function(A){this.currentImage=A;if(!this.loadedImages.contains(G)){this.loadedImages.push(G)}$$(this.description,this.navigation).setStyle("visibility","hidden");this.navigation.setStyle("height","");$$(this.next,this.prev,this.close).setStyle("backgroundPosition","0 0");this.showImage(this.currentImage)}.bindWithEvent(this)});if(H&&!this.loadedImages.contains(H)){var E=new Asset.images(H,{onComplete:function(A){H.each(function(B){if(!(this.loadedImages.contains(B))){this.loadedImages.push(B)}}.bind(this))}.bindWithEvent(this)})}},prepareEvents:function(){this.galleries.each(function(B){$$(B).addEvent("click",function(A){var D=($(A.target).match("a"))?$(A.target):$(A.target).getParent("a");A.preventDefault();if(this.options.autoPlay){this.autoPlay({gallery:B,index:B.indexOf(D)})}else{this.openMilkbox(B,B.indexOf(D))}}.bindWithEvent(this))},this);this.next.addEvent("click",this.next_prev_aux.bindWithEvent(this,"next"));this.prev.addEvent("click",this.next_prev_aux.bindWithEvent(this,"prev"));$(window.document).addEvent("keydown",function(B){if(this.mode!="imageGallery"||this.busy==true){return }if(B.key=="right"||B.key=="space"){this.next_prev_aux(B,"next")}else{if(B.key=="left"){this.next_prev_aux(B,"prev")}else{if(B.key=="esc"){this.closeMilkbox()}}}}.bindWithEvent(this));$$(this.next,this.prev,this.close).addEvents({mouseover:function(D){var C=($(D.target).match("a"))?$(D.target):$(D.target).getParent("a");C.setStyle("backgroundPosition",this.options.hoverBackgroundPosition)}.bindWithEvent(this),mouseout:function(){this.setStyle("backgroundPosition","0 0")}});this.overlay.get("tween").addEvent("onComplete",function(){if(this.overlay.getStyle("opacity")==this.options.overlayOpacity){this.center.tween("opacity",1)}else{if(this.overlay.getStyle("opacity")==0){this.overlay.setStyles({height:"",top:""})}}}.bindWithEvent(this));this.center.get("morph").addEvent("onComplete",function(){this.image.grab(this.currentImage);this.image.tween("opacity",1);var G=(!(this.mode=="showThisImage"))?this.currentGallery[this.currentIndex].retrieve("title"):this.specialDescription;if($chk(G)){this.description.innerHTML=G}if(this.mode=="imageGallery"){this.count.appendText((this.currentIndex+1)+" sur "+this.currentGallery.length)}var E=this.center.getStyle("height").toInt();this.navigation.setStyle("height",this.bottom.getStyle("height").toInt());var F=this.bottom.getSize().y;var H=(E>this.image.getSize().y)?(this.bottom.getSize().y+this.image.getSize().y)-E:F;this.bottom.setStyle("display","none");this.center.retrieve("setFinalHeight").start(E,E+H)}.bindWithEvent(this));this.center.retrieve("setFinalHeight").addEvent("onComplete",function(){this.bottom.setStyles({visibility:"visible",display:"block"});$$(this.description,this.navigation).setStyle("visibility","visible");var C=$(window).getScrollSize().y;var D=$(window).getScroll().y;this.overlay.setStyle("height",C+D);this.busy=false}.bindWithEvent(this));window.addEvent("resize",function(){if(this.overlay.getStyle("opacity")==0){return }var C=$(window).getScrollSize().y;var D=$(window).getScroll().y;this.overlay.setStyles({height:C+D,top:-D})}.bindWithEvent(this));$$(this.overlay,this.image,this.close).addEvent("click",function(){this.closeMilkbox()}.bindWithEvent(this))},next_prev_aux:function(H,I){if(H){H.preventDefault();if(this.intObj){$clear(this.intObj);this.intObj=null}}else{if(this.busy){return }}this.busy=true;var G=this.currentIndex;if(I=="next"){var F=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+=1:this.currentIndex=0;var J=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+1:0}else{var F=(this.currentIndex!=0)?this.currentIndex-=1:this.currentIndex=this.currentGallery.length-1;var J=(this.currentIndex!=0)?this.currentIndex-1:this.currentGallery.length-1}this.image.empty();this.description.empty();this.count.empty();if(!this.loadedImages.contains(this.currentGallery[F].href)){this.center.addClass("mbLoading")}this.loadImages(this.currentGallery[F].href,[this.currentGallery[J].href])},autoPlay:function(G){var H=(G&&G.gallery&&($type(G.gallery)=="array"))?G.gallery:Milkbox.galleries[0];var E=(G&&G.index&&($type(G.index)=="number"))?G.index:0;var F=(G&&G.delay&&($type(G.delay)=="number"))?G.delay*1000:this.options.autoPlayDelay*1000;if(F<this.options.resizeDuration*2){F=this.options.resizeDuration*2}Milkbox.openMilkbox(H,E);if(this.mode!="imageGallery"){return }this.intObj=this.next_prev_aux.periodical(F,this,[null,"next"])},closeMilkbox:function(){this.cancelAllEffects();if(this.intObj){$clear(this.intObj)}this.currentImage=null;this.currentIndex=null;this.currentGallery=null;$$(this.prev,this.next,this.count).setStyle("display","none");var C=this.center.getStyle("border-right-width").toInt();var D=this.close.getSize().x+C;this.navigation.setStyles({width:D,height:"",visibility:"hidden"});this.description.setStyle("margin-right",D);this.description.empty();this.bottom.setStyles({visibility:"hidden",display:""});this.image.setStyles({opacity:0,width:"",height:""});this.image.empty();this.count.empty();this.center.setStyles({opacity:0,width:this.options.initialWidth,height:this.options.initialHeight,marginLeft:-(this.options.initialWidth/2)});this.overlay.tween("opacity",0);if(this.formtags.length!=0){this.formtags.setStyle("display","inline")}this.mode=null;this.closed=true},cancelAllEffects:function(){this.overlay.get("tween").cancel();this.center.get("morph").cancel();this.center.get("tween").cancel();this.center.retrieve("setFinalHeight").cancel();this.image.get("tween").cancel()},prepareEffects:function(){this.overlay.set("tween",{duration:"short",link:"cancel"});this.center.set("tween",{duration:"short",link:"chain"});this.center.set("morph",{duration:this.options.resizeDuration,link:"chain",transition:this.options.resizeTransition});this.center.store("setFinalHeight",new Fx.Tween(this.center,{property:"height",duration:"short"}));this.image.set("tween",{link:"chain"})},prepareGalleries:function(){var C=[];var D=[];$$("a").each(function(A){if(A.rel&&A.rel.test(/^milkbox/i)&&A.href.test(/\.(gif|jpg|png)$/i)){if(A.rel.length>7&&!C.contains(A.rel)){C.push(A.rel)}D.push(A)}},this);D.each(function(A){$(A).store("href",A.href);$(A).store("rel",A.rel);$(A).store("title",A.title);if(this.options.removeTitle){$(A).removeProperty("title")}if(A.rel.length>7){C.each(function(B,F){if(A.rel==B){if(!this.galleries[F]){this.galleries[F]=[]}this.galleries[F].push($(A))}},this)}else{this.galleries.push([$(A)])}},this)},prepareHTML:function(){this.overlay=new Element("div",{id:"mbOverlay",styles:{opacity:"0",visibility:"visible"}}).inject($(document.body));this.center=new Element("div",{id:"mbCenter",styles:{width:this.options.initialWidth,height:this.options.initialHeight,marginLeft:-(this.options.initialWidth/2),opacity:0}}).inject($(document.body));this.image=new Element("div",{id:"mbImage"}).inject(this.center);this.bottom=new Element("div",{id:"mbBottom"}).inject(this.center).setStyle("visibility","hidden");this.navigation=new Element("div",{id:"mbNavigation"}).setStyle("visibility","hidden");this.description=new Element("div",{id:"mbDescription"}).setStyle("visibility","hidden");this.bottom.adopt(this.navigation,this.description,new Element("div",{"class":"clear"}));this.close=new Element("a",{id:"mbCloseLink"});this.next=new Element("a",{id:"mbNextLink"});this.prev=new Element("a",{id:"mbPrevLink"});this.count=new Element("span",{id:"mbCount"});$$(this.next,this.prev,this.count).setStyle("display","none");this.navigation.adopt(this.close,this.next,this.prev,new Element("div",{"class":"clear"}),this.count)}});window.addEvent("domready",function(){Milkbox=new Milkbox()});
