/*
GNU Affero General Public License - {@link http://www.gnu.org/licenses/agpl.html}
@example Visit {@link http://jquery.com/plugins/project/jquerylightbox_bal} for more information.
*/
(function (b)
{
	if (typeof b.log === "undefined") if (!b.browser.safari && typeof window.console !== "undefined" && typeof window.console.log === "function") { b.log = function () { for (var a = [], c = 0; c < arguments.length; c++) a.push(arguments[c]); window.console.log.apply(window.console, a) }; b.console = { log: b.log, debug: window.console.debug || b.log, warn: window.console.warn || b.log, error: window.console.error || b.log, trace: window.console.trace || b.log} } else { b.log = function () { }; b.console = { log: b.log, debug: b.log, warn: b.log, error: alert, trace: b.log} } b.params_to_json =
b.params_to_json || function (a)
{
	a = String(a); a = a.substring(a.indexOf("?") + 1); a = a.replace(/\+/g, "%20"); if (a.substring(0, 1) === "{" && a.substring(a.length - 1) === "}") return eval(decodeURIComponent(a)); a = a.split(/\&|\&amp\;/); for (var c = {}, d = 0, f = a.length; d < f; ++d)
	{
		var e = a[d] || null; if (e !== null)
		{
			e = e.split("="); if (e !== null)
			{
				var h = e[0] || null; if (h !== null) if (typeof e[1] !== "undefined")
				{
					var g = e[1]; h = decodeURIComponent(h); g = decodeURIComponent(g); try { g = eval(g) } catch (j) { } e = h.split("."); if (e.length === 1) c[h] = g; else
					{
						g = ""; for (ii in e)
						{
							h =
e[ii]; g += "." + h; eval("json" + g + " = json" + g + " || {}")
						} eval("json" + g + " = value")
					} 
				} 
			} 
		} 
	} return c
}; b.LightboxClass = function () { this.construct() }; b.fn.lightbox = function (a)
{
	b.Lightbox = b.Lightbox || new b.LightboxClass; if (b.Lightbox.ie6 && !b.Lightbox.ie6_support) return this; a = b.extend({ start: false, events: true }, a); var c = b(this); if (a.events) { b(c).unbind("click").click(function () { var d = b(this); if (!b.Lightbox.init(b(d)[0], c)) return false; if (!b.Lightbox.start()) return false; return false }); b(c).addClass("lightbox-enabled") } if (a.start)
	{
		a =
b(this); if (!b.Lightbox.init(b(a)[0], c)) return this; if (!b.Lightbox.start()) return this
	} return this
}; b.extend(b.LightboxClass.prototype, { images: { list: [], image: false, prev: function (a) { if (typeof a === "undefined") { a = this.active(); if (!a) return a } if (this.first(a)) return false; return this.get(a.index - 1) }, next: function (a) { if (typeof a === "undefined") { a = this.active(); if (!a) return a } if (this.last(a)) return false; return this.get(a.index + 1) }, first: function (a)
{
	if (typeof a === "undefined") return this.get(0); return a.index ===
0
}, last: function (a) { if (typeof a === "undefined") return this.get(this.size() - 1); return a.index === this.size() - 1 }, single: function () { return this.size() === 1 }, size: function () { return this.list.length }, empty: function () { return this.size() === 0 }, clear: function () { this.list = []; this.image = false }, active: function (a) { if (typeof a === "undefined") return this.image; if (a !== false) { a = this.get(a); if (!a) return a } this.image = a; return true }, add: function (a)
{
	if (a[0]) { for (var c = 0; c < a.length; c++) this.add(a[c]); return true } a = this.create(a);
	if (!a) return a; a.index = this.size(); this.list.push(a); return true
}, create: function (a)
{
	var c = { src: "", title: "Untitled", description: "", name: "", index: -1, color: null, width: null, height: null, image: true }; if (a.image) { c.src = a.src || c.src; c.title = a.title || c.title; c.description = a.description || c.description; c.name = a.name || c.name; c.color = a.color || c.color; c.width = a.width || c.width; c.height = a.height || c.height; c.index = a.index || c.index } else if (a.tagName)
	{
		a = b(a); if (a.attr("src") || a.attr("href"))
		{
			c.src = a.attr("src") || a.attr("href");
			c.title = a.attr("title") || a.attr("alt") || c.title; c.name = a.attr("name") || ""; c.color = a.css("backgroundColor"); var d = c.title.indexOf(": "); if (d > 0) { c.description = c.title.substring(d + 2) || c.description; c.title = c.title.substring(0, d) || c.title } 
		} else c = false
	} else c = false; if (!c) { b.console.error("We dont know what we have:", a); return false } return c
}, get: function (a)
{
	if (typeof a === "undefined" || a === null) return this.active(); else if (typeof a === "number") a = this.list[a] || false; else
	{
		a = this.create(a); if (!a) return false;
		for (var c = false, d = 0; d < this.size(); d++) { var f = this.list[d]; if (f.src === a.src && f.title === a.title && f.description === a.description) c = f } a = c
	} if (!a) { b.console.error("The desired image does not exist: ", a, this.list); return false } return a
}, debug: function () { return b.Lightbox.debug(arguments) } 
}, constructed: false, compressed: null, src: null, baseurl: null, files: { compressed: { js: { lightbox: "js/jquery.lightbox.min.js", colorBlend: "js/jquery.color.min.js" }, css: { lightbox: "css/jquery.lightbox.css"} }, uncompressed: { js: { lightbox: "js/jquery.lightbox.js",
	colorBlend: "js/jquery.color.js"
}, css: { lightbox: "css/jquery.lightbox.css"}
}, images: { prev: "images/prev.gif", next: "images/next.gif", blank: "images/blank.gif", loading: "images/loading.gif"}
}, text: { image: "Image", of: "of", close: "Close X", closeInfo: "You can also click anywhere outside the image to close.", download: "Download.", help: { close: "Click to close", interact: "" }, about: { text: "jQuery Lightbox Plugin (balupton edition)", title: "Licenced under the GNU Affero General Public License.", link: "http://jquery.com/plugins/project/jquerylightbox_bal"} },
	keys: { close: "c", prev: "p", next: "n" }, handlers: { show: null }, opacity: 0.9, padding: null, speed: 400, rel: "lightbox", auto_relify: true, auto_scroll: "follow", auto_resize: true, ie6: null, ie6_support: true, ie6_upgrade: true, colorBlend: null, download_link: true, show_helper_text: true, show_linkback: true, show_info: "auto", show_extended_info: "auto", options: ["show_helper_text", "auto_scroll", "auto_resize", "download_link", "show_info", "show_extended_info", "ie6_support", "ie6_upgrade", "colorBlend", "baseurl", "files", "text", "show_linkback",
"keys", "opacity", "padding", "speed", "rel", "auto_relify"], construct: function (a)
{
	var c = typeof this.constructed === "undefined" || this.constructed === false; this.constructed = true; var d = c; a = a || {}; var f = function (g, j) { if (typeof g === "object") for (var i in g) g[i] = f(g[i], j); else if (typeof j === "array") { i = 0; for (var k = g.length; i < k; ++i) g[i] = f(g[i], j) } else g = j + g; return g }; if (c && typeof a.files === "undefined")
	{
		this.compressed = null; var e = b("script[src*=" + this.files.compressed.js.lightbox + "]:first"); if (e.length !== 0)
		{
			b.extend(true,
this.files, this.files.compressed); this.compressed = true
		} else { e = b("script[src*=" + this.files.uncompressed.js.lightbox + "]:first"); if (e.length !== 0) { b.extend(true, this.files, this.files.uncompressed); this.compressed = false } } if (this.compressed === null) { b.console.error("Lightbox was not able to find it's javascript script tag necessary for auto-inclusion."); d = false } else
		{
			this.src = e.attr("src"); this.baseurl = this.src.substring(0, this.src.indexOf(this.files.js.lightbox)); this.files = f(this.files, this.baseurl); a =
b.extend(a, b.params_to_json(this.src))
		} 
	} else if (typeof a.files === "object") a.files = f(a.files, this.baseurl); else d = false; for (var h in this.options) { e = this.options[h]; if (typeof a[e] === "object" && typeof this[e] === "object") this[e] = b.extend(true, this[e], a[e]); else if (typeof a[e] !== "undefined") this[e] = a[e] } delete h; this.ie6 = c && navigator.userAgent.indexOf("MSIE 6") >= 0 ? true : false; if (d || typeof a.download_link !== "undefined" || typeof a.colorBlend !== "undefined" || typeof a.files === "object" || typeof a.text === "object" ||
typeof a.show_linkback !== "undefined" || typeof a.scroll_with !== "undefined") b(function () { b.Lightbox.domReady() }); return true
}, domReady: function ()
{
	var a = document.getElementsByTagName(b.browser.safari ? "head" : "body")[0], c = this.files.css, d = this.files.js; if (this.ie6 && this.ie6_upgrade) d.ie6 = "http://www.savethedevelopers.org/say.no.to.ie.6.js"; if (this.colorBlend === true && typeof b.colorBlend === "undefined") this.colorBlend = true; else { this.colorBlend = typeof b.colorBlend !== "undefined"; delete d.colorBlend } for (stylesheet in c)
	{
		var f =
document.createElement("link"); f.type = "text/css"; f.rel = "stylesheet"; f.media = "screen"; f.href = c[stylesheet]; f.id = "lightbox-stylesheet-" + stylesheet.replace(/[^a-zA-Z0-9]/g, ""); b("#" + f.id).remove(); a.appendChild(f)
	} for (script in d) { f = document.createElement("script"); f.type = "text/javascript"; f.src = d[script]; f.id = "lightbox-script-" + script.replace(/[^a-zA-Z0-9]/g, ""); b("#" + f.id).remove(); a.appendChild(f) } delete d; delete c; delete a; b("#lightbox,#lightbox-overlay").remove(); b("body").append('<div id="lightbox-overlay"><div id="lightbox-overlay-text">' +
(this.show_linkback ? '<p><span id="lightbox-overlay-text-about"><a href="#" title="' + this.text.about.title + '">' + this.text.about.text + "</a></span></p><p>&nbsp;</p>" : "") + (this.show_helper_text ? '<p><span id="lightbox-overlay-text-close">' + this.text.help.close + '</span><br/>&nbsp;<span id="lightbox-overlay-text-interact">' + this.text.help.interact + "</span></p>" : "") + '</div></div><div id="lightbox"><div id="lightbox-imageBox"><div id="lightbox-imageContainer"><img id="lightbox-image" /><div id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="' +
this.files.images.loading + '" /></a></div></div></div><div id="lightbox-infoBox"><div id="lightbox-infoContainer"><div id="lightbox-infoHeader"><span id="lightbox-caption">' + (this.download_link ? '<a href="#" title="' + this.text.download + '" id="lightbox-caption-title"></a>' : '<span id="lightbox-caption-title"></span>') + '<span id="lightbox-caption-seperator"></span><span id="lightbox-caption-description"></span></span></div><div id="lightbox-infoFooter"><span id="lightbox-currentNumber"></span><span id="lightbox-close"><a href="#" id="lightbox-close-button" title="' +
this.text.closeInfo + '">' + this.text.close + '</a></span></div><div id="lightbox-infoContainer-clear"></div></div></div></div>'); this.resizeBoxes(); this.repositionBoxes(); b("#lightbox,#lightbox-overlay,#lightbox-overlay-text-interact").hide(); this.ie6 && this.ie6_support && b("#lightbox-overlay").css({ position: "absolute", top: "0px", left: "0px" }); b.each(this.files.images, function () { var e = new Image; e.onload = function () { e = e.onload = null }; e.src = this }); b(window).unbind("resize").resize(function () { b.Lightbox.resizeBoxes("resized") });
	this.scroll === "follow" && b(window).scroll(function () { b.Lightbox.repositionBoxes() }); b("#lightbox-nav-btnPrev").unbind().hover(function () { b(this).css({ background: "url(" + b.Lightbox.files.images.prev + ") left 45% no-repeat" }) }, function () { b(this).css({ background: "transparent url(" + b.Lightbox.files.images.blank + ") no-repeat" }) }).click(function () { b.Lightbox.showImage(b.Lightbox.images.prev()); return false }); b("#lightbox-nav-btnNext").unbind().hover(function ()
	{
		b(this).css({ background: "url(" + b.Lightbox.files.images.next +
") right 45% no-repeat"
		})
	}, function () { b(this).css({ background: "transparent url(" + b.Lightbox.files.images.blank + ") no-repeat" }) }).click(function () { b.Lightbox.showImage(b.Lightbox.images.next()); return false }); this.show_linkback && b("#lightbox-overlay-text-about a").click(function () { window.open(b.Lightbox.text.about.link); return false }); b("#lightbox-overlay-text-close").unbind().hover(function () { b("#lightbox-overlay-text-interact").fadeIn() }, function () { b("#lightbox-overlay-text-interact").fadeOut() });
	b("#lightbox-caption-title").click(function () { window.open(b(this).attr("href")); return false }); b("#lightbox-overlay, #lightbox, #lightbox-loading-link, #lightbox-btnClose").unbind().click(function () { b.Lightbox.finish(); return false }); this.auto_relify && this.relify(); return true
}, relify: function () { var a = {}, c = 0, d = this.rel; b.each(b("[rel*=" + d + "]"), function (f, e) { var h = b(e).attr("rel"); if (h === d) h = c; if (typeof a[h] === "undefined") { a[h] = []; c++ } a[h].push(e) }); b.each(a, function (f, e) { b(e).lightbox() }); return true },
	init: function (a, c) { if (typeof c === "undefined") { c = a; a = 0 } this.images.clear(); if (!this.images.add(c)) return false; if (this.images.empty()) { b.console.warn("WARNING", "Lightbox started, but no images: ", a, c); return false } if (!this.images.active(a)) return false; return true }, start: function ()
	{
		this.visible = true; this.scroll === "disable" && b(document.body).css("overflow", "hidden"); b("embed, object, select").css("visibility", "hidden"); this.resizeBoxes("general"); this.repositionBoxes({ speed: 0 }); b("#lightbox-infoFooter").hide();
		b("#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-infoBox").hide(); b("#lightbox-overlay").css("opacity", this.opacity).fadeIn(100, function () { b("#lightbox").fadeIn(50); if (!b.Lightbox.showImage(b.Lightbox.images.active())) { b.Lightbox.finish(); return false } }); return true
	}, finish: function ()
	{
		b("#lightbox").hide(); b("#lightbox-overlay").fadeOut(function () { b("#lightbox-overlay").hide() }); b("embed, object, select").css({ visibility: "visible" }); this.images.active(false);
		this.scroll === "disable" && b(document.body).css("overflow", "visible"); this.visible = false
	}, resizeBoxes: function (a)
	{
		if (a !== "transition") { var c = b(this.ie6 ? document.body : document); b("#lightbox-overlay").css({ width: c.width(), height: c.height() }); delete c } switch (a) { case "general": return true; case "resized": if (this.auto_resize === false) { this.repositionBoxes({ nHeight: g, speed: this.speed }); return true } case "transition": default: break } var d = this.images.active(); if (!d || !d.width || !this.visible) return false; c = d.width;
		d = d.height; g = b(window).width(); var f = b(window).height(); if (this.auto_resize !== false) { g = Math.floor(g * 0.8); f = Math.floor(f * 0.8); for (var e; c > g || d > f; ) { if (c > g) { e = g / c; c = g; d = Math.floor(d * e) } if (d > f) { e = f / d; d = f; c = Math.floor(c * e) } } } var h = b("#lightbox-imageBox").width(); e = b("#lightbox-imageBox").height(); f = c + this.padding * 2; var g = d + this.padding * 2; h = h - f; e = e - g; b("#lightbox-nav-btnPrev,#lightbox-nav-btnNext").css("height", g); b("#lightbox-infoBox").css("width", f); if (a === "transition") if (h === 0 && e === 0)
		{
			this.pause(this.speed /
3); this.showImage(null, 3)
		} else { b("#lightbox-image").width(c).height(d); b("#lightbox-imageBox").animate({ width: f, height: g }, this.speed, function () { b.Lightbox.showImage(null, 3) }) } else { b("#lightbox-image").animate({ width: c, height: d }, this.speed); b("#lightbox-imageBox").animate({ width: f, height: g }, this.speed) } this.repositionBoxes({ nHeight: g, speed: this.speed }); return true
	}, repositioning: false, reposition_failsafe: false, repositionBoxes: function (a)
	{
		if (this.repositioning) { this.reposition_failsafe = true; return null } this.repositioning =
true; a = b.extend({}, a); a.callback = a.callback || null; a.speed = a.speed || "slow"; var c = this.getPageScroll(), d = a.nHeight || parseInt(b("#lightbox").height(), 10); d = c.yScroll + (b(window).height() - d) / 2.5; c = { left: c.xScroll, top: d }; if (a.speed) { b("#lightbox").css(c); if (b.Lightbox.reposition_failsafe) { b.Lightbox.repositioning = b.Lightbox.reposition_failsafe = false; b.Lightbox.repositionBoxes(a) } else { b.Lightbox.repositioning = false; a.callback && a.callback() } } else
		{
			b("#lightbox").css(c); if (this.reposition_failsafe)
			{
				this.repositioning =
this.reposition_failsafe = false; this.repositionBoxes(a)
			} else this.repositioning = false
		} return true
	}, visible: false, showImage: function (a, c)
	{
		a = this.images.get(a); if (!a) return a; c = c || 1; var d = c > 1 && this.images.active().src !== a.src, f = c > 2 && b("#lightbox-image").attr("src") !== a.src; if (d || f) { b.console.info("We wanted to skip a few steps: ", a, c, d, f); c = 1 } switch (c)
		{
			case 1: this.KeyboardNav_Disable(); b("#lightbox-loading").show(); b("#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-infoBox").hide();
				b("#lightbox-imageBox").unbind(); if (!this.images.active(a)) return false; if (a.width && a.height) this.showImage(null, 2); else { var e = new Image; e.onload = function () { a.width = e.width; a.height = e.height; b.Lightbox.showImage(null, 2); e = e.onload = null }; e.src = a.src } break; case 2: b("#lightbox-image").attr("src", a.src); if (typeof this.padding === "undefined" || this.padding === null || isNaN(this.padding)) this.padding = parseInt(b("#lightbox-imageContainer").css("padding-left"), 10) || parseInt(b("#lightbox-imageContainer").css("padding"),
10) || 0; if (this.colorBlend) { b("#lightbox-overlay").animate({ backgroundColor: a.color }, this.speed * 2); b("#lightbox-imageBox").css("borderColor", a.color) } this.resizeBoxes("transition"); break; case 3: b("#lightbox-loading").hide(); b("#lightbox-image").fadeIn(this.speed * 1.5, function () { b.Lightbox.showImage(null, 4) }); this.preloadNeighbours(); this.handlers.show !== null && this.handlers.show(a); break; case 4: d = b("#lightbox-caption-title").html(a.title || "Untitled"); if (this.download_link) d.attr("href", this.download_link ?
a.src : ""); delete d; b("#lightbox-caption-seperator").html(a.description ? ": " : ""); b("#lightbox-caption-description").html(a.description || "&nbsp;"); this.images.size() > 1 ? b("#lightbox-currentNumber").html(this.text.image + "&nbsp;" + (a.index + 1) + "&nbsp;" + this.text.of + "&nbsp;" + this.images.size()) : b("#lightbox-currentNumber").html("&nbsp;"); b("#lightbox-imageBox").unbind("mouseover").mouseover(function () { b("#lightbox-infoBox:not(:visible)").stop().slideDown(this.speed) }); b("#lightbox-infoBox").unbind("mouseover").mouseover(function () { b("#lightbox-infoFooter:not(:visible)").stop().slideDown(this.speed) });
				if (this.show_extended_info === true) { b("#lightbox-imageBox").trigger("mouseover"); b("#lightbox-infoBox").trigger("mouseover") } else this.show_info === true && b("#lightbox-imageBox").trigger("mouseover"); b("#lightbox-nav-btnPrev, #lightbox-nav-btnNext").css({ background: "transparent url(" + this.files.images.blank + ") no-repeat" }); this.images.first(a) || b("#lightbox-nav-btnPrev").show(); this.images.last(a) || b("#lightbox-nav-btnNext").show(); b("#lightbox-nav").show(); this.KeyboardNav_Enable(); break; default: b.console.error("Don't know what to do: ",
a, c); return this.showImage(a, 1)
		} return true
	}, preloadNeighbours: function () { if (this.images.single() || this.images.empty()) return true; var a = this.images.active(); if (!a) return a; var c = this.images.prev(a), d; if (c) { d = new Image; d.src = c.src } if (a = this.images.next(a)) { d = new Image; d.src = a.src } }, KeyboardNav_Enable: function () { b(document).keydown(function (a) { b.Lightbox.KeyboardNav_Action(a) }) }, KeyboardNav_Disable: function () { b(document).unbind("keydown") }, KeyboardNav_Action: function (a)
	{
		a = a || window.event; var c = a.keyCode;
		a = a.DOM_VK_ESCAPE || 27; var d = String.fromCharCode(c).toLowerCase(); if (d === this.keys.close || c === a) return b.Lightbox.finish(); if (d === this.keys.prev || c === 37) return b.Lightbox.showImage(b.Lightbox.images.prev()); if (d === this.keys.next || c === 39) return b.Lightbox.showImage(b.Lightbox.images.next()); return true
	}, getPageScroll: function ()
	{
		var a, c; if (self.pageYOffset) { c = self.pageYOffset; a = self.pageXOffset } else if (document.documentElement && document.documentElement.scrollTop)
		{
			c = document.documentElement.scrollTop;
			a = document.documentElement.scrollLeft
		} else if (document.body) { c = document.body.scrollTop; a = document.body.scrollLeft } return { xScroll: a, yScroll: c}
	}, pause: function (a) { var c = new Date, d = null; do d = new Date; while (d - c < a) } 
}); if (typeof b.Lightbox === "undefined") b.Lightbox = new b.LightboxClass
})(jQuery);