window.onerror = logError;
browserCapable = (document.all);


/**********************************************************************
 * Entry Points
 */ 

function beforeLoad()
{
  if (browserCapable)
  {
    menus_BeforeLoad();
  }
}


function afterLoad()
{
  if (browserCapable)
  {
    menus_AfterLoad();
  }
}


/**********************************************************************
 * Dynamic Menus
 */ 


imgBlank = new Image();        imgBlank.src = ".images/blank.gif";

imgPlus  = new Image(22, 15);  imgPlus.src  = "images/plus.gif";
imgMinus = new Image(22, 15);  imgMinus.src = "images/minus.gif";



var thisLink;

var parentLink;

function menus_BeforeLoad()
{
  if (browserCapable)
  {
    //****************************************
    //establish the target link

    var href = typeof parentPage != 'undefined' ? parentPage.length > 0 ? filename(parentPage) 
                                                : ''                    : '' ;
    parentLink = href.length != 0

    if (!parentLink) href = filename(window.location.pathname);


    //****************************************
    //tile vertical dotted lines

    if (document.all.menutable)
    {
      for (i=0; i<document.all.menutable.length; i++)
      {
        table = document.all.menutable[i];
    
        if (table) table.background = imgDot.src;
      }
    }

    //****************************************
    //insert horizontal dotted lines

    if (document.all.menuline)
    {
      for (i=0; i<document.all.menuline.length; i++)
      {
        line = document.all.menuline[i];
     
        if (line) line.src = imgLine.src;
      }
    }

    //****************************************
    //look for the target link in level 1

    if (document.all.menuitem1)
    {
      if (document.all.menuitem1.length)
      {
        for (i=0; i<document.all.menuitem1.length; i++)
        {
          link = document.all.menuitem1[i];

          if (link && link.pathname)
          {
            if (href == filename(link.pathname))
            {
              thisLink = link;
              break;
            }
          }
        }
      }
      else
      {
        link = document.all("menuitem1");

        if (link && link.pathname)
        {
          if (href == filename(link.pathname))
          {
            thisLink = link;
          }
        }
      }
    }

    //****************************************
    //look for the target link in level 2

    if (!thisLink)
    {
      if (document.all.menuitem2)
      {
        for (i=0; i<document.all.menuitem2.length; i++)
        {
          link = document.all.menuitem2[i];
    
          if (link && link.pathname)
          {
            if (href == filename(link.pathname))
            {
              thisLink = link;
              break;
            }
          }
        }
      }
    }

    //****************************************
    //if level 2s previously open or contains target link
    //then open otherwise close

    if (document.all.menu1)
    {
      for (i=0; i<document.all.menu1.length; i++)
      {
        source = document.all.menu1[i];

        if (source)
        {
          source.custom = i;          

          submenu = source.all("menu2");

          if (submenu)
          {
            handle = source.all(0);
  
            handle.style.cursor = "hand";

            openMenu = thisLink ? source.contains(thisLink) 
                                : false;

            if (document.cookie.indexOf("menu" + i + "=1") != -1) openMenu = true;

            if (openMenu)
            {
              document.cookie = "menu" + source.custom + "=1";

              handle.src = imgMinus.src;
              submenu.style.display = "";
            }
            else
            {
              handle.src = imgPlus.src;
              submenu.style.display = "none";
            }
          }
        }
      }
    }
  }
}

function toggleMenu1(source)
{
  //****************************************
  //toggle menu between open and closed states

  if (browserCapable)
  {
    if (source)
    {
      submenu = source.all("menu2");

      if (submenu)
      {    
        handle = source.all(0);

        if (submenu.style.display == "")
        {
          document.cookie = "menu" + source.custom + "=0"

          handle.src = imgPlus.src;
          submenu.style.display = "none";
        }
        else
        {
          document.cookie = "menu" + source.custom + "=1"

          handle.src = imgMinus.src;
          submenu.style.display = "";
        }
      }
    }
  }
}


function filename(path)
{
  //****************************************
  //extract terminal filename from pathname

  href = path.substr(path.lastIndexOf('\\') + 1);
  href = href.substr(href.lastIndexOf('/') + 1);
  href = unescape(href.toLowerCase());
  if (href.length == 0) href = "index.html"
  return href;
}


/**********************************************************************
 * Error Handler and Logger
 */ 

var firstMessage = true;
var firstError = true;

function logError(message, url, line)
{
  if (firstError)
  {
    firstError = false;

    log('<b>JavaScript Errors</b><hr>', false);

    log('browser: ' + navigator.userAgent)
    log('page: ' + url + '<hr>', false);
  }

  log('line: ' + line);
  log(message + '<hr>', false);
  return false;
}


function log(message)
{
  if (firstMessage)
  {
    firstMessage = false;
  }

  JSConsole.scrollBy(0, 1000);
}
