
// Pfade zu den Button-Graphics anpassen ...
var Layer_Buttons = new Array();
    Layer_Buttons['main'] = new Array();
    Layer_Buttons['sub']  = new Array();

    Layer_Buttons['main']['link'] = '_styles/bttn_layer_hover.gif';
    Layer_Buttons['main']['hover'] = '_styles/bttn_layer_link.gif';
    Layer_Buttons['sub']['link'] = '_styles/bttn_layer_sub_hover.gif';
    Layer_Buttons['sub']['hover'] = '_styles/bttn_layer_sub_link.gif';

// Navigationsl-Layer initialisieren
function initNavigationLayer( NavElement, RefElement )
{
  // Button Grafiken vorausladen
  preload_Buttons();
  
  var position;
  
  if ( position = getElementOffset( RefElement ) )
  {
    // document.getElementById( NavElement ).style.left = position.x + 'px';
    // document.getElementById( NavElement ).style.top = position.y + 'px';
    // alert( 'NavElement: ' + NavElement + ', RefElement: ' + RefElement + ', Return: ' + typeof( position ) + ' x: ' + position.x + ' / y: ' + position.y );
    return true;
  }
  return false;
} // end

// Button-Grafiken für Hovereffekte vorausladen
function preload_Buttons()
{
  var tmp = new Array();
  
  tmp[0] = new Image();
    tmp[0].src = Layer_Buttons['main']['link'];
  tmp[1] = new Image();
    tmp[1].src = Layer_Buttons['main']['hover'];
  tmp[2] = new Image();
    tmp[2].src = Layer_Buttons['sub']['link'];
  tmp[3] = new Image();
    tmp[3].src = Layer_Buttons['sub']['hover'];
  return;  
} // end

// Steuerfunktion zum Öffnen und Schliessen der Register
function navigationSubmenu( menu, mode )
{
  var counter = 1;
  
  while ( button = document.getElementById( menu + "_sub" + counter ) )
  {
    if ( mode == '1' )
      navigationSubmenuOpen( button );
      // button.style.display = 'block';
    else
      navigationSubmenuClose( button );
      // Bspl.: function(){fadeIn(id,i), 100}
      // button.style.display = 'none';
    counter++;
  }
} // end

function navigationSubmenuOpen( button )
{
  /*
    Checkliste für Hover-Slide Effekt:
    a) Höhe des Listenelementes ermitteln
    b) Höhe des Listenelementes in Puffervariable
    c) Höhe des Listenelementes auf 0 setzten
    d) Schleife -> solange IST kleiner MAX
  */
  if ( button.style.display = 'block' )
    return true;
  return false;
} // end

function navigationSubmenuClose( button )
{
  if ( button.style.display = 'none' )
    return true;
  return false;
} // end

function hoverListElement( elem, mode )
{
  if ( elem.match(/main/) )
  {
    if ( mode == '1' )
      document.getElementById( elem ).style.backgroundImage = 'url(' + Layer_Buttons['main']['link'] + ')';
    else
      document.getElementById( elem ).style.backgroundImage = 'url(' + Layer_Buttons['main']['hover'] + ')';
  }
  else if( elem.match(/sub/) )
  {
    // Main (Parent) Element ermitteln oder übergeben
    var check = elem.indexOf("sub");
    var base  = elem.substring( 0, check ) + 'main';
    
    if ( mode == '1' )
    {
      document.getElementById( elem ).style.backgroundImage = 'url(' + Layer_Buttons['sub']['link'] + ')';
      // Reset Main-Menu
      document.getElementById( base ).style.backgroundImage = 'url(' + Layer_Buttons['main']['link'] + ')';
    }
    else
    {
      document.getElementById( elem ).style.backgroundImage = 'url(' + Layer_Buttons['sub']['hover'] + ')';
      // Highlight Main-Menu
      document.getElementById( base ).style.backgroundImage = 'url(' + Layer_Buttons['main']['hover'] + ')';
    }
  }
} // end

function getElementOffset( element )
{
  var elem=element, tagname="", x=0, y=0;
  
  /* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

  /* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
  if (tagname=="BODY")
    elem=0;

  /* wenn elem ein Objekt ist und offsetParent enthaelt Offset-Elternelement ermitteln */
  if (typeof(elem)=="object")
    if (typeof(elem.offsetParent)=="object")
      elem = elem.offsetParent;
  }

  /* Objekt mit x und y zurueckgeben */
  position = new Object();
  position.x = x;
  position.y = y;
  return position;
} // end
