flyoutArr = new Array();
fi = 0;
openLink = false;
openDiv = false;
currLevel = "";
prevLevel = "";
function doMenu(td, type, level){
//	document.getElementById('debug').innerHTML += "Type: "+type+" DIVTOCLOSE: "+divToClose+" CURR: "+td+" <strong>sbo:</strong> "+destination[fi]+" => "+printR(destination)+" ipos: " +fi+" <strong>openby:</strong> "+origin[fi]+" => "+printR(origin)+" <BR><BR>";
divPos = 0;
	if (level == 0){
		prevLevel = currLevel;
		currLevel = td;
		if (prevLevel != currLevel) ForceClose();
	}
	if (type == "Link"){
		if (td) openLink = true;
		else openLink = false;
	}
	if (td){
	
		if (fi == 0){
			flyoutArr[fi] = td;
			fi++;
		} else {
			//now check if this array exists
			found = false;
			for (i = 0; i < fi; i++){
				if ((flyoutArr[i] == td)){
					found = true;
					
					if (type == "Div"){ // get the position of the current div we're on
						divPos = i;
					}
					i = fi;
				}
			}
			
			if (!found){
				flyoutArr[fi] = td;
				fi++;
			}
		}

		for (i = 0; i < fi; i++){
			// only if we're opening a link; not if we're rolling back onto a div
			
			if (type == "Link"){
			
				// Find the positioner spacer
				if (document.getElementById(flyoutArr[i])!=null) {
				
					leftPos = findPosX(document.getElementById(flyoutArr[i]+"Img"));
					topPos = findPosY(document.getElementById(flyoutArr[i]+"Img"));
					document.getElementById(flyoutArr[i]+"Div").style.top = topPos - 5;
					document.getElementById(flyoutArr[i]+"Div").style.left = leftPos;
				}
				if (document.getElementById(flyoutArr[i]+"Div")!=null) {
					document.getElementById(flyoutArr[i]+"Div").style.visibility="visible";
				}
				
			//	document.getElementById('debug').innerHTML += "LINK  "+printR(flyoutArr)+"<BR>";
			} else {// it's a div type
				// if we're opening a flyout menu, don't do this bit; this bit to execute only if we roll back onto a parent div
				if (!openLink){ 
					action = "hidden";
					if (i <= divPos){
						action = "visible";
					}
					if (document.getElementById(flyoutArr[i]+"Div")!=null) {
						document.getElementById(flyoutArr[i]+"Div").style.visibility=action;
					}
					if (action == "hidden") {
						flyoutArr[i] = "";
					}
				} 
			}
		}
	}
}

function printR(arr){
	str = "{";
	for (j = 0; j < arr.length; j++){
		str += arr[j] + ",";
	}
	str += "}";
	return str;
}

function clearMenu(td, type){
	for (i = 0; i < fi; i++){
		if(document.getElementById(flyoutArr[i]+"Div")!=null) {
			document.getElementById(flyoutArr[i]+"Div").style.visibility="hidden";
		}
	}
	setTimeout("CheckAllMenusClosed()", 10);
}
function ForceClose(){
	for (i = 0; i < fi; i++){
		if (document.getElementById(flyoutArr[i]+"Div")!=null) {
			document.getElementById(flyoutArr[i]+"Div").style.visibility = "hidden";
			flyoutArr[i] = "";
		}
	}
	fi= 0;
}

function CheckAllMenusClosed(){
	var killAll = true;
	for (i = 0; i < fi; i++){
		if (document.getElementById(flyoutArr[i]+"Div")!=null) {
			if (document.getElementById(flyoutArr[i]+"Div").style.visibility == "visible"){
				killAll = false;
			}
		}
	}
	
	if (killAll){
		for (i = 0; i < fi; i++){
			flyoutArr[i] = "";
			fi = 0;
		}
	}
}

function findPosX(obj){
	var curleft = 0;
	if(obj.offsetParent){
		while(1) {
		  curleft += obj.offsetLeft;
		  if(!obj.offsetParent) break;
		  obj = obj.offsetParent;
		}
	} else if(obj.x) curleft += obj.x;
		return curleft;
}

function findPosY(obj){
    var curtop = 0;
    if(obj.offsetParent){
        while(1){
          curtop += obj.offsetTop;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
        }
	} else if(obj.y) curtop += obj.y;
	return curtop;
}