var Popup=new Class({Implements:[Options,Events],options:{debug:false,width:400,height:300},initialize:function(a){this.setOptions(a)},TitleText:"Unnamed window",Size:function(b,a){this.ContentFx.start({width:b,height:a})},Show:function(){this.WrapElement.inject($(document.body));this.WrapElement.fade("in")},Hide:function(){this.WrapElement.fade("out");(function(){this.WrapElement.dispose()}).bind(this).delay(500)},Render:function(){this.WrapElement=new Element("div",{"class":"lightbox-popup",styles:{opacity:0}});this.TitleElement=new Element("div",{"class":"title",html:this.TitleText}).inject(this.WrapElement);this.CloseElement=new Element("div",{"class":"close",html:"Close Window",events:{click:this.Hide.bind(this)}}).inject(this.WrapElement);this.ContentElement=new Element("div",{"class":"content",styles:{width:this.options.width,height:this.options.height}}).inject(this.WrapElement);this.WrapFx=new Fx.Morph(this.WrapElement,{duration:500,link:"cancel",transition:Fx.Transitions.Quad.easeInOut});this.ContentFx=new Fx.Morph(this.ContentElement,{duration:750})},Draggable:function(){this.myDrag=this.WrapElement.makeDraggable({handle:this.TitleElement,limit:{x:[0,($(document.body).getSize().x-this.WrapElement.getSize().x)],y:[0,$(document.body).getScrollSize().y-this.WrapElement.getSize().y]},onStart:function(){$$("iframe").setStyle("visibility","hidden")},onComplete:function(){$$("iframe").setStyle("visibility","visible")}})}});var Lightbox=new Class({Extends:Popup,initialize:function(a){this.parent(a);this.Render();this.RenderControllers();$(document.body).addEvent("click",function(b){if(this.WrapElement&&!b.target||!$(b.target).getParents().contains(this.WrapElement)){this.ZoomOut()}}.bind(this));this.CloseElement.removeEvents("click");this.CloseElement.addEvent("click",this.ZoomOut.bind(this))},Images:[],CurrentImage:null,FxInProgress:false,RenderControllers:function(){this.PrevElement=new Element("a",{"class":"arrow prev",events:{click:this.LoadPrev.bind(this),mouseenter:(function(){this.PrevElement.fade("1")}).bind(this),mouseleave:(function(){this.PrevElement.fade("0.01")}).bind(this)},styles:{opacity:0.01}});this.NextElement=new Element("a",{"class":"arrow next",events:{click:this.LoadNext.bind(this),mouseenter:(function(){this.NextElement.fade("1")}).bind(this),mouseleave:(function(){this.NextElement.fade("0.01")}).bind(this)},styles:{opacity:0.01}});this.PrevElement.inject(this.WrapElement);this.NextElement.inject(this.WrapElement)},LoadNext:function(){var a=this.Images.indexOf(this.CurrentImage);if((a+1)<=this.Images.length){this.PreloadImage(this.Images[a+1],"fade")}},LoadPrev:function(){var a=this.Images.indexOf(this.CurrentImage);if((a-1)>=0){this.PreloadImage(this.Images[a-1],"fade")}},addImage:function(a){this.Images.include(a);this.attachEvents(a)},attachEvents:function(a){a.addEvent("click",function(b){b.stop();this.PreloadImage(a)}.bind(this))},PreloadImage:function(f,d){var a=f.getCoordinates();var b=new Element("div",{"class":"lightbox-preloader",styles:{opacity:0,top:a.top,left:a.left,width:a.width,height:a.height}});var e=new Element("div",{"class":"preloader-big",styles:{opacity:0}});b.inject($(document.body));b.fade("0.5");e.inject(this.WrapElement);e.fade("0.75");this.CurrentImage=f;var c=new Asset.image(f.get("href"),{id:"myImage",title:f.get("title"),onload:(function(g){this.TitleElement.set("html",f.get("title"));if(d=="fade"){this.FadeIn(f,g)}else{this.ZoomIn(f,g)}b.fade("0");e.fade("0");(function(){b.destroy();e.destroy()}).bind(this).delay(500)}).bind(this)})},ZoomIn:function(a,d){if(this.WrapElement.getParent()==null){this.WrapElement.inject($(document.body))}else{this.WrapFx.start({opactity:0})}var i=a.getCoordinates();var e=window.getSize();var h=window.getScroll();this.insertImage(d.get("src"));var c=d.get("width");var b=d.get("height");d.setStyles({width:"100%",height:"100%"});var f=((e.y-b)/2)+h.y;var g=((e.x-c)/2)+h.x;if(!Browser.Engine.trident){this.WrapElement.setStyles({opacity:0,left:i.left,top:i.top,width:i.width,height:i.height});this.WrapFx.start({opacity:[0,1],top:[i.top,f],left:[i.left,g],width:[i.width,c],height:[i.height,b]})}else{this.WrapElement.setStyles({opacity:1,left:g,top:f,width:c,height:b})}},ZoomOut:function(){if(this.CurrentImage){var a=this.CurrentImage.getCoordinates();if(!Browser.Engine.trident){this.WrapFx.start({opacity:0,top:a.top,left:a.left,width:a.width,height:a.height})}else{this.WrapElement.setStyles({opacity:0,top:a.top,left:a.left,width:a.width,height:a.height})}this.CurrentImage=null;(function(){this.WrapElement.dispose()}).bind(this).delay(500)}},FadeIn:function(a,d){var i=a.getCoordinates();var e=window.getSize();var h=window.getScroll();var c=d.get("width");var b=d.get("height");var f=((e.y-b)/2)+h.y;var g=((e.x-c)/2)+h.x;this.WrapFx.start({top:f,left:g,width:c,height:b});this.insertImage(d.get("src"))},insertImage:function(b){var a=this.ContentElement.getElements(".image");a.fade("out");var c=new Element("div",{"class":"image",styles:{opacity:0,"background-image":"url("+b+")"}}).inject(this.ContentElement);c.fade("in");(function(){a.destroy()}).delay(500)}});

window.addEvent('domready', function(){
	
	var lightpop = new Lightbox({ width: 300, height: 400 });
	$$('a[rel=lightbox]').each(function(image){
		lightpop.addImage(image);;
	});
	
});