
// *** GLOBALS ***


var popupKillTimer = null;
var popupOffsetX = 20;
var popupOffsetY = -4;
var shadowOffsetX = 3;
var shadowOffsetY = 3;
var shadow2ExtendX = 1;
var shadow2ExtendY = 1;
var arrPopupData = [];
var arrPopupRefs = {};
var popupLinkId = 0;

// *** FUNCTIONS ***

function buildPopupLink(popupTitle, popupHtml, popupFooter, linkHtml, linkAttributes, popupTextFn, popupTextFnParam) {
	var html = "";
	var popupLinkId = arrPopupData.length;
	
	if (popupLinkId === 0) {
		writePopup();
	}

	if (popupTextFn) {
		arrPopupData[popupLinkId] = { "textFn": popupTextFn, "param": popupTextFnParam };
	} else {
		arrPopupData[popupLinkId] = { "title": popupTitle, "html": popupHtml, "footer": popupFooter };
	}
	
	html += "<a href='#' class='imagePopupLink'" + (linkAttributes ? " " + linkAttributes : "");
	html += " id='popupLink" + popupLinkId + "' name='popupLink" + popupLinkId + "'";
	html += " onmouseover='showPopup(" + popupLinkId + ")'";
	html += " onmouseout='setPopupKill()'>";
	
	if (linkHtml) {
		html += linkHtml + "</a>";
	}

	return html;	
}

function writePopup() {

	var popup = document.createElement("DIV");
	popup.id = "popup_div";
	popup.className = "popupDiv";
	popup.style.position = "absolute";
	popup.style.display = "none";
	popup.onmouseover = cancelPopupKill;
	popup.onmouseout = setPopupKill;
	document.body.appendChild(popup);
	
	var popupShadow = document.createElement("DIV");
	popupShadow.id = "popup_shadow";
	popupShadow.className = "popupDivShadow";
	popupShadow.style.position = "absolute";
	popupShadow.style.display = "none";
	//popupShadow.onmouseover = cancelPopupKill;
	//popupShadow.onmouseout = setPopupKill;
	popupShadow.innerHTML = "&nbsp;";
	document.body.appendChild(popupShadow);
	
	var popupShadow2 = document.createElement("DIV");
	popupShadow2.id = "popup_shadow2";
	popupShadow2.className = "popupDivShadow";
	popupShadow2.style.position = "absolute";
	popupShadow2.style.display = "none";
	//popupShadow2.onmouseover = cancelPopupKill;
	//popupShadow2.onmouseout = setPopupKill;
	popupShadow2.innerHTML = "&nbsp;";
	document.body.appendChild(popupShadow2);
}

function showPopup(popupId) {
	var popup, shadow, shadow2, pos, html, textData, popupData;
	
	cancelPopupKill();

	popup = document.getElementById("popup_div");
	shadow = document.getElementById("popup_shadow");
	shadow2 = document.getElementById("popup_shadow2");
	
	pos = Browser.findPos(document.getElementById("popupLink" + popupId));
	
	popupData = arrPopupData[parseInt(String(popupId), 10)];
	if (typeof(popupData.textFn) != "undefined" && popupData.textFn) {
		textData = popupData.textFn(popupData.param);
		if (textData) {
			popupData.title = textData.title;
			popupData.html = textData.html;
			popupData.footer = textData.footer;
		} else {
			return; // *** EXITS HERE ***
		}
	}

	html = (popupData.title ? "<div class='popupTitle'>" + popupData.title + "</div>" : "") + "<div class='popupContent'>" + popupData.html + "</div>" + (popupData.footer ? "<div class='popupFooter'>" + popupData.footer + "</div>" : "");
	popup.innerHTML = html;
	
	popup.style.display = "block";
	shadow.style.display = "block";
	shadow2.style.display = "block";
	
	shadow.style.width = (popup.offsetWidth - shadow2ExtendX) + "px";
	shadow.style.height = (popup.offsetHeight - shadow2ExtendY) + "px";
	shadow2.style.width = (popup.offsetWidth) + "px";
	shadow2.style.height = (popup.offsetHeight) + "px";
	
	popup.style.left = (pos.left + popupOffsetX) + "px";
	popup.style.top = (pos.top + popupOffsetY) + "px";
	shadow.style.left = (pos.left + popupOffsetX + shadowOffsetX) + "px";
	shadow.style.top = (pos.top + popupOffsetY + shadowOffsetY) + "px";
	shadow2.style.left = (pos.left + popupOffsetX + shadowOffsetX) + "px";
	shadow2.style.top = (pos.top + popupOffsetY + shadowOffsetY) + "px";
}

function setPopupKill() {
	cancelPopupKill();
	popupKillTimer = setTimeout(hidePopup, 200);
}

function cancelPopupKill() {
	if (popupKillTimer) {
		clearTimeout(popupKillTimer);
		popupKillTimer = null;
	}
}

function hidePopup() {
	var objLayer, objShadow;
	
	cancelPopupKill();

	popup = document.getElementById("popup_div");
	shadow = document.getElementById("popup_shadow");
	shadow2 = document.getElementById("popup_shadow2");

	popup.style.display = "none";
	shadow.style.display = "none";
	shadow2.style.display = "none";
}

