/*  Prototype JavaScript framework
/*--------------------------------------------------------------------------*/
var Class = {create: function() {return function() {this.initialize.apply(this, arguments);}}};Object.extend = function(destination, source) {for (property in source) destination[property] = source[property];return destination;};Function.prototype.bind = function(object) {var __method = this;return function() {return __method.apply(object, arguments);}};Function.prototype.bindAsEventListener = function(object) {var __method = this;return function(event) {__method.call(object, event || window.event);}};function $() {if (arguments.length == 1) return get$(arguments[0]);var elements = [];$c(arguments).each(function(el){elements.push(get$(el));});return elements;function get$(el){if (typeof el == 'string') el = document.getElementById(el);return el;}};if (!window.Element) var Element = new Object();Object.extend(Element, {remove: function(element) {element = $(element);element.parentNode.removeChild(element);},hasClassName: function(element, className) {element = $(element);if (!element) return;var hasClass = false;element.className.split(' ').each(function(cn){if (cn == className) hasClass = true;});return hasClass;},addClassName: function(element, className) {element = $(element);Element.removeClassName(element, className);element.className += ' ' + className;},removeClassName: function(element, className) {element = $(element);if (!element) return;var newClassName = '';element.className.split(' ').each(function(cn, i){if (cn != className){if (i > 0) newClassName += ' ';newClassName += cn;}});element.className = newClassName;},cleanWhitespace: function(element) {element = $(element);$c(element.childNodes).each(function(node){if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node);});},find: function(element, what) {element = $(element)[what];while (element.nodeType != 1) element = element[what];return element;}});var Position = {cumulativeOffset: function(element) {var valueT = 0, valueL = 0;do {valueT += element.offsetTop  || 0;valueL += element.offsetLeft || 0;element = element.offsetParent;} while (element);return [valueL, valueT];}};document.getElementsByClassName = function(className) {var children = document.getElementsByTagName('*') || document.all;var elements = [];$c(children).each(function(child){if (Element.hasClassName(child, className)) elements.push(child);});return elements;};Array.prototype.iterate = function(func){for(var i=0;i<this.length;i++) func(this[i], i);};if (!Array.prototype.each) Array.prototype.each = Array.prototype.iterate;function $c(array){var nArray = [];for (var i=0;i<array.length;i++) nArray.push(array[i]);return nArray;}
/*  moo.fx, simple effects library built with prototype.js */
var fx = new Object();fx.Base = function(){};fx.Base.prototype = {setOptions: function(options) {this.options = {duration: 500,onComplete: '',transition: fx.sinoidal};Object.extend(this.options, options || {});},step: function() {var time  = (new Date).getTime();if (time >= this.options.duration+this.startTime) {this.now = this.to;clearInterval (this.timer);this.timer = null;if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10);}else {var Tpos = (time - this.startTime) / (this.options.duration);this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from;}this.increase();},custom: function(from, to) {if (this.timer != null) return;this.from = from;this.to = to;this.startTime = (new Date).getTime();this.timer = setInterval (this.step.bind(this), 13);},hide: function() {this.now = 0;this.increase();},clearTimer: function() {clearInterval(this.timer);this.timer = null;}};fx.Layout = Class.create();fx.Layout.prototype = Object.extend(new fx.Base(), {initialize: function(el, options) {this.el = $(el);this.el.style.overflow = "hidden";this.iniWidth = this.el.offsetWidth;this.iniHeight = this.el.offsetHeight;this.setOptions(options);}});fx.Height = Class.create();Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), {increase: function() {this.el.style.height = this.now + "px";},toggle: function() {if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0);else this.custom(0, this.el.scrollHeight);}});fx.Width = Class.create();Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), {increase: function() {this.el.style.width = this.now + "px";},toggle: function(){if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0);else this.custom(0, this.iniWidth);}});fx.Opacity = Class.create();fx.Opacity.prototype = Object.extend(new fx.Base(), {initialize: function(el, options) {this.el = $(el);this.now = 1;this.increase();this.setOptions(options);},increase: function() {if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999;this.setOpacity(this.now);},setOpacity: function(opacity) {if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden";else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible";if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")";this.el.style.opacity = opacity;},toggle: function() {if (this.now > 0) this.custom(1, 0);else this.custom(0, 1);}});fx.sinoidal = function(pos){return ((-Math.cos(pos*Math.PI)/2) + 0.5);};fx.linear = function(pos){return pos;};fx.cubic = function(pos){return Math.pow(pos, 3);};fx.circ = function(pos){return Math.sqrt(pos);}

//        BRainbox v1.3 - 28/02/2010
//        For more information on this script, visit: http://www.the-netbrain.de/brainbox.htm
//        Licensed under the Creative Commons Attribution 3.0 License - http://creativecommons.org/licenses/by-sa/3.0/de/
//
//        This Script based on Litebox - http://www.doknowevil.net/litebox/
// -----------------------------------------------------------------------------------
var fileLoadingImage = "./grafix/brainbox/loading.gif"; var fileBottomNavCloseImage = "./grafix/brainbox/closelabel.png"; var resizeSpeed = 5; var borderSize = 2; var imageArray = new Array; var activeImage; if (resizeSpeed > 10) { resizeSpeed = 10; } if (resizeSpeed < 1) { resizeSpeed = 1; } resizeDuration = (11 - resizeSpeed) * 100; Object.extend(Element, { hide: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = 'none'; } }, show: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = ''; } }, getWidth: function(element) { element = $(element); return element.offsetWidth; }, setWidth: function(element, w) { element = $(element); element.style.width = w + "px"; }, getHeight: function(element) { element = $(element); return element.offsetHeight; }, setHeight: function(element, h) { element = $(element); element.style.height = h + "px"; }, setTop: function(element, t) { element = $(element); element.style.top = 80 + "px"; }, setSrc: function(element, src) { element = $(element); element.src = src; }, setInnerHTML: function(element, content) { element = $(element); element.innerHTML = content; } }); Array.prototype.removeDuplicates = function() { for (i = 1; i < this.length; i++) { if (this[i][0] == this[i - 1][0]) { this.splice(i, 1); } } }; Array.prototype.empty = function() { for (i = 0; i <= this.length; i++) { this.shift(); } }; var Lightbox = Class.create();Lightbox.prototype = { initialize: function() { if (!document.getElementsByTagName) { return; } var anchors = document.getElementsByTagName('a'); for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; var relAttribute = String(anchor.getAttribute('rel')); if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))) { anchor.onclick = function() { myLightbox.start(this); return false; } } } var objBody = document.getElementsByTagName("body").item(0); var objOverlay = document.createElement("div"); objOverlay.setAttribute('id', 'overlay'); objOverlay.onclick = function() { myLightbox.end(); return false; }; objBody.appendChild(objOverlay); var objLightbox = document.createElement("div"); objLightbox.setAttribute('id', 'lightbox'); objLightbox.style.display = 'none'; objBody.appendChild(objLightbox); var objOuterImageContainer = document.createElement("div"); objOuterImageContainer.setAttribute('id', 'outerImageContainer'); objLightbox.appendChild(objOuterImageContainer); var objImageContainer = document.createElement("div"); objImageContainer.setAttribute('id', 'imageContainer'); objOuterImageContainer.appendChild(objImageContainer); var objLightboxImage = document.createElement("img"); objLightboxImage.setAttribute('id', 'lightboxImage'); objImageContainer.appendChild(objLightboxImage); var objHoverNav = document.createElement("div"); objHoverNav.setAttribute('id', 'hoverNav'); objImageContainer.appendChild(objHoverNav); var objPrevLink = document.createElement("a"); objPrevLink.setAttribute('id', 'prevLink'); objPrevLink.setAttribute('href', '#'); objHoverNav.appendChild(objPrevLink); var objNextLink = document.createElement("a"); objNextLink.setAttribute('id', 'nextLink'); objNextLink.setAttribute('href', '#'); objHoverNav.appendChild(objNextLink); var objLoading = document.createElement("div"); objLoading.setAttribute('id', 'loading'); objImageContainer.appendChild(objLoading); var objLoadingLink = document.createElement("a"); objLoadingLink.setAttribute('id', 'loadingLink'); objLoadingLink.setAttribute('href', '#'); objLoadingLink.onclick = function() { myLightbox.end(); return false; }; objLoading.appendChild(objLoadingLink); var objLoadingImage = document.createElement("img"); objLoadingImage.setAttribute('src', fileLoadingImage); objLoadingLink.appendChild(objLoadingImage); var objImageDataContainer = document.createElement("div"); objImageDataContainer.setAttribute('id', 'imageDataContainer'); objImageDataContainer.className = 'clearfix'; objLightbox.appendChild(objImageDataContainer); var objImageData = document.createElement("div"); objImageData.setAttribute('id', 'imageData'); objImageDataContainer.appendChild(objImageData); var objImageDetails = document.createElement("div"); objImageDetails.setAttribute('id', 'imageDetails'); objImageData.appendChild(objImageDetails); var objCaption = document.createElement("span"); objCaption.setAttribute('id', 'caption'); objImageDetails.appendChild(objCaption); var objNumberDisplay = document.createElement("span"); objNumberDisplay.setAttribute('id', 'numberDisplay'); objImageDetails.appendChild(objNumberDisplay); var objBottomNav = document.createElement("div"); objBottomNav.setAttribute('id', 'bottomNav'); objImageData.appendChild(objBottomNav); var objBottomNavCloseLink = document.createElement("a"); objBottomNavCloseLink.setAttribute('id', 'bottomNavClose'); objBottomNavCloseLink.setAttribute('href', '#'); objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }; objBottomNav.appendChild(objBottomNavCloseLink); var objBottomNavCloseImage = document.createElement("img"); objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage); objBottomNavCloseLink.appendChild(objBottomNavCloseImage); overlayEffect = new fx.Opacity(objOverlay, { duration: 300 }); overlayEffect.hide(); imageEffect = new fx.Opacity(objLightboxImage, { duration: 350, onComplete: function() { imageDetailsEffect.custom(0, 1); } }); imageEffect.hide(); imageDetailsEffect = new fx.Opacity('imageDataContainer', { duration: 400, onComplete: function() { navEffect.custom(0, 1); } }); imageDetailsEffect.hide(); navEffect = new fx.Opacity('hoverNav', { duratio: 100 }); navEffect.hide(); }, start: function(imageLink) { hideSelectBoxes(); var arrayPageSize = getPageSize(); Element.setHeight('overlay', arrayPageSize[1]); overlayEffect.custom(0, 0.8); imageArray = []; imageNum = 0; if (!document.getElementsByTagName) { return; } var anchors = document.getElementsByTagName('a'); if ((imageLink.getAttribute('rel') == 'lightbox')) { imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'))); } else { for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) { imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'))); } } imageArray.removeDuplicates(); while (imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++; } } var arrayPageSize = getPageSize(); var arrayPageScroll = getPageScroll(); var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 15); Element.setTop('lightbox', lightboxTop); Element.show('lightbox'); this.changeImage(imageNum); }, changeImage: function(imageNum) { activeImage = imageNum; Element.show('loading'); imageDetailsEffect.hide(); imageEffect.hide(); navEffect.hide(); Element.hide('prevLink'); Element.hide('nextLink'); Element.hide('numberDisplay'); imgPreloader = new Image(); imgPreloader.onload = function() { Element.setSrc('lightboxImage', imageArray[activeImage][0]); myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height); }; imgPreloader.src = imageArray[activeImage][0]; }, resizeImageContainer: function(imgWidth, imgHeight) { this.wCur = Element.getWidth('outerImageContainer'); this.hCur = Element.getHeight('outerImageContainer'); wDiff = (this.wCur - borderSize * 2) - imgWidth; hDiff = (this.hCur - borderSize * 2) - imgHeight; reHeight = new fx.Height('outerImageContainer', { duration: resizeDuration }); reHeight.custom(Element.getHeight('outerImageContainer'), imgHeight + (borderSize * 2)); reWidth = new fx.Width('outerImageContainer', { duration: resizeDuration, onComplete: function() { imageEffect.custom(0, 1); } }); reWidth.custom(Element.getWidth('outerImageContainer'), imgWidth + (borderSize * 2)); if ((hDiff == 0) && (wDiff == 0)) { if (navigator.appVersion.indexOf("MSIE") != -1) { pause(250); } else { pause(100); } } Element.setHeight('prevLink', imgHeight); Element.setHeight('nextLink', imgHeight); Element.setWidth('imageDataContainer', imgWidth + (borderSize * 2)); Element.setWidth('hoverNav', imgWidth + (borderSize * 2)); this.showImage(); }, showImage: function() { Element.hide('loading'); myLightbox.updateDetails(); this.preloadNeighborImages(); }, updateDetails: function() { Element.show('caption'); Element.setInnerHTML('caption', imageArray[activeImage][1]); if (imageArray.length > 1) { Element.show('numberDisplay'); Element.setInnerHTML('numberDisplay', "Bild " + eval(activeImage + 1) + " von " + imageArray.length); } myLightbox.updateNav(); }, updateNav: function() { if (activeImage != 0) { Element.show('prevLink'); document.getElementById('prevLink').onclick = function() { myLightbox.changeImage(activeImage - 1); return false; } } if (activeImage != (imageArray.length - 1)) { Element.show('nextLink'); document.getElementById('nextLink').onclick = function() { myLightbox.changeImage(activeImage + 1); return false; } } this.enableKeyboardNav(); }, enableKeyboardNav: function() { document.onkeydown = this.keyboardAction; }, disableKeyboardNav: function() { document.onkeydown = ''; }, keyboardAction: function(e) { return; if (e == null) { } else { keycode = e.which; } key = String.fromCharCode(keycode).toLowerCase(); if ((key == 'x') || (key == 'o') || (key == 'c')) { myLightbox.end(); } else if (key == 'p') { if (activeImage != 0) { myLightbox.disableKeyboardNav(); myLightbox.changeImage(activeImage - 1); } } else if (key == 'n') { if (activeImage != (imageArray.length - 1)) { myLightbox.disableKeyboardNav(); myLightbox.changeImage(activeImage + 1); } } }, preloadNeighborImages: function() { if ((imageArray.length - 1) > activeImage) { preloadNextImage = new Image(); preloadNextImage.src = imageArray[activeImage + 1][0]; } if (activeImage > 0) { preloadPrevImage = new Image(); preloadPrevImage.src = imageArray[activeImage - 1][0]; } }, end: function() { this.disableKeyboardNav(); Element.hide('lightbox'); imageEffect.toggle(); overlayEffect.custom(0.8, 0); showSelectBoxes(); } };  function getPageScroll() { var yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) { yScroll = document.documentElement.scrollTop; } else if (document.body) { yScroll = document.body.scrollTop; }; arrayPageScroll = new Array('', yScroll); return arrayPageScroll; }; function getPageSize() { var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = document.body.scrollWidth; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight) { xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } var windowWidth, windowHeight; if (self.innerHeight) { windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { }; if (yScroll < windowHeight) { pageHeight = windowHeight; } else { pageHeight = yScroll; } if (xScroll < windowWidth) { pageWidth = windowWidth; } else { pageWidth = xScroll; } arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight); return arrayPageSize; } function getKey(e) { if (e == null) { } else { } } function listenKey() { document.onkeypress = getKey; } function showSelectBoxes() { selects = document.getElementsByTagName("select"); for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "visible"; } } function hideSelectBoxes() { selects = document.getElementsByTagName("select"); for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "hidden"; } } function pause(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } function initLightbox() { myLightbox = new Lightbox(); }; window.onload = function() { initLightbox() }
