function popup(popup_content, popup_overlay_id, popup_window_id)
{
	// define default values if applicable
	if (!xDef(popup_overlay_id)) { popup_overlay_id = 'popup_overlay'; }
	if (!xDef(popup_window_id)) { popup_window_id = 'popup_window'; }

	popup_overlay_div = xGetElementById(popup_overlay_id);
	popup_window_div = xGetElementById(popup_window_id);

	if (xDef(popup_content)) // show popup
	{
		xLeft(popup_overlay_id, xScrollLeft());
		xTop(popup_overlay_id, xScrollTop());
		xWidth(popup_overlay_id, xClientWidth());
		xHeight(popup_overlay_id, xClientHeight());
		xDisplay(popup_overlay_id, 'block');
		
		xInnerHtml(popup_window_id, '<div class="popupClose" onclick="popup()">x</div>' + popup_content);
		xDisplay(popup_window_id, 'block');
		if (xDef(popup_content_width)) { xWidth(popup_window_id, popup_content_width); }
		if (xDef(popup_content_height)) { xHeight(popup_window_id, popup_content_height); }
		xLeft(popup_window_id, xScrollLeft() + (xClientWidth() - xWidth(popup_window_id)) / 2);
		xTop(popup_window_id, xScrollTop() + (xClientHeight() - xHeight(popup_window_id)) / 2);
		
		popup_overlay_div.onclick = popup_event;
	}

	else // clear popup
	{
		xDisplay(popup_overlay_id, 'none');
		xDisplay(popup_window_id, 'none');
		xInnerHtml(popup_window_id, '');

		popup_overlay_div.onclick = null;
	}
}

function popup_event(e)
{
	if (!e) e = window.event;
	popup(); // clear popup
	return true;
}

function popup_init()
{
	window.onscroll = popup_event;
	window.onresize = popup_event;
}

/* Portion of az_popup.js compiled from X 4.0 with XC 0.28b. Distributed under GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xNN4,xUA=navigator.userAgent.toLowerCase();
if(window.opera){
	var i=xUA.indexOf('opera');
	if(i!=-1){var v=parseInt(xUA.charAt(i+6));
	xOp7Up=v>=7;xOp6Dn=v<7;}
}else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){
	xIE4Up=parseFloat(navigator.appVersion)>=4;
	xIE4=xUA.indexOf('msie 4')!=-1;
	xIE5=xUA.indexOf('msie 5')!=-1;
}else if(document.layers){
	xNN4=true;
}
xMac=xUA.indexOf('mac')!=-1;

function xClientHeight(){
	var h=0;
	if(xOp6Dn) 
		h=window.innerHeight;
	else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight)
		h=document.documentElement.clientHeight;
	else if(document.body && document.body.clientHeight)
		h=document.body.clientHeight;
	else if(xDef(window.innerWidth,window.innerHeight,document.width)) {
		h=window.innerHeight;
		if(document.width>window.innerWidth) 
			h-=16;
	}
	return h;
}

function xClientWidth(){
	var w=0;
	if(xOp6Dn) 
		w=window.innerWidth;
	else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth)
		w=document.documentElement.clientWidth;
	else if(document.body && document.body.clientWidth)
		w=document.body.clientWidth;
	else if(xDef(window.innerWidth,window.innerHeight,document.height)) {
		w=window.innerWidth;
		if(document.height>window.innerHeight) 
			w-=16;
	}
	return w;
}

function xDef(){
	for(var i=0; i<arguments.length; ++i){
		if(typeof(arguments[i])=='undefined') 
			return false;
	}
	return true;
}

function xDisplay(e,s){
	if(!(e=xGetElementById(e))) 
		return null;
	if(e.style && xDef(e.style.display)) {
		if (xStr(s)) e.style.display = s;
		return e.style.display;
	}
	return null;
}

function xGetComputedStyle(oEle, sProp, bInt){
	var s, p = 'undefined';
	var dv = document.defaultView;
	if(dv && dv.getComputedStyle){
		s = dv.getComputedStyle(oEle,'');
		if (s) p = s.getPropertyValue(sProp);
	}else if(oEle.currentStyle) {
		var a = sProp.split('-');
		sProp = a[0];
		for (var i=1; i<a.length; ++i) {
			c = a[i].charAt(0);
			sProp += a[i].replace(c, c.toUpperCase());
		}
		p = oEle.currentStyle[sProp];
	}else return null;
	return bInt ? (parseInt(p) || 0) : p;
}

function xGetElementById(e){
	if(typeof(e)!='string') return e;
	if(document.getElementById)
		e=document.getElementById(e);
	else if(document.all)
		e=document.all[e];
	else e=null;
	return e;
}

function xHeight(e,h){
	if(!(e=xGetElementById(e))) return 0;
	if (xNum(h)) {
		if (h<0) h = 0;
		else h=Math.round(h);
	}else h=-1;
	var css=xDef(e.style);
	if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
		h = xClientHeight();
	}else if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
		if(h>=0) {
			var pt=0,pb=0,bt=0,bb=0;
			if (document.compatMode=='CSS1Compat') {
				var gcs = xGetComputedStyle;pt=gcs(e,'padding-top',1);
				if (pt !== null) {
					pb=gcs(e,'padding-bottom',1);
					bt=gcs(e,'border-top-width',1);
					bb=gcs(e,'border-bottom-width',1);
				}else if(xDef(e.offsetHeight,e.style.height)){
					e.style.height=h+'px';
					pt=e.offsetHeight-h;
				}
			}
			h-=(pt+pb+bt+bb);
			if(isNaN(h)||h<0) return;
			else e.style.height=h+'px';
		}
		h=e.offsetHeight;
	}else if(css && xDef(e.style.pixelHeight)) {
		if(h>=0) e.style.pixelHeight=h;h=e.style.pixelHeight;
	}
	return h;
}

function xInnerHtml(e,h){
	if(!(e=xGetElementById(e)) || !xStr(e.innerHTML)) return null;
	var s = e.innerHTML;
	if (xStr(h)) {
		e.innerHTML = h;
	}
	return s;
}

function xLeft(e, iX){
	if(!(e=xGetElementById(e))) return 0;
	var css=xDef(e.style);
	if (css && xStr(e.style.left)) {
		if(xNum(iX)) e.style.left=iX+'px';
		else {
			iX=parseInt(e.style.left);
			if(isNaN(iX)) iX=0;
		}
	}else if(css && xDef(e.style.pixelLeft)) {
		if(xNum(iX)) e.style.pixelLeft=iX;
		else iX=e.style.pixelLeft;
	}
	return iX;
}

function xNum(){
	for(var i=0; i<arguments.length; ++i){
		if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;
	}
	return true;
}

function xScrollLeft(e, bWin){
	var offset=0;
	if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
		var w = window;
		if (bWin && e) w = e;
		if(w.document.documentElement && w.document.documentElement.scrollLeft) 
			offset=w.document.documentElement.scrollLeft;
		else if(w.document.body && xDef(w.document.body.scrollLeft))
			offset=w.document.body.scrollLeft;
	}else {
		e = xGetElementById(e);
		if (e && xNum(e.scrollLeft))
			offset = e.scrollLeft;
	}
	return offset;
}

function xScrollTop(e, bWin){
	var offset=0;
	if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
		var w = window;
		if (bWin && e) w = e;
		if(w.document.documentElement && w.document.documentElement.scrollTop)
			offset=w.document.documentElement.scrollTop;
		else if(w.document.body && xDef(w.document.body.scrollTop))
			offset=w.document.body.scrollTop;
	}else {
		e = xGetElementById(e);
		if (e && xNum(e.scrollTop))
			offset = e.scrollTop;
	}
	return offset;
}

function xStr(s){
	for(var i=0; i<arguments.length; ++i){
		if(typeof(arguments[i])!='string') return false;
	}
	return true;
}

function xTop(e, iY){
	if(!(e=xGetElementById(e))) return 0;
	var css=xDef(e.style);
	if(css && xStr(e.style.top)) {
		if(xNum(iY)) e.style.top=iY+'px';
		else {
			iY=parseInt(e.style.top);
			if(isNaN(iY)) iY=0;
		}
	}else if(css && xDef(e.style.pixelTop)) {
		if(xNum(iY)) e.style.pixelTop=iY;
		else iY=e.style.pixelTop;
	}
	return iY;
}

function xWidth(e,w){
	if(!(e=xGetElementById(e))) return 0;
	if (xNum(w)) {
		if (w<0) w = 0;
		else w=Math.round(w);
	}else w=-1;
	var css=xDef(e.style);
	if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
		w = xClientWidth();
	}else if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
		if(w>=0) {
			var pl=0,pr=0,bl=0,br=0;
			if (document.compatMode=='CSS1Compat') {
				var gcs = xGetComputedStyle;
				pl=gcs(e,'padding-left',1);
				if (pl !== null) {
					pr=gcs(e,'padding-right',1);
					bl=gcs(e,'border-left-width',1);
					br=gcs(e,'border-right-width',1);
				}else if(xDef(e.offsetWidth,e.style.width)){
					e.style.width=w+'px';
					pl=e.offsetWidth-w;
				}
			}
			w-=(pl+pr+bl+br);
			if(isNaN(w)||w<0) return;
			else e.style.width=w+'px';
		}
		w=e.offsetWidth;
	}else if(css && xDef(e.style.pixelWidth)) {
		if(w>=0) e.style.pixelWidth=w;w=e.style.pixelWidth;
	}
	return w;
}