DL.Widget.LightBox=new DL.Class({initialize:function(options){this.options={id:false,element:false,duration:1000,animation:'standard',theme:'default',modal:true,appendTo:document.body};var o=this.setOptions(options);this.currentIndex=-1;this.currentImage=null;this.sizeFixed=false;this.imgSrc;this.imgId;this.next=[];this.elements={};this.animator={};this.animation=DL.Widget.LightBox.Animations[o.animation];this.create();this.setupAnimator();this.setupHandlers();this.apply()},create:function(){var o=this.options,e=this.elements,a=this.animation,theme='Theme'+DL.String.ucFirst(o.theme);e.body=DL.$C('div',{className:'Widget LightBox '+theme},e.content=DL.$C('div',{className:'Content',style:{display:'none'}},e.imagebox=DL.$C('div',{className:'ImageBox'},e.opener=DL.$C('a',{target:'_blank',href:''},e.image=DL.$C('img',{className:'Image',title:'Klicken Sie für die Originalgröße',style:{display:'none'}}))),e.navigation=DL.$C('ul',{className:'Navigation',style:{style:{cssText:a.navigation.start},display:'none'}},e.navDesc=DL.$C('li',{className:'Description'}),e.navPrev=DL.$C('li',{title:'Vorheriges Bild',className:'Prev',onclick:DL.bind(this.openSome,this,-1)}),e.navNext=DL.$C('li',{title:'Nächstes Bild',className:'Next',onclick:DL.bind(this.openSome,this,+1)}),e.navStop=DL.$C('li',{title:'Ansicht schließen',className:'Stop',onclick:DL.bind(this.close,this)}))),e.modal=DL.$C('div',{className:'Modal',style:{display:'none'},onclick:DL.bind(this.close,this)}));DL.Element.addNodes(o.appendTo,e.body)},setupHandlers:function(){var o=this.options,e=this.elements;var self=this;DL.Event.addHandlers(this.animator.content,{start:function(){if(this.state==0){self.align();DL.Element.display(e.content,'block');DL.Element.display(e.modal,'block')}},complete:function(){if(this.state==0){DL.Element.display(e.content,false);DL.Element.display(e.modal,false);self.animator.imagebox.jumpTo(0);self.animator.navigation.jumpTo(0)}}});DL.Event.addHandlers(this.animator.imagebox,{start:function(){if(this.state==1){self.animator.navigation.reverse();if(DL.Browser.isIE)DL.Element.setStyle(e.navigation,'width','0px')}else DL.Element.display(e.image,'block')},complete:function(){if(this.state==1){if(DL.Browser.isIE)DL.Element.setStyle(e.navigation,'width',e.imagebox.offsetWidth+'px');self.animator.navigation.play()}else{if(self.next)self.openNext();DL.Element.display(e.image,false)}}});DL.Event.addHandlers(this.animator.navigation,{start:function(){if(this.state==0)DL.Element.display(e.navigation,'block')},complete:function(){if(this.state==0)DL.Element.display(e.navigation,false)}});DL.Event.addHandler(window,'resize',function(){self.close()});DL.Event.addHandler(document,'keydown',DL.bind(function(event){event=event||window.event;var key=event.keyCode||event.which;if(key==27)this.close()},this));if(DL.Browser.isIE){DL.Element.setStyle(document.documentElement,'height','100%');DL.Element.setStyle(document.body,'height','100%')}},open:function(url,element){var self=this;if(this.animator.content.state==0){if(DL.Browser.isIE){var selects=DL.$TN('select',document.body);for(i=0;i3){this.elements.opener.href='/image/'+this.imgId.slice(3)+'.html'}else{this.elements.opener.href=imgSrc}this.browserHeight=window.innerHeight||window.document.documentElement.clientHeight||window.document.body.clientHeight;var width=Math.round((this.browserHeight-100)*1.33);if(width>800){this.imageSize=1000}else if(width>500){this.imageSize=700}else if(width>300){this.imageSize=400}else if(width>120){this.imageSize=250}else{this.elements.image.src=element.href;DL.Event.addHandler(this.elements.image,'load',DL.bind(function(){this.loadDone()},this));return}this.ic=new DL.XHR({url:'/cgi-bin/siteengine.pl?Content::Extern::FileExists&file='+encodeURIComponent(imgSrc.replace(/\.jpg$/g,'/'+this.imageSize+'.jpg')),onrequest:DL.bind(function(){this.timeout=DL.Function.delay(DL.bind(function(){this.ic.abort();DL.Function.clear(this.timeout);this.elements.image.src=this.imgSrc;DL.Event.addHandler(this.elements.image,'load',DL.bind(function(){this.loadDone()},this))},this),2000)},this),oncomplete:DL.bind(function(responseText){DL.Function.clear(this.timeout);this.timeout=null;if(responseText=='1'){this.elements.image.src=this.imgSrc.replace(/\.jpg$/g,'/'+this.imageSize+'.jpg')}else{this.elements.image.src=this.imgSrc}DL.Event.addHandler(this.elements.image,'load',DL.bind(function(){this.loadDone()},this))},this)});this.ic.send()},loadDone:function(){var e=this.elements;size=DL.Position.getSize(e.image);inner=DL.Browser.innerSize();while((size.height+100)>this.browserHeight){size.height=size.height-100;e.image.style.height=size.height+'px';e.image.style.width='auto'}size=DL.Position.getSize(e.image);size.left=Math.round((inner.width-size.width)/2)+inner.left;var to1=DL.String.fill("width: %width%px; height: %height%px;",size);to2=DL.String.fill("left: %left%px; top: %top%px;",size);this.animator.imagebox.clearSubjects();this.animator.imagebox.addSubject(new DL.Animator.CSSStyleSubject(e.imagebox,to1)).addSubject(new DL.Animator.CSSStyleSubject(e.content,to2));this.animator.imagebox.play()},align:function(scroll){var e=this.elements,inner=DL.Browser.innerSize(),style=DL.Position.getDimension(e.content);if(scroll)return;DL.Element.setStyles(e.content,DL.Object.suffix({left:Math.round((inner.width-style.width)/2)+inner.left,top:Math.round((style.height+100-style.height)/2)+inner.top},'px'));inner.left=inner.top=0;DL.Element.setStyle(e.modal,DL.Object.suffix(DL.Object.clone(inner),'px'))},apply:function(){var o=this.options,e=this.elements;e.thumbs=DL.$CN('ShowLightBox',o.appendTo);this.thumbs=[];for(var i=0,tn;(tn=e.thumbs[i]);i++){DL.Element.whiteSpace(tn);DL.Event.addHandler(tn,'click',DL.bind(this.doClick,this,tn,i));this.thumbs.push(tn)}},setupAnimator:function(){var e=this.elements,a=this.animation,ani=this.animator;ani.imagebox=new DL.Animator({duration:a.imagebox.duration});ani.modal=new DL.Animator({duration:a.modal.duration});ani.navigation=new DL.Animator({duration:a.navigation.duration}).addSubject(new DL.Animator.CSSStyleSubject(e.navigation,a.navigation.start,a.navigation.finish));ani.content=new DL.Animator({duration:a.content.duration||a.modal.duration}).addSubject(new DL.Animator.CSSStyleSubject(e.content,a.content.start,a.content.finish)).addSubject(new DL.Animator.CSSStyleSubject(e.modal,a.modal.start,a.modal.finish))},setNavigation:function(element,index){var e=this.elements;e.navDesc.innerHTML='';if(element.firstChild.tagName=='IMG'){e.navDesc.innerHTML=element.firstChild.alt}if(element.parentNode.tagName=='LI'&&element.parentNode.title){var dStop=element.parentNode.title.indexOf(', Tags:');if(dStop!=-1){e.navDesc.innerHTML=element.parentNode.title.slice(5,dStop)}}this.currentIndex=index;this.currentImage=element;(index<=0)?DL.Element.display(e.navPrev,false):DL.Element.display(e.navPrev,true);(index>=(this.thumbs.length-1))?DL.Element.display(e.navNext,false):DL.Element.display(e.navNext,true)},doClick:function(element,index,event){event=event||window.event;if(event)DL.Event.stop(event);this.open(element.href,element);this.setNavigation(element,index)}});DL.Widget.LightBox.implement(new DL.Class.Options);DL.Widget.LightBox.Animations={};DL.Widget.LightBox.Animations.standard={modal:{duration:120,start:"opacity: 0.0",finish:"opacity: 0.5"},content:{duration:120,start:"opacity: 0.0;",finish:"opacity: 1.0;"},imagebox:{duration:750,start:"",finish:""},navigation:{duration:250,start:"height: 0px;",finish:"height: 24px;"}};DL.ready(function(){DL.globalLightBox=new DL.Widget.LightBox});