
// =====================================
//       ONEHOUSE.NET MENU SCRIPT
//             Version 3.0
// -------------------------------------
//     Copyright 2003, onehouse.net
// =====================================


var menusLoaded = false;


// BROWSER DETECTION
var IEX = (document.all) ? 1 : 0
var N4 = (document.layers) ? 1 : 0
var N6 = (document.getElementById && !document.all) ? 1 : 0


// PLATFORM DETECTION
var MAC = (navigator.userAgent.indexOf("Mac") != -1) ? true : false


// FIND OBJECT'S DOM REFERENCE
function findDomObjRef (objectId, withStyle) {
	var addStyle = (withStyle == 1) ? '.style' : ''
	if (IEX) return "document.all." + objectId + addStyle
	if (N4) return "document." + objectId
	if (N6) return "document.getElementById('" + objectId + "')" + addStyle
}


// SHOWING AND HIDING LAYERS
function showHideLayer (layerId, showHide) {
	var layerRef = findDomObjRef(layerId, 1)
	if (IEX || N6) var showHideVar = (showHide == 0) ? "hidden" : "visible"
	if (N4) var showHideVar = (showHide == 0) ? "hide" : "show"  
	eval(layerRef + ".visibility = '" + showHideVar + "'")
}


// FIND OBJECT DIMENSIONS AND POSITION
function getOffsetLeft(el) {
	var lPos = el.offsetLeft
	var parEl = el.offsetParent
	while (parEl != null) {
		lPos += parEl.offsetLeft
		parEl = parEl.offsetParent
	}
	return lPos
}

function getOffsetTop(el) {
	var tPos = el.offsetTop
	var parEl = el.offsetParent
	while (parEl != null) {
		tPos += parEl.offsetTop
		parEl = parEl.offsetParent
	}
	return tPos
}

function getObjDimension (objectId, dimParam) {
	var obj = findDomObjRef(objectId)
	var layer = (eval(obj + ".clip")) ? 1 : 0

	switch (dimParam) {
		case "top" :
			if (IEX || N6) return eval("getOffsetTop(" + obj + ")")
			if (N4) return (layer) ? eval(obj + ".clip.top") : eval(obj + ".y")
			break
			
		case "left" :
			if (IEX || N6) return eval("getOffsetLeft(" + obj + ")")
			if (N4) return (layer) ? eval(obj + ".clip.left") : eval(obj + ".x")
			break
			
		case "width" :
			if (IEX || N6) return eval(obj + ".offsetWidth")
			if (N4) return (layer) ? eval(obj + ".clip.width") : eval(obj + ".width")
			break
			
		case "height" :
			if (IEX || N6) return eval(obj + ".offsetHeight")
			if (N4) return (layer) ? eval(obj + ".clip.height") : eval(obj + ".height")
			break
			
		case "right" :
			return getObjDimension(objectId,'left') + getObjDimension(objectId,'width')
			break
			
		case "bottom" :
			return getObjDimension(objectId,'top') + getObjDimension(objectId,'height')
			break
			
	}
}


var companyMenuTime = false;
var servicesMenuTime = false;
var programsMenuTime = false;
var newsMenuTime = false;

function showMenu (menuID, srcElemID, pos) {
	if (!menuID) menuID = this.id
	timeoutRef = eval(menuID + "Time")
	
	if (timeoutRef) { 
		window.clearTimeout(timeoutRef)
		timeoutRef = false
	}
	
	if (srcElemID) {
		var srcElemTop = parseInt(getObjDimension(srcElemID, "top"))
		var srcElemBottom = parseInt(getObjDimension(srcElemID, "bottom"))
		var srcElemLeft = parseInt(getObjDimension(srcElemID, "left"))
		var srcElemRight = parseInt(getObjDimension(srcElemID, "right"))
		var macShift = (MAC && IEX) ? "-12" : "0"
		
		if (!pos) pos = "bottomLeft"
		switch (pos) {
			case "bottomLeft":
				var menuTop = srcElemBottom - macShift
				var menuLeft = srcElemLeft
				break
			case "bottomRight":
				var menuWidth = parseInt(getObjDimension(menuID, "width"))
				var menuTop = srcElemBottom - macShift 
				var menuLeft = srcElemRight - menuWidth  
				break
			case "rightTop":
				var menuTop = srcElemTop
				var menuLeft = srcElemRight - macShift 
				break
			case "rightBottom":
				var menuHeight = parseInt(getObjDimension(menuID, "height"))
				var menuTop = srcElemBottom - menuHeight
				var menuLeft = srcElemRight - macShift 
				break
			case "topLeft":
				var menuHeight = parseInt(getObjDimension(menuID, "height"))
				var menuTop = srcElemTop - menuHeight - macShift 
				var menuLeft = srcElemLeft
				break
			case "topRight":
				var menuHeight = parseInt(getObjDimension(menuID, "height"))
				var menuWidth = parseInt(getObjDimension(menuID, "width"))
				var menuTop = srcElemTop - menuHeight - macShift 
				var menuLeft = srcElemRight - menuWidth
				break
			case "leftTop":
				var menuWidth = parseInt(getObjDimension(menuID, "width"))
				var menuLeft = srcElemLeft - menuWidth - macShift 
				var menuTop = srcElemTop
				break
			case "leftBottom":
				var menuHeight = parseInt(getObjDimension(menuID, "height"))
				var menuWidth = parseInt(getObjDimension(menuID, "width"))
				var menuLeft = srcElemLeft - menuWidth - macShift 
				var menuTop = srcElemBottom - menuHeight 
				break
		}
		
		var menuRef = findDomObjRef (menuID, 1)
		eval(menuRef + ".left = " + menuLeft)
		eval(menuRef + ".top = " + menuTop)
		showHideLayer (menuID, 1)
	}
}

function hideTimeout (menuID) {
	if (!menuID) menuID = this.id
	timerId = menuID + "Time"
	hideFunction = "hideMenu('" + menuID + "')"
	eval("window." + timerId + "= setTimeout(hideFunction, 20)")
}

function hideMenu (menuID) {
	showHideLayer (menuID, 0)
	
	if (menuID == "servicesMenu") swapImage('btnServices', 'btnNavServices');
	if (menuID == "companyMenu") swapImage('btnCompany', 'btnNavCompany');
	if (menuID == "programsMenu") swapImage('btnPrograms', 'btnNavPrograms');
	if (menuID == "newsMenu") swapImage('btnNews', 'btnNavNews');
	
	var menuRef = findDomObjRef (menuID, 1)
	eval(menuRef + ".left = -1000")
	eval(menuRef + ".top = -1000")
}
