function MenusNode(pId, pType, pName, pPointerId) {
	this.Id = pId;
	this.Name = pName;
	this.Type = pType;
	this.PointerId = pPointerId;
	this.Childs = new Object();
  this.NbChilds = 0;
	
	this.addChild = MNAddChild;
  this.getChild = MNGetChild;
}

function MNAddChild(pChild) {
	this.Childs[pChild.Id] = pChild;
	pChild.Parent = this;
  this.NbChilds++;
}

function MNGetChild(pId) {
  return this.Childs[pId];
}

function InitializeMenus(pType) {
  for(prop in oMenus.Childs) {
		if(oMenus.Childs[prop].Type == pType) {
			$("menu_" + oMenus.getChild(prop).Id).MenuType = oMenus.Childs[prop].Type;
			$("menu_" + oMenus.getChild(prop).Id).onmouseover = MenuClick;
			$("menu_" + oMenus.getChild(prop).Id).isFirst = true;
			$("menu_" + oMenus.getChild(prop).Id).curLevel = oMenus.getChild(prop);
			if(oMenus.getChild(prop).NbChilds == 0) {
				$("menu_" + oMenus.getChild(prop).Id).onmouseout = timeoutCloseMenu;
			}
		}
  }
}

var oMenu = new Array();
var oDivTop = new Array();
var oDivBody = new Array();

var oLastMenu;
function MenuClick() {
  CancelTimeout();
  oLastMenu = this;
  if(this.isFirst && oMenu.length > 0) {
    for(var i = 0; i < oMenu.length; i++) {
      oMenu[i].parentNode.removeChild(oMenu[i]);
    }
    oMenu = new Array();
  }
  if(this.curLevel.NbChilds > 0) {
  	if((oMenu.length > 0 ? this.curLevel.Id != oMenu[oMenu.length - 1].UniqueName : true)) {
	    oMenu.push(document.createElement("div"));
	    oMenu[oMenu.length - 1].className = "mainMenu";
	    oMenu[oMenu.length - 1].UniqueName = this.curLevel.Id;
	    oMenu[oMenu.length - 1].onmouseout = bindFunction(CloseMenu, this);
	    oMenu[oMenu.length - 1].onmouseover = CancelTimeout;
	
	    oDivTop.push(document.createElement("div"));
	    oDivBody.push(document.createElement("div"));
	
	    oMenu[oMenu.length - 1].appendChild(oDivTop[oDivTop.length - 1]);
	    oMenu[oMenu.length - 1].appendChild(oDivBody[oDivBody.length - 1]);
	
	    oDivTop[oDivTop.length - 1].className = "topMenu";
	    oDivBody[oDivBody.length - 1].className = "bodyMenu"
			if(this.isFirst) {
				oDivBody[oDivBody.length - 1].className += " firstBodyMenu";
			}
	    
	    var oTemChilds = false;
	    var oIndexChilds = new Array();
	    
	    for(prop in this.curLevel.Childs) {
	      var oMenuElement = document.createElement("a");
	      oMenuElement.className = "dropdown";
	      oMenuElement.innerHTML = this.curLevel.getChild(prop).Name;
	      if(this.curLevel.getChild(prop).NbChilds > 0) {
	      	oTemChilds = true;
	        var oImg = document.createElement("img");
	        oImg.src = "pages/images/menu/fleche.gif";
	        oImg.className = "imgFleche";
	        oMenuElement.appendChild(oImg);
	        oMenuElement.onmouseover = MenuClick;
	        oMenuElement.curLevel = this.curLevel.getChild(prop);
	      }
	      oMenuElement.href = URL_PAGE + (this.curLevel.getChild(prop).PointerId || this.curLevel.getChild(prop).Id) + ".html";
	      oDivBody[oDivBody.length - 1].appendChild(oMenuElement);
	      oIndexChilds.push(oMenuElement);
	    }
	    if(oTemChilds) {
		    for(var i = 0; i < oIndexChilds.length; i++) {
		    	if(!oIndexChilds[i].onmouseover) {
		    		oIndexChilds[i].onmouseover = CloseLastMenu;
		    	}
		    }
	    }
	    if(this.isFirst) {
	      oMenu[oMenu.length - 1].style.top = getY(this) + this.offsetHeight + "px";
	      oMenu[oMenu.length - 1].style.left = getX(this) + "px";
	    } else {
	      oMenu[oMenu.length - 1].style.top = getY(this) - 1 + "px";
	      oMenu[oMenu.length - 1].style.left = getX(this) + this.offsetWidth + "px";
	    }
	    document.getElementsByTagName("body")[0].appendChild(oMenu[oMenu.length - 1]);
  	}
  }
  
  if(this.isFirst) {
    for(prop in oMenus.Childs) {
			if(oMenus.Childs[prop].Type == this.MenuType)
      	$("menu_" + oMenus.Childs[prop].Id).className = "";
    }
		
    this.className = "selected";
  }
}

var oCloseMenu = false;
var oTimeout = null;
var oTimeout2 = null;

function CloseMenu() {
  oTimeout = window.setTimeout(timeoutCloseMenu, 250, this.MenuType);
}

function CancelTimeout() {
  if(oTimeout) {
    window.clearTimeout(oTimeout);
    oTimeout = null;
  }
}

function timeoutCloseMenu() {
	var oType = this.MenuType || (oLastMenu && oLastMenu.MenuType) || arguments[0];
  for(var i = 0; i < oMenu.length; i++) {
    oMenu[i].parentNode.removeChild(oMenu[i]);
  }
  oMenu = new Array();
  window.clearTimeout(oTimeout);
  for(prop in oMenus.Childs) {
		if(oMenus.Childs[prop].Type == oType)
    	$("menu_" + oMenus.Childs[prop].Id).className = "";
  }
	if($("menu_" + CURRENT_TOP_PAGE)) {
  	$("menu_" + CURRENT_TOP_PAGE).className = "selected";
  }
}

function CloseLastMenu() {
	if(this.parentNode.parentNode != oMenu[oMenu.length - 1]) {
		oTimeout2 = window.setTimeout("timeoutCloseLastMenu()", 150);
	}
}

function timeoutCloseLastMenu() {
	oMenu[oMenu.length - 1].parentNode.removeChild(oMenu[oMenu.length - 1]);
  oMenu.pop();
  window.clearTimeout(oTimeout2);
}

addOnClickEvent(timeoutCloseMenu);