/******************************************************************************
 ******************************************************************************
 **
 **  File name:      pcc_menu.js
 **  Description:    The javascript to do the dynamic effects of the navigation
 **                  menu.
 **
 **  Author:         Stuart Rudd
 **  Last Modified:
 **
 ******************************************************************************
 ******************************************************************************/

var selectedItem = null;
var selectedSubItem = null;
var shownSubMenu = null;


function select_menu(menuItem, event)
{
  if (is_a_target(menuItem, event))
  {
    selectedItem = menuItem;
    swap_class(menuItem, 'item_out', 'item_over');
  }
}


function unselect_menu(menuItem)
{
  selectedItem = null;
  swap_class(menuItem, 'item_over', 'item_out');
}


function select_sub_menu(menuSubItem, event)
{
  if (is_a_target(menuSubItem, event))
  {
    selectedSubItem = menuSubItem;
    swap_class(menuSubItem, 'sub_item_out', 'sub_item_over');
  }
}


function unselect_sub_menu(menuSubItem)
{
  selectedSubItem = null;
  swap_class(menuSubItem, 'sub_item_over', 'sub_item_out');
}


function show_sub_menu(parentId, event)
{
  parentMenu = document.getElementById(parentId);
  if (is_a_target(parentMenu, event))
  {
    hide_sub_menu();
    if ((shownSubMenu == null) || ((get_parent(shownSubMenu)).id != parentId))
    {
      subMenu = document.getElementById('sub_' + parentId);
      if (subMenu)
      {
        swap_class(subMenu, 'hide', 'show');
        swap_class(parentMenu, 'sub_hidden', 'sub_shown');
        shownSubMenu = subMenu;
      }
      click_menu(parentMenu, event);
    }
    else
    {
      shownSubMenu = null;
    }
    return false;
  }
  return true;
}


function hide_sub_menu()
{
  if (null != shownSubMenu)
  {
    swap_class(shownSubMenu, 'show', 'hide');
    swap_class(get_parent(shownSubMenu), 'sub_shown', 'sub_hidden');
  }
}


function click_menu(menuItem, event)
{
  anchor = (menuItem.getElementsByTagName("A"))[0];
  if (is_target(menuItem, event))
  {
    parent.frames[anchor.target].document.location = anchor.href;
    return false;
  }
  return true;
}


function is_target(element, event)
{
  if (!event)
  {
    event = window.event;
  }
  target = event.target;
  if (!target)
  {
    target = event.srcElement;
  }
  if (target == element)
  {
    return true;
  }
  return (target == (element.getElementsByTagName("A"))[0]);
}


function is_a_target(element, event)
{
  if (is_target(element, event))
  {
    return true;
  }
  target = event.target;
  if (!target)
  {
    target = event.srcElement;
  }
  return (target == (element.getElementsByTagName("A"))[0]);
}


function swap_class(element, oldClass, newClass)
{
  if (null != element)
  {
    element.className = element.className.replace(oldClass, newClass);
  }
}


function get_parent(element)
{
  return element.parentNode ? element.parentNode : element.parentElement;
}

