// most recently 9/24/2007, this was meant to work with the recent versions of 
// IE 6 and IE 7 and Firefox
g_bLookType2002 = false
g_bLookType2006 = false
g_bDom = (document.getElementById != null)
g_bFrame = g_bInternetExplorerOld // note the bug with the combobox being covered up
g_popups = new Popups()

// g_popups object -->
function Popups()
{
	this.bCanPopup = g_bDom
	this.idTimeoutUndefined = -1
	this.idTimeout = this.idTimeoutUndefined
	this.elementPopupVisible = null

	this.getIdPopup = popupsGetIdPopup
	this.addPopup = popupsAddPopup
	this.createElements = popupsCreateElements
	this.showPopup = popupsShowPopup
	this.hidePopup = popupsHidePopup
	this.hideOpenPopup = popupsHideOpenPopup
	this.hideElementPopup = popupsHideElementPopup
	this.clearHidePopupTimeout = popupsClearHidePopupTimeout

	this.popups = new Array()
}

function popupsGetIdPopup(indexPopup)
{
	return "popup" + indexPopup
}

function popupsAddPopup()
{
	var indexPopup = this.popups.length
	var popup = new Popup(indexPopup)
	this.popups[indexPopup] = popup
	return popup
}

function popupsCreateElements()
{
	var count = this.popups.length
	for (var i = 0; i < count; i++) {
		var popup = this.popups[i]
		popup.createElement()
	}
}

function popupsShowPopup(indexPopup)
{
	if (this.bCanPopup) { 
		this.clearHidePopupTimeout()
		if (this.elementPopupVisible != null) {
			this.hideElementPopup(this.elementPopupVisible)
			this.elementPopupVisible = null
		}
		var popup = this.popups[indexPopup]
		if (typeof popup != "undefined") {  //
			if (popup.hasItems()) {
				var elementPopup = popup.elementPopup // if null, it has not been created or has no items and won't be
				if (elementPopup != null) {

					var elementMenuItem = popup.elementMenuItem 
					if (elementMenuItem == null) {
						elementMenuItem = document.getElementById("menuItem" + indexPopup)
						popup.elementMenuItem = elementMenuItem // keep it cached to avoid lookup next time
					}
					if (elementMenuItem != null) {
						var stylePopup = elementPopup.style

						var topLeft = g_getTopLeft(elementMenuItem)
						stylePopup.left = topLeft.left + "px"
						stylePopup.top = (topLeft.top + elementMenuItem.offsetHeight + (g_bLookType2002 ? -1 : 0)) + "px"
						stylePopup.visibility = "visible"  

				// this IFRAME mumbo jumbo here and below makes it so the DIV appears on top of a SELECT, 
				// by putting an IFRAME underneath the DIV. 12-3-2004
						if (g_bFrame) { 
							var elementIFrame = elementPopup.parentNode.previousSibling
							elementIFrame.style.left = stylePopup.left
							elementIFrame.style.top = stylePopup.top
							elementIFrame.style.width = elementPopup.offsetWidth + "px"
							elementIFrame.style.height = elementPopup.clientHeight + "px"
			//				elementIFrame.style.display = "block"
							elementIFrame.style.visibility = "visible"  
						}
						this.elementPopupVisible = elementPopup
					}
				}
			}
		}
	}
}

function popupsHidePopup(indexPopup)
{
	if (this.bCanPopup) {
		this.clearHidePopupTimeout()
		this.idTimeout = window.setTimeout("g_popups.hideOpenPopup(" + indexPopup + ")",  200) // milliseconds
	}
}

function popupsHideOpenPopup(indexPopup)
{
	var popup = g_popups.popups[indexPopup]
	if (typeof popup != "undefined") {
		var elementPopup = popup.elementPopup
		if (elementPopup != null) {
			this.hideElementPopup(elementPopup)
		}
	}
}

function popupsHideElementPopup(elementPopup)
{
	elementPopup.style.visibility = "hidden"
	if (g_bFrame) {
		var elementIFrame = elementPopup.parentNode.previousSibling
		elementIFrame.style.visibility = "hidden"
	}
}

function popupsClearHidePopupTimeout()
{
	if (this.idTimeout != this.idTimeoutUndefined) {
		window.clearTimeout(this.idTimeout)
		this.idTimeout = this.idTimeoutUndefined
	}
}
// <-- g_popups object

// popup object -->
function Popup(indexPopup)
{
	this.indexPopup = indexPopup
	this.popupItems = new Array()
	this.addItem = popupAddItem
	this.hasItems = popupHasItems
	this.createElement = popupCreateElement
	this.elementPopup = null
	this.elementMenuItem = null
	this.bSelected = false
}

function popupAddItem(text, hRef)
{
	var popupItem = new PopupItem(text, hRef)
	this.popupItems[this.popupItems.length] = popupItem
	return popupItem
}

function popupHasItems()
{
	return this.popupItems.length > 0
}

function popupCreateElement()
{
	if (this.hasItems()) {
		var idPopup = g_popups.getIdPopup(this.indexPopup)
		var html = '<ul style="left:0;top:0;position:absolute;" id="' + idPopup + 
			'" class="' + 
			(this.bSelected ? "popupSelected" : "popup") + 
			'" onmouseover="g_popups.showPopup(' + this.indexPopup + 
			')" onmouseout="g_popups.hidePopup(' + this.indexPopup + ')">'

		var count = this.popupItems.length
		for (var i = 0; i < count; i++) {
			var popupItem = this.popupItems[i]

			html += "<li><a"
			if (popupItem.bSelected) {
				html += ' class="selected"'
			}
			html += ' href="' + popupItem.hRef + '">'

			var imageFileName2 = popupItem.imageFileName2
			if (imageFileName2 != null) {
				html += '<img src="' + imageFileName2 + '"'
				var imageFileName2Hint = popupItem.imageFileName2Hint
				if (imageFileName2Hint != null) {
					html += ' alt="' + imageFileName2Hint + '"'
				}
				html += ">"
			}

			var imageFileName = popupItem.imageFileName
			if (imageFileName != null) {
				html += '<img src="' + imageFileName + '" alt="' + popupItem.text + '">'
			}
			html += popupItem.text + "</a></li>"
		}
		html += "</ul>"

		var elementBody = document.getElementsByTagName("body").item(0)
		if (g_bFrame) {
			var elementIFrame = document.createElement("iframe")
			elementIFrame.style.visibility = "hidden"
			elementIFrame.style.position = "absolute"
			elementIFrame.style.border = "0px"  // needed for Firefox only. IE7 and IE6 ok
			elementBody.appendChild(elementIFrame)
		}
		var elementDiv = document.createElement("div")
		elementDiv.innerHTML = html
		elementDiv.style.visibility = "hidden"
		elementBody.appendChild(elementDiv)
		this.elementPopup = elementDiv.firstChild

	}
}
// <-- popup object

// popupItem object -->
function PopupItem(text, hRef)
{
	this.text = text
	this.hRef = hRef

	this.imageFileName = null
	this.imageFileName2 = null
	this.imageFileName2Hint = null

	this.bSelected = false
}
// <-- popupItem object

function g_getTopLeft(element) 
{
	var topLeft = {left: 0, top: 0}
	while (element != null) {
		topLeft.left += element.offsetLeft
		topLeft.top += element.offsetTop
		element = element.offsetParent
	}
	return topLeft
}
