// ----------------------------------------------------------------------------------- 
// 
//  Lightbox v2.03.3 
//  by Lokesh Dhakar - http://www.huddletogether.com 
//  5/21/06 
// 
//  For more information on this script, visit: 
//  http://huddletogether.com/projects/lightbox2/ 
// 
//  Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/ 
//  
//  Credit also due to those who have helped, inspired, and made their code available to the public. 
//  Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), Thomas Fuchs(mir.aculo.us), and others. 
// 
// 
// ----------------------------------------------------------------------------------- 
/* 
 
    Table of Contents 
    ----------------- 
    Configuration 
    Global Variables 
 
    Extending Built-in Objects  
    - Object.extend(Element) 
    - Array.prototype.removeDuplicates() 
    - Array.prototype.empty() 
 
    Lightbox Class Declaration 
    - initialize() 
    - updateImageList() 
    - start() 
    - changeImage() 
    - resizeImageContainer() 
    - showImage() 
    - updateDetails() 
    - updateNav() 
    - enableKeyboardNav() 
    - disableKeyboardNav() 
    - keyboardAction() 
    - preloadNeighborImages() 
    - end() 
    
    Miscellaneous Functions 
    - getPageScroll() 
    - getPageSize() 
    - getKey() 
    - listenKey() 
    - showSelectBoxes() 
    - hideSelectBoxes() 
    - showFlash() 
    - hideFlash() 
    - pause() 
    - initLightbox() 
    
    Function Calls 
    - addLoadEvent(initLightbox) 
    
*/ 
// ----------------------------------------------------------------------------------- 
 
// 
//  Configuration 
// 
var fileLoadingImage = "images/loading.gif";      
var fileBottomNavCloseImage = "images/closelabel.gif"; 
 
var overlayOpacity = 0.8;   // controls transparency of shadow overlay 
 
var animate = true;         // toggles resizing animations 
var resizeSpeed = 7;        // controls the speed of the image resizing animations (1=slowest and 10=fastest) 
 
var borderSize = 10;        //if you adjust the padding in the CSS, you will need to update this variable 
 
// ----------------------------------------------------------------------------------- 
 
// 
//  Global Variables 
// 
var imageArray = new Array; 
var activeImage; 
var lb_max_width = 750; //if you wish to constrain the width (set to 99999 for unlimited size) 
var lb_max_height = 450; //if you wish to constring the height (set to 99999 for unlimited size) 
 
if(animate == true){ 
    overlayDuration = 0.2;  // shadow fade in/out duration 
    if(resizeSpeed > 10){ resizeSpeed = 10;} 
    if(resizeSpeed < 1){ resizeSpeed = 1;} 
    resizeDuration = (11 - resizeSpeed) * 0.15; 
} else { 
    overlayDuration = 0; 
    resizeDuration = 0; 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
//  Additional methods for Element added by SU, Couloir 
//  - further additions by Lokesh Dhakar (huddletogether.com) 
// 
Object.extend(Element, { 
    getWidth: function(element) { 
        element = $(element); 
        return element.offsetWidth; 
    }, 
    setWidth: function(element,w) { 
        element = $(element); 
        element.style.width = w +"px"; 
    }, 
    setHeight: function(element,h) { 
        element = $(element); 
        element.style.height = h +"px"; 
    }, 
    setTop: function(element,t) { 
        element = $(element); 
        element.style.top = t +"px"; 
    }, 
    setLeft: function(element,l) { 
        element = $(element); 
        element.style.left = l +"px"; 
    }, 
    setSrc: function(element,src) { 
        element = $(element); 
        element.src = src; 
    }, 
    setHref: function(element,href) { 
        element = $(element); 
        element.href = href; 
    }, 
    setInnerHTML: function(element,content) { 
        element = $(element); 
        element.innerHTML = content; 
    } 
}); 
 
// ----------------------------------------------------------------------------------- 
 
// 
//  Extending built-in Array object 
//  - array.removeDuplicates() 
//  - array.empty() 
// 
Array.prototype.removeDuplicates = function () { 
    for(i = 0; i < this.length; i++){ 
        for(j = this.length-1; j>i; j--){         
            if(this[i][0] == this[j][0]){ 
                this.splice(j,1); 
            } 
        } 
    } 
} 
 
// ----------------------------------------------------------------------------------- 
 
Array.prototype.empty = function () { 
    for(i = 0; i <= this.length; i++){ 
        this.shift(); 
    } 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
//  Lightbox Class Declaration 
//  - initialize() 
//  - start() 
//  - changeImage() 
//  - resizeImageContainer() 
//  - showImage() 
//  - updateDetails() 
//  - updateNav() 
//  - enableKeyboardNav() 
//  - disableKeyboardNav() 
//  - keyboardNavAction() 
//  - preloadNeighborImages() 
//  - end() 
// 
//  Structuring of code inspired by Scott Upton (http://www.uptonic.com/) 
// 
var Lightbox = Class.create(); 
 
Lightbox.prototype = { 
    
    // initialize() 
    // Constructor runs on completion of the DOM loading. Calls updateImageList and then 
    // the function inserts html at the bottom of the page which is used to display the shadow 
    // overlay and the image container. 
    // 
    initialize: function() {    
        
        this.updateImageList(); 
 
        // Code inserts html at the bottom of the page that looks similar to this: 
        // 
        //  <div id="overlay"></div> 
        //  <div id="lightbox"> 
        //      <div id="outerImageContainer"> 
        //          <div id="imageContainer"> 
        //              <img id="lightboxImage"> 
        //              <div style="" id="hoverNav"> 
        //                  <a href="#" id="prevLink"></a> 
        //                  <a href="#" id="nextLink"></a> 
        //              </div> 
        //              <div id="loading"> 
        //                  <a href="#" id="loadingLink"> 
        //                      <img src="images/loading.gif"> 
        //                  </a> 
        //              </div> 
        //          </div> 
        //      </div> 
        //      <div id="imageDataContainer"> 
        //          <div id="imageData"> 
        //              <div id="imageDetails"> 
        //                  <span id="caption"></span> 
        //                  <span id="numberDisplay"></span> 
        //              </div> 
        //              <div id="bottomNav"> 
        //                  <a href="#" id="bottomNavClose"> 
        //                      <img src="images/close.gif"> 
        //                  </a> 
        //              </div> 
        //          </div> 
        //      </div> 
        //  </div> 
 
 
        var objBody = document.getElementsByTagName("body").item(0); 
        
        var objOverlay = document.createElement("div"); 
        objOverlay.setAttribute('id','overlay'); 
        objOverlay.style.display = 'none'; 
        objOverlay.onclick = function() { myLightbox.end(); } 
        objBody.appendChild(objOverlay); 
        
        var objLightbox = document.createElement("div"); 
        objLightbox.setAttribute('id','lightbox'); 
        objLightbox.style.display = 'none'; 
        objLightbox.onclick = function(e) { // close Lightbox is user clicks shadow overlay 
            if (!e) var e = window.event; 
            var clickObj = Event.element(e).id; 
            if ( clickObj == 'lightbox') { 
                myLightbox.end(); 
            } 
        }; 
        objBody.appendChild(objLightbox); 
            
        var objOuterImageContainer = document.createElement("div"); 
        objOuterImageContainer.setAttribute('id','outerImageContainer'); 
        objLightbox.appendChild(objOuterImageContainer); 
 
        // When Lightbox starts it will resize itself from 250 by 250 to the current image dimension. 
        // If animations are turned off, it will be hidden as to prevent a flicker of a 
        // white 250 by 250 box. 
        if(animate){ 
            Element.setWidth('outerImageContainer', 250); 
            Element.setHeight('outerImageContainer', 250);          
        } else { 
            Element.setWidth('outerImageContainer', 1); 
            Element.setHeight('outerImageContainer', 1);            
        } 
 
        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'); 
        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); 
    }, 
 
 
    // 
    // updateImageList() 
    // Loops through anchor tags looking for 'lightbox' references and applies onclick 
    // events to appropriate links. You can rerun after dynamically adding images w/ajax. 
    // 
    updateImageList: function() {   
        if (!document.getElementsByTagName){ return; } 
        var anchors = document.getElementsByTagName('a'); 
        var areas = document.getElementsByTagName('area'); 
 
        // loop through all anchor tags 
        for (var i=0; i<anchors.length; i++){ 
            var anchor = anchors[i]; 
            
            var relAttribute = String(anchor.getAttribute('rel')); 
            
            // use the string.match() method to catch 'lightbox' references in the rel attribute 
            if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){ 
                anchor.onclick = function () {myLightbox.start(this); return false;} 
            } 
        } 
 
        // loop through all area tags 
        // todo: combine anchor & area tag loops 
        for (var i=0; i< areas.length; i++){ 
            var area = areas[i]; 
            
            var relAttribute = String(area.getAttribute('rel')); 
            
            // use the string.match() method to catch 'lightbox' references in the rel attribute 
            if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){ 
                area.onclick = function () {myLightbox.start(this); return false;} 
            } 
        } 
    }, 
    
    
    // 
    //  start() 
    //  Display overlay and lightbox. If image is part of a set, add siblings to imageArray. 
    // 
    start: function(imageLink) {    
 
        hideSelectBoxes(); 
        hideFlash(); 
 
        // stretch overlay to fill page and fade in 
        var arrayPageSize = getPageSize(); 
        Element.setWidth('overlay', arrayPageSize[0]); 
        Element.setHeight('overlay', arrayPageSize[1]); 
 
        new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity }); 
 
        imageArray = []; 
        imageNum = 0;       
 
        if (!document.getElementsByTagName){ return; } 
        var anchors = document.getElementsByTagName( imageLink.tagName); 
 
        // if image is NOT part of a set.. 
        if((imageLink.getAttribute('rel') == 'lightbox')){ 
            // add single image to imageArray 
            imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));            
        } else { 
        // if image is part of a set.. 
 
            // loop through anchors, find other images in set, and add them to imageArray 
            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++;} 
        } 
 
        // calculate top and left offset for the lightbox 
        var arrayPageScroll = getPageScroll(); 
        var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10); 
        var lightboxLeft = arrayPageScroll[0]; 
        Element.setTop('lightbox', lightboxTop); 
        Element.setLeft('lightbox', lightboxLeft); 
        
        Element.show('lightbox'); 
        
        this.changeImage(imageNum); 
    }, 
 
    // 
    //  changeImage() 
    //  Hide most elements and preload image in preparation for resizing image container. 
    // 
    changeImage: function(imageNum) {   
        
        activeImage = imageNum; // update global var 
 
        // hide elements during transition 
        if(animate){ Element.show('loading');} 
        Element.hide('lightboxImage'); 
        Element.hide('hoverNav'); 
        Element.hide('prevLink'); 
        Element.hide('nextLink'); 
        Element.hide('imageDataContainer'); 
        Element.hide('numberDisplay');      
        
        imgPreloader = new Image(); 
        
        // once image is preloaded, resize image container 
        imgPreloader.onload=function(){ 
            Element.setSrc('lightboxImage', imageArray[activeImage][0]); 
            
            var dims = lb_scale_dims(imgPreloader.width, imgPreloader.height, lb_max_width, lb_max_height); 
            Element.setWidth('lightboxImage', dims[0]); 
            Element.setHeight('lightboxImage', dims[1]); 
            myLightbox.resizeImageContainer(dims[0], dims[1]); 
            
            // myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height); 
            
            imgPreloader.onload=function(){};   //  clear onLoad, IE behaves irratically with animated gifs otherwise 
        } 
        imgPreloader.src = imageArray[activeImage][0]; 
    }, 
 
    // 
    //  resizeImageContainer() 
    // 
    resizeImageContainer: function( imgWidth, imgHeight) { 
 
        // get curren width and height 
        this.widthCurrent = Element.getWidth('outerImageContainer'); 
        this.heightCurrent = Element.getHeight('outerImageContainer'); 
 
        // get new width and height 
        var widthNew = (imgWidth  + (borderSize * 2)); 
        var heightNew = (imgHeight  + (borderSize * 2)); 
 
        // scalars based on change from old to new 
        this.xScale = ( widthNew / this.widthCurrent) * 100; 
        this.yScale = ( heightNew / this.heightCurrent) * 100; 
 
        // calculate size difference between new and old image, and resize if necessary 
        wDiff = this.widthCurrent - widthNew; 
        hDiff = this.heightCurrent - heightNew; 
 
        if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); } 
        if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); } 
 
        // if new and old image are same size and no scaling transition is necessary, 
        // do a quick pause to prevent image flicker. 
        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', widthNew); 
 
        this.showImage(); 
    }, 
    
    // 
    //  showImage() 
    //  Display image and begin preloading neighbors. 
    // 
    showImage: function(){ 
        Element.hide('loading'); 
        new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: function(){   myLightbox.updateDetails(); } }); 
        this.preloadNeighborImages(); 
    }, 
 
    // 
    //  updateDetails() 
    //  Display caption, image number, and bottom nav. 
    // 
    updateDetails: function() { 
    
        // if caption is not null 
        if(imageArray[activeImage][1]){ 
            Element.show('caption'); 
            Element.setInnerHTML( 'caption', imageArray[activeImage][1]); 
        } 
        
        // if image is part of set display 'Image x of x' 
        if(imageArray.length > 1){ 
            Element.show('numberDisplay'); 
            Element.setInnerHTML( 'numberDisplay', "Bild " + eval(activeImage + 1) + " von " + imageArray.length); 
        } 
 
        new Effect.Parallel( 
            [ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
              new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
            { duration: resizeDuration, afterFinish: function() { 
                // update overlay size and update nav 
                var arrayPageSize = getPageSize(); 
                Element.setHeight('overlay', arrayPageSize[1]); 
                myLightbox.updateNav(); 
                } 
            } 
        ); 
    }, 
 
    // 
    //  updateNav() 
    //  Display appropriate previous and next hover navigation. 
    // 
    updateNav: function() { 
 
        Element.show('hoverNav');               
 
        // if not first image in set, display prev image button 
        if(activeImage != 0){ 
            Element.show('prevLink'); 
            document.getElementById('prevLink').onclick = function() { 
                myLightbox.changeImage(activeImage - 1); return false; 
            } 
        } 
 
        // if not last image in set, display next image button 
        if(activeImage != (imageArray.length - 1)){ 
            Element.show('nextLink'); 
            document.getElementById('nextLink').onclick = function() { 
                myLightbox.changeImage(activeImage + 1); return false; 
            } 
        } 
        
        this.enableKeyboardNav(); 
    }, 
 
    // 
    //  enableKeyboardNav() 
    // 
    enableKeyboardNav: function() { 
        document.onkeydown = this.keyboardAction; 
    }, 
 
    // 
    //  disableKeyboardNav() 
    // 
    disableKeyboardNav: function() { 
        document.onkeydown = ''; 
    }, 
 
    // 
    //  keyboardAction() 
    // 
    keyboardAction: function(e) { 
        if (e == null) { // ie 
            keycode = event.keyCode; 
            escapeKey = 27; 
        } else { // mozilla 
            keycode = e.keyCode; 
            escapeKey = e.DOM_VK_ESCAPE; 
        } 
 
        key = String.fromCharCode(keycode).toLowerCase(); 
        
        if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){ // close lightbox 
            myLightbox.end(); 
        } else if((key == 'p') || (keycode == 37)){ // display previous image 
            if(activeImage != 0){ 
                myLightbox.disableKeyboardNav(); 
                myLightbox.changeImage(activeImage - 1); 
            } 
        } else if((key == 'n') || (keycode == 39)){ // display next image 
            if(activeImage != (imageArray.length - 1)){ 
                myLightbox.disableKeyboardNav(); 
                myLightbox.changeImage(activeImage + 1); 
            } 
        } 
 
    }, 
 
    // 
    //  preloadNeighborImages() 
    //  Preload previous and next images. 
    // 
    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() 
    // 
    end: function() { 
        this.disableKeyboardNav(); 
        Element.hide('lightbox'); 
        new Effect.Fade('overlay', { duration: overlayDuration}); 
        showSelectBoxes(); 
        showFlash(); 
    } 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
// getPageScroll() 
// Returns array with x,y page scroll values. 
// Core code from - quirksmode.com 
// 
function getPageScroll(){ 
 
    var xScroll, yScroll; 
 
    if (self.pageYOffset) { 
        yScroll = self.pageYOffset; 
        xScroll = self.pageXOffset; 
    } else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict 
        yScroll = document.documentElement.scrollTop; 
        xScroll = document.documentElement.scrollLeft; 
    } else if (document.body) {// all other Explorers 
        yScroll = document.body.scrollTop; 
        xScroll = document.body.scrollLeft; 
    } 
 
    arrayPageScroll = new Array(xScroll,yScroll) 
    return arrayPageScroll; 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
// getPageSize() 
// Returns array with page width, height and window width, height 
// Core code from - quirksmode.com 
// Edit for Firefox by pHaez 
// 
function getPageSize(){ 
    
    var xScroll, yScroll; 
    
    if (window.innerHeight && window.scrollMaxY) {  
        xScroll = window.innerWidth + window.scrollMaxX; 
        yScroll = window.innerHeight + window.scrollMaxY; 
    } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac 
        xScroll = document.body.scrollWidth; 
        yScroll = document.body.scrollHeight; 
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari 
        xScroll = document.body.offsetWidth; 
        yScroll = document.body.offsetHeight; 
    } 
    
    var windowWidth, windowHeight; 
    
//  console.log(self.innerWidth); 
//  console.log(document.documentElement.clientWidth); 
 
    if (self.innerHeight) { // all except Explorer 
        if(document.documentElement.clientWidth){ 
            windowWidth = document.documentElement.clientWidth; 
        } else { 
            windowWidth = self.innerWidth; 
        } 
        windowHeight = self.innerHeight; 
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode 
        windowWidth = document.documentElement.clientWidth; 
        windowHeight = document.documentElement.clientHeight; 
    } else if (document.body) { // other Explorers 
        windowWidth = document.body.clientWidth; 
        windowHeight = document.body.clientHeight; 
    }   
    
    // for small pages with total height less then height of the viewport 
    if(yScroll < windowHeight){ 
        pageHeight = windowHeight; 
    } else { 
        pageHeight = yScroll; 
    } 
 
//  console.log("xScroll " + xScroll) 
//  console.log("windowWidth " + windowWidth) 
 
    // for small pages with total width less then width of the viewport 
    if(xScroll < windowWidth){  
        pageWidth = xScroll;        
    } else { 
        pageWidth = windowWidth; 
    } 
//  console.log("pageWidth " + pageWidth) 
 
    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
    return arrayPageSize; 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
// getKey(key) 
// Gets keycode. If 'x' is pressed then it hides the lightbox. 
// 
function getKey(e){ 
    if (e == null) { // ie 
        keycode = event.keyCode; 
    } else { // mozilla 
        keycode = e.which; 
    } 
    key = String.fromCharCode(keycode).toLowerCase(); 
    
    if(key == 'x'){ 
    } 
} 
 
// ----------------------------------------------------------------------------------- 
 
// 
// listenKey() 
// 
function listenKey () { document.onkeypress = getKey; } 
    
// --------------------------------------------------- 
 
function showSelectBoxes(){ 
    var selects = document.getElementsByTagName("select"); 
    for (i = 0; i != selects.length; i++) { 
        selects[i].style.visibility = "visible"; 
    } 
} 
 
// --------------------------------------------------- 
 
function hideSelectBoxes(){ 
    var selects = document.getElementsByTagName("select"); 
    for (i = 0; i != selects.length; i++) { 
        selects[i].style.visibility = "hidden"; 
    } 
} 
 
// --------------------------------------------------- 
 
function showFlash(){ 
    var flashObjects = document.getElementsByTagName("object"); 
    for (i = 0; i < flashObjects.length; i++) { 
        flashObjects[i].style.visibility = "visible"; 
    } 
 
    var flashEmbeds = document.getElementsByTagName("embed"); 
    for (i = 0; i < flashEmbeds.length; i++) { 
        flashEmbeds[i].style.visibility = "visible"; 
    } 
} 
 
// --------------------------------------------------- 
 
function hideFlash(){ 
    var flashObjects = document.getElementsByTagName("object"); 
    for (i = 0; i < flashObjects.length; i++) { 
        flashObjects[i].style.visibility = "hidden"; 
    } 
 
    var flashEmbeds = document.getElementsByTagName("embed"); 
    for (i = 0; i < flashEmbeds.length; i++) { 
        flashEmbeds[i].style.visibility = "hidden"; 
    } 
 
} 
 
 
// --------------------------------------------------- 
 
// 
// pause(numberMillis) 
// Pauses code execution for specified time. Uses busy code, not good. 
// Help from Ran Bar-On [ran2103@gmail.com] 
// 
 
function pause(ms){ 
    var date = new Date(); 
    curDate = null; 
    do{var curDate = new Date();} 
    while( curDate - date < ms); 
} 
/* 
function pause(numberMillis) { 
    var curently = new Date().getTime() + sender; 
    while (new Date().getTime();    
} 
*/ 
// --------------------------------------------------- 
 
function lb_scale_dims(orig_w, orig_h, max_w, max_h) 
{ 
var scale = lb_scale_rate(orig_w, orig_h, max_w, max_h); 
var new_w = Math.round(scale*orig_w); new_h = Math.round(scale*orig_h); 
if (new_w < 1) { new_w = 1; } if (new_h < 1) { new_h = 1; } 
return Array(new_w, new_h); 
} 
function lb_scale_rate(orig_w, orig_h, max_w, max_h) { 
var scale1 = 0; var scale2 = 0; 
if (orig_w > max_w) { scale1 = (orig_w - max_w) / orig_w; } 
if (orig_h > max_h) { scale2 = (orig_h - max_h) / orig_h; } 
var scale = (scale1>scale2)?scale1:scale2; 
return (1-scale); 
} 
// --------------------------------------------------- 
 
function initLightbox() { myLightbox = new Lightbox(); } 
Event.observe(window, 'load', initLightbox, false);