var popupLoadHandler = null;
var iFrameHandler = null;

var isPopupOpen = false;
var isPopupBusy = false;

var ESC_KEY_CODE = 27;

function popupIframeHandler()
{
	if(iFrameHandler != null)
	{
		iFrameHandler();
		
		iFrameHandler = null;
	}
}

function popup(width, popupPage, handler)
{
	if(!isPopupOpen)
	{
		isPopupOpen = true;
		
		popupLoadHandler = handler;
		
		$('page_cover').style.display = '';
		$('page_cover').style.height = document.body.offsetHeight + "px";
		
		var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
		
		$('popup').style.display = '';
		$('popup').style.top = scrollTop + 10 + "px";
		$('popup').style.width = width + "px";
		$('popup').style.left = (getViewportWidth() - width) / 2 + "px";
		
		setPopupLoading('Loading...');
	
		httpreq(
			appBaseUrl + 'popup.php?page=' + popupPage,
			popupLoaded,
			popupError
		);
	}
	
	return false;
}

function updatePopupInfo(text)
{
	$('popup_info').innerHTML = text;
}

function updatePopup(text)
{
	$('popup_content').innerHTML = text;
}

function setPopupLoading(loadMessage)
{
	updatePopup('<img src="images/ajax-loader-big.gif" /><br/>' + loadMessage);
}

function closePopup()
{
	if(isPopupOpen)
	{
		isPopupOpen = false;
		
		$('page_cover').style.display = 'none';
		
		$('popup').style.display = 'none';
		
		updatePopupInfo('');
		
		updatePopup('');
	}
}

function popupLoaded(req)
{
	if($('popup_ok') && $('popup_ok').focus)
	{
		$('popup_ok').focus();
	}
	
	updatePopup(req.responseText);
	
	if(popupLoadHandler)
	{
		popupLoadHandler();
	}
}

function popupError(req)
{
	updatePopup("Connection error");
}

function popupKeyDown(e)
{
	e = e || window.event;
	
	var keyCode = e.keyCode;
	
	if(keyCode == ESC_KEY_CODE)
	{
		closePopup();
	}
}
setEvent(document, 'keydown', popupKeyDown);