function getTop(o) {
  var ans = 0;
  while (o) {
    ans += o.offsetTop;
    o = o.offsetParent;
  }
  return ans;
}


function getLeft(o) {
  var ans = 0;
  while (o) {
    ans += o.offsetLeft;
    o = o.offsetParent;
  }
  return ans - (navigator.appName == "Microsoft Internet Explorer" ? 1 : 0);
}
function MiniSite_menuMouseOver(E, elm) {
	  MiniSite_menuOver = elm;
		//document.getElementById("theotherdiv").innerHTML = MiniSite_menuOver.id;
		MiniSite_menuDisplay()
	}

  function MiniSite_menuMouseOut(E, elm) {
		if (MiniSite_menuOver == elm) {
		  MiniSite_menuOver = null;
	  }
	}

	function MiniSite_menuBodyMouseMove(event) {
		//document.getElementById("theotherdiv").innerHTML = (MiniSite_menuOver ? MiniSite_menuOver.id : "");
		MiniSite_menuDisplay();
	} 
	
	function MiniSite_menuDisplay() {
	  var makeVisible = new Object();
		if (MiniSite_menuOver != null) {
		  var node = dicNodes[MiniSite_menuOver.id];
		  if (!node) {
		    MiniSite_menuInit();
		    node = dicNodes[MiniSite_menuOver.id];
		  }
		  if (!node) { return; }
		  MiniSite_menuQuickPosition(node);
			if (node.subcontainer) {
				makeVisible[node.subcontainer.id] = node.subcontainer;
			}
			for (var n = node; n.depth > 1; n = n.supNode) {
			  makeVisible[n.supNode.subcontainer.id] = n.supNode.subcontainer;
			} 
		}
		
		
		for (var id in makeVisible) {
		  var elm = makeVisible[id];
		  elm.style.visibility = 'visible';
			MiniSite_menuVisibleElements[id] = elm;
		}
		for (var id in MiniSite_menuVisibleElements) {
			if (!makeVisible[id]) {
				MiniSite_menuVisibleElements[id].style.visibility = "hidden";
				delete MiniSite_menuVisibleElements[id]
			}
		}
	}
	
  var MiniSite_menuNodes;
	var dicNodes = new Object;
	var MiniSite_menuOver;
	var MiniSite_menuVisibleElements = new Object();


  function MiniSite_menuPosition() {
		for (var i = MiniSite_menuNodes.length - 1; i > -1; i--) {
		  dicNodes[MiniSite_menuNodes[i].elm.id] = MiniSite_menuNodes[i];
			MiniSite_menuNodes[i].supNode = null;
			var oX1 = getLeft(MiniSite_menuNodes[i].elm);
			var oY1 = getTop(MiniSite_menuNodes[i].elm) + MiniSite_menuNodes[i].elm.scrollHeight;
			if (MiniSite_menuNodes[i].subcontainer) {
				MiniSite_menuNodes[i].subcontainer.style.top = oY1 + "px";
				MiniSite_menuNodes[i].subcontainer.style.left = oX1 + "px";
				var dY = 0;
				for (var j = 0; j < MiniSite_menuNodes[i].subnodes.length; j++) {
    		  dicNodes[MiniSite_menuNodes[i].subnodes[j].elm.id] = MiniSite_menuNodes[i].subnodes[j];
					MiniSite_menuNodes[i].subnodes[j].supNode = MiniSite_menuNodes[i];
					var oX2 = oX1 + MiniSite_menuNodes[i].subnodes[j].elm.scrollWidth;
					var oY2 = oY1 + dY;
					if (MiniSite_menuNodes[i].subnodes[j].subcontainer) {
  					MiniSite_menuNodes[i].subnodes[j].subcontainer.style.top = oY2 + "px";
	  				MiniSite_menuNodes[i].subnodes[j].subcontainer.style.left = oX2 + "px";
    				for (var k = 0; k < MiniSite_menuNodes[i].subnodes[j].subnodes.length; k++) {
    		      dicNodes[MiniSite_menuNodes[i].subnodes[j].subnodes[k].elm.id] = MiniSite_menuNodes[i].subnodes[j].subnodes[k];
							MiniSite_menuNodes[i].subnodes[j].subnodes[k].supNode = MiniSite_menuNodes[i].subnodes[j];
						}
				  }
					dY += MiniSite_menuNodes[i].subnodes[j].elm.scrollHeight;
				}
			}
		}
  }

  function MiniSite_menuQuickPosition(node) {
    var toPosition = node;
    while (toPosition.depth != 1) {
      toPosition = toPosition.supNode;
    }
  
		//for (var i = MiniSite_menuNodes.length - 1; i > -1; i--) {
			var oX1 = getLeft(toPosition.elm);
			var oY1 = getTop(toPosition.elm) + toPosition.elm.scrollHeight;
			if (toPosition.subcontainer) {
				toPosition.subcontainer.style.top = oY1 + "px";
				toPosition.subcontainer.style.left = oX1 + "px";
				var dY = 0;
				for (var j = 0; j < toPosition.subnodes.length; j++) {
					var oX2 = oX1 + toPosition.subnodes[j].elm.scrollWidth;
					var oY2 = oY1 + dY;
					if (toPosition.subnodes[j].subcontainer) {
  					toPosition.subnodes[j].subcontainer.style.top = oY2 + "px";
	  				toPosition.subnodes[j].subcontainer.style.left = oX2 + "px";
				  }
					dY += toPosition.subnodes[j].elm.scrollHeight;
				}
			}
		//}
  }

	function MiniSite_menuInit() {
	  MiniSIte_menuInitNodes();
	  MiniSite_menuPosition();
		document.body.onmousemove = MiniSite_menuBodyMouseMove;
	}


//MiniSite_LoadFunctions[MiniSite_LoadFunctions.length] = MiniSite_menuInit;
