var timers = new Array();

function clickAction(elem){
	anchorArray = getInnerAnchor(getParentCell(elem));
	anchor = anchorArray[0];
	if(undefined != anchor)
		document.location = anchor.href;

}

function displayIframe(menu){
        menu.style.zIndex = 20;
	var iframe = document.getElementById("iFrame");
        iframe.style.display='block';
	iframe.style.visibility='visible';
        iframe.style.position='absolute';
	iframe.style.left = menu.offsetLeft + "px";
	iframe.style.top = menu.offsetTop + "px";
	iframe.style.height = menu.offsetHeight + "px";
	iframe.style.width = menu.offsetWidth + "px";
	iframe.style.zIndex = menu.style.zIndex - 1;
	document.body.appendChild(iframe);	
}

function hideIframe(){
  var iframe = document.getElementById("iFrame");
  iframe.style.visibility='hidden';
  iframe.style.display='none';
}

function isIframeNeeded(){
  if ((BrowserDetect.browser=="Explorer" && BrowserDetect.version=="6")){
    return true;
  }
  return false;
}

function deployLayer(rootElement){
        if (isIframeNeeded()){
          var parent = getParentMenu(rootElement);
	  if ("Menu1" != parent.id) displayIframe(parent);
        }
	cell = getParentCell(rootElement);
	
	if(cell.className.indexOf("normal") >= 0)
			cell.className = cell.className.replace("normal","selected");

	saveParents(cell);
	
	if(null != cell){
		layer = getLayer(cell);
		
		if(null != layer){
			clearTimeout(timers[layer.id]);
			layer.style.top = getY(cell);
			layer.style.left = getX(cell);
			layer.style.display="block";
                        if (isIframeNeeded()){ displayIframe(layer); }
		}
	}
}

function applyStyle(rootElement,style){
  cell = document.getElementById(rootElement);
  cell.className = style;
}

function leaveLayer(rootElement){
        if (isIframeNeeded()){hideIframe();}
	cell = getParentCell(rootElement);
    
	if(cell.className.indexOf("selected") >= 0)
		cell.className = cell.className.replace("selected","normal");
		
	condemnParents(cell);
	
	if(null != cell){
		layer = getLayer(cell);
		if(null != layer){
			layerId = layer.id;
			timers[layerId] = setTimeout("clearLayer('"+layerId+"')", 10);
		}
	}
}

function clearLayer(elemId){
	layer = document.getElementById(elemId);

	if((null != layer)&&(isNotRootMenu(layer))){
		layer.style.display="none";
	}
}

function saveParents(elem){
	if(null != elem){
		menu = getParentMenu(elem);
		if(null != menu){
			parentCell = getParentCell(menu);
			if(null != parentCell){
				if(parentCell.className.indexOf("normal") >= 0)
					parentCell.className = parentCell.className.replace("normal","selected");
			}
			clearTimeout(timers[menu.id]);
			higherMenu = menuToHigherLevel(menu);
			if(null != higherMenu){
				saveParents(higherMenu);
			}
		}
	}
}

function condemnParents(elem){
	if(null != elem){
		menu = getParentMenu(elem);
		if(null != menu){
			parentCell = getParentCell(menu);
			if(null != parentCell){
				if(parentCell.className.indexOf("selected") >= 0)
					parentCell.className = parentCell.className.replace("selected","normal");
			}
			menuId = menu.id;
			killString = "clearLayer("+menuId+")";
			timers[menuId] = setTimeout("clearLayer('"+menuId+"')", 10);
			higherMenu = menuToHigherLevel(menu);
			if(null != higherMenu){
				condemnParents(higherMenu);
			}
		}
	}
}

function isNotRootMenu(elem){
	if(elem.id.indexOf("_") >= 0)
		return true;
	else
		return false;
}

function getParentMenu(elem){
	elemId = elem.id;
	
	if(elemId.indexOf("Menu") >= 0)
		return elem;
	else{
		if(null != elem.parentNode)	
			return getParentMenu(elem.parentNode);
		else
			return null;
	}
}

function getParentCell(elem){
	elemId = elem.id;
	if(elemId.indexOf("Menu") >= 0){
		elemId = elemId.replace("Menu","Cell");
		return document.getElementById(elemId);
	}
	else{
		if(elemId.indexOf("Cell") >= 0)
			return elem;
		else{
			if(null != elem.parentNode)	
				return getParentCell(elem.parentNode);
			else
				return null;
		}
	}
}

function getLayer(elem){
	elemId = elem.id;
	
	elemId = elemId.replace("Cell","Menu");
	return document.getElementById(elemId);
}

function menuToHigherLevel(menu){
	if(null != menu){
		higherMenuId = menu.id.substring("_",menu.id.lastIndexOf("_"));
		higherMenu = document.getElementById(higherMenuId);
		if(null != higherMenu){
			return higherMenu;
		}
		else
			return null;
	}
	else
		return null;
}

function isMenu1Elem(elem){
	return (getParentMenu(elem).className.indexOf("Menu1") >= 0);
}

function isMenu2Elem(elem){
	return (getParentMenu(elem).className.indexOf("Menu2") >= 0);
}

function isMenu3Elem(elem){
	return (getParentMenu(elem).className.indexOf("Menu3") >= 0);
}

function getX(elem){
	x=0;  
	aTag = elem;
		do
		{
			x += aTag.offsetLeft;
			aTag = aTag.offsetParent;
		}
		while(aTag.tagName!="BODY");
	if(isMenu2Elem(elem)){
		x += elem.clientWidth;
	}
	if(isPlacedOnTheRight(elem)){
		x -= (elem.clientWidth + 196);
	}
	return x;
}

function getY(elem){
	y=0;
	aTag = elem;
		do
		{
			y += aTag.offsetTop;
			aTag = aTag.offsetParent;
		}
		while(aTag.tagName!="BODY");
	if(isMenu2Elem(elem)){
		y -= elem.clientHeight;
	}
	if(isMenu3Elem(elem)){
		y += 2;
	}
	if((navigator.appName).indexOf("etscape") >= 0)
		return y+elem.clientHeight-1;
	else
		return y+elem.clientHeight-1;
}

function isPlacedOnTheRight(elem){
	return((getLayer(elem).className).indexOf("rightLayer") >= 0);
}

function getInnerAnchor(elem){
	return elem.getElementsByTagName("A");
}