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(a){this.setOptions(a);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(b,d){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=b;this.currentIndex=d;this.overlay.tween("opacity",this.options.overlayOpacity);if(b.length==1){this.mode="singleImage";this.loadImages(b[d].href)}else{this.mode="imageGallery";var a=b.map(function(i){return i.href});$$(this.prev,this.next,this.count).setStyles({display:"block"});var c=this.center.getStyle("border-right-width").toInt();var h=this.prev.getSize().x+this.next.getSize().x+this.close.getSize().x+c;this.navigation.setStyle("width",h);this.description.setStyle("margin-right",h);var f=(d!=a.length-1)?a[d+1]:a[0];var g=(d!=0)?a[d-1]:a[a.length-1];var e=(g==f)?[g]:[g,f];this.loadImages(a[d],e)}this.closed=false},showThisImage:function(b,a){if(!this.activated){this.initMilkbox()}this.mode="showThisImage";this.specialDescription=a;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(b);this.closed=false},showImage:function(f){if(this.closed){return}var b=this.image.getSize();this.image.setStyles({opacity:0,width:"",height:""});var e=new Hash(f.getProperties("width","height")).map(function(i,h){return i.toInt()});var c=new Hash(this.center.getStyles("width","height")).map(function(i,h){return i.toInt()});var d={};if(e.width!=c.width){d.width=e.width;d.marginLeft=-(e.width/2).round()}var g=(b.y>0)?c.height-b.y:0;var a=e.height+g;d.height=a;this.image.setStyles({width:e.width,height:e.height});this.center.removeClass("mbLoading");this.center.morph(d)},loadImages:function(c,b){var d=new Asset.image(c,{onload:function(e){this.currentImage=e;if(!this.loadedImages.contains(c)){this.loadedImages.push(c)}$$(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(b&&!this.loadedImages.contains(b)){var a=new Asset.images(b,{onComplete:function(e){b.each(function(f){if(!(this.loadedImages.contains(f))){this.loadedImages.push(f)}}.bind(this))}.bindWithEvent(this)})}},prepareEvents:function(){this.galleries.each(function(a){$$(a).addEvent("click",function(c){var b=($(c.target).match("a"))?$(c.target):$(c.target).getParent("a");c.preventDefault();if(this.options.autoPlay){this.autoPlay({gallery:a,index:a.indexOf(b)})}else{this.openMilkbox(a,a.indexOf(b))}}.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(a){if(this.mode!="imageGallery"||this.busy==true){return}if(a.key=="right"||a.key=="space"){this.next_prev_aux(a,"next")}else{if(a.key=="left"){this.next_prev_aux(a,"prev")}else{if(a.key=="esc"){this.closeMilkbox()}}}}.bindWithEvent(this));$$(this.next,this.prev,this.close).addEvents({mouseover:function(b){var a=($(b.target).match("a"))?$(b.target):$(b.target).getParent("a");a.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 c=(!(this.mode=="showThisImage"))?this.currentGallery[this.currentIndex].retrieve("title"):this.specialDescription;if($chk(c)){this.description.innerHTML=c}if(this.mode=="imageGallery"){this.count.appendText((this.currentIndex+1)+" of "+this.currentGallery.length)}var a=this.center.getStyle("height").toInt();this.navigation.setStyle("height",this.bottom.getStyle("height").toInt());var e=this.bottom.getSize().y;var b=(a>this.image.getSize().y)?(this.bottom.getSize().y+this.image.getSize().y)-a:e;this.bottom.setStyle("display","none");this.center.retrieve("setFinalHeight").start(a,a+b)}.bindWithEvent(this));this.center.retrieve("setFinalHeight").addEvent("onComplete",function(){this.bottom.setStyles({visibility:"visible",display:"block"});$$(this.description,this.navigation).setStyle("visibility","visible");var a=$(window).getScrollSize().y;var b=$(window).getScroll().y;this.overlay.setStyle("height",a+b);this.busy=false}.bindWithEvent(this));window.addEvent("resize",function(){if(this.overlay.getStyle("opacity")==0){return}var a=$(window).getScrollSize().y;var b=$(window).getScroll().y;this.overlay.setStyles({height:a+b,top:-b})}.bindWithEvent(this));$$(this.overlay,this.image,this.close).addEvent("click",function(){this.closeMilkbox()}.bindWithEvent(this))},next_prev_aux:function(d,c){if(d){d.preventDefault();if(this.intObj){$clear(this.intObj);this.intObj=null}}else{if(this.busy){return}}this.busy=true;var f=this.currentIndex;if(c=="next"){var a=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+=1:this.currentIndex=0;var b=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+1:0}else{var a=(this.currentIndex!=0)?this.currentIndex-=1:this.currentIndex=this.currentGallery.length-1;var b=(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[a].href)){this.center.addClass("mbLoading")}this.loadImages(this.currentGallery[a].href,[this.currentGallery[b].href])},autoPlay:function(c){var b=(c&&c.gallery&&($type(c.gallery)=="array"))?c.gallery:Milkbox.galleries[0];var a=(c&&c.index&&($type(c.index)=="number"))?c.index:0;var e=(c&&c.delay&&($type(c.delay)=="number"))?c.delay*1000:this.options.autoPlayDelay*1000;if(e<this.options.resizeDuration*2){e=this.options.resizeDuration*2}Milkbox.openMilkbox(b,a);if(this.mode!="imageGallery"){return}this.intObj=this.next_prev_aux.periodical(e,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 a=this.center.getStyle("border-right-width").toInt();var b=this.close.getSize().x+a;this.navigation.setStyles({width:b,height:"",visibility:"hidden"});this.description.setStyle("margin-right",b);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 a=[];var b=[];$$("a").each(function(c){if(c.rel&&c.rel.test(/^milkbox/i)){if(c.rel.length>7&&!a.contains(c.rel)){a.push(c.rel)}b.push(c)}},this);b.each(function(c){$(c).store("href",c.href);$(c).store("rel",c.rel);$(c).store("title",c.title);if(this.options.removeTitle){$(c).removeProperty("title")}if(c.rel.length>7){a.each(function(e,d){if(c.rel==e){if(!this.galleries[d]){this.galleries[d]=[]}this.galleries[d].push($(c))}},this)}else{this.galleries.push([$(c)])}},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()});