﻿MantisAddNS("Mantis");

Mantis.Lightbox=function (element) {
	this.Element=element;
};
Mantis.Lightbox.prototype.Show=function () {
	var element=this.Element;
	if (!Mantis.Lightbox.Initiated) Mantis.Lightbox.Init();
	document.forms[0].appendChild(Mantis.Lightbox.Container);
	Mantis.Lightbox.Container.appendChild(element);
	//Mantis.DOM.ProblematicElementsVisiblility(true);
	Mantis.Lightbox.Visible=true;
	Mantis.Lightbox.SetDimensions();

	AddListener("resize",Mantis.Lightbox.SetDimensions);
	if (Mantis.Browser.IE) AddListener("scroll",Mantis.Lightbox.SetDimensions);
	else document.documentElement.AddListener("scroll",Mantis.Lightbox.SetDimensions);
	if (this.CatchKeys) document.body.AddListener("keydown",Mantis.Lightbox.CatchKeys);

	var container=Mantis.Lightbox.Container;

	element.Show();

	element.SetStyle({
			"position":"absolute",
			"display":"block",
			"z-index":container.GetStyle("z-index",true)+200
	});
	element.SetPosition(
		new Mantis.Position.Coor(
			(container.offsetWidth-element.offsetWidth)/2,
			(container.offsetHeight-element.offsetHeight)/2
		)
	);
	Mantis.Lightbox.Current=this;
};
Mantis.Lightbox.prototype.Hide=function () {
	Mantis.Lightbox.Hide();
};
Mantis.Lightbox.Hide=function () {
	//Mantis.DOM.ProblematicElementsVisiblility(false);
	Mantis.Lightbox.Container.Remove();
	Mantis.Lightbox.Visible=false;

	RemoveListener("resize",Mantis.Lightbox.SetDimensions);
	RemoveListener("resize",Mantis.Lightbox.SetDimensions);
	if (Mantis.Browser.IE) RemoveListener("scroll",Mantis.Lightbox.SetDimensions);
	else document.documentElement.RemoveListener("scroll",Mantis.Lightbox.SetDimensions);
	//if (this.CatchKeys) document.body.RemoveListener("keydown",Mantis.Lightbox.CatchKeys);

	Mantis.Lightbox.Current=null;
};
Mantis.Lightbox.Init=function () {
	var container=$E("div");
	container.AddClassName("lightBox");

	var back=$E("div");
	back.AddClassName("lightBoxBg");
	back.AddClassName("lb");

	container.appendChild(back);

	Mantis.Lightbox.Container=container;

	Mantis.Lightbox.Initiated=true;
};
Mantis.Lightbox.SetDimensions=function () {
	var container=Mantis.Lightbox.Container;
	container.SetStyle({
		"top":document.documentElement.scrollTop+"px",
		"width":document.documentElement.clientWidth+"px",
		"height":document.documentElement.clientHeight+"px",
		"position":"absolute",
		"display":"block"
	});
};
Mantis.Lightbox.Current=null;
Mantis.Lightbox.Visible=false;
Mantis.Lightbox.CatchKeys=function (e) {
	var hide=false;
	switch (e.KeyCode()) {
		case Mantis.Events.Keys.ENTER:
		case Mantis.Events.Keys.SPACE:
			hide=true;
			if (Mantis.Lightbox.Current.OnOk) Mantis.Lightbox.Current.OnOk();
			break;
		case Mantis.Events.Keys.ESC:
			hide=true;
			if (Mantis.Lightbox.Current.OnOk) Mantis.Lightbox.Current.OnCancel();
			break;
	}
	if (hide) {
		Mantis.Lightbox.Hide();
		e.Stop();
		return false;
	}
};


/*
useage

css
===
.lightBoxBg {
	background-color:#006699;
	filter:alpha(opacity=30);
	opacity:0.3;
}

js
==
var lb=new Mantis.Lightbox($("x"));
lb.OnOk=function () { alert("ok"); };
lb.OnCancel=function () { alert("cancel"); };

$("Show").AddListener("click",function () { lb.Show(); }); // or lb.Show.Bind(lb);
$("Hide").AddListener("click",function () { lb.Hide(); }); // or lb.Hide.Bind(lb);
*/
