/**
 * clickable dropdowns.
 */



var menuActive = false;
// this is only used to remove all the default css styles that aren't needed if user has javascript enabled.
var menus = new Array(); 
var currentMenu = null;
var currentSubMenu = null;
var menuClicked = false; // whether the click was from within a menu or not.

function register_menu(e) {
  menus.push(e);
}

function click_menu(e) {
  menuClicked = true;
  if( e == null )
    return;
  if( menuActive ) {
    if( currentMenu != null && typeof currentMenu == "object" ) {
      element = get_object(e);
      element.style.left = "-999em";
      currentMenu = null;
    }
    menuActive = false;
  } else {
    menuActive = true;
    over_menu(e);                                                                                                                             }
}

function click_submenu(e) {
  menuClicked = true;
  element = get_object(e);
  if( currentSubMenu == element ) {
    currentSubMenu.style.display = '';
    currentSubMenu = null;
  } else {
    if( currentSubMenu != null ) {
      currentSubMenu.style.display = '';
    }
    element.style.display = 'block';
    currentSubMenu = element;
  }
}

function over_menu(e) {
  if( !menuActive )
    return;
  
  element = get_object(e);
  
  // hide previous menu
  if( currentMenu != null && typeof currentMenu == "object" && currentMenu != element ) {
    currentMenu.style.left = "-999em";
  }

  // check if the item has a dropdown
  if( element != null ) {
    element.style.left = "auto";
    currentMenu = element;
  } else {
    currentMenu = null;
  }
}

function clear_menus() {
  if( !menuClicked ) {
    if( currentMenu != null && typeof currentMenu == "object" ) {
      currentMenu.style.left = "-999em";
      currentMenu = null;
    }
    menuActive = false;
  }
  menuClicked = false;
}

// as we only are interested in the css hover:
// if we don't use javascript, we have to call
// this after loading to get rid of the class.
function remove_csshover() {
  for(key in menus) {
    var el = get_object(menus[key]);
    el.className=el.className.replace(new RegExp(" dohover\\b"), "");
    el.className=el.className.replace(new RegExp(" visible\\b"), "");
  }
}
