var NAV_HEIGHT_OFFSET = 43;
var SUB_MENU_OFFSET = 94;

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		// hide previous siblings background image
		if (sfEls[i].parentNode.id == "nav") {
			sfEls[i].className = "levelOnes";
			// implemented try catch to fix errors on international pages
			try {
				if (sfEls[i].firstChild.id == "selected" && sfEls[i].firstChild.className != "first") {
					var oNode = sfEls[i].previousSibling;
					if (oNode) {
						// Ignore whitespace - Firefox
						while(oNode != null && oNode.nodeType != 1){
							oNode = oNode.previousSibling;
						}
						oNode.firstChild.className = "borderOff";
					}
				}
			} catch (e) { }
		}		
		sfEls[i].onmouseover=function() {
			if (window.attachEvent)
			{
				this.className+=" sfhover";
			}
			handleLevelOneRoll(this, "on");
			handleNavFrame(this, "on");			
		}
		sfEls[i].onmouseout=function() {
			if (window.attachEvent)
			{
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
			handleLevelOneRoll(this, "off");
			handleNavFrame(this, "off");			
		}
	}
}

function createIframe(sId)
{
	var oFrame = document.createElement("iframe");
	oFrame.id = sId;
	oFrame.src = "about:blank";
	oFrame.className = "navIframe";
	return oFrame;
}

function handleNavFrame(oListElement, sState)
{
	if (!IS_IE) {
		return;
	}
	positionMainIframe(oListElement, sState);
	positionSubIframe(oListElement, sState);
}

function positionSubIframe(oListElement, sState)
{
	if (oListElement.className.match(/^levelOnes.*/)) {
		return;
	}
	var oFrame = document.getElementById("navSubFrame");
	if (sState == "on" && !oFrame)
	{
		oFrame = createIframe("navSubFrame");
		document.getElementById("levelOneNavigation").appendChild(oFrame);
	}
	if (sState == "off")
	{
		if (oFrame)
		{
			oFrame.style.display = "none";
		}
		return;
	}
	var oLevelOne = oListElement;
	while (oLevelOne.parentNode.id != "nav")
	{
		oLevelOne = oLevelOne.parentNode;
	}
	var oSubMenus = oListElement.getElementsByTagName("ul");
	if (oSubMenus.length > 0)
	{
		oFrame.style.display = "none";
		oFrame.width = oSubMenus[0].offsetWidth;
		oFrame.height = oSubMenus[0].offsetHeight;
		oFrame.style.top = NAV_HEIGHT_OFFSET * 2 + oSubMenus[0].offsetTop + "px";
		oFrame.style.left = SUB_MENU_OFFSET + oLevelOne.offsetLeft + "px";
		oFrame.style.display = "block";
	}
}

function alignIframe(oFrame, oTarget)
{
	oFrame.style.display = "none";
	oFrame.width = oTarget.offsetWidth;
	oFrame.height = oTarget.offsetHeight;
	oFrame.style.top = NAV_HEIGHT_OFFSET + oTarget.offsetTop + "px";
	oFrame.style.left = oTarget.offsetLeft + "px";
	oFrame.style.display = "block";
}

function positionMainIframe(oListElement, sState)
{
	var oFrame = document.getElementById("navFrame");
	if (sState == "on" && !oFrame)
	{
		oFrame = createIframe("navFrame");
		document.getElementById("levelOneNavigation").appendChild(oFrame);
	}
	if (sState == "off")
	{
		if (oFrame)
		{
			oFrame.style.display = "none";
		}
		return;
	}
	
	var oLevelOne = oListElement;
	while (oLevelOne.parentNode.id != "nav")
	{
		oLevelOne = oLevelOne.parentNode;
	}
	var oContainers = oLevelOne.getElementsByTagName("ul");
	if (oContainers.length > 0)
	{
		alignIframe(oFrame, oContainers[0]);
	}
}

function handleLevelOneRoll(oListElement, sState)
{	
	var oLevelOne = oListElement;
	
	// hide previous list items background
	if (oListElement.parentNode.id == "nav") {
		var oNode = oLevelOne.previousSibling;
		// Ignore whitespace - Firefox
		if (!IS_IE) 
		{
			while(oNode != null && oNode.nodeType != 1){
				oNode = oNode.previousSibling;
			}
		}
		if (oNode != null) {
			if (sState == "on" && oNode.firstChild.id != "selected") {
				oNode.firstChild.className = "borderOff";
			} else if (oNode.firstChild.id != "selected" && oLevelOne.firstChild.id != "selected") {
				oNode.firstChild.className = "border";
			}
		}		
	}
}

addEvent(window, "load", sfHover, false);