Index: javascripts/lightbox.js =================================================================== --- javascripts/lightbox.js (revision 36) +++ javascripts/lightbox.js (working copy) @@ -1,74 +1,662 @@ +// ----------------------------------------------------------------------------------- +// +// 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. +// +// +// ----------------------------------------------------------------------------------- /* - Lightbox JS: Fullsize Image Overlays - by Lokesh Dhakar - http://www.huddletogether.com - For more information on this script, visit: - http://huddletogether.com/projects/lightbox/ - - Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/ - (basically, do anything you want, just leave my name and link) - 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() - Functions + Miscellaneous Functions - getPageScroll() - getPageSize() - - pause() - getKey() - listenKey() - - showLightbox() - - hideLightbox() + - showSelectBoxes() + - hideSelectBoxes() + - showFlash() + - hideFlash() + - pause() - initLightbox() - - addLoadEvent() 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 + +// ----------------------------------------------------------------------------------- + // -// Configuration +// Global Variables // +var imageArray = new Array; +var activeImage; -// If you would like to use a custom loading image or close button reference them in the next two lines. -var loadingImage = '/images/loading.gif'; -var closeButton = '/images/x.png'; +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: + // + //
+ // + + + 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 1){ + Element.show('numberDisplay'); + Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + 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.org +// Core code from - quirksmode.com // function getPageScroll(){ - var yScroll; + 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('',yScroll) + arrayPageScroll = new Array(xScroll,yScroll) return arrayPageScroll; } +// ----------------------------------------------------------------------------------- - // // getPageSize() // Returns array with page width, height and window width, height -// Core code from - quirksmode.org +// Core code from - quirksmode.com // Edit for Firefox by pHaez // function getPageSize(){ @@ -76,7 +664,7 @@ var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { - xScroll = document.body.scrollWidth; + 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; @@ -87,8 +675,16 @@ } var windowWidth, windowHeight; + +// console.log(self.innerWidth); +// console.log(document.documentElement.clientWidth); + if (self.innerHeight) { // all except Explorer - windowWidth = self.innerWidth; + 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; @@ -105,39 +701,27 @@ 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; - } else { - pageWidth = xScroll; } +// console.log("pageWidth " + pageWidth) - arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) return arrayPageSize; } +// ----------------------------------------------------------------------------------- // -// pause(numberMillis) -// Pauses code execution for specified time. Uses busy code, not good. -// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602 -// -function pause(numberMillis) { - var now = new Date(); - var exitTime = now.getTime() + numberMillis; - while (true) { - now = new Date(); - if (now.getTime() > exitTime) - return; - } -} - -// // getKey(key) // Gets keycode. If 'x' is pressed then it hides the lightbox. // - function getKey(e){ if (e == null) { // ie keycode = event.keyCode; @@ -146,292 +730,88 @@ } key = String.fromCharCode(keycode).toLowerCase(); - if(key == 'x'){ hideLightbox(); } + if(key == 'x'){ + } } +// ----------------------------------------------------------------------------------- // // listenKey() // function listenKey () { document.onkeypress = getKey; } +// --------------------------------------------------- -// -// showLightbox() -// Preloads images. Pleaces new image in lightbox then centers and displays. -// -function showLightbox(objLink) -{ - // prep objects - var objOverlay = document.getElementById('overlay'); - var objLightbox = document.getElementById('lightbox'); - var objCaption = document.getElementById('lightboxCaption'); - var objImage = document.getElementById('lightboxImage'); - var objLoadingImage = document.getElementById('loadingImage'); - var objLightboxDetails = document.getElementById('lightboxDetails'); - - - var arrayPageSize = getPageSize(); - var arrayPageScroll = getPageScroll(); - - // center loadingImage if it exists - if (objLoadingImage) { - objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px'); - objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px'); - objLoadingImage.style.display = 'block'; +function showSelectBoxes(){ + var selects = document.getElementsByTagName("select"); + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "visible"; } +} - // set height of Overlay to take up whole page and show - objOverlay.style.height = (arrayPageSize[1] + 'px'); - objOverlay.style.display = 'block'; +// --------------------------------------------------- - // preload image - imgPreload = new Image(); - - imgPreload.onload=function(){ - objImage.src = objLink.href; - - // center lightbox and make sure that the top and left values are not negative - // and the image placed outside the viewport - var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2); - var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2); - - objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px"; - objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px"; - - - objLightboxDetails.style.width = imgPreload.width + 'px'; - - if(objLink.getAttribute('title')){ - objCaption.style.display = 'block'; - //objCaption.style.width = imgPreload.width + 'px'; - objCaption.innerHTML = objLink.getAttribute('title'); - } else { - objCaption.style.display = 'none'; - } - - // A small pause between the image loading and displaying is required with IE, - // this prevents the previous image displaying for a short burst causing flicker. - if (navigator.appVersion.indexOf("MSIE")!=-1){ - pause(250); - } - - if (objLoadingImage) { objLoadingImage.style.display = 'none'; } - - // Hide select boxes as they will 'peek' through the image in IE - selects = document.getElementsByTagName("select"); - for (i = 0; i != selects.length; i++) { - selects[i].style.visibility = "hidden"; - } - - - objLightbox.style.display = 'block'; - - // After image is loaded, update the overlay height as the new image might have - // increased the overall page height. - arrayPageSize = getPageSize(); - objOverlay.style.height = (arrayPageSize[1] + 'px'); - - // Check for 'x' keypress - listenKey(); - - return false; +function hideSelectBoxes(){ + var selects = document.getElementsByTagName("select"); + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "hidden"; } - - imgPreload.src = objLink.href; - } +// --------------------------------------------------- +function showFlash(){ + var flashObjects = document.getElementsByTagName("object"); + for (i = 0; i < flashObjects.length; i++) { + flashObjects[i].style.visibility = "visible"; + } - - -// -// hideLightbox() -// -function hideLightbox() -{ - // get objects - objOverlay = document.getElementById('overlay'); - objLightbox = document.getElementById('lightbox'); - - // hide lightbox and overlay - objOverlay.style.display = 'none'; - objLightbox.style.display = 'none'; - - // make select boxes visible - selects = document.getElementsByTagName("select"); - for (i = 0; i != selects.length; i++) { - selects[i].style.visibility = "visible"; + var flashEmbeds = document.getElementsByTagName("embed"); + for (i = 0; i < flashEmbeds.length; i++) { + flashEmbeds[i].style.visibility = "visible"; } - - // disable keypress listener - document.onkeypress = ''; } +// --------------------------------------------------- - - -// -// initLightbox() -// Function runs on window load, going through link tags looking for rel="lightbox". -// These links receive onclick events that enable the lightbox display for their targets. -// The function also inserts html markup at the top of the page which will be used as a -// container for the overlay pattern and the inline image. -// -function initLightbox() -{ - - if (!document.getElementsByTagName){ return; } - var anchors = document.getElementsByTagName("a"); - - // loop through all anchor tags - for (var i=0; i - // - // - // - - var objBody = document.getElementsByTagName("body").item(0); - - // create overlay div and hardcode some functional styles (aesthetic styles are in CSS file) - var objOverlay = document.createElement("div"); - objOverlay.setAttribute('id','overlay'); - objOverlay.onclick = function () {hideLightbox(); return false;} - objOverlay.style.display = 'none'; - objOverlay.style.position = 'absolute'; - objOverlay.style.top = '0'; - objOverlay.style.left = '0'; - objOverlay.style.zIndex = '90'; - objOverlay.style.width = '100%'; - objBody.insertBefore(objOverlay, objBody.firstChild); - - var arrayPageSize = getPageSize(); - var arrayPageScroll = getPageScroll(); - - // preload and create loader image - var imgPreloader = new Image(); - - // if loader image found, create link to hide lightbox and create loadingimage - imgPreloader.onload=function(){ - - var objLoadingImageLink = document.createElement("a"); - objLoadingImageLink.setAttribute('href','#'); - objLoadingImageLink.onclick = function () {hideLightbox(); return false;} - objOverlay.appendChild(objLoadingImageLink); - - var objLoadingImage = document.createElement("img"); - objLoadingImage.src = loadingImage; - objLoadingImage.setAttribute('id','loadingImage'); - objLoadingImage.style.position = 'absolute'; - objLoadingImage.style.zIndex = '150'; - objLoadingImageLink.appendChild(objLoadingImage); - - imgPreloader.onload=function(){}; // clear onLoad, as IE will flip out w/animated gifs - - return false; + var flashEmbeds = document.getElementsByTagName("embed"); + for (i = 0; i < flashEmbeds.length; i++) { + flashEmbeds[i].style.visibility = "hidden"; } - imgPreloader.src = loadingImage; - - // create lightbox div, same note about styles as above - var objLightbox = document.createElement("div"); - objLightbox.setAttribute('id','lightbox'); - objLightbox.style.display = 'none'; - objLightbox.style.position = 'absolute'; - objLightbox.style.zIndex = '100'; - objBody.insertBefore(objLightbox, objOverlay.nextSibling); - - // create link - var objLink = document.createElement("a"); - objLink.setAttribute('href','#'); - objLink.setAttribute('title','Click to close'); - objLink.onclick = function () {hideLightbox(); return false;} - objLightbox.appendChild(objLink); - - // preload and create close button image - var imgPreloadCloseButton = new Image(); - - // if close button image found, - imgPreloadCloseButton.onload=function(){ - - var objCloseButton = document.createElement("img"); - objCloseButton.src = closeButton; - objCloseButton.setAttribute('id','closeButton'); - objCloseButton.style.position = 'absolute'; - objCloseButton.style.zIndex = '200'; - objLink.appendChild(objCloseButton); - - return false; - } - - imgPreloadCloseButton.src = closeButton; - - // create image - var objImage = document.createElement("img"); - objImage.setAttribute('id','lightboxImage'); - objLink.appendChild(objImage); - - // create details div, a container for the caption and keyboard message - var objLightboxDetails = document.createElement("div"); - objLightboxDetails.setAttribute('id','lightboxDetails'); - objLightbox.appendChild(objLightboxDetails); - - // create caption - var objCaption = document.createElement("div"); - objCaption.setAttribute('id','lightboxCaption'); - objCaption.style.display = 'none'; - objLightboxDetails.appendChild(objCaption); - - // create keyboard message - var objKeyboardMsg = document.createElement("div"); - objKeyboardMsg.setAttribute('id','keyboardMsg'); - //objKeyboardMsg.innerHTML = 'press x to close'; - objLightboxDetails.appendChild(objKeyboardMsg); - - } +// --------------------------------------------------- - // -// addLoadEvent() -// Adds event to window.onload without overwriting currently assigned onload functions. -// Function found at Simon Willison's weblog - http://simon.incutio.com/ +// pause(numberMillis) +// Pauses code execution for specified time. Uses busy code, not good. +// Help from Ran Bar-On [ran2103@gmail.com] // -function addLoadEvent(func) -{ - var oldonload = window.onload; - if (typeof window.onload != 'function'){ - window.onload = func; - } else { - window.onload = function(){ - oldonload(); - func(); - } - } +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(); +} +*/ +// --------------------------------------------------- -addLoadEvent(initLightbox); // run initLightbox onLoad \ No newline at end of file +function initLightbox() { myLightbox = new Lightbox(); } +Event.observe(window, 'load', initLightbox, false); Index: stylesheets/lightbox.css =================================================================== --- stylesheets/lightbox.css (revision 36) +++ stylesheets/lightbox.css (working copy) @@ -1,24 +1,79 @@ #lightbox{ - background-color:#333; - padding: 5px; + position: absolute; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; } -#lightboxDetails{ - font-size: 0.8em; - padding-top: 0.4em; - } -#lightboxCaption{ float: left; } -#keyboardMsg{ float: right; } -#closeButton{ top: 5px; right: 5px; } -#lightbox img{ border: none; clear: both;} -#overlay img{ border: none; } +#lightbox a img{ border: none; } -#overlay{ background-image: url(/images/overlay.png); } +#outerImageContainer{ + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; + } -* html #overlay{ - background-color: #333; - back\ground-color: transparent; - background-image: url(/images/blank.gif); - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="/images/overlay.png", sizingMethod="scale"); +#imageContainer{ + padding: 10px; } - \ No newline at end of file + +#loading{ + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; + } +#hoverNav{ + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; + } +#imageContainer>#hoverNav{ left: 0;} +#hoverNav a{ outline: none;} + +#prevLink, #nextLink{ + width: 49%; + height: 100%; + background: transparent url(/images/blank.gif) no-repeat; /* Trick IE into showing hover */ + display: block; + } +#prevLink { left: 0; float: left;} +#nextLink { right: 0; float: right;} +#prevLink:hover, #prevLink:visited:hover { background: url(/images/prevlabel.gif) left 15% no-repeat; } +#nextLink:hover, #nextLink:visited:hover { background: url(/images/nextlabel.gif) right 15% no-repeat; } + + +#imageDataContainer{ + font: 10px Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0 auto; + line-height: 1.4em; + overflow: auto; + width: 100% + } + +#imageData{ padding:0 10px; color: #666; } +#imageData #imageDetails{ width: 70%; float: left; text-align: left; } +#imageData #caption{ font-weight: bold; } +#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; } +#imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; } + +#overlay{ + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; + background-color: #000; + }