/* ******* ******* ******* ******* ******* ******* ******* */
/* VER&Auml;NDERBARE VARIABLEN */

var p_intPopupBreite = 300;                // Standardwert f&uuml;r die Popup-Breite, kann in Aufruf ver&auml;ndert werden
var p_intPopupHintergrund = "#ffffec";     // Standardwert f&uuml;r Hintergrundfarbe, kann in Aufruf ver&auml;ndert werden
var p_chrPopupRahmenStil = "solid";        // Standardwert f&uuml;r den Rahmenstil, gilt f&uuml;r alle Popups
var p_intPopupInnenabstand = 6;            // Innenabstand Text-Popup-Rand
var p_intTooltipDauer = 0;               // Dauer f&uuml;r Einblendeffekt von Tooltip; Wenn kein Einblendeffekt gew&uuml;nscht ist, auf 0 setzen.
var p_intTooltipFilter = 5;               // Wahl des revealTrans()-Effekts (1 bis 21) f&uuml;r Tooltip; siehe dazu in selfhtml "tfbc.htm" (Dynamisches HTML)
var p_intTooltipAusblendenDauer = 1;     // Dauer f&uuml;r Ausblendeffekt von Tooltip; Wenn kein Einblendeffekt gew&uuml;nscht ist, auf 0 setzen.
var p_intTooltipAusblendenFilter = 12;     // Wahl des revealTrans()-Effekts (1 bis 21) zum Ausblenden des Tooltips; siehe dazu in selfhtml "tfbc.htm" (Dynamisches HTML)


/* ENDE VER&Auml;NDERBARE VARIABLEN */


/* ******* ******* ******* ******* ******* ******* ******* */


/* AB HIER NICHT MEHR &Auml;NDERN */

/*

HINWEISE ZUR NOTATION

p_ = Globale Variablen
m_ = Lokale Variablen
x_ = Funktionsargumente

"Datentypen" nur zur besseren Verst&auml;ndlichkeit

*/

var p_chrPopupTag;             // Legt das div-Tag f&uuml;r Popup fest
var p_intPopupBreiteInkrement; // Wird f&uuml;r Randabstand ben&ouml;tigt
var p_intPopupZeichenGrenze;   // Wird f&uuml;r Randabstand ben&ouml;tigt

    p_intPopupBreiteInkrement = 50;
    p_intPopupZeichenGrenze = 400;

var p_intPositionX;           // X-Koordinate des zu erstellenden Popups
var p_intPositionY;           // Y-Koordinate des zu erstellenden Popups
var p_blPopGeoeffnet;         // Pr&uuml;fen ob echtes Popup sichtbar ist
var p_blTooltip;              // &Uuml;berpr&uuml;fung, ob fnPopup im Mouseover ausgel&ouml;st
var p_blBleibeOffen;          // Zum Pr&uuml;fen, ob Popup nicht versteckt werden soll.
var p_blTooltipOffen;         // &Uuml;berpr&uuml;fung, ob Tooltip angezeigt wird oder nicht
var p_blGlossar;              // Zur &Uuml;berpr&uuml;fung, ob Aufruf aus Glossar-Datei erfolgte, Dirty-Flag, tut mir weh und leid
var blTexteGeladen;
var p_intLinks;
var p_intRechts;
var p_intOben;
var p_intUnten;

    p_blTooltip = false;
    p_blTooltipOffen = false;
    p_blGlossar = false;
    p_blPopGeoeffnet = false;

/* Definition des Popups bei Script-Aufruf */

p_chrPopupTag = "<div id='popup' class='objPopup' style='position:absolute; top:-1000; left:-1000; width:" + p_intPopupBreite + "; padding:" + p_intPopupInnenabstand + "; visibility:hidden; background:" + p_intPopupHintergrund + "; border-style:" + p_chrPopupRahmenStil + " " + "; z-index:3;'></div>";

// p_chrTooltipTag = "<div id='tooltip' class='objpopup' style='position:absolute; top:-1000; left:-1000; width:" + p_intPopupBreite + "; padding:" + p_intPopupInnenabstand + "; visibility:hidden; background:" + p_intPopupHintergrund + "; border-style:" + p_chrPopupRahmenStil + " " + "; z-index:3;filter:revealTrans(Duration=" + p_intTooltipDauer + ", Transition=" + p_intTooltipFilter + ";'></div>";

document.write (p_chrPopupTag);

document.onclick = fnKlicken;                      // Verweis zur &Uuml;berpr&uuml;fung, ob Klick ausgewertet werden mu&szlig;
document.onmouseup = fnAuswahlErmoeglichen;        // Damit wird Markieren des Popups erm&ouml;glicht
document.onmouseover = fnMouseoverCheck;           // Soll erm&ouml;glichen, da&szlig; Mauszeiger &uuml;ber eingeblendeten bewegt werden kann.
document.onmouseout = fnMouseoverCheck;
document.onkeypress = fnEscape;                    // Zur &Uuml;berpr&uuml;fung, ob Anwender Esc gedr&uuml;ckt hat
// document.onmousemove = fnDebug;                 // Zum Testen, mu&szlig; f&uuml;r Endversion ausgeblendet sein.
// document.onmousemove = fnMauszeiger;            // Zum Testen, mu&szlig; f&uuml;r Endversion ausgeblendet sein.

/* ****** ******* ******* ******* ******* ******* ****** */
/* Aufruf des Popups aus Definitionsdatei (beliebige *.js-Datei)*/
/*
    &Uuml;bergabewerte:
    x_chrUebergabe: Bezeichner aus der Definitions-*.js-Datei (VOR GLEICHHEITSZEICHEN!!!)
    x_intBreite: Popup-Breite OPTIONAL, kann auch
    x_chrHintergrundFarbe: Hintergrundfarbe OPTIONAL
*/


function fnGlossar(x_chrUebergabe, x_intBreite, x_chrHintergrundFarbe)
  {
    var m_chrUebergabe;
    var m_intBreite;
    var m_chrHintergrundFarbe;
    var m_chrGlossarText;
    var m_lgTrenner;
    var m_chrarWortBreite;

    m_chrUebergabe = x_chrUebergabe;
    m_intBreite = x_intBreite;
    m_chrHintergrundFarbe = x_chrHintergrundFarbe;

    if (blTexteGeladen != true)
          {
            window.setTimeout("fnPopupErstellen(" + x_chrUebergabe + ")", 100);
          }

     m_chrGlossarText = eval(m_chrUebergabe);
     m_chrGlossarText = unescape(m_chrGlossarText);
     m_lgTrenner = m_chrGlossarText.indexOf("|");

       if (m_lgTrenner != -1)
         {
           m_chrarWortBreite = m_chrGlossarText.split("|");
           m_chrarWortBreite[1] = m_chrarWortBreite[1] - 0;
           m_intBreite = m_chrarWortBreite[1];
         }

    if (!m_chrHintergrundFarbe)
      {
        if (!m_intBreite)
          {
            m_intBreite = p_intPopupBreite;
            m_chrHintergrundFarbe = p_intPopupHintergrund;
          }

        m_chrHintergrundFarbe = p_intPopupHintergrund;
      }

     p_blGlossar = true;

     fnPopup(m_chrUebergabe, m_intBreite, m_chrHintergrundFarbe);

  } // Ende fnGlossar


/******* ******* ******* ******* ******* ******* *******/
/* Aufruf des Popups aus *.htm-Datei */
/*
    &Uuml;bergabewerte:
    x_chrUebergabe: Text f&uuml;r das Popup
    x_intBreite: Popup-Breite OPTIONAL
    x_chrHintergrundFarbe: Hintergrundfarbe OPTIONAL
*/
function fnPopup(x_chrUebergabe, x_intBreite, x_chrHintergrundFarbe)
  {
    var m_chrUebergabe;
    var m_lgTrenner;
    var m_chrGlossarText;
    var m_chrarWortBreite;
    var m_intBreite;
    var m_chrHintergrundFarbe;
    var m_chrFarbtest;
    var m_intBreitetest;
    var m_chrMouseover;
    var Version;

    m_chrUebergabe = x_chrUebergabe;
    m_intBreite = x_intBreite;
    m_chrHintergrundFarbe = x_chrHintergrundFarbe;
    p_blTooltipOffen = false;

      if(window.event)
        {
          m_chrMouseover = window.event.type;

          if(m_chrMouseover == "mouseover" )
            {
              if (p_blPopGeoeffnet == true) return true;
              if (p_blTooltipOffen == true) return true;

                p_intPositionX = window.event.clientX + 5;
                p_intPositionY = window.event.clientY + document.body.scrollTop + 5;
                p_blTooltip = true;
            }
        }
      else
        {
          p_blTooltip = false; // "Tooltip" kann nur im onMouseover festgelegt werden.
        }

      if(p_blGlossar == false)
        {

          if (!m_chrHintergrundFarbe)
            {

              if (!m_intBreite)
                {
                  m_intBreite = p_intPopupBreite;
                  m_chrHintergrundFarbe = p_intPopupHintergrund;
                }

              m_chrHintergrundFarbe = p_intPopupHintergrund;
             }
         }

      m_intBreite = m_intBreite - 0; //Grrr, das ist die einzige M&ouml;glichkeit, die mir einf&auml;llt, ganz schrecklich

      if (m_intBreite > 0)
        {
          m_intBreitetest = p_intPopupBreite - m_intBreite;

          if (m_intBreitetest > 0)
            {
              m_intBreite = m_intBreite -0;
            }

          else
            {
              m_intBreite = (p_intPopupBreite + (m_intBreitetest*(-1)))
            }

        }
      else
        {
          m_intBreite = p_intPopupBreite;
        }

       m_chrFarbtest = m_chrHintergrundFarbe;


       if((m_chrFarbtest.Length > "0") && (m_chrFarbtest != "undefined") || (m_chrFarbtest != ""))
         {
           document.all.popup.style.background = m_chrFarbtest;
         }

       else
         {
           document.all.popup.style.background = p_intPopupHintergrund;
         }

      if (!p_blPopGeoeffnet)
        {
          fnPopupErstellen(m_chrUebergabe, m_intBreite);
          return;
        }
  } // Ende fnPopup

/******* ******* ******* ******* ******* ******* *******/
/* Klick-Ereignis &uuml;berpr&uuml;fen und ggf. Popup erstellen/entfernen */
function fnKlicken()
  {

    var m_objAusloeser

    m_objAusloeser = window.event.srcElement; // los Hasso, such den &Uuml;belt&auml;ter!

    // wenn im body geklickt wird, ist parentElement = null; daher abbruch
    if (m_objAusloeser.parentElement == null) return;

    if (
         (
           (m_objAusloeser.parentElement.tagName.charAt(0).toLowerCase() == "a")

            &&

            (
              (m_objAusloeser.parentElement.href.substring(0,18) == "javascript:fnPopup")

              ||

              (m_objAusloeser.parentElement.href.substring(0,20) == "javascript:fnGlossar")

              || // f&uuml;r Pseudo-Layer (anzeigen)

              (m_objAusloeser.parentElement.href.substring(0,21) == "javascript:fnZeigsMir")

              || // f&uuml;r Pseudo-Layer (verstecken)

              (m_objAusloeser.parentElement.href.substring(0,28) == "javascript:fnVersteckeObjekt")

              || // f&uuml;r Pseudo-Layer (verstecken)

              (m_objAusloeser.parentElement.href.substring(0,5) == "file:")
            )
          )    // Ende erste Bedingung

          ||

          (
            (m_objAusloeser.tagName.charAt(0).toLowerCase() == "a")

            &&

            (

              (m_objAusloeser.href.substring(0,18) == "javascript:fnPopup")

              ||

              (m_objAusloeser.href.substring(0,20) == "javascript:fnGlossar")

              ||

              (m_objAusloeser.href.substring(0,21) == "javascript:fnZeigsMir")

              ||

              (m_objAusloeser.href.substring(0,28) == "javascript:fnVersteckeObjekt")

              || // f&uuml;r Pseudo-Layer (verstecken)

              (m_objAusloeser.href.substring(0,5) == "file:")

            )
          )  // Ende zweite Bedingung
      )      // Ende "gro&szlig;es "if""

        {

          if ((p_blPopGeoeffnet) && (m_objAusloeser.name == "FestesGloss"))
              {
                p_intPositionX = document.all.popup.style.posLeft;
                p_intPositionY = document.all.popup.style.posTop;
              }
              else
                {
                    //p_intPositionX = window.event.clientX;
                    p_intPositionX = document.getElementById("popup").parentNode.clientWidth/2;
                    //p_intPositionY = window.event.clientY + document.body.scrollTop;
                    p_intPositionY = document.getElementById("popup").parentNode.clientHeight / 2 + document.getElementById("popup").parentNode.scrollTop;
                }
        }

    if ((p_blPopGeoeffnet == true) || (p_blTooltip == true) || (p_blTooltipOffen == true))
      {
        fnPopupSchlieszen();
      }

    //p_blTooltipOffen = false;
    //p_blTooltip = false;

  } // Ende fnKlicken

/******* ******* ******* ******* ******* ******* *******/
/* Esc-Taste ber&uuml;cksichtigen und Popup schlie&szlig;en */
 function fnEscape()
  {
      if (window.event.keyCode == 27) fnPopupSchlieszen();
  } // Ende fnEscape

/******* ******* ******* ******* ******* ******* *******/
/* Markieren des Popup-Texts erm&ouml;glichen, &uuml;ber onmouseup eingebunden */

function fnAuswahlErmoeglichen()
  {
    p_blBleibeOffen = false;

    if (!p_blPopGeoeffnet) return true;

    if (p_blPopGeoeffnet)
      {
        if (document.selection.type != "Text") return true;
        else if (document.selection.createRange().text == "") return true;
      }

    if (window.event.srcElement.tagName.charAt(0).toLowerCase() == "a") return true;

    p_blBleibeOffen = true;

    return false;
  } // Ende fnAuswahlErmoeglichen()

/* ******* ******* ******* ******* ******* ******* ******* */
/* Pr&uuml;fen, ob sich Mauszeiger &uuml;ber Popup befindet, wenn ja, soll Tooltip nicht ausgeblendet werden */

  function fnMouseoverCheck()
    {

      var m_intX; // horizontal (links)
      var m_intY; // vertikal (oben)

      var m_intLinks;
      var m_intRechts;
      var m_intOben;
      var m_intUnten;
      var m_intHoehe;
      var m_intBreite;

        p_blBleibeOffen = false;

        m_intX = window.event.clientX;

          if(document.body.scrollLeft) (m_intX += document.body.scrollLeft);

        m_intY = window.event.clientY;

          if(document.body.scrollTop) (m_intY += document.body.scrollTop);

        m_intLinks = document.all.popup.style.left;
        m_intOben = document.all.popup.style.top;
        m_intHoehe = document.all.popup.offsetHeight;
        m_intBreite = document.all.popup.style.width;

        m_intLinks = parseInt(m_intLinks);
        m_intOben = parseInt(m_intOben);
        m_intHoehe = parseInt(m_intHoehe);
        m_intBreite = parseInt(m_intBreite);

        m_intRechts = m_intLinks + m_intBreite;
        m_intUnten = m_intOben + m_intHoehe;

          if (((m_intX >= m_intLinks) && (m_intX <= m_intRechts)) && ((m_intY >= m_intOben) && (m_intY <= m_intUnten)))
            {
              p_blBleibeOffen = true;
              p_blTooltipOffen = true
              return false;
            }
          else
            {
              p_blBleibeOffen = false;
              return true;
            }
    }


/* ******* ******* ******* ******* ******* ******* ******* */

/* ******* ******* ******* ******* ******* ******* ******* */
/* Popup erstellen, H&ouml;he von fnHoeheErmitteln errechnen lassen, Position abh&auml;ngig von Wert aus fnKlicken oder onmouseover-EReignis */

function fnPopupErstellen(x_chrText, x_intBreite)
  {
    var m_intPopupText;
    var m_chrGlossarText;
    var m_lgTrenner;
    var m_chrarWortBreite;

    if(p_blGlossar == true) // &Uuml;berpr&uuml;fung, ob Aufruf aus fnGlossar erfolgte
      {
        m_intPopupText = eval(x_chrText);
        m_chrGlossarText = eval(x_chrText); // Zweifache Zuordnung f&uuml;r &Uuml;berpr&uuml;fung auf optionales Argument f&uuml;r Breite
        m_chrGlossarText = unescape(m_chrGlossarText);
        m_lgTrenner = m_chrGlossarText.indexOf("|"); // Pr&uuml;fen, ob Trennzeichen eingegeben wurde

          if (m_lgTrenner != -1)
            {
              m_chrarWortBreite = m_chrGlossarText.split("|");
              m_intPopupText = m_chrarWortBreite[0];
            }
      }
    else
      {
        m_intPopupText = x_chrText;
      }

    document.all.popup.innerHTML = m_intPopupText;

    m_intPopupBreite = document.all.popup.offsetWidth;
    m_intLaengePopup = m_intPopupText.length;
    m_intLaengePopup = m_intLaengePopup - 0;


      if (m_intLaengePopup < p_intPopupZeichenGrenze)
        {
          m_intPopupBreite = x_intBreite;
          document.all.popup.style.width = x_intBreite;
        }
      else
        {
          if (m_intPopupText.length < (2 * p_intPopupZeichenGrenze))
            {
              m_intPopupBreite = x_intBreite + p_intPopupBreiteInkrement;
              document.all.popup.style.width = x_intBreite + p_intPopupBreiteInkrement;
            }
          else
            {
                m_intPopupBreite = x_intBreite + (2 * p_intPopupBreiteInkrement);
                document.all.popup.style.width = x_intBreite + (2 * p_intPopupBreiteInkrement);
            }
         }

     m_intRechteGrenze = p_intPositionX + m_intPopupBreite;

      if (m_intRechteGrenze >= document.body.clientWidth)
        {
          p_intPositionX -= (m_intRechteGrenze - document.body.clientWidth);
        }

      if (p_intPositionX < 0)
        {
          p_intPositionX = 0;
        }

    window.setTimeout ("fnPopupHoeheErmitteln()", 0);

    document.all.popup.style.top = p_intPositionY;
    document.all.popup.style.left = p_intPositionX + document.body.scrollLeft;
    document.all.popup.style.removeAttribute("filter", "false");              // Sonst gibts &Auml;rger...

    if (document.all.popup.style.width > document.body.clientWidth)
      {
        document.all.popup.style.width = document.body.clientWidth;
      }

    if (p_blTooltip == true)
      {
        document.all.popup.style.setAttribute("filter", "revealTrans(Duration=" + p_intTooltipDauer + ", Transition=" + p_intTooltipFilter, false)
        document.all.popup.filters.revealTrans.Apply();
        document.all.popup.style.setAttribute("visibility", "visible", "false");
        document.all.popup.filters.revealTrans.Play();
        p_blTooltipOffen = true;
      }
    else
      {
        document.all.popup.style.visibility = "visible";
      }

    // document.body.focus(); // Auf Anregung von Thomas J&auml;ger, 08.01.2001

    p_blPopGeoeffnet = true;

    return false;

  } // Ende fnPopupErstellen

function fnPopupHoeheErmitteln()
  {
    var m_intSeiteUnten = document.body.scrollTop + document.body.clientHeight;
    var m_intPopupHoehe = document.all.popup.offsetHeight;

    if (m_intPopupHoehe + p_intPositionY >= m_intSeiteUnten)
      {
        if (m_intPopupHoehe <= document.body.clientHeight)
          {
            document.all.popup.style.top = m_intSeiteUnten - m_intPopupHoehe;
          }
        else
          {
            document.all.popup.style.top = document.body.scrollTop;
          }
      }
  } // Ende fnPopupHoeheErmitteln()

/* ******* ******* ******* ******* ******* ******* ******* */
/* Popup wieder zumachen */

function fnPopupSchlieszen()
  {
    if (p_blBleibeOffen == true) return true;

      if ((p_blTooltip == true))
          {
            if(fnMouseoverCheck() == true)
              {
                document.all.popup.style.setAttribute("filter", "revealTrans(Duration=" + p_intTooltipAusblendenDauer + ", Transition=" + p_intTooltipAusblendenFilter, false)
                document.all.popup.filters.revealTrans.Apply();
                document.all.popup.style.setAttribute("visibility", "hidden", "false");
                document.all.popup.innerHTML = "";
                document.all.popup.filters.revealTrans.Play();
              }
            else
              {
                return true;
              }
          }
        else
          {
            document.all.popup.style.visibility = "hidden";
            document.all.popup.innerHTML = "";
          }
     document.selection.empty();
     p_blPopGeoeffnet = false;
     p_blTooltipOffen = false;
     p_blGlossar = false;
     p_blTooltip = false;

     return;
   } // Ende fnPopupSchlieszen()

// Aus Kompatibilit&auml;tsgr&uuml;nden:

function fnSchlieszen()
  {
    fnPopupSchlieszen()
    return;
  }

function fnAusblenden()
  {
    fnPopupSchlieszen()
    return;
  }

/* function fnDebug()
  {
    var m_chrEvent;
    var m_chrSrcElement;
    var m_chrToElement;
    var m_chrFromElement;

    if (window.event != "")
      {
        m_chrEvent = window.event;
        window.status = "PopOff: " + p_blPopGeoeffnet + " Tool: " + p_blTooltip + " Oblb: " + p_blBleibeOffen + " TT:Off " + p_blTooltipOffen + " Event: " + m_chrEvent.srcElement.id + " to: " + m_chrEvent.toElement;
      }
    else
      {
        // window.status = "PopOff: " + p_blPopGeoeffnet + " Tool: " + p_blTooltip + " Oblb: " + p_blBleibeOffen + " TT: " + p_blTooltipOffen + " Event: " + m_chrEvent.srcElement.id + " type: " + m_chrEvent.type + " to: " + m_chrEvent.toElement.tagName;
      }
    return;
  }

function fnMauszeiger()
  {
    var m_intX; // horizontal (links)
    var m_intY; // vertikal (oben)

      m_intX = window.event.clientX;
      if(document.body.scrollLeft) (m_intX += document.body.scrollLeft);

      m_intY = window.event.clientY;
      if(document.body.scrollTop) (m_intY += document.body.scrollTop);

      window.status = "X: " + m_intX + " Y: " + m_intY;
  } */
  