function Menu_Item(id, label,hyperlink,subMenuLabel) {
  this.id = id;
  this.label = label;
  this.hyperlink = hyperlink;
  this.subMenuLabel = subMenuLabel;
}

function Menu_Container(label, x, y, parentName, colour) {
  this.parentName = parentName;
  this.label = label;  
  this.x = x;
  this.y = y;
  this.colour = colour;
}

function repositionMenus() {
  for (i=0; i<menuContainerArray.length;i++) {
    currentMenu = document.getElementById(menuContainerArray[i].label + "_Menu");
	parentElement = document.getElementById(menuContainerArray[i].parentName);
	if ((menuContainerArray[i].x + MENU_WIDTH) > parentElement.offsetWidth)
	  currentMenu.style.left = findPosX(parentElement) + parentElement.offsetWidth - MENU_WIDTH -2 + 'px';
	else
	  currentMenu.style.left = findPosX(parentElement) + menuContainerArray[i].x + 'px';
	currentMenu.style.top = findPosY(parentElement) + menuContainerArray[i].y + 'px';
  }
}

function loadMenus() {
  for (i=0; i<menuContainerArray.length;i++) {
    currentMenu = document.createElement('div');
	currentMenu.style.position = 'absolute';
	currentMenu.style.width = MENU_WIDTH + 'px';
	currentMenu.style.backgroundColor = '#' + menuContainerArray[i].colour;
	currentMenu.style.zIndex = '89';	
	currentMenu.style.display = 'none';
	currentMenu.id = menuContainerArray[i].label + "_Menu";
	document.body.appendChild(currentMenu);  
	
	currentMenuArray = eval(menuContainerArray[i].label + "_MenuArray");
	for (j=0;j<currentMenuArray.length;j++) {
	  currentMenuElement = document.createElement('div');
	  currentMenuElement.style.position = 'absolute';
	  currentMenuElement.style.left = '0px';
	  currentMenuElement.style.top = (j * MENU_HEIGHT) + 'px';
	  currentMenuElement.style.backgroundColor = '#' + menuContainerArray[i].colour;
	  currentMenuElement.style.width = MENU_WIDTH + 'px';
	  currentMenuElement.style.height = MENU_HEIGHT - MENU_TOP_PADDING + 'px';
	  currentMenuElement.style.paddingTop = MENU_TOP_PADDING + 'px';
	  currentMenuElement.style.borderWidth = '1px';
	  currentMenuElement.style.borderStyle = 'solid';	  
	  currentMenuElement.style.borderColor = '#999999';	  
	  currentMenuElement.style.cursor = 'pointer';
	  currentMenuElement.style.zIndex = '90';
	  currentMenuElement.id = menuContainerArray[i].label + "_" + currentMenuArray[j].id	+ "_Menu_Item";
	  currentMenuElement.innerHTML = "<ul style='margin: 0; padding: 0;'><li style='margin: 1px 0 0 20px; padding: 0'>" + currentMenuArray[j].label + "</li></ul>";
	  currentMenu.appendChild(currentMenuElement);
	} 
  }
  for (i=0; i<menuContainerArray.length;i++) {
    assignMenuEventHandlers(menuContainerArray[i].label);
	currentMenuArray = eval(menuContainerArray[i].label + "_MenuArray");
	for (j=0;j<currentMenuArray.length;j++) {
	  assignMenuItemEventHandlers(menuContainerArray[i].label + "_" + currentMenuArray[j].id	+ "_Menu_Item",currentMenuArray[j].hyperlink);
	} 	
  }  
  repositionMenus();
}

function assignMenuItemEventHandlers(menuItemName, hyperlink) {
  currentMenuElement = document.getElementById(menuItemName);
  currentMenuElement.onclick = function() {window.location = hyperlink;};
  assignMenuItemBackgroundHandler(menuItemName);
}

function assignMenuItemBackgroundHandler(menuItemName) {
  document.getElementById(menuItemName).onmouseover = function() {document.getElementById(menuItemName).style.backgroundColor = '#cccccc'};
  document.getElementById(menuItemName).onmouseout = function() {document.getElementById(menuItemName).style.backgroundColor = '#dbdbdb'};
}

function assignMenuEventHandlers(menuName) {
  document.getElementById(menuName + "_Menu").onmouseout = function() {MENU_TIMER = setTimeout(function () {closeMenu(menuName);},1000);};
  document.getElementById(menuName + "_Menu").onmouseover = function() {clearTimeout(MENU_TIMER);};  
}

function menuButtonOut(menuName) {
  MENU_TIMER = setTimeout(function () {closeMenu(menuName);},1000);  
}

function openMenu(menuName) {
  closeAllMenus();
  clearTimeout(MENU_TIMER);
  document.getElementById(menuName + "_Menu").style.display='block';
}

function closeMenu(menuName) {
  document.getElementById(menuName + "_Menu").style.display = 'none';
}

function closeAllMenus() {
  for(i=0;i<menuContainerArray.length;i++) {
    document.getElementById(menuContainerArray[i].label + "_Menu").style.display='none';
    //document.getElementById(menuContainerArray[i].label + "_background").style.backgroundColor = '#dbdbdb';  

  }
}

