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;
}
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(E) {
    if (!E) E = window.event;
		//document.getElementById("theotherdiv").innerHTML = (MiniSite_menuOver ? MiniSite_menuOver.id : "");
		MiniSite_menuDisplay((E.srcElement ? E.srcElement : E.target).parentNode.id);
	} 
	
	function MiniSite_menuDisplay(x0id) {
	  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]) {
        if (x0id == null) {
  				MiniSite_menuVisibleElements[id].style.visibility = "hidden";
	  			delete MiniSite_menuVisibleElements[id]
        } else {
          var elm = MiniSite_menuVisibleElements[id];
          var x1id = "subcontainer" + x0id.substring(4);
          if (x1id.indexOf(elm.id) != 0) {
            elm.style.visibility = "hidden";
            delete MiniSite_menuVisibleElements[id]
          }
        }
			}
		}
	}
	
  var MiniSite_menuNodes;
	var dicNodes = new Object;
	var MiniSite_menuOver;
	var MiniSite_menuVisibleElements = new Object();


  function MiniSite_menuPositionXXX() {
    return;
		for (var i = MiniSite_menuNodes.length - 1; i > -1; i--) {
			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++) {
					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_initDicNodes() {
    MiniSite_initDicNodesAux(MiniSite_menuNodes, null);
  }

  function MiniSite_initDicNodesAux(nodes, parent) {
  	for (var i = nodes.length - 1; i > -1; i--) {
		  dicNodes[nodes[i].elm.id] = nodes[i];
			nodes[i].supNode = parent;
			if (nodes[i].subcontainer) {
        MiniSite_initDicNodesAux(nodes[i].subnodes, nodes[i]);
      }
    }
  }

  function MiniSite_menuPosition() {
    MiniSite_menuPositionAux(MiniSite_menuNodes);
  }

  function MiniSite_menuPositionAux(nodes) {
  	for (var i = nodes.length - 1; i > -1; i--) {
      MiniSite_menuQuickPosition(nodes[i])
		  if (nodes[i].subcontainer) {
        MiniSite_menuPositionAux(nodes[i].subnodes);
      }
    }
  }

  
  function MiniSite_menuQuickPosition(node) {
    if (node.subcontainer) {
      var oX1 = getLeft(node.elm);
      var oY1 = getTop(node.elm)
      if (node.depth == 1) {
        oY1 += node.elm.scrollHeight;
      } else {
        oX1 += node.elm.scrollWidth;
      }
      node.subcontainer.style.top = oY1 + "px";
      node.subcontainer.style.left = oX1 + "px";
    }      
  }

  function MiniSite_menuQuickPositionXX(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_initDicNodes();
	  MiniSite_menuPosition();
		document.body.onmousemove = MiniSite_menuBodyMouseMove;
	}


//MiniSite_LoadFunctions[MiniSite_LoadFunctions.length] = MiniSite_menuInit;

