// Frank's PopUp Functions
//determine browser type
var ffPopUpisDOM=document.getElementById?1:0;
var ffPopUpisIE=document.all?1:0;
var ffPopUpisNS4=navigator.appName=='Netscape'&&!ffPopUpisDOM?1:0;
var ffPopUpisOp=self.opera?1:0;
var ffPopUpisDyn=ffPopUpisDOM||ffPopUpisIE||ffPopUpisNS4;
/*** Positioning ***/
/**
 * returns the absolute top of any object
 * @param {Object} which - an Element
 * @return {Number} theTop
 */
function ffPopUpAbsoluteTop(which) {
	var theTop = 0;
	var mySelf = which;
	try {
		do {
			theTop += mySelf.offsetTop;
			mySelf = mySelf.parentElement;
		} while (mySelf.offsetTop);
	}
	catch (e) {}
	return theTop;
}
/**
 * returns the absolute left of any object
 * @param {Object} which - an Element
 * @return {Number} theLeft
 */
function ffPopUpAbsoluteLeft(which) {
	var theLeft = 0;
	var mySelf = which;
	try {
		do {
			theLeft += mySelf.offsetLeft;
			mySelf = mySelf.parentElement;
		} while (mySelf.offsetLeft);
	}
	catch (e) {}
	return theLeft
}
/*** PopUp functions ***/
var ffPopUpObject;		
var ffPopUpTimer;
var ffPopUpDebug = false;
var ffPopUpLastText;
var ffPopUpLastObjectName;
var ffPopUpLastEventClientX;
var ffPopUpLastEventClientY;
var ffPopUpLastLeftOffset;
var ffPopUpLastTopOffset;
var ffPopUpAbsoluteLeftSetting = -1;
var ffPopUpAbsoluteTopSetting = -1;
var ffPopUpAbsoluteWidthSetting = -1;
var ffPopUpAbsoluteHeightSetting = -1;
var ffPopUpDelay = 500;
var ffPopUpWidth = "";
var ffPopUpHeight = "";
var ffPopUpOpacity = 100;
// var ffColor = "#002040"; // blue
var ffColor = "#202020"; // grey
// var ffBackColor = "#d0d8e0"; // blue
var ffBackColor = "#e0e0e0"; // grey
/**
 * Create a new PopUp.  Invoke from the "onmouseover" event
 * @param {String} theText
 * @param {String} theObjectName
 * @param {Event} theEvent
 */
function ffPopUpShow(theText, theObjectName, theEvent) {
	ffPopUpShow(theText, theObjectName, theEvent, 0);
}
/**
 * Create a new PopUp.  Invoke from the "onmouseover" event
 * @param {String} theText
 * @param {String} theObjectName
 * @param {Event} theEvent
 * @param {Number} theLeftOffset
 */
function ffPopUpShow(theText, theObjectName, theEvent, theLeftOffset) {
	ffPopUpShow(theText, theObjectName, theEvent, theLeftOffset, 0);
}
/**
 * Create a new PopUp.  Invoke from the "onmouseover" event
 * @param {String} theText
 * @param {String} theObjectName
 * @param {Event} theEvent
 * @param {Number} theLeftOffset
 * @param {Number} theTopOffset
 */
function ffPopUpShow(theText, theObjectName, theEvent, theLeftOffset, theTopOffset) {
	if (!ffPopUpObject) {
		// document.body.innerHTML+="<div id=\"ffPopUpObject\" onmouseover=\"ffPopUpIn();\" onmouseout=\"ffPopUpHide();\"></div>";
		ffPopUpObject = document.getElementById("ffPopUpObject");
		ffPopUpObject.style.zIndex=999;
		ffPopUpObject.style.display="none";
		ffPopUpObject.style.position="absolute";
	}
	window.clearTimeout(ffPopUpTimer);
	ffPopUpLastText = theText;
	ffPopUpLastObjectName = theObjectName;
	ffPopUpLastEventClientX = theEvent.clientX;
	ffPopUpLastEventClientY = theEvent.clientY;
	ffPopUpLastLeftOffset = theLeftOffset;
	ffPopUpLastTopOffset = theTopOffset;
	ffPopUpOpacity = 100;
    ffPopUpAbsoluteLeftSetting = -1;
    ffPopUpAbsoluteTopSetting = -1;
    ffPopUpAbsoluteWidthSetting = -1;
    ffPopUpAbsoluteHeightSetting = -1;
	// set delay for PopUp
	ffPopUpTimer=window.setTimeout("ffPopUpShowNow();", ffPopUpDelay);
	// ffPopUpShowNow();
}
/**
 * Create a new Fixed PopUp.  Invoke from the "onmouseover" event
 * @param {String} theText
 * @param {String} theObjectName
 * @param {Event} theEvent
 * @param {Number} theLeft
 * @param {Number} theTop
 * @param {Number} theWidth
 * @param {Number} theHeight
 */
function ffPopUpShowFixed(theText, theObjectName, theEvent, theLeft, theTop, theWidth, theHeight) {
	if (!ffPopUpObject) {
		// document.body.innerHTML+="<div id=\"ffPopUpObject\" onmouseover=\"ffPopUpIn();\" onmouseout=\"ffPopUpHide();\"></div>";
		ffPopUpObject = document.getElementById("ffPopUpObject");
		ffPopUpObject.style.zIndex=999;
		ffPopUpObject.style.display="none";
		ffPopUpObject.style.position="absolute";
	}
	window.clearTimeout(ffPopUpTimer);
	ffPopUpLastText = theText;
	ffPopUpLastObjectName = theObjectName;
	ffPopUpLastEventClientX = theEvent.clientX;
	ffPopUpLastEventClientY = theEvent.clientY;
	ffPopUpLastLeftOffset = 0;
	ffPopUpLastTopOffset = 0;
	ffPopUpOpacity = 85;
    ffPopUpAbsoluteLeftSetting = theLeft;
    ffPopUpAbsoluteTopSetting = theTop;
    ffPopUpAbsoluteWidthSetting = theWidth;
    ffPopUpAbsoluteHeightSetting = theHeight;
	// set delay for PopUp
	ffPopUpTimer=window.setTimeout("ffPopUpShowNow();", ffPopUpDelay);
	// ffPopUpShowNow();
}
// show PopUp
function ffPopUpShowNow() {
	try {
		window.clearTimeout(ffPopUpTimer);
		var windowWidth;
		try {
			windowWidth = document.body && (typeof(document.body.clientWidth) != "undefined") ? document.body.clientWidth : (typeof(window.innerWidth) != "undefined") ? window.innerWidth : document.body ? (document.body.clientWidth || 0) : 0
		} catch (e) {
			alert("Error in ffPopUpShowNow: " + e);
		}
		var scrollLeft = window.pageXOffset || (document.documentElement ? (document.documentElement.scrollLeft || 0) : 0);
		var scrollTop = window.pageYOffset || (document.documentElement ? (document.documentElement.scrollTop || 0) : 0);
		var theObject = document.getElementById(ffPopUpLastObjectName);
		var theLeft = ffPopUpLastEventClientX + scrollLeft;
		// var theLeft = ffPopUpAbsoluteLeft(theObject);
		var theTop = ffPopUpLastEventClientY + scrollTop;
		// var theTop = ffPopUpAbsoluteTop(theObject);
		var leftOffset = 5;
		var topOffset = 10;
		var otherOffset = 0;
		if (ffPopUpLastLeftOffset) {
			leftOffset = ffPopUpLastLeftOffset;
		}
		if (ffPopUpLastTopOffset) {
			topOffset = ffPopUpLastTopOffset;
		}
		if (ffPopUpisDOM && !ffPopUpisIE) {
			otherOffset = -5;
		}
		try {
			if (ffPopUpAbsoluteLeftSetting < 0) {
				ffPopUpObject.style.left = (theLeft + leftOffset) + "px";
			}
			else {
				ffPopUpObject.style.left = (ffPopUpAbsoluteLeftSetting + scrollLeft) + "px";
			}
			if (ffPopUpAbsoluteWidthSetting < 0) {
				var temp = windowWidth - (ffPopUpLastEventClientX + leftOffset) - 10;
				if (ffCleanUpField(ffPopUpLastText).length > (temp / 8)) {
					if (temp > 640) {
						temp = 640;
					}
					ffPopUpWidth = "; width: " + temp + "px";
				}
			}
			else {
				ffPopUpWidth = "; width: " + ffPopUpAbsoluteWidthSetting + "px";
			}
		} catch (e) {}
		try {
			if (ffPopUpAbsoluteTopSetting < 0) {
				ffPopUpObject.style.top = (theTop + topOffset + otherOffset) + "px";
			}
			else {
				ffPopUpObject.style.top = (ffPopUpAbsoluteTopSetting + otherOffset + scrollTop) + "px";
			}
			ffPopUpHeight = "";
			if (ffPopUpAbsoluteHeightSetting >= 0) {
				ffPopUpHeight = "; height: " + ffPopUpAbsoluteHeightSetting + "px";
			}
		} catch (e) {}
		var comments = "";
		// comments for debugging...
		if (ffPopUpDebug) {
			comments = "<br><br>Left=" + theLeft + " &nbsp;&nbsp; Top=" + theTop + " &nbsp;&nbsp; LeftOffset=" + leftOffset + " &nbsp;&nbsp; TopOffset=" + topOffset;
			comments = comments + "<br>" + navigator.appName;
			comments = comments + "<br>" + "aX=" + ffPopUpAbsoluteLeft(theObject) + ", aY=" + ffPopUpAbsoluteTop(theObject);
			comments = comments + "<br>" + "cbX=" + (ffPopUpLastEventClientX + scrollLeft) + ", cbY=" + (ffPopUpLastEventClientY + scrollTop);
			comments = comments + "<br>" + "cX=" + ffPopUpLastEventClientX + ", cY=" + ffPopUpLastEventClientY;
			comments = comments + "<br>" + "bdX=" + scrollLeft + ", bdY=" + scrollTop;
			comments = comments + "<br>" + "pme=" + ffPopUpWidth + ", wme=" + windowWidth;
			comments = comments + "<br>" + "wX1=" + document.body.clientWidth + ", wY1=" + document.body.clientHeight;
			comments = comments + "<br>" + "wX2=" + document.body.scrollWidth + ", wY1=" + document.body.scrollHeight;
		}
	var tempResult = "";
        if (ffPopUpLastText.indexOf("<tr>") > -1) {
            if (comments != "") {
                tempResult = "<table style=\"font-size: 8pt; filter:alpha(opacity=" + ffPopUpOpacity + "); opacity: " + (ffPopUpOpacity == 100 ? 1 : (ffPopUpOpacity / 100) ) + "; font-family: arial, sans-serif; border-style: dashed; border-width: 1px; background-color: " + ffBackColor + "; padding: 3px; color: " + ffColor + "; " + ffPopUpWidth +  ffPopUpHeight + "\">" + ffCleanUpField(ffPopUpLastText) + "</table>" + "<p style=\"font-size: 8pt; border-style: dashed; border-width: 1px; background-color: " + ffBackColor + "; padding: 3px; color: " + ffColor + "; " + ffPopUpWidth + ffPopUpHeight +  "\">" + comments + "</p>";
            }
            else {
                tempResult = "<table style=\"font-size: 8pt; filter:alpha(opacity=" + ffPopUpOpacity + "); opacity: " + (ffPopUpOpacity == 100 ? 1 : (ffPopUpOpacity / 100) ) + "; font-family: arial, sans-serif; border-style: dashed; border-width: 1px; background-color: " + ffBackColor + "; padding: 3px; color: " + ffColor + "; " + ffPopUpWidth +  ffPopUpHeight + "\">" + ffCleanUpField(ffPopUpLastText) + "</table>";
            }
        }
        else {
            tempResult = "<p style=\"filter:alpha(opacity=" + ffPopUpOpacity + "); opacity: " + (ffPopUpOpacity == 100 ? 1 : (ffPopUpOpacity / 100) ) + "; font-family: arial, sans-serif; border-style: dashed; border-width: 1px; background-color: " + ffBackColor + "; padding: 3px; color: " + ffColor + "; " + ffPopUpWidth + ffPopUpHeight + "\">" + ffCleanUpField(ffPopUpLastText) + comments + "</p>";
        }
		if (ffPopUpAbsoluteWidthSetting > 399) {
			var x = ffPopUpAbsoluteLeftSetting + ffPopUpAbsoluteWidthSetting - 50;
			var y = ffPopUpAbsoluteTopSetting + 10;
			tempResult = tempResult + "<a style=\"color: " + ffColor + "; position: absolute; top: " + y + "px; left: " + x + "px; font-size: 8pt;\" href=\"javascript:ffPopUpOut();\">Close</a>";
		}
		if (ffPopUpDebug) {
			// alert(tempResult);
		}
		ffPopUpObject.innerHTML = tempResult;
		ffPopUpObject.style.display = "block";
	}
	catch (e) {
		alert(e);
	}
}
/**
 * Hides the recently created PopUp.  Invoke from the "onmouseout" event.
 */
function ffPopUpHide(){
	clearTimeout(ffPopUpTimer);
	// set delay for hide
	ffPopUpTimer=window.setTimeout("ffPopUpOut();", ffPopUpDelay);
	// ffPopUpOut();
}
// keep PopUp
function ffPopUpIn(){
	window.clearTimeout(ffPopUpTimer);
}
// remove PopUp
function ffPopUpOut(){
	ffPopUpObject.style.display="none";
	ffPopUpObject.innerHTML = "";
	ffPopUpAbsoluteLeftSetting = -1;
	ffPopUpAbsoluteTopSetting = -1;
	ffPopUpAbsoluteWidthSetting = -1;
	ffPopUpAbsoluteHeightSetting = -1;
	ffPopUpDelay = 500;
	ffPopUpWidth = "";
	ffPopUpHeight = "";
	ffPopUpOpacity = 100;
}
// clean up data
function ffCleanUpField(passed) {
	return passed.replace(/{{amp}}/g, "&");
        // return passed.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;");
}