/*
	Slimbox v1.7 - The ultimate lightweight Lightbox clone
	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
var bigHref;
var Slimbox = ( function() {
					var F = window, n = Browser.Engine.trident4, u, g, G = -1, o, w, E, v, y, M, s, 
					m = {}, t = new Image(), K = new Image(), I, a, h, q, J, e, H, c, A, L, x, i, d, C;
					
					F.addEvent("domready", function() {
						$(document.body).adopt($$(I = new Element("div", {
							id: "lbOverlay",
							events: {
								click: D
								}
							}),							// создаются дивы-обертки, делаются невидимыми
							a = new Element("div", {
								id: "lbCenter"
							}),
							H = new Element("div", {
								id: "lbBottomContainer"
							})
						).setStyle("display", "none"));
						
						h = new Element("div", {		// создаются элементы перехода на следующую и предыдущую фотографию
							id: "lbImage"
						}).injectInside(a).adopt(q = new Element("div", {
							styles: {
								position: "relative"
							}
						}).adopt(J = new Element("a", {
							id: "lbPrevLink",
							href: "#",
							events: {
								click: B
							}
						}),
						e = new Element("a", {
							id: "lbNextLink",
							href: "#",
							events: {
								click: f
							}
						})
					)); // закончилось создание необходимых элементов по окончанию загрузки документа
					
					c = new Element("div", { // создаются элементы самой мини-галереи
						id: "lbBottom"
					}).injectInside(H).adopt(new Element("a", {
						id: "lbCloseLink",
						href: "#",
						events: {
							click: D
						}
					}),
					A = new Element("div", {
						id: "lbCaption"
					}),
					L = new Element("div", {
						id: "lbNumber"
					}),
					new Element("div", {
						styles: {
							clear:"both"
						}
					})
				)
			});
			
			function z() {
				var N = F.getScroll(), O = F.getSize(); // получаем размеры окна браузера
				$$(a, H).setStyle("left", N.x + (O.x / 2));
				if(v) {
					I.setStyles({
						left: N.x,
						top: N.y,
						width: O.x,
						height: O.y
					})
				}
			}
			function l(N) {["object", n ? "select" : "embed"].forEach(function (P) {
				Array.forEach(document.getElementsByTagName(P),
				function(Q) {
					if(N) {
						Q._slimbox = Q.style.visibility
					}
					Q.style.visibility = N ? "hidden" : Q._slimbox
				}
			)});
			I.style.display = N ? "" : "none";
			var O = N ? "addEvent" : "removeEvent";
			F[O]("scroll", z)[O]("resize", z);
			document[O]("keydown", p)
		}
		function p(O) {
			var N = O.code;
			return u.closeKeys.contains(N) ? D() : u.nextKeys.contains(N) ? f() : u.previousKeys.contains(N) ? B() : false
		}
		function B() {
			return b(w)
		}
		function f() {
			return b(E)
		}
		function b(N) {
			if(N >= 0) {
				G = N;
				o = g[N][0];
				
				//alert(bigHref);
				w = (G || (u.loop ? g.length : 0)) - 1;
				E = ((G + 1) % g.length) || (u.loop ? 0 : -1);
				r();
				a.className = "lbLoading";
				m = new Image();
				m.onload = k;
				
				m.src = o; // в переменной o хранится полный адрес картинки
			}
			return false;
		}
		function k() {
			a.className = "";
			d.set(0);
			h.setStyles({
				backgroundImage: "url(" + o + ")", display: ""
			});
			q.setStyle("width", m.width);
			$$(q, J, e).setStyle("height", m.height);
			A.set("html", g[G][1] || "");
			L.set("html", (((g.length > 1) && u.counterText) || "").replace(/{x}/, G + 1).replace(/{y}/, g.length));
			if(w >= 0) {
				t.src = g[w][0]
			}
			if(E >= 0) {
				K.src = g[E][0]
			}
			M = h.offsetWidth;
			s = h.offsetHeight;
			var P = Math.max(0, y - (s / 2)), N = 0, O;
			if(a.offsetHeight != s) {
				N = i.start({
					height: s,
					top: P
				})
			}
			if(a.offsetWidth != M) {
				N = i.start({
					width: M,
					marginLeft: -M / 2
				})
			}
			O = function() {
				H.setStyles({
					width: M,
					top: P + s,
					marginLeft: -M / 2,
					visibility: "hidden",
					display: ""
				});
				d.start(1)
			};
			if(N) {
				i.chain(O)
			} else {
				O()
			}
		}
		function j() {
			if(w >= 0) {
				J.style.display = ""
			}
			if(E >= 0) {
				e.style.display = ""
			}
			C.set(-c.offsetHeight).start(0);
			H.style.visibility = ""
		}
		function r() {
			m.onload = $empty;
			m.src = t.src = K.src = o;
			i.cancel();
			d.cancel();
			C.cancel();
			$$(J,e,h,H).setStyle("display","none")
		}
		function D() {
			if(G >= 0) {
				r();
				G = w = E = -1;
				a.style.display = "none";
				x.cancel().chain(l).start(0)
			}
			return false
		}
		Element.implement({
			slimbox: function(N, O) {
				$$(this).slimbox(N, O);
				return this
			}
		});
		Elements.implement({
			slimbox: function(N, Q, P) {
				Q = Q || function(R) {
					return [R.href, R.title]
				};
				P = P || function() {
					return true
				};
				var O = this;
				O.removeEvents("click").addEvent("click", function() {
					var R = O.filter(P, this);
					return Slimbox.open(R.map(Q), R.indexOf(this), N)
				});
				return O
			}
		});
		return {
			open: function(P, O, N) {
				u = $extend({
					loop: false,
					overlayOpacity: 0.8,
					overlayFadeDuration: 400,
					resizeDuration: 400,
					resizeTransition: false,
					initialWidth: 250,
					initialHeight: 250,
					imageFadeDuration: 400,
					captionAnimationDuration: 400,
					counterText: "Image {x} of {y}",
					closeKeys: [27,88,67],
					previousKeys: [37,80],
					nextKeys: [39,78]},
					N || {}
				);
				x = new Fx.Tween(I, {
					property: "opacity",
					duration: u.overlayFadeDuration
				});
				i = new Fx.Morph(a, $extend({
					duration: u.resizeDuration,
					link: "chain"
				},
				u.resizeTransition ? {
					transition: u.resizeTransition } : {} 
			));
			d = new Fx.Tween(h, {
				property: "opacity",
				duration: u.imageFadeDuration,
				onComplete: j
			});
			C = new Fx.Tween(c, {
				property: "margin-top",
				duration: u.captionAnimationDuration
			});
			if(typeof P == "string") {
				P = [[P, O]];
				O = 0
			}
			y = F.getScrollTop() + (F.getHeight() / 2);
			M = u.initialWidth;
			s = u.initialHeight;
			a.setStyles({
				top: Math.max(0, y - (s / 2)),
				width: M,
				height: s,
				marginLeft: -M / 2,
				display: ""
			});
			v = n || (I.currentStyle && (I.currentStyle.position != "fixed"));
			if(v) {
				I.style.position = "absolute"
			}
			x.set(0).start(u.overlayOpacity);
			z();
			l(1);
			g = P;
			u.loop = u.loop && (g.length > 1);
			return b(O);
		}
	}
})();

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
Slimbox.scanPage = function() {
	$$(document.links).filter(function(el) {
		return el.rel && el.rel.test(/^lightbox/i);
	}).slimbox({counterText: "Фотография {x} из {y}"}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};

/*
$(document).ready(function() {
	bigHref = $('#bigphotohref').attr('href');
	Slimbox.scanPage;
}); */
window.addEvent("domready", Slimbox.scanPage);