/* simple lightbox 
 * written by Paul Apel
 * http://www.daten-ordner.de/
 */
var lightBox = Class.create({
	initialize: function() {
		var darkbg_wrap = document.createElement("a");
		darkbg_wrap.setAttribute('id','darkbg_wrap');
		darkbg_wrap.setAttribute('onClick','lightbox.fadeout();');
 		darkbg_wrap.setAttribute('tabindex',0);

		var darkbg = document.createElement("div");
		darkbg.setAttribute('id','darkbg');
		darkbg_wrap.appendChild(darkbg);

		var closeme = document.createElement("div");
		closeme.setAttribute('id','closeme');
		closeme.setAttribute('onClick','lightbox.fadeout();');
	
		var lightbox = document.createElement("div");
		lightbox.setAttribute('id','lightbox');
		lightbox.appendChild(closeme);

		var lightbox_content = document.createElement("div");
		lightbox_content.setAttribute('id','lightbox_content');

		var lightbox_wrap = document.createElement("div");
		lightbox_wrap.setAttribute('id','lightbox_wrap');
		lightbox_wrap.appendChild(lightbox);
		lightbox.appendChild(lightbox_content);

/*
		var lightboxA = document.createElement("a");
		lightboxA.setAttribute('style','width: 100%;');
		lightboxA.appendChild(lightbox_wrap);
*/	

		document.body.insertBefore(lightbox_wrap,document.body.childNodes[0].nextSibling);
		document.body.insertBefore(darkbg_wrap,document.body.childNodes[0].nextSibling);
	},
	keyPress: function(e) {
		if ($("darkbg_wrap").style.visibility == "visible")
		if (e.keyCode == 27) {
			lightbox.fadeout();
		}

	},
	placement: function() {
		var dimensions = $('lightbox').getDimensions();
		var yPos = Math.floor(document.viewport.getHeight()/2 - dimensions.height/2);
		new Effect.Move('lightbox', { x: 0, y: yPos, mode: 'absolute', duration: 0 });
	},	
	lightbox_content: function(content) {
		$("lightbox_content").innerHTML = content;
	},	
	fadeout: function(e) {
		new Effect.Opacity("lightbox", {duration:0.3, from:1.0, to:0.0,
			afterFinish: function(){
				document.getElementById("lightbox").style.visibility = "hidden";
			}
		});
		new Effect.Opacity("darkbg_wrap", {duration:0.9, from:0.8, to:0.0,
			afterFinish: function(){
				document.getElementById("darkbg_wrap").style.visibility = "hidden";
			}
		});	
	},	
	show: function(content, command) {
		if (content != undefined) {
			switch (command) {
    			case "source": this.lightbox_content($(content).innerHTML);
                    break;
    			default: this.lightbox_content(content); 
			}
		}
		this.placement();
		if ($("darkbg_wrap").style.visibility != "visible")
			new Effect.Opacity("darkbg_wrap", {duration:0.8, from:0.0, to:0.8,
				afterUpdate:function(){
					document.getElementById("darkbg_wrap").style.visibility = "visible";
					Element.show("darkbg_wrap")
				},
				afterFinish: function(){
				}
			});
	
		if ($("lightbox").style.visibility != "visible")
			new Effect.Opacity("lightbox", {duration:0.4, from:0.0, to:1.0,
				afterUpdate:function(){
					Element.show("lightbox")
					document.getElementById("lightbox").style.visibility = "visible";
					$("lightbox").focus();
				},
				afterFinish: function(){
				}
			});
		}
});
