// Stores the menu state temporarily
var menu_state = new Array();

// Returns the base URL from the current window location
function getBaseUrl()
{
   var url = this.window.location + '';
   var scheme;
   var i;
   if ((i = url.indexOf('?')) >= 0)
   {
      url = url.substr(0, i);
   }
   if ((i = url.indexOf('//')) >= 0)
   {
      scheme = url.substr(0, i + 2);
      url = url.substr(i + 2);
   }
   if ((i = url.indexOf('/')) >= 0)
   {
      url = url.substr(0, i);
   }

   url = scheme + url;
   return url;
}

function navigate(relativeUrl, target)
{
   var windowLocation = this.window.location + '';
   var baseUrl = getBaseUrl();
   var fullUrl = baseUrl + relativeUrl;

   parent.frames[target].location = fullUrl;
}

function getLayer(id)
{
   var layer;

   if (document.all)
   {
      layer = document.all[id].style;
   }
   else if (document.layers)
   {
      layer = document.layers[id];
   }

   return layer;
}

function toggle_menu(menu_id)
{
   var layer = getLayer(menu_id);
   
   if (layer.display == 'block')
   {
      layer.display = 'none';
      menu_state[menu_id] = 'none';      
   }
   else
   {
      layer.display = 'block';
      menu_state[menu_id] = 'block';      
   }
}

function mouse_over(menu_item)
{
   menu_item.className = menu_item.className + "_hover";
}

function mouse_out(menu_item)
{
   menu_item.className = menu_item.className.substr(0, menu_item.className.length - '_hover'.length);
}


function save_menu_state()
{  
   // Combine the menu state values into a single string
   var menu_state_str = 'menu_state=';
   var menu_id;
   for (menu_id in menu_state)
   {
      menu_state_str += menu_id + ':' + menu_state[menu_id] + '&';
   };
   menu_state_str = menu_state_str.substr(0, menu_state_str.length - 1);   
   
   document.cookie = menu_state_str;
}

function restore_menu_state()
{
   var menu_state_str = '';
   var cookie_value = document.cookie;
   var p1;
   var p2;
   
   p1 = cookie_value.indexOf('menu_state=');

   if (p1 < 0)
   {
      // Return - no cookie value
      return;
   }
   else if ((p2 = cookie_value.indexOf(';', p1)) < 0)
   {
      // Extract everything after 'menu_state='
      menu_state_str = menu_state_str.substr(p1 + 11);      
   }
   else
   {
      // Extract everything between 'menu_state=' and ';'
      menu_state_str = cookie_value.substr(p1 + 11, p2 - (p1 + 11));
   };
   
   var nvp;
   var name;
   var value;
   var layer;
   var i;
   
   // Split the menu_state data into a list
   var menu_state_list = menu_state_str.split('&');   
   
   // Loop through the list, separating the menu names and values,
   // then apply the values to the menu layer
   for (i = 0; i < menu_state_list.length; i++)
   {
      nvp = menu_state_list[i];
      if ((p1 = nvp.indexOf(':')) > 0)
      {
         name = nvp.substr(0, p1);
         value = nvp.substr(p1 + 1);
         menu_state[name] = value;
                  
         layer = getLayer(name);
         layer.display = value;
      }
   }
}



