var a = "http://blog.cmbuckley.co.uk/admin/images/loading.gif"; var c = 6; var d = 10; var e = new Array; var f; if(c > 10){ c = 10;}
if(c < 1){ c = 1;}
resizeDuration = (11 - c) * 100; Object.extend(Element, { hide: function() { for (var i = 0; i < arguments.length; i++) { var e = $(arguments[i]); e.style.display = 'none';}
}, show: function() { for (var i = 0; i < arguments.length; i++) { var e = $(arguments[i]); e.style.display = '';}
}, getWidth: function(e) { e = $(e); return e.offsetWidth;}, setWidth: function(e,w) { e = $(e); e.style.width = w +"px";}, getHeight: function(e) { e = $(e); return e.offsetHeight;}, setHeight: function(e,h) { e = $(e); e.style.height = h +"px";}, setTop: function(e,t) { e = $(e); e.style.top = t +"px";}, setSrc: function(e,src) { e = $(e); e.src = src;}, setInnerHTML: function(e,c) { e = $(e); e.innerHTML = c;}
}); 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 g = document.getElementsByTagName('a'); for (var i=0; i<g.length; i++){ var h = g[i]; var j = String(h.getAttribute('rel')); if (h.getAttribute('href') && (j.toLowerCase().match('lightbox'))){ h.onclick = function () {mlb.start(this); return false;}
}
}
var k = document.getElementsByTagName("body").item(0); var l = document.createElement("div"); l.setAttribute('id','overlay'); l.onclick = function() { mlb.end(); return false;}
k.appendChild(l); var m = document.createElement("div"); m.setAttribute('id','lightbox'); m.style.display = 'none'; k.appendChild(m); var n = document.createElement("div"); n.setAttribute('id','outerImageContainer'); m.appendChild(n); var o = document.createElement("div"); o.setAttribute('id','imageContainer'); n.appendChild(o); var p = document.createElement("img"); p.setAttribute('id','lightboxImage'); o.appendChild(p); var q = document.createElement("div"); q.setAttribute('id','hoverNav'); o.appendChild(q); var r = document.createElement("a"); r.setAttribute('id','prevLink'); r.setAttribute('href','#'); q.appendChild(r); var s = document.createElement("a"); s.setAttribute('id','nextLink'); s.setAttribute('href','#'); q.appendChild(s); var t = document.createElement("div"); t.setAttribute('id','loading'); o.appendChild(t); var tLink = document.createElement("a"); tLink.setAttribute('id','loadingLink'); tLink.setAttribute('href','#'); tLink.onclick = function() { mlb.end(); return false;}
t.appendChild(tLink); var u = document.createElement("img"); u.setAttribute('src', a); tLink.appendChild(u); var v = document.createElement("div"); v.setAttribute('id','imageDataContainer'); v.className = 'clearfix'; m.appendChild(v); var w = document.createElement("div"); w.setAttribute('id','imageData'); v.appendChild(w); var x = document.createElement("div"); x.setAttribute('id','imageDetails'); w.appendChild(x); var y = document.createElement("span"); y.setAttribute('id','caption'); x.appendChild(y); var z = document.createElement("span"); z.setAttribute('id','numberDisplay'); x.appendChild(z); var aa = document.createElement("div"); aa.setAttribute('id','bottomNav'); w.appendChild(aa); var ab = document.createElement("a"); ab.setAttribute('id','bottomNavClose'); ab.setAttribute('class','close-sprite'); ab.setAttribute('href','#'); ab.onclick = function() { mlb.end(); return false;}
aa.appendChild(ab); var xx = document.createTextNode('close'); var ac = document.createElement("span"); ac.setAttribute('class', 'hidden'); ac.appendChild(xx); ab.appendChild(ac); overlayEffect = new fx.Opacity(l, { duration: 300 }); overlayEffect.hide(); imageEffect = new fx.Opacity(p, { 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', { duration: 100 }); navEffect.hide();}, start: function(ag) { hideSelectBoxes(); var ad = getPageSize(); Element.setHeight('overlay', ad[1]); overlayEffect.custom(0,0.8); e = []; imageNum = 0; if (!document.getElementsByTagName){ return;}
var g = document.getElementsByTagName('a'); if((ag.getAttribute('rel') == 'lightbox')){ e.push(new Array(ag.getAttribute('href'), ag.getElementsByTagName('img')[0].getAttribute('alt')));} else { for (var i=0; i<g.length; i++){ var h = g[i]; if (h.getAttribute('href') && (h.getAttribute('rel') == ag.getAttribute('rel'))){ e.push(new Array(h.getAttribute('href'), h.getElementsByTagName('img')[0].getAttribute('alt')));}
}
e.removeDuplicates(); while(e[imageNum][0] != ag.getAttribute('href')) { imageNum++;}
}
var ad = getPageSize(); var ae = getPageScroll(); var af = ae[1] + (ad[3] / 15); Element.setTop('lightbox', af); Element.show('lightbox'); this.changeImage(imageNum);}, changeImage: function(imageNum) { f = 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', e[f][0]); mlb.resizeImageContainer(imgPreloader.width, imgPreloader.height);}
imgPreloader.src = e[f][0];}, resizeImageContainer: function( imgWidth, imgHeight) { this.wCur = Element.getWidth('outerImageContainer'); this.hCur = Element.getHeight('outerImageContainer'); wDiff = (this.wCur - d * 2) - imgWidth; hDiff = (this.hCur - d * 2) - imgHeight; reHeight = new fx.Height('outerImageContainer', { duration: resizeDuration }); reHeight.custom(Element.getHeight('outerImageContainer'),imgHeight+(d*2)); reWidth = new fx.Width('outerImageContainer', { duration: resizeDuration, onComplete: function() { imageEffect.custom(0,1);}}); reWidth.custom(Element.getWidth('outerImageContainer'),imgWidth+(d*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 + (d * 2)); Element.setWidth( 'hoverNav', imgWidth + (d * 2)); this.showImage();}, showImage: function(){ Element.hide('loading'); mlb.updateDetails(); this.preloadNeighborImages();}, updateDetails: function() { Element.show('caption'); Element.setInnerHTML( 'caption', e[f][1]); if(e.length > 1){ Element.show('numberDisplay'); Element.setInnerHTML( 'numberDisplay', "Image " + eval(f + 1) + " of " + e.length);}
mlb.updateNav();}, updateNav: function() { if(f != 0){ Element.show('prevLink'); document.getElementById('prevLink').onclick = function() { mlb.changeImage(f - 1); return false;}
}
if(f != (e.length - 1)){ Element.show('nextLink'); document.getElementById('nextLink').onclick = function() { mlb.changeImage(f + 1); return false;}
}
this.enableKeyboardNav();}, enableKeyboardNav: function() { document.onkeydown = this.keyboardAction;}, disableKeyboardNav: function() { document.onkeydown = '';}, keyboardAction: function(e) { if (e == null) { keycode = event.keyCode;} else { keycode = e.which;}
key = String.fromCharCode(keycode).toLowerCase(); if((key == 'x') || (key == 'o') || (key == 'c')){ mlb.end();} else if(key == 'p'){ if(f != 0){ mlb.disableKeyboardNav(); mlb.changeImage(f - 1);}
} else if(key == 'n'){ if(f != (e.length - 1)){ mlb.disableKeyboardNav(); mlb.changeImage(f + 1);}
}
}, preloadNeighborImages: function(){ if((e.length - 1) > f){ preloadNexu = new Image(); preloadNexu.src = e[f + 1][0];}
if(f > 0){ preloadPrevImage = new Image(); preloadPrevImage.src = e[f - 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;}
ae = new Array('',yScroll)
return ae;}
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) { windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight;}
if(yScroll < windowHeight){ pageHeight = windowHeight;} else { pageHeight = yScroll;}
if(xScroll < windowWidth){ pageWidth = windowWidth;} else { pageWidth = xScroll;}
ad = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return ad;}
function getKey(e){ if (e == null) { keycode = event.keyCode;} else { keycode = e.which;}
key = String.fromCharCode(keycode).toLowerCase(); if(key == 'x'){ }
}
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() { mlb = new Lightbox();}
var oo = window.onload; if (typeof window.onload != "function") { window.onload = initLightbox;} else {window.onload = function () {oo(); initLightbox();}}
