LightBox = function(){
	var d = document, o = this;
	o.back = o.create("div", {style: {display: "none", width: "100%", height: "100%", left: 0, top: 0,
		position: (o.isIE = /microsoft|internet explorer/i.test(navigator.appName)) ? "absolute" : "fixed"
	}}, d.body);
	o.box = o.create("div", {style: {display: "none", zIndex: 9999, position: "absolute"}}, d.body);
}
with({o: LightBox.prototype}){
	LightBox.locked = false;
	LightBox.ieFix = null;
	o.show = function(){
		var o = this;
		if(!LightBox.locked){
			o.loop(function(f){addEvent(f, "focus", o.blur);});
			if(o.isIE)
				for(var x = LightBox.ieFix = [document.getElementsByTagName("select"), document.getElementsByTagName("iframe")], i = x.length; i--;)
					for(var j = x[i].length; j--; x[i][j].style.visibility = "hidden");
			LightBox.locked = true;
		}
		o.box.style.display = o.back.style.display = "block";
		addEvent(window, "scroll", o.fix, this);
		addEvent(window, "resize", o.fix, this), o.fix();
	};
	o.hide = function(){
		var o = this, x;
		if(LightBox.locked){
			if(o.isIE)
				for(var x = LightBox.ieFix, i = x.length; i--;){
					for(var j = x[i].length; j--; x[i][j].style.visibility = "visible");
				}
			o.loop(function(f){removeEvent(f, "focus", o.blur);});
			LightBox.locked = false;
		}
		o.box.style.display = o.back.style.display = "none";
		removeEvent(window, "scroll", o.fix, this);
		removeEvent(window, "resize", o.fix, this);
	};
	o.setClassName = function(className){
		this.back.className = className + " back";
		this.box.className = className + " box";
		var w = parseInt(this.width = this.getStyle(this.box, "width")),
		h = parseInt(this.height = this.getStyle(this.box, "height"));
	};
	o.fix = function(){
		var p = document.documentElement, o = this, s;
		if((s = o.back.style).position != "fixed")
			s.left = p.scrollLeft + "px", s.top = p.scrollTop + "px";
		(s = o.box.style).left = p.scrollLeft + (p.clientWidth - o.box.offsetWidth >> 1) + "px";
		s.top = p.scrollTop + (p.clientHeight - o.box.offsetHeight >> 1) + "px";
	};
	o.blur = function(){
		return this.blur(), false;
	};
	o.loop = function(c){
		for(var f = document.forms, i = f.length; i;)
			for(var e = f[--i].elements, j = e.length; j; "type" in e[--j] && c(e[j]));
		for(var f = document.links, i = f.length; i; c(f[--i]));
	};
	o.getStyle = function(o, p){
		return o.currentStyle ? o.currentStyle[p] : window.getComputedStyle ?
		document.defaultView.getComputedStyle(o, null).getPropertyValue(p) : null;
	};
	o.create = function(t, p, n, b){
		var e = document.createElement(t), o = [p, e], x = [o], i;
		do for(i in p = o[0], o = o[1], p)
			p[i] instanceof Object && !(p[i] instanceof Function) ? x.push([p[i], o[i]]) : o[i] = p[i];
		while(o = x.pop());
		return n ? b ? n.insertBefore(e, b) : n.appendChild(e) : e;
	};
}