function addEvent(obj, evt, fnc) {
	if (obj.addEventListener)
		obj.addEventListener(evt, fnc, false);
	else if (obj.attachEvent)
		obj.attachEvent('on' + evt, fnc);
	else
		return false;
	return true;
}

function removeEvent(obj, evt, fnc) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt, fnc, false);
	else if (obj.detachEvent)
		obj.detachEvent('on' + evt, fnc);
	else
		return false;
	return true;
}

//----------

function appendElement(node, tag, id, htm) {
	var ne = document.createElement(tag);
	if (id)
		ne.id = id;
	if (htm)
		ne.innerHTML = htm;
	node.appendChild(ne);
}

//----------

function showPopup(p) {
	greyout(true);
	document.getElementById(p).style.display = 'block';
}

function hidePopup(p) {
	greyout(false);
	document.getElementById(p).style.display = 'none';
}

//----------

function greyout(d, z) {
	var obj = document.getElementById('greyout');
	if (!obj) {
		appendElement(document.body, 'div', 'greyout');
		obj = document.getElementById('greyout');
		obj.style.position = 'absolute';
		obj.style.top = '0px';
		obj.style.left = '0px';
		obj.style.background = '#111';
		obj.style.opacity = '.7';
		obj.style.filter = 'alpha(opacity=70)';
	}
	if (d) {
		if (!z) {
			z - 50
		}
		obj.style.zIndex = z;
		obj.style.height = Math.max(document.body.scrollHeight,
				document.body.clientHeight) + 'px';
		obj.style.width = Math.max(document.body.scrollWidth,
				document.body.clientWidth) + 'px';
		obj.style.display = 'block';
		addEvent(window, 'resize', greyoutResize);
	} else {
		obj.style.display = 'none';
		removeEvent(window, 'resize', greyoutResize);
	}
}

function greyoutResize() {
	var obj = document.getElementById('greyout');
	obj.style.height = document.body.clientHeight + 'px';
	obj.style.width = document.body.clientWidth + 'px';
	obj.style.height = Math.max(document.body.scrollHeight,
			document.body.clientHeight) + 'px';
	obj.style.width = Math.max(document.body.scrollWidth,
			document.body.clientWidth) + 'px';
}
