function Menu(menu_name,parent_menu)
{
   this.name = menu_name;
   this.parent = parent_menu;
   this.over_menu = false;
   this.over_menu_div = false;
   this.active = false;
   this.children = new Array();
   if (parent_menu) parent_menu.children.push(this);
}

Menu.prototype.remove = function()
{
   if ((! this.over_menu) && (! this.over_menu_div)) {
      document.getElementById(this.name+'_menu').style.display = 'none';
      this.active = false;
      if (this.parent) document.getElementById(this.name+'_menu_link').className = '';
   }
}

Menu.prototype.mouseover = function()
{
   this.over_menu = true;
   document.getElementById(this.name+'_menu').style.display = '';
   this.active = true;
}

Menu.prototype.activate = function()
{
   this.over_menu = true;
   document.getElementById(this.name+'_menu_link').className = 'sub_menu';
   document.getElementById(this.name+'_menu').style.display = '';
   this.active = true;
}

Menu.prototype.mouseout = function()
{
   this.over_menu = false;
   var menu = this;
   setTimeout(function() { menu.remove(); },0);
}

Menu.prototype.div_mouseover = function()
{
   this.over_menu_div = true;
   if (this.parent) this.parent.over_menu_div = false;
}

Menu.prototype.div_mouseout = function()
{
   this.over_menu_div = false;
   var menu = this;
   if (this.parent) {
      setTimeout(function () {
         if ((! menu.parent.over_menu_div) && (! menu.over_menu_div)) {
            menu.over_menu = false;   menu.remove();
         }
      },0);
      setTimeout(function () {
         if ((! menu.parent.over_menu_div) && (! menu.over_menu_div)) {
            menu.parent.over_menu_div = false;   menu.parent.remove();
         }
      },0);
   }
   else if (this.children.length > 0) {
      setTimeout(function () {
         if (! menu.over_menu_div) {
            var over_child_div = false;
            for (var index in menu.children) {
               if (menu.children[index].over_menu_div) over_child_div = true;
            }
            if (! over_child_div) {
               menu.over_menu_div = false;   menu.remove();
            }
         }
      },0);
      var child_active = false;
      for (var index in this.children) {
         if (this.children[index].active) child_active = true;
      }
      if (child_active)
         setTimeout(function () {
            if (! menu.over_menu_div) {
               for (var index in menu.children) {
                  if (menu.children[index].active &&
                      (! menu.children[index].over_menu_div)) {
                     menu.children[index].over_menu = false;
                     menu.children[index].remove();
                  }
               }
            }
         },0);
   }
   else setTimeout(function() { menu.remove(); },0);
}

Menu.prototype.sub_mouseover = function(child_name)
{
   for (var index in this.children) {
      if (this.children[index].name == child_name) {
         if (! this.children[index].active) this.children[index].activate();
      }
      else if (this.children[index].active) {
         this.children[index].over_menu = false;
         this.children[index].over_menu_div = false;
         this.children[index].remove();
      }
   }
}

var villa_menu = new Menu('villa',null);
var resort_menu = new Menu('resort',null);
var dining_menu = new Menu('dining',resort_menu);
var activities_menu = new Menu('activities',resort_menu);

/*
if ((typeof(top.smart_load) != "undefined") &&
    (navigator.appName == "Microsoft Internet Explorer")) {
   function move_menus() {
      document.getElementById('villa_menu_div').style.top = '23px';
      document.getElementById('villa_menu_div').style.left = '53px';
      document.getElementById('villa_menu').style.top = '52px';
      document.getElementById('villa_menu').style.left = '191px';
      document.getElementById('villa_menu').style.width = '195px';
      document.getElementById('resort_menu_div').style.top = '23px';
      document.getElementById('resort_menu_div').style.left = '337px';
      document.getElementById('resort_menu').style.top = '52px';
      document.getElementById('resort_menu').style.left = '337px';
      document.getElementById('resort_menu').style.width = '120px';
      document.getElementById('dining_menu').style.left = '458px';
      document.getElementById('dining_menu').style.width = '145px';
      document.getElementById('dining_menu').style.height = '60px';
      document.getElementById('activities_menu').style.left = '458px';
      document.getElementById('activities_menu').style.width = '145px';
      document.getElementById('activities_menu').style.height = '110px';
   }
   if (window.addEventListener) window.addEventListener('load',move_menus,false);
   else if (window.attachEvent) window.attachEvent('onload',move_menus);
}
*/
