var Lightbox=Class.create({imageArray:[],activeImage:undefined,initialize:function(c){var t=this;t.options=Object.extend({overlayOpacity:0.8,animate:true,resizeSpeed:9,borderSize:10,labelImage:"Bild",labelOf:"von",noScrollImage:true},c||{});t.maxImgWidth=document.viewport.getWidth();t.maxImgHeight=document.viewport.getHeight()-75;t.widthNew=-1;t.heightNew=-1;t.imageArray=[];if(t.options.images){t.initImages(t.options.images)}else{t.updateImageList()}t.keyboardAction=t.keyboardAction.bindAsEventListener(t);if(t.options.resizeSpeed>10)t.options.resizeSpeed=10;if(t.options.resizeSpeed<1)t.options.resizeSpeed=1;t.resizeDuration=t.options.animate?((11-t.options.resizeSpeed)*0.15):0;t.overlayDuration=t.options.animate?0.2:0;var d=(t.options.animate?250:1)+'px';if($('overlay')==null&&$('lightbox')==null){var e=$$('body')[0];e.appendChild(Builder.node('div',{id:'overlay'}));e.appendChild(Builder.node('div',{id:'lightbox'},[Builder.node('div',{id:'outerImageContainer'},Builder.node('div',{id:'imageContainer'},[Builder.node('img',{id:'lightboxImage'}),Builder.node('div',{id:'hoverNav'},[Builder.node('a',{id:'prevLink',href:'#'}),Builder.node('a',{id:'nextLink',href:'#'})]),Builder.node('div',{id:'loading'},Builder.node('a',{id:'loadingLink',href:'#'}))])),Builder.node('div',{id:'imageDataContainer'},Builder.node('div',{id:'imageData'},[Builder.node('div',{id:'imageDetails'},[Builder.node('span',{id:'caption'}),Builder.node('span',{id:'numberDisplay'})]),Builder.node('div',{id:'bottomNav'},Builder.node('a',{id:'bottomNavClose',href:'#'}))]))]));$('overlay').hide().observe('click',(function(){t.end()}).bind(t));$('lightbox').hide().observe('click',(function(a){if(a.element().id=='lightbox')t.end()}).bind(t));$('outerImageContainer').setStyle({width:d,height:d});$('loadingLink').observe('click',(function(a){a.stop();t.end()}).bind(t));$('bottomNavClose').observe('click',(function(a){a.stop();t.end()}).bind(t))}(function(){var b='overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink '+'imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose';$w(b).each(function(a){t[a]=$(a)})}).defer()},updateImageList:function(){this.updateImageList=Prototype.emptyFunction;document.observe('click',(function(a){var b=a.findElement('a[rel^=lightbox]')||a.findElement('area[rel^=lightbox]');if(b){a.stop();this.start(b)}}).bind(this))},initStart:function(b){$$('select','object','embed').each(function(a){a.style.visibility='hidden'});$('prevLink').stopObserving();$('nextLink').stopObserving();$('prevLink').observe('click',(function(a){a.stop();this.changeImage(this.activeImage-1)}).bindAsEventListener(this));$('nextLink').observe('click',(function(a){a.stop();this.changeImage(this.activeImage+1)}).bindAsEventListener(this));var c=this.getPageSize();this.overlay.setStyle({width:c[0]+'px',height:c[1]+'px'});new Effect.Appear(this.overlay,{duration:this.overlayDuration,from:0.0,to:this.options.overlayOpacity});var d=document.viewport.getScrollOffsets();var e=d[1]+(document.viewport.getHeight()/10);var f=d[0];this.lightbox.setStyle({top:e+'px',left:f+'px'}).show();this.changeImage(b)},start:function(b){this.imageArray=[];var c=0;if((b.rel=='lightbox')){this.imageArray.push([b.href,b.title])}else{this.imageArray=$$(b.tagName+'[href][rel="'+b.rel+'"]').collect(function(a){return[a.href,a.title]}).uniq();while(this.imageArray[c][0]!=b.href){c++}}this.initStart(c)},changeImage:function(a){this.activeImage=a;if(this.options.animate)this.loading.show();this.lightboxImage.hide();this.hoverNav.hide();this.prevLink.hide();this.nextLink.hide();this.imageDataContainer.setStyle({opacity:.0001});this.numberDisplay.hide();var b=new Image();b.onload=(function(){this.lightboxImage.src=this.imageArray[this.activeImage][0];this.resizeImageContainer(b.width,b.height)}).bind(this);b.src=this.imageArray[this.activeImage][0]},resizeImageContainer:function(a,b){var t=this;var c=t.outerImageContainer.getWidth();var d=t.outerImageContainer.getHeight();if(t.options.noScrollImage==true){if(t.maxImgHeight<b){a=Math.round(a*t.maxImgHeight/b);b=t.maxImgHeight;t.lightboxImage.width=a;t.lightboxImage.height=b;t.lightboxImage.setStyle({width:a+'px',height:b+'px'});var s=document.viewport.getScrollOffsets();t.lightbox.setStyle({top:Math.round(s.top+5)+'px'})}else{t.lightboxImage.writeAttribute({'width':'','height':''}).setStyle({'width':'','height':''})}}t.widthNew=(a+t.options.borderSize*2);t.heightNew=(b+t.options.borderSize*2);var e=(t.widthNew/c)*100;var f=(t.heightNew/d)*100;var g=c-t.widthNew;var h=d-t.heightNew;if(h!=0)new Effect.Scale(t.outerImageContainer,f,{scaleX:false,duration:t.resizeDuration,queue:'front'});if(g!=0)new Effect.Scale(t.outerImageContainer,e,{scaleY:false,duration:t.resizeDuration,delay:t.resizeDuration});var i=0;if((h==0)&&(g==0)){i=100;if(Prototype.Browser.IE)i=250}(function(){t.prevLink.setStyle({height:b+'px'});t.nextLink.setStyle({height:b+'px'});t.imageDataContainer.setStyle({width:t.widthNew+'px'});t.showImage()}).bind(t).delay(i/1000)},showImage:function(){this.loading.hide();new Effect.Appear(this.lightboxImage,{duration:this.resizeDuration,queue:'end',afterFinish:(function(){this.updateDetails()}).bind(this)});this.preloadNeighborImages()},updateDetails:function(){if(this.imageArray[this.activeImage][1]!=""){this.caption.update(this.imageArray[this.activeImage][1]).show()}if(this.imageArray.length>1){this.numberDisplay.update(this.options.labelImage+' '+(this.activeImage+1)+' '+this.options.labelOf+'  '+this.imageArray.length).show()}new Effect.Parallel([new Effect.SlideDown(this.imageDataContainer,{sync:true,duration:this.resizeDuration,from:0.0,to:1.0}),new Effect.Appear(this.imageDataContainer,{sync:true,duration:this.resizeDuration})],{duration:this.resizeDuration,afterFinish:(function(){var a=this.getPageSize();this.overlay.setStyle({height:a[1]+'px'});this.updateNav()}).bind(this)})},updateNav:function(){this.hoverNav.show();if(this.activeImage>0)this.prevLink.show();if(this.activeImage<(this.imageArray.length-1))this.nextLink.show();this.enableKeyboardNav()},enableKeyboardNav:function(){document.observe('keydown',this.keyboardAction)},disableKeyboardNav:function(){document.stopObserving('keydown',this.keyboardAction)},keyboardAction:function(a){var b=a.keyCode;var c;if(a.DOM_VK_ESCAPE){c=a.DOM_VK_ESCAPE}else{c=27}var d=String.fromCharCode(b).toLowerCase();if(d.match(/x|o|c/)||(b==c)){this.end()}else if((d=='p')||(b==37)){if(this.activeImage!=0){this.disableKeyboardNav();this.changeImage(this.activeImage-1)}}else if((d=='n')||(b==39)){if(this.activeImage!=(this.imageArray.length-1)){this.disableKeyboardNav();this.changeImage(this.activeImage+1)}}},preloadNeighborImages:function(){var a,preloadPrevImage;if(this.imageArray.length>this.activeImage+1){a=new Image();a.src=this.imageArray[this.activeImage+1][0]}if(this.activeImage>0){preloadPrevImage=new Image();preloadPrevImage.src=this.imageArray[this.activeImage-1][0]}},end:function(){this.disableKeyboardNav();this.lightbox.hide();new Effect.Fade(this.overlay,{duration:this.overlayDuration});$$('select','object','embed').each(function(a){a.style.visibility='visible'})},getPageSize:function(){var a,yScroll;if(window.innerHeight&&window.scrollMaxY){a=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY}else if(document.body.scrollHeight>document.body.offsetHeight){a=document.body.scrollWidth;yScroll=document.body.scrollHeight}else{a=document.body.offsetWidth;yScroll=document.body.offsetHeight}var b,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){b=document.documentElement.clientWidth}else{b=self.innerWidth}windowHeight=self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){b=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}else if(document.body){b=document.body.clientWidth;windowHeight=document.body.clientHeight}if(yScroll<windowHeight){pageHeight=windowHeight}else{pageHeight=yScroll}if(a<b){pageWidth=a}else{pageWidth=b}return[pageWidth,pageHeight]},initImages:function(a){a.each(function(s){this.imageArray.push([s.imagepath,s.title])}.bind(this))},sgstart:function(a){this.initStart(a)}});document.observe('dom:loaded',function(){var lb=new Lightbox()});
