﻿/**************************************************************
*   This script can be used to implement submenus and popups. *
*   The key principle is: after mouseout a popped up element  *
*   lives for one more second, then it is hidden. Visibility  *
*   is managed by style.display set to block or none.         *
*                                                             *
*   Copyright July Studio 2005 - 2009.                        *
**************************************************************/

var SubItems = new Array();//Holds all subitems in the page. Not necessary for single popups.
var candidate;             //Subitem queried to die 

function HideSub(source)
{
  var theSub;
  theSub = document.getElementById(source);
  theSub.style.display = "none";
}//HideSub

function HideAll(source)
//hides all subs except the specified one
{
  var i;
  for(i = 0; i < SubItems.length; ++i) {
    if (source!=SubItems[i]) {
      HideSub(SubItems[i]);
    }//if
  }//for
}//HideAll

function ShowSub(source)
{
  clearTimeout(candidate);
  candidate = null;
  HideAll(source);
  var theSub = document.getElementById(source);
  theSub.style.display = "block";
}//ShowSub

function QueryDeath(source)
{
  candidate = setTimeout("HideSub('"+source+"')", 1000);
}//QueryDeath

function QueryLife(source)
{
  if (candidate!=null) {
    clearTimeout(candidate);
    candidate = null;
  }//if
}//QueryLife

function RegisterSub(gName)
{
  var i;
  for(i = 0; i < SubItems.length; ++i) {
    if(gName == SubItems[i])
      return false;
  }//for
  SubItems[SubItems.length] = gName;
  return true;
}//RegisterSub

function UnregisterSub(gName)
{
  var i;
  for (i = 0; i < SubItems.length; ++i) {
    if (gName == SubItems[i]) {
      SubItems[i] = "";
    }//if
  }//for
  PackSubs();
}//UnregisterSub

function PackSubs()
{
  SubItems.sort();
  var i;
  for (i = 0; i < SubItems.length; ++i) {
    if (gName == "") {
      SubItems.length = i;
      return;
    }//if
  }//for
}//PackSubs