
/* - ++resource++dkrz.theme.javascripts/rollovermenu.js - */
var globalnav_sublevel_shown = "";
var globalnav_tab_shown = "";
var globalnav_hidetimer = null;

function show_nosublevels_dummy(visible) {
  /* Shows or hides additional elements below the navigation bar to provide extra empty space
     if no sublevel bar is shown. */
  var nosl_dummy = document.getElementById("portal-globalnav-no-sublevels-dummy");
  if (visible) {
    nosl_dummy.setAttribute("style", "display: block;");
  } else {
    nosl_dummy.setAttribute("style", "display: none;");
  }
}

function show_sublevels(tab_id) {
  // hide the original sublevels
  if (globalnav_sublevel_original != "") {
    document.getElementById(globalnav_sublevel_original).setAttribute("style", "display: none;");
    document.getElementById(globalnav_tab_original).setAttribute("class", "plain");
  }
  // hide any previously shown levels
  if (globalnav_sublevel_shown != "") document.getElementById(globalnav_sublevel_shown).setAttribute("style", "display: none;");
  if (globalnav_tab_shown != "") document.getElementById(globalnav_tab_shown).setAttribute("class", "plain");
  // show tab with given tab_id
  var sl = document.getElementById("portal-globalnav-sublevels-"+tab_id);
  sl.setAttribute("style", "display: inline;");
  globalnav_sublevel_shown = "portal-globalnav-sublevels-"+tab_id;
  globalnav_tab_shown = "portaltab-"+tab_id;
  document.getElementById(globalnav_tab_shown).setAttribute("class", "selected");
  // detect if sublevels is empty; show placeholder element below the navigation bar then
  show_nosublevels_dummy(!check_has_element_child_node(sl));
  disable_timer(globalnav_hidetimer);
}

function hide_sublevels() {
  /* Arms the timer, which will eventually call do_hide_sublevels(). */
  rearm_globalnav_hidetimer();
}

function do_hide_sublevels() {
  var show_nosl_dummy = true;
  // hide any previously shown levels
  if (globalnav_sublevel_shown != "") document.getElementById(globalnav_sublevel_shown).setAttribute("style", "display: none;");
  if (globalnav_tab_shown != "") document.getElementById(globalnav_tab_shown).setAttribute("class", "plain");
  // show original levels
  if (globalnav_sublevel_original != "") {
    var sl = document.getElementById(globalnav_sublevel_original);
    sl.setAttribute("style", "display: inline;");
    show_nosl_dummy = !check_has_element_child_node(sl);
  }
  if (globalnav_tab_original != "") {
    document.getElementById(globalnav_tab_original).setAttribute("class", "selected");
  }
  globalnav_sublevel_shown = "";
  globalnav_tab_shown = "";
  // show/hide dummy
  show_nosublevels_dummy(show_nosl_dummy);
}

function check_has_element_child_node(el) {
  /* Checks whether the given DOM element contains at least one element child node.*/
  for (var i = 0; i < el.childNodes.length; i++) {
    if (el.childNodes[i].nodeType == 1) return true;
  }
  return false;
}

function disable_timer(t) {
  if (t != null)
    window.clearTimeout(t);
  t = null;
}

function rearm_globalnav_hidetimer() {
  disable_timer(globalnav_hidetimer);
  globalnav_hidetimer = window.setTimeout("do_hide_sublevels()", 1000);
}


