function Dialog(_name, _parent)
{
	this.name = _name;
	this.parent = _parent;
	this.elem = null;
}

function getElementLeft(el)
{
	var left = el.offsetLeft;
	var p = el.offsetParent;
	while (p != null)
	{
		left += p.offsetLeft;
		p = p.offsetParent;
	}
	
	return left;
}

function getElementTop(el)
{
	var top = el.offsetTop;
	var p = el.offsetParent;
	while (p != null)
	{
		top += p.offsetTop;
		p = p.offsetParent;
	}
	
	return top;
}

Dialog.prototype.show = function()
{
	var blanker = document.getElementById('blanker');

	if (!blanker) {
		blanker = document.createElement('div');
		blanker.setAttribute('id', 'blanker');
		
		blanker.style.display = 'none';
		blanker.style.position = 'absolute';
		blanker.style.backgroundColor = 'black';
		blanker.style.opacity = 0.95;
		//blanker.style.zIndex = 999;
	}
	
	this.elem = document.getElementById(this.name);
	if (!this.elem)
		alert('Dialog \'' + this.name + '\' not found!');
	
	document.body.insertBefore(blanker, this.elem);
	
	var parnt = document.getElementById(this.parent);
	var left = getElementLeft(parnt)-1;
	var top = getElementTop(parnt)-1;
	var h = parnt.offsetHeight + 2;
	var w = parnt.offsetWidth + 2;

	blanker.style.left = left + 'px';
	blanker.style.top = top + 'px';
	blanker.style.width = w + 'px';
	blanker.style.height = h + 'px';
	blanker.style.display = 'block';

	this.elem.style.display = 'block';

	var w1 = this.elem.offsetWidth;
	var h1 = this.elem.offsetHeight;

	var x = left + (w - w1) / 2;
	var y = top + (h - h1) / 2;

	this.elem.style.left = x + 'px';
	this.elem.style.top = y + 'px';

	var img = getImage('rndTL');
	img.style.display = 'inline';
	img.style.top = y + 'px';
	img.style.left = x + 'px';

	img = getImage('rndTR');
	img.style.display = 'inline';
	img.style.top = y + 'px';
	img.style.left = (x + this.elem.offsetWidth - img.offsetWidth) + 'px';

	img = getImage('rndBL');
	img.style.display = 'inline';
	img.style.top = (y + this.elem.offsetHeight - img.offsetHeight) + 'px';
	img.style.left = x + 'px';

	img = getImage('rndBR');
	img.style.display = 'inline';
	img.style.top = (y + this.elem.offsetHeight - img.offsetHeight) + 'px';
	img.style.left = (x + this.elem.offsetWidth - img.offsetWidth) + 'px';
}

Dialog.prototype.hide = function()
{
	var blanker = document.getElementById('blanker');

	blanker.style.display = 'none';
	this.elem.style.display = 'none';

	var img = document.getElementById('rndTL');
	img.style.display = 'none';

	img = document.getElementById('rndTR');
	img.style.display = 'none';

	img = document.getElementById('rndBL');
	img.style.display = 'none';

	img = document.getElementById('rndBR');
	img.style.display = 'none';
}

Dialog.prototype.isVisible = function()
{
	if (this.elem)
	{
		return this.elem.style.display != 'none';
	}
	
	return false;
}

function showDialog(name, full) {
	var blanker = document.getElementById('blanker');

	if (!blanker) {
		blanker = document.createElement('div');
		blanker.setAttribute('id', 'blanker');
		
		blanker.style.display = 'none';
		blanker.style.position = 'absolute';
		blanker.style.backgroundColor = 'black';
		blanker.style.opacity = 0.95;
		//blanker.style.zIndex = 999;
	}
	
	var dlg = document.getElementById(name);
	if (!dlg)
		alert('Dialog \'' + name + '\' not found!');
	
	document.body.insertBefore(blanker, dlg);
	
	var grid = document.getElementById('grid');
	var left = grid.offsetLeft - 1;
	var top = grid.offsetTop - 1;
	var h = grid.offsetHeight + 2;
	var w = grid.offsetWidth + 2;

	var controls = document.getElementById('controls');
	h = controls.offsetTop - top;
	if (full) {
		h += controls.offsetHeight;
	}

	blanker.style.left = left + 'px';
	blanker.style.top = top + 'px';
	blanker.style.width = w + 'px';
	blanker.style.height = h + 'px';
	blanker.style.display = 'block';

	dlg.style.display = 'block';

	var w1 = dlg.offsetWidth;
	var h1 = dlg.offsetHeight;

	var x = left + (w - w1) / 2;
	var y = top + (h - h1) / 2;

	dlg.style.left = x + 'px';
	dlg.style.top = y + 'px';

	var img = getImage('rndTL');
	img.style.display = 'inline';
	img.style.top = y + 'px';
	img.style.left = x + 'px';

	img = getImage('rndTR');
	img.style.display = 'inline';
	img.style.top = y + 'px';
	img.style.left = (x + dlg.offsetWidth - img.offsetWidth) + 'px';

	img = getImage('rndBL');
	img.style.display = 'inline';
	img.style.top = (y + dlg.offsetHeight - img.offsetHeight) + 'px';
	img.style.left = x + 'px';

	img = getImage('rndBR');
	img.style.display = 'inline';
	img.style.top = (y + dlg.offsetHeight - img.offsetHeight) + 'px';
	img.style.left = (x + dlg.offsetWidth - img.offsetWidth) + 'px';
}

function hideDialog(name) {
	var blanker = document.getElementById('blanker');
	var dlg = document.getElementById(name);

	blanker.style.display = 'none';
	dlg.style.display = 'none';

	var img = document.getElementById('rndTL');
	img.style.display = 'none';

	img = document.getElementById('rndTR');
	img.style.display = 'none';

	img = document.getElementById('rndBL');
	img.style.display = 'none';

	img = document.getElementById('rndBR');
	img.style.display = 'none';
}

function getImage(_id)
{
	var img = document.getElementById(_id);
	if (!img)
	{
		img = document.createElement('img');
		img.src = _id + '.png';
		img.setAttribute('id', _id);
		img.style.display = 'none';
		img.style.position = 'absolute';
		document.body.appendChild(img);
	}
	
	return img;
}


