var NN4 = document.getSelection? true : false;
var IE4 = document.all? true : false;
var DOM = document.getElementById? true : false;
var agt=navigator.userAgent.toLowerCase();
var IE5;
var selected = '';
var top = 0;
var top_offset = 5;
var x;
var left = 152;
var left_offset = -6;
var arrHiArch = new Array();
var sOrder = '';
var myCurLevel = 0;
var index;
var sParent;
var height = 20;
var width = 145;
var iMid;
var tMid;
var iPlace;
var iSeg;
var zindex = 2;
var mytimeout;
var shouldIHide;
var sRetParent='';
var myLayer;
var timer = 200;
var menudepthopen;

menudepthopen = 0;

if(agt.indexOf("msie 5.0")!=-true){
	IE5=true;
}


if (NN4){
	document.captureEvents(Event.MOUSEMOVE);
} 

//document.onmousemove = setTop;


function display(myLayer, sRetParent, aID){
if(!IE5){
	shouldIHide = true;
	sParent = sRetParent;
	if(selected==sParent&&!IE5){
		shouldIHide=false;
		arrHiArch.push(sParent);
	}
	if (shouldIHide){
		hide(selected);
	}
	showLayer(myLayer,sParent, aID);
	}
}

function setTop(e){
	if (IE4){
		top = window.event.clientY + document.body.scrollTop;
	}else{
		top = e.pageY;
	}
}

function showLayer(myLayer, parentLayer, aID){
	var xobj;
	var iPlace;

	//iMid = (height/2);
	//tMid = (top/height);
	//iSeg = Math.floor(tMid);
	//iPlace = (height*(iSeg));
	
	xobj = document.getElementById(aID);
	iPlace = (getAbsPos(xobj,"Top")+top_offset) + "px";
	left = ( (getAbsPos(xobj,"Left")+left_offset) + xobj.offsetWidth)  + "px";

	menudepthopen = menudepthopen + 1;

	if (DOM){
		if (document.getElementById(myLayer).style.visibility!="visible"){
			document.getElementById(myLayer).style.zIndex = zindex;
			document.getElementById(myLayer).style.left = left;
			document.getElementById(myLayer).style.top = iPlace;
			document.getElementById(myLayer).style.visibility="visible";
			zindex = zindex + 1;
			clearTimeout(mytimeout);
			//mytimeout = setTimeout("hide('all')",timer);
			left = left + width;
			selected = myLayer;
		}
	}else if (IE4){
		if (document.all[myLayer].style.visibility!="visible"){
			document.all[myLayer].style.zIndex = zindex;
  			document.all[myLayer].style.pixelLeft = left;
			document.all[myLayer].style.pixelTop = iPlace;
    		document.all[myLayer].style.visibility = "visible";
			zindex = zindex + 1;
			clearTimeout(mytimeout);
			//mytimeout = setTimeout("hide('all')",timer);
			left = left + width;
			selected = myLayer;
		}
  	}else if(NN4){
		if (document.layers[myLayer].visibility!="visible"){
			document.layers[myLayer].zIndex = zindex;
			document.layers[myLayer].left = left;
			document.layers[myLayer].top = iPlace
    		document.layers[myLayer].visibility = "visible";
			zindex = zindex + 1;
			clearTimeout(mytimeout);
			//mytimeout = setTimeout("hide('all')",timer);
			left = left + width;
			selected = myLayer;
		}
  	}
}

function getAbsPos(elt,which) 
{ 
 var iPos;
 var elt;

	iPos = 0; 
	while (elt != null) 
	{ 
		iPos += elt["offset" + which]; 
		elt = elt.offsetParent; 
	}
	
	return iPos; 
} 

function clearTimer(){
	clearTimeout(mytimeout);
}

function startTimer(){
	mytimeout = setTimeout("hide('all')",timer);
}

function hideChild(theParent)
{
	if ( selected != theParent ) 
		hide(selected);
}

function hide(myLayer) {
	if (myLayer=="all"){
		tempLayer = selected;
		var Max = arrHiArch.length - 1;
		whichCommand(tempLayer);
		if (Max > 0){
			for (Max; Max > 0; Max--){
				tempLayer = arrHiArch.pop();
				whichCommand(tempLayer);
			}
		}
	}else{
		var Max = arrHiArch.length - 1;
 		whichCommand(myLayer);
		if (Max > 0){
			for (Max; Max >= 0; Max--){
				if (arrHiArch[Max]!=''){
					if (selected!=arrHiArch[Max] && sParent!=arrHiArch[Max]){
						tempLayer = arrHiArch.pop();
						whichCommand(tempLayer);
					}else if(sParent==arrHiArch[Max]){
						break;
					}
				}
			}
		}
	}
}

function whichCommand(myLayer){

	if (myLayer!=''){

		if (  menudepthopen > 0 )
			menudepthopen = menudepthopen-1;

		if (DOM){
			if (document.getElementById(myLayer).style.visibility=="visible"){
				document.getElementById(myLayer).style.visibility = "hidden";
				left = left - width;
			}
		}
		else if (IE4){
			if (document.all[myLayer].style.visibility == "visible"){
   				document.all[myLayer].style.visibility = "hidden";
				left = left - width;
			}
  		}
  		else if(NN4){
			if (document.layers[myLayer].visibility =="show"){
    			document.layers[myLayer].visibility = "hidden";
				left = left - width;
			}
  		}
	}
}

function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}


function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function menu_mouseout(el,e)
{
	if ( checkMouseLeave(el,e) )
		if ( menudepthopen > 0 ) 
			hide('all');
}