function ModalBoxHelper() {
}

ModalBoxHelper.modalBoxFrameObj;
ModalBoxHelper.modalBoxLayerObj;
ModalBoxHelper.modalBoxDlg;

ModalBoxHelper.initModalBox = function(frameId, layerId) {
	ModalBoxHelper.modalBoxFrameObj = document.getElementById(frameId);
	ModalBoxHelper.modalBoxLayerObj = document.getElementById(layerId);
	ModalBoxHelper.modalBoxDlg = new ModalBox(this.modalBoxFrameObj);
}

ModalBoxHelper.openModalBox = function(url) {
	ModalBoxHelper.modalBoxFrameObj.src = url;
	ModalBoxHelper.modalBoxLayerObj.style.display = 'block';
	ModalBoxHelper.modalBoxDlg.open();
}

ModalBoxHelper.closeModalBox = function() {
	ModalBoxHelper.modalBoxFrameObj.src = "";
	ModalBoxHelper.modalBoxDlg.close();
	ModalBoxHelper.modalBoxLayerObj.style.display = 'none';
}

ModalBoxHelper.__getScrollXY = function() {
	var scrOfX = 0, scrOfY = 0;
	if (typeof (window.pageYOffset) == 'number') {
		// Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if (document.body
			&& (document.body.scrollLeft || document.body.scrollTop)) {
		// DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if (document.documentElement
			&& (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		// IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

ModalBoxHelper.__getHeight = function() {
	var y = 0;
	if (self.innerHeight) {
		y = self.innerHeight;
	} else if (document.documentElement
			&& document.documentElement.clientHeight) {
		y = document.documentElement.clientHeight;
	} else if (document.body) {
		y = document.body.clientHeight;
	}
	return y;
}

ModalBoxHelper.setHeight = function(height) {
	ModalBoxHelper.modalBoxFrameObj.height = height;
	ModalBoxHelper.modalBoxLayerObj.height = height;
	var yOffset = (ModalBoxHelper.__getScrollXY()[1] + (ModalBoxHelper.__getHeight() - height) / 2) + "px";
	ModalBoxHelper.modalBoxFrameObj.style.top = yOffset;
	ModalBoxHelper.modalBoxLayerObj.style.top = yOffset;
}

function cancel() {
	if (self == parent)
		return false;
	try {
		parent.ModalBoxHelper.closeModalBox();
	} catch (e) {
		return false;
	}
	// opener page must be reloaded to retrieve possible data changes from server
	// "parent.location.reload()" does not work (the content of the modal box (iframe)
	// gets not cleared
	// -> reload page by setting "location.href"
	parent.location.href = parent.location.href;
}

/** 
 * Sets the size of the very modal box. 
 * 
 * @param refId The id of the modal box within DOM - tree. 
 * @return false, if nothing happenz. 
 */
function fitParentModalBoxHeight(refId) 
{
	if (self == parent) return false;
	var contentHeight = document.getElementById(refId).offsetHeight;
	if (navigator.appName == 'Microsoft Internet Explorer')
	{
		contentHeight = contentHeight - 16; 
	}
	try {
		parent.ModalBoxHelper.setHeight(contentHeight);
	} catch (e) {
		return false;
	}
}