<!--
// Deklaration von globalen Variablen --------------------------------
  var mInterval                 = null;
  var objDivStyle               = null;
  var mousePosX                 = 0;
  var mousePosY                 = 0;
  var valX                      = 0;
  var valY                      = 0;
  var valOpacity                = 0;
  
  // Zeitintervall für den Einblendeffekt einer Ebene. Hierbei wird
  // mittels der Variable valFadeStep geregelt, in welchen Schritt-
  // größen die Ebene eingeblendet wird - timeIntervall stellt
  // die Millisekunden Pause nach jedem Step dar.
  var timeInterval              = 30;
  // Die Ebene wird in enzelnen Schritten eingeblendet. Diese Variable
  // bestimmt die Schrittgröße.
  var valFadeStep               = 10;
  // Offset gibt den X-Versatz der Ebene zum Mauszeiger an.
  bubbleHelpMouseOffsetX        = 0;
  // Offset gibt den Y-Versatz der Ebene zum Mauszeiger an.
  bubbleHelpMouseOffsetY        = 0;
  // optional: Der Wert bestimmt die Breite der Ebene
  bubbleHelpWidth               = 300;
  // optional: Der Wert bestimmt die Höhe der Ebene
  bubbleHelpHeight              = 100;
  // Flag steuert die Position der Ebene. Der Wert 1 blendet
  // die Ebene an einem vorgeg. Raster ein, der Wert 0 blendet
  // die Ebene im Verhältnis zum Mauszeiger ein und bewegt sich
  // mit diesem.
  flgGrid                         = 0;
  // relevante Werte für die Einblendung der Ebene in ein 
  // vorgeg. Raster .
    // linker Abstand
    leftPadding                   = 10; 
    // oberer Abstand
    topPadding                    = 12;
    // Rahmenbreite
    frameWidth                    = 68;
    // Rahmenhöhe
    frameHeight                   = 68;
// Ende ------------------------------------------------------------------



// Eventcapture von MouseMove.
// Fall: Netscape Navigator 4.x
if( document.layers)
{
  window.captureEvents(Event.MOUSEMOVE); 
  window.onmousemove = getMousePos;
}
// Alle anderen Browser
else
{
  document.onmousemove = getMousePos;
}



// Die Funktion erstellt nachdem die Html-Seite geladen wurde eine
// Referenz auf die Ebene.
function initDiv(divId)
{
  // Konstruktor
  // Prm: Namen der Ebene, 
  objDivStyle = new classDivHandle(divId); 
}



// Die Funktion wird bei jeder Mausbewegung aufgerufen. 
// Es werden die aktuelle Mauskoordinaten ermittelt,
// um mit diesen die Ebene zu verschieben, falls diese 
// eingeblendet ist. Vorher werden Grenzwertüberprüfungen durchgeführt,
// die eine Darstellung der Ebene ausserhalb des sichbaren Bereichs
// verhindern.
function getMousePos(e)
{
  // Ermittlung der Mauskoordinaten in Abhängigkeit zum Browser
  mousePosX = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
	mousePosY = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY
	
	// Fall: Es existiert eine Ebenen-Instanz
	if(objDivStyle)
	{
    // Fall: die Ebene wird an einem Raster eingeblendet
    if( flgGrid == 1)
    { 
      // aus der aktuellen Mausposition werden die Rasterkoordinaten
      // mittels der zu Beginn festegelegten globalen Variablen ermitteln
      calcGridCoords();
      // Verschieben der Ebene
      objDivStyle.cDHShiftTo(valX, valY);
    }
    // Fall: Die Ebene wird in Abhängigkeit zum Mauszeiger eingeblendet
    else
    {
      // Grenzwertüberprüfung ----------------------------------
        // Netscape Navigator 4.x
        if( document.layers)
        {
          // Breite des sichtbaren Bereichs.
          windowWidth = window.innerWidth;
          // Höhe des sichtbaren Bereichs.
          windowHeight = window.innerHeight;
        }
        // alle anderen Browser
        else
        {
          // Breite des sichtbaren Bereichs.
          windowWidth = document.body.clientWidth;
          // Höhe des sichtbaren Bereichs.
          windowHeight = document.body.clientHeight;
        }
      
        // Ermittlung der Ebenenbreite
        divWidth = objDivStyle.cDHGetObjectWidth();
        // Ermittlung der Ebenenlänge
        divHeight = objDivStyle.cDHGetObjectHeight();
        
        // Überprüfung ob die Ebene nach rechts aus dem Fenster rausragt.
        if( ( mousePosX + divWidth) > windowWidth) mousePosX = mousePosX - (2*bubbleHelpMouseOffsetX-5) - divWidth;
        // Überprüfung ob die Ebene nach unten aus dem Fenster rausragt.
        if( ( mousePosY + divHeight) > windowHeight) mousePosY = mousePosY - (2*bubbleHelpMouseOffsetY) - divHeight;
        // Überprüfung ob die Ebene nach links aus dem Fenster rausragt.
        if( mousePosX < 0) mousePosX = 0;
        // Überprüfung ob die Ebene nach oben aus dem Fenster rausragt.
        if( mousePosY < 0) mousePosY = 0;
      // Ende -------------------------------------------------
      
      // Abfrage verhindert unschönen Effekt, der Eintritt wenn eine nicht sichtbare Ebene 
      // verschoben wird. Hierbei erscheinen Scrollbalken sobald man den Mauszeiger in den 
      // unteren oder aeusseren rechten Bereich schiebt.
      if( objDivStyle.objStyle.visibility != "hidden")
        // Verschiebung der Ebene
        objDivStyle.cDHShiftTo(mousePosX + bubbleHelpMouseOffsetX, mousePosY + bubbleHelpMouseOffsetY);
    }
  }
}



// Die Ebene wird am Raster bewegt
function calcGridCoords()
{
  // Ermittlung der X-Position im Raster
  valX = ((Math.floor((mousePosX-leftPadding-1)/frameWidth)) * frameWidth + leftPadding);
  // Ermittlung der Y-Position im Raster
  valY = ((Math.floor((mousePosY-topPadding-1)/frameHeight)) * frameHeight + topPadding + frameHeight);
  
  // Grenzwertüberprüfung ----------------------------------
    // Netscape Navigator 4.x
    if( document.layers)
    {
      // Breite des sichtbaren Bereichs.
      windowWidth = window.innerWidth;
      // Höhe des sichtbaren Bereichs.
      windowHeight = window.innerHeight;
    }
    else
    {
      // Breite des sichtbaren Bereichs.
      windowWidth = document.body.clientWidth;
      // Höhe des sichtbaren Bereichs.
      windowHeight = document.body.clientHeight;
    }
    
    // Ermittlung der Ebenenbreite
    divWidth = objDivStyle.cDHGetObjectWidth();
    // Ermittlung der Ebenenlänge
    divHeight = objDivStyle.cDHGetObjectHeight();
    
    // Überprüfung ob die Ebene nach rechts aus dem Fenster rausragt.
    if( ( valX + divWidth) > windowWidth) valX = valX + frameWidth - divWidth;
    // Überprüfung ob die Ebene nach unten aus dem Fenster rausragt.
    if( ( valY + divHeight) > windowHeight) valY = valY - frameHeight - divHeight;
    // Überprüfung ob die Ebene nach links aus dem Fenster rausragt.
    if( valX < 0) valX = 0;
    // Überprüfung ob die Ebene nach oben aus dem Fenster rausragt.
    if( valY < 0) valY = 0;
  // Ende --------------------------------------------------
}



// Die Funktion blendet die Ebene mit dem übergebenen Text ein.
// Prm: Text
function showDiv( valTxt)
{
  // Fall: Es existiert eine Ebenen-Instanz
  if( objDivStyle)
  {
    // Fall: Die Ebene wird an einem Raster eingeblendet.
    if( flgGrid)
    {
      // Ermittlung der Rasterkoordinaten
      calcGridCoords();
      // Verschieben der Ebene
      objDivStyle.cDHShiftTo(valX, valY)
    }
    // Fall: Die Ebene wird in Abhängigkeit vom Mauszeiger verschoben.
    else
    {
      // Verschieben der Ebene
      objDivStyle.cDHShiftTo(mousePosX + bubbleHelpMouseOffsetX, mousePosY + bubbleHelpMouseOffsetY)
    }
    
    // Fall: normaler Browser
    if( getStsValidBrowser())
      // Ebene wird mit Inhalt gefüllt.
      objDivStyle.cDHWriteContent( "<table width='"+bubbleHelpWidth+"px' height='"+bubbleHelpHeight+"px'><tr><td valign='top'>"+valTxt+"</td></tr></table>");
    // Fall: IE5 oder kleiner auf Macintosh. Hier bestehen Probleme mit Tabellen, die dynamisch 
    // in eine Tabelle geschrieben werden. Deswegen erfordert dieser Fall, das nur Text ohne
    // Tabellen-Tags in die Ebene geschrieben werden. 
    else
      // Ebene wird mit Inhalt gefüllt.
      objDivStyle.cDHWriteContent( valTxt);
    
    // Sicherheitsüberpfrüfung um meherere Inervalle zu verhindern. 
    // Bestehende Intervall (z.B. durch einen sich noch im Laufen 
    // befindlichen Aus-/Einblendvorgang) werden gelöscht.
    if( mInterval)
      // Löschen des bestehenden Intervalls
      clearInterval( mInterval);
      
    // Erstellung eines neuen Intervalls zur Ebeneneinblendung
    mInterval = setInterval('fadeDiv(1)',timeInterval);
  }
}



// Die Funktion ermittelt für bekannte Sonderfälle (aktuell bekannt: >=IE5) 
// die Browser, damit diesen eine Sonderbehandlung zukommen kann.
function getStsValidBrowser()
{
  // Ermittlung des Browsernamens
  var brwName       = navigator.appName;
  // Ermittlung der Browserversion
  var brwVersion    = parseInt(navigator.appVersion, 10);
  
  isMac   = (navigator.appVersion.indexOf("Mac") != -1) ? 1 : 0;
  isIE4   = ( brwName == "Microsoft Internet Explorer" && brwVersion == 4) ? 1 : 0;
  isIE5   = ( brwName == "Microsoft Internet Explorer" && brwVersion == 5) ? 1 : 0;
  isIE55  = ( brwName.indexOf("MSIE 5.5") != -1) ? 1 : 0;
  
  stsValid = ( isMac && ( isIE4 || isIE5) && !isIE55) ? 0 : 1;
  
  return stsValid;
}



// Die Funktion blendet die Ebene aus.
function hideDiv()
{
  // Sicherheitsüberpfrüfung um meherere Inervalle zu verhindern. 
  // Bestehende Intervall (z.B. durch einen sich noch im Laufen 
  // befindlichen Aus-/Einblendvorgang) werden gelöscht.
  if( mInterval)
    // Löschen des bestehenden Intervalls
    clearInterval( mInterval);
    
  // Erstellung eines neuen Intervalls zur Ebenenausblendung
  mInterval = setInterval('fadeDiv(2)',timeInterval);
}



// Die Funktion verändert den Sichtbarkeitsstatus einer Ebene
// je nach übergebenem Parameter (1 = sichtbar, 2 = unsichtbar).
// Hierbei wird über stsShow geregelt, ob die Ebene ein- oder 
// ausgeblendet wird. Die globale Variable valOpacity steht für die 
// Sichtbarkeit (in Prozent) und wird entsprechend erhöht oder
// reduziert.
// Prm: Status ein-/ausblende (1/2)
function fadeDiv( stsShow) 
{
  // Grenzwert: Ebene ist voll eingeblendet
  if( valOpacity > 100)
    valOpacity = 100;
  // Grenzwert: Ebene ist voll ausgeblendet
  else if( valOpacity < 0)
    valOpacity = 0;
  // Fall: Fade In / Fade Out
  else
    valOpacity += stsShow == 1 ?  valFadeStep : -valFadeStep;
  
  // Wenn eine Ebeneninstant existiert, dann wird ihr Sichtbarkeitswert
  // entsprechend verändert.
  if( objDivStyle)
    objDivStyle.cDHSetVisibility( valOpacity);
  
  // Sicherheitsüberpfrüfung um meherere Inervalle zu verhindern. 
  // Bestehende Intervall (z.B. durch einen sich noch im Laufen 
  // befindlichen Aus-/Einblendvorgang) werden gelöscht.
  if( valOpacity > 100 || valOpacity < 0)
    // Löschen des bestehenden Intervalls
    clearInterval( mInterval);
}
//-->
