<!--

// === Funktionen fuer Methoden, die global genutzt werden duerfen ===

// Text der Laufschrift aendern
function setze_text(text)
{
  this.text          = text
  this.text_wechseln = true
}

// Farbe der Laufschrift aendern
function setze_farbe(farbe, farbe_hintergrund)
{
  // Aus Dezimalzahl eine (zweistellige) Hexadezimalzahl machen
  function hex(x)
  {
    function hnmb(y)
    {
      if(y >= 0 && y <= 9)
        return y.toString()
      switch(y)
      {
        case 10:
          return "a"
        case 11:
          return "b"
        case 12:
          return "c"
        case 13:
          return "d"
        case 14:
          return "e"
        case 15:
          return "f"
      }
    }

    var z2 = x % 16
    x -= z2
    var  z1 = x / 16
    return hnmb(z1) + hnmb(z2)
  }

  // Farbe und Hintergrundfarbe (Randverlauf) merken
  this.farbe             = farbe
  this.farbe_hintergrund = farbe_hintergrund

  // RGB-Zerlegung
  var r  = parseInt(this.farbe.substr(1, 2), 16)
  var g  = parseInt(this.farbe.substr(3, 2), 16)
  var b  = parseInt(this.farbe.substr(5, 2), 16)
  var rh = parseInt(this.farbe_hintergrund.substr(1, 2), 16)
  var gh = parseInt(this.farbe_hintergrund.substr(3, 2), 16)
  var bh = parseInt(this.farbe_hintergrund.substr(5, 2), 16)

  // Farben fuer Zwischenstufen am Rand
  var farbe_innen  = "#" + hex(Math.floor(rh + 2 * (r - rh) / 3))
                     + hex(Math.floor(gh + 2 * (g - gh) / 3))
                     + hex(Math.floor(bh + 2 * (b - bh) / 3))
  var farbe_aussen = "#" + hex(Math.floor(rh + (r - rh) / 3))
                     + hex(Math.floor(gh + (g - gh) / 3))
                     + hex(Math.floor(bh + (b - bh) / 3))

  // Farben setzen
  this.span_links_aussen.style.color  = farbe_aussen
  this.span_links_innen.style.color   = farbe_innen
  this.span_mitte.style.color         = this.farbe
  this.span_rechts_innen.style.color  = farbe_innen
  this.span_rechts_aussen.style.color = farbe_aussen
}

// === Funktionen fuer Methoden, die nur lokal genutzt werden duerfen ===

// Ein Schritt der Laufschrift
function naechster_schritt()
{
  // Zaehler fuer Schriftposition
  this.index++
  if(this.index >= this.text_ausgabe.length)
    this.index = 0

  // Text wechseln, falls gewuenscht
  if((this.index == 0) && this.text_wechseln)
    this._setze_text_ausgabe()

  // (Ausgabe-)Text je nach Richtung weitersetzen
  if(this.rechts_nach_links)
    this.text_ausgabe = this.text_ausgabe.substr(1) + this.text_ausgabe.substr(0, 1)
  else
    this.text_ausgabe = this.text_ausgabe.substr(this.text_ausgabe.length - 1, 1) +
                        this.text_ausgabe.substr(0, this.text_ausgabe.length - 1)

  // Text anzeigen
  this._setze_text()
}

// Text anzeigen
function _setze_text()
{
  // Textknoten setzen
  this.text_links_aussen.nodeValue  = this.text_ausgabe.substr(0, 1)
  this.text_links_innen.nodeValue   = this.text_ausgabe.substr(1, 1)
  this.text_mitte.nodeValue         = this.text_ausgabe.substr(2, this.laenge - 4)
  this.text_rechts_innen.nodeValue  = this.text_ausgabe.substr(this.laenge - 2, 1)
  this.text_rechts_aussen.nodeValue = this.text_ausgabe.substr(this.laenge - 1, 1)
}

// Ausgabetext setzen
function _setze_text_ausgabe()
{
  // Endlostext? Dann auf Laenge auffuellen und Trenner setzen
  if(this.endlos)
  {
    this.text_ausgabe = ""
    do
    {
      this.text_ausgabe += this.text + this.trenner
    } while(this.text_ausgabe.length < this.laenge)
  }

  // Sonst Leerzeichen voranstellen
  else
    this.text_ausgabe = this.text_leer + this.text

  this.text_wechseln = false
}

// Anlage eines Objekts "laufschrift"
function make_laufschrift(id, text, laenge, rechts_nach_links, endlos, trenner, farbe, farbe_hintergrund)
{
  if((typeof(document.getElementById) != "function") &&
     (typeof(document.getElementById) != "object"))
  {
    alert("Der Browser muss ein wenig moderner sein.")
    return
  }

  // Parameter 1
  this.id = id

  // zu veraenderndes Element ermitteln
  var div = document.getElementById(this.id)
  if(!div)
  {
    alert("Kein passendes HTML-Element mit der Identifikation \"" + this.id + "\" gefunden!")
    return
  }

  // Laenge pruefen
  if(laenge < 6)
  {
    alert("Laufschriftl\xe4nge zu kurz gew\xe4hlt!")
    return
  }

  // Parameter 2
  this.laenge              = laenge                          // Laenge der Laufschrift
  this.text                = text                            // Text
  this.trenner             = trenner                         // Trenner fuer Endlostext
  this.text_ausgabe        = ""                              // Ausgabetext (wird spaeter aufbereitet)
  {
    var  i
    var  s  = ""
    for(i = 0; i < this.laenge; i++)
      s  += "\240"
    this.text_leer         = s                               // Text mit Leerzeichen in passender Laenge
  }
  this.text_wechseln       = false                           // Anforderung zum Textwechsel
  this.endlos              = endlos                          // Status (true: endlos, false: nacheinander)
  this.index               = 0                               // Index der Laufschrift
  this.farbe               = farbe.toLowerCase()             // Farbe des Texts
  this.farbe_hintergrund   = farbe_hintergrund.toLowerCase() // Farbe des Hintergrunds (fuer Zwischenschritte)
  this.rechts_nach_links   = rechts_nach_links               // Laufrichtung

  this._setze_text         = _setze_text                     // Interne Methode zum Setzen des Texts
  this._setze_text_ausgabe = _setze_text_ausgabe             // Interne Methode zum Aufbereitung des Ausgabetexts
  this.setze_farbe         = setze_farbe                     // Methode zum Setzen der Farbe
  this.setze_text          = setze_text                      // Methode zum Setzen des Texts
  this.naechster_schritt   = naechster_schritt               // Methode fuer den naechsten Schritt

  this._setze_text_ausgabe()

  // Element P anlegen
  var p = document.createElement("P")
  this.span_links_aussen  = document.createElement("SPAN")
  this.span_links_innen   = document.createElement("SPAN")
  this.span_mitte         = document.createElement("SPAN")
  this.span_rechts_innen  = document.createElement("SPAN")
  this.span_rechts_aussen = document.createElement("SPAN")

  // Attribute der Elemente setzen
  p.setAttribute("ALIGN", "center")
  p.style.fontFamily = "monospace"
  this.setze_farbe(this.farbe, this.farbe_hintergrund)

  // Element anfuegen
  div.appendChild(p)
  p.appendChild(this.span_links_aussen)
  p.appendChild(this.span_links_innen)
  p.appendChild(this.span_mitte)
  p.appendChild(this.span_rechts_innen)
  p.appendChild(this.span_rechts_aussen)

  // Texte anlegen
  this.text_links_aussen  = document.createTextNode("")
  this.text_links_innen   = document.createTextNode("")
  this.text_mitte         = document.createTextNode("")
  this.text_rechts_innen  = document.createTextNode("")
  this.text_rechts_aussen = document.createTextNode("")
  this._setze_text()

  // Texte anfuegen
  this.span_links_aussen.appendChild(this.text_links_aussen)
  this.span_links_innen.appendChild(this.text_links_innen)
  this.span_mitte.appendChild(this.text_mitte)
  this.span_rechts_innen.appendChild(this.text_rechts_innen)
  this.span_rechts_aussen.appendChild(this.text_rechts_aussen)
}

//-->
