/***** Alle Rechte vorbehalten: Rainer Wagener, wagener [ed] rohschnitt.de *****/

/***** globale Variablen *****/

var ueber = new Array();
var timer = 500;
var late;
var Knoten = 2;
var screw;
var ie_mac = (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.indexOf("Macintosh") != -1)

window.onload = start;

/***** Ansteuerung der Pfeiltasten *****/

 function stop(e)
 {
    if(screw=="")
       return;
    else
       e.preventDefault();
 }

 function teiler(e)
 {
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    var papa = quelle.parentNode;
    var opa = papa.parentNode;
    var taste = (window.Event) ? ereignis.which : ereignis.keyCode;
    screw = "";

    if(taste == 37)
    {
       for (var i=0;i<document.links.length;i++)
          if (document.links[i] == quelle)
             if(papa.className == "hide")
             {
                opa.parentNode.firstChild.focus();
                break;
             }

          screw = e;
          return false;
    }

    if(taste == 39)
    {
       for (var i=0;i<document.links.length;i++)
          if (document.links[i] == quelle)
             if(papa.className == "discover")
             {
                document.links[i+1].focus();
                break;
             }

          screw = e;
          return false;
    }

    if(taste == 40)
    {
       for (var i=0;i<document.links.length;i++)
          if (document.links[i] == quelle)
          {
             if(papa.className != "discover")
             {
                document.links[i+1].focus();
                break;
             }

             else
                for(var j=i+1;j<document.links.length;j++)
                   if(document.links[j].parentNode.parentNode.className == opa.className)
                   {
                      document.links[j].focus();
                      break;
                   }
          }

          screw = e;
          return false;
    }

    if(taste == 38)
    {
       for (var i=0;i<document.links.length;i++)
          if (document.links[i] == quelle)
             for(var j=i-1;j > 0;j--)
             {
                var cha = document.links[j].parentNode.parentNode.className;
                if(cha.charAt(cha.length-1) <= opa.className.charAt(opa.className.length-1))
                {
                   document.links[j].focus();
                   screw = e;
                   return false;
                }
             }
    }
 }

/***** Ansteuerung des Pullouts, Pullbacks und Zeitverzögerung *****/

function tasten(e)
{
   timer = 10;
   zeigen(e);
}

function maus(e)
{
   timer = 500;
   zeigen(e);
}

function blurrer(e)
{
   window.clearTimeout(late);
   late = window.setTimeout("verstecken()",timer);
}

/***** Pullouts und Styleänderungen *****/

function zeigen(e)
{
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    var papa = quelle.parentNode;

    window.clearTimeout(late);

    if(papa.parentNode.className == "Ebene1" && papa != ueber[ueber.length-1])
       for (var i=0;i < ueber.length;)
          hide();

    if (!papa.className || papa.className == "plain")
       return;

    else
       if (ueber.length != 0)
          if(papa.parentNode == ueber[ueber.length-1].parentNode && papa != ueber[ueber.length-1])
             hide();

    if (papa.className == "discover")
    {
       papa.childNodes[Knoten].className = "zeigen2";
       quelle.className = "aktiv";
       ueber[ueber.length] = quelle.parentNode;
    }
}

/***** Pullback mit und ohne Zeitverzögerung *****/

function verstecken()
{
   if (ueber.length > 0)
   {
      hide();
      window.clearTimeout(late);
      late = window.setTimeout("verstecken()",timer);
   }
   else
      window.clearTimeout(late);
}

function hide()
{
  if (ueber.length > 0)
  {
     var knips = ueber[ueber.length-1];
     ueber = ueber.slice(0, (ueber.length-2));
     knips.firstChild.className = "passiv";
     knips.childNodes[Knoten].className = "Ebene2";
  }
  else
    return;
}

/***** Eventbeobachtung festlegen + Netscape 7 und Opera 7 Bugs + verstecken *****/

 function start()
 {
    if(!document.getElementById || !document.body.nodeName)
       return;

    Knoten = (window.Event || ie_mac) ? 3 : 2;

    for (var i=0;i<document.links.length;i++)
       if (document.links[i].parentNode.parentNode.className.indexOf("Ebene") != -1)
          if(document.links[i].parentNode.className != "offen")
          {
             document.links[i].onfocus = tasten;
             document.links[i].onblur = blurrer;
             document.links[i].onmouseover = maus;
             document.links[i].onmouseout = blurrer;
             if(!window.opera)
                document.links[i].onkeydown = teiler;
             if(window.Event && !window.opera)
                document.links[i].addEventListener("keypress", stop, false);
          }
 }


/***** Zurücksetzen der Pullouts bei :hover auf Interaktiv *****/

function offenbar()
{
   for (var i=0;i < ueber.length;)
      hide();
}
