/*
Slimbox v1.68 - The ultimate lightweight Lightbox clone
(c) 2007-2008 Christophe Beyls <http:
MIT-style license.
Modified by Tiffany B. Brown
*/
var Slimbox = (function() {
var win = window, ie6 = Browser.Engine.trident4, options, images, activeImage = -1, prevImage, nextImage, compatibleOverlay, middle, centerWidth, centerHeight,preload = {}, preloadPrev = new Image(), preloadNext = new Image(), overlay, center, image, sizer, prevLink, nextLink, bottomContainer, numbefore, numafter, fxOverlay, fxResize, fxImage; 
win.addEvent("domready", function() {
$(document.body).adopt(
		$$(
			overlay = new Element("div", {id: "lbOverlay", events: {click: close}}),
			center = new Element("div", {id: "lbCenter"}),
			bottomContainer = new Element("div", {id: "lbBottomContainer"})
		).setStyle("display", "none")
	);
	image = new Element("div", {id: "lbImage"}).injectInside(center).adopt(
		sizer = new Element("div", {styles: {position: "relative"}}).adopt(
			prevLink = new Element("a", {id: "lbPrevLink", href: "#", events: {click: previous}}),
			nextLink = new Element("a", {id: "lbNextLink", href: "#", events: {click: next}}),
			new Element("a", {id: "lbCloseLink", href: "#", events: {click: close}}),
			numbefore = new Element("div", {id: "lbBefore"}),
			numafter = new Element("div", {id: "lbAfter"})
		)
	);
});
function position() {
	var scroll = win.getScroll(), size = win.getSize();
	$$(center, bottomContainer).setStyle("left", scroll.x + (size.x / 2));
	if (compatibleOverlay) overlay.setStyles({left: scroll.x, top: scroll.y, width: size.x, height: size.y});
}
function setup(open) {
	["object", ie6 ? "select" : "embed"].forEach(function(tag) {
		Array.forEach(document.getElementsByTagName(tag), function(el) {
			if (open) el._slimbox = el.style.visibility;
			el.style.visibility = open ? "hidden" : el._slimbox;
		});
	});
	overlay.style.display = open ? "" : "none";
	var fn = open ? "addEvent" : "removeEvent";
	win[fn]("scroll", position)[fn]("resize", position);
	document[fn]("keydown", keyDown);
}
function keyDown(event) { var code = event.code; return options.closeKeys.contains(code) ? close() : options.nextKeys.contains(code) ? next() : options.previousKeys.contains(code) ? previous() : false;}
function previous() { return changeImage(prevImage); }
function next() { return changeImage(nextImage); }

function changeImage(imageIndex) {
	if (imageIndex >= 0) {
		activeImage = imageIndex;
		prevImage = (activeImage || (options.loop ? images.length : 0)) - 1;
		nextImage = ((activeImage + 1) % images.length) || (options.loop ? 0 : -1);
		stop();
		center.className = "lbLoading";
		preload = new Image();
		preload.onload = imageTransition;
		preload.src = images[imageIndex][0];
	}
	return false;
}
function imageTransition() {
	center.className = "";
	var closeLnk = $('lbCloseLink');
	
	image.setStyles({backgroundImage: "url(" + preload.src + ")", display: ""});	
	
	if (prevImage >= 0) preloadPrev.src = images[prevImage][0];
	if (nextImage >= 0) preloadNext.src = images[nextImage][0];
	
	closeLnk.style.display = prevLink.style.display = numbefore.style.display = nextLink.style.display = numafter.style.display = "none";
	
	image.onmouseover = function(){
		closeLnk.style.display = '';
		
		if (prevImage >= 0) {
			prevLink.style.display = numbefore.style.display = "";
		} else {
			prevLink.style.display = numbefore.style.display = "none";
		}
		if (nextImage >= 0) {
			nextLink.style.display = numafter.style.display = "";
		} else {
			nextLink.style.display = numafter.style.display = "none";
		}
		// alert('hi');
	} 
	
	image.onmouseout = function(){
		closeLnk.style.display = prevLink.style.display = numbefore.style.display = nextLink.style.display = numafter.style.display = "none";
	} 
	
	sizer.setStyle("width", options.initialWidth);
	$$(sizer).setStyle("height", options.initialHeight);
	numbefore.set("html", '<b>'+(((images.length > 1) && options.numBeforeText) || "").replace(/{x}/, images.length-(images.length-activeImage))+'<\/b>');
	numafter.set("html", '<b>'+(((images.length > 1) && options.numAfterText) || "").replace(/{y}/,  (images.length-activeImage)-1 )+'<\/b>');
	
	if (prevImage >= 0) preloadPrev.src = images[prevImage][0];
	if (nextImage >= 0) preloadNext.src = images[nextImage][0];
		
	// if (prevImage >= 0) prevLink.style.display = numbefore.style.display = "";
	// if (nextImage >= 0) nextLink.style.display = numafter.style.display = "";
	
}
function stop() {
	preload.onload = $empty;
	preload.src = preloadPrev.src = preloadNext.src = "";
	fxResize.cancel();
	fxImage.cancel();
	
	$$(prevLink, nextLink, image, numafter, numbefore ).setStyle("display", "none");
}
function close() {
	if (activeImage >= 0) {
		stop();
		activeImage = prevImage = nextImage = -1;
		center.style.display = "none";
		fxOverlay.cancel().chain(setup).start(0);
	}
	return false;
}
Element.implement({	slimbox: function(_options, linkMapper) {$$(this).slimbox(_options, linkMapper); return this;} });
Elements.implement({
slimbox: function(_options, linkMapper, linksFilter) { linkMapper = linkMapper || function(el) { return [el.href, el.title];	};
linksFilter = linksFilter || function() { return true;};
var links = this;
links.removeEvents("click").addEvent("click", function() {

	var filteredLinks = links.filter(linksFilter, this);
	return Slimbox.open(filteredLinks.map(linkMapper), filteredLinks.indexOf(this), _options);
});
	return links;
}
});
return {
open: function(_images, startImage, _options) {
	options = $extend({
	loop: false,				
	overlayOpacity: 0.8,			
	overlayFadeDuration: 400,		
	resizeDuration: 100,			
	resizeTransition: false,		
	initialWidth: 250,			
	initialHeight: 250,			
	imageFadeDuration: 100,			
	captionAnimationDuration: 400,		
	counterText: "Image {x} of {y}",	
	closeKeys: [27, 88, 67],		
	previousKeys: [37, 80],			
	nextKeys: [39, 78],			
	numBeforeText: "{x} ",
	numAfterText: "{y} "
}, _options || {});
fxOverlay = new Fx.Tween(overlay, {property: "opacity", duration: options.overlayFadeDuration});
fxResize = new Fx.Morph(center, $extend({duration: options.resizeDuration, link: "chain"}, options.resizeTransition ? {transition: options.resizeTransition} : {}));
fxImage = new Fx.Tween(image, {property: "opacity", duration: 0});
		if (typeof _images == "string") {
			_images = [[_images, startImage]];
			startImage = 0;
		}
		middle = win.getScrollTop() + (win.getHeight() / 2);
		centerWidth = options.initialWidth;
		centerHeight = options.initialHeight;
		center.setStyles({top: Math.max(0, middle - (centerHeight / 2)), width: centerWidth, height: centerHeight, marginLeft: -centerWidth/2, display: ""});
		compatibleOverlay = ie6 || (overlay.currentStyle && (overlay.currentStyle.position != "fixed"));
		if (compatibleOverlay) overlay.style.position = "absolute";
		fxOverlay.set(0).start(options.overlayOpacity);
		position();
		setup(1);
		images = _images;
		options.loop = options.loop && (images.length > 1);
		return changeImage(startImage);
	}
};
})();

var slimoptions = {initialHeight:480,initialWidth:960,overlayOpacity:0.8,loop:false,overlayFadeDuration:0}

Slimbox.scanPage = function() {
$$(document.links).filter(function(el) {
	return el.rel && el.rel.test(/^lightbox/i);
}).slimbox(slimoptions, null, function(el) {
	return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
};
window.addEvent("domready", Slimbox.scanPage);
