var GP_ticker_id;

function GP_ticker_status(text, verzoegerung) {
  window.status = text;
  text = text.substring(1, text.length) + text.charAt(0);
  var temp = text
  var pos = 0;
  while (temp.indexOf("\"", pos) > -1) {
    temp = temp.substring(0, temp.indexOf("\"", pos)) +
           "\\\"" +
           temp.substring(temp.indexOf("\"", pos) + 1, 
                          temp.length); 
    pos = temp.indexOf("\"", pos) + 1;
  }
  var id = setTimeout(
    "GP_ticker_status(\"" +temp+ "\", " +verzoegerung+ ")",
    verzoegerung);
  GP_ticker_id = id;
  return id;
}

function GP_ticker_text(ename, text, verzoegerung) {
  var e = null;
  for (var i=0; i<document.forms.length; i++) {
    for (var j=0; j<document.forms[i].elements.length; j++)
      if (document.forms[i].elements[j].name == ename) {
        e = document.forms[i].elements[j];
        break;
      }
    if (e)
      break;
  }
  e.value = text;
  text = text.substring(1, text.length) + text.charAt(0);
  var temp = text
  var pos = 0;
  while (temp.indexOf("\"", pos) > -1) {
    temp = temp.substring(0, temp.indexOf("\"", pos)) +
           "\\\"" +
           temp.substring(temp.indexOf("\"", pos) + 1, 
                          temp.length); 
    pos = temp.indexOf("\"", pos) + 1;
  } 
  var id = setTimeout(
    "GP_ticker_text(\"" + ename + "\", \"" + temp + "\", " 
                    + verzoegerung + ")",
    verzoegerung);
  GP_ticker_id = id;
  return id;
}


// globale Variablen
var GP_tpos = -1;
var GP_text;
var GP_links;
var GP_trennzeichen;

function GP_ticker_text_link(ename, texte, urls, 
                             verzoegerung) {
  // Werte speichern
  GP_text = texte;
  GP_links = urls;
  // Formularelement feststellen
  var e = null;
  for (var i=0; i<document.forms.length; i++) {
    for (var j=0; j<document.forms[i].elements.length; j++)
      if (document.forms[i].elements[j].name == ename) {
        e = document.forms[i].elements[j];
        break;
      }
    if (e)
      break;
  }
  // Text aktualisieren
  GP_trennzeichen = " +++ ";
  var text = "";
  for (var k=0; k<texte.length; k++)
    text += texte[k] + GP_trennzeichen;
  e.value = text;
  text = text.substring(1, text.length) + text.charAt(0);
  var temp = text
  var pos = 0;
  while (temp.indexOf("\"", pos) > -1) {
    temp = temp.substring(0, temp.indexOf("\"", pos)) +
           "\\\"" +
           temp.substring(temp.indexOf("\"", pos) + 1, 
                          temp.length); 
    pos = temp.indexOf("\"", pos) + 1;
  } 
  var id = setTimeout(
    "GP_ticker_text(\"" + ename + "\", \"" + temp + "\", " 
                    + verzoegerung + ")",
    verzoegerung);
  setTimeout("GP_ticker_pos(" +verzoegerung+ ");",
             verzoegerung);
  GP_ticker_id = id;
  return id;
}

function GP_ticker_pos(verzoegerung) {
  GP_tpos ++;
  setTimeout("GP_ticker_pos(" +verzoegerung+ ");",
             verzoegerung);
}

function GP_ticker_text_link_click() {
  // Textlänge ermitteln
  var text = "";
  for (var i=0; i<GP_text.length; i++)
    text += GP_text[i] + GP_trennzeichen;
  var textlen = text.length;
  while (GP_tpos > textlen)
    GP_tpos -= textlen;  // textlen normieren
  // Position im Textarray suchen
  var arrpos = 0;
  var j = 0;
  while (arrpos < GP_tpos) {
    arrpos += GP_text[j].length + GP_trennzeichen.length;
    j++;
  }
  // Gretchenfrage: aktuelle News oder doch die nächste?
  if (arrpos - GP_tpos < GP_trennzeichen.length + 5)
    j++;
  // Weiterleitung
  location.href = GP_links[j-1];
}

function GP_ticker_div(divid, text, verzoegerung) {
  // Text ausgeben
  if (document.all) 
    document.all(divid).innerHTML = text;
  else if (document.getElementById)
    document.getElementById(divid).innerHTML = text;
  else if (document.layers)
    with (document.layers[divid].document) {
      open();
      write(text);
      close();
    }
  text = text.substring(1, text.length) + text.charAt(0);
  var temp = text
  var pos = 0;
  while (temp.indexOf("\"", pos) > -1) {
    temp = temp.substring(0, temp.indexOf("\"", pos)) +
           "\\\"" +
           temp.substring(temp.indexOf("\"", pos) + 1, 
                          temp.length); 
    pos = temp.indexOf("\"", pos) + 1;
  } 
  var id = setTimeout(
    "GP_ticker_div(\"" + divid + "\", \""
                   + temp + "\", " + verzoegerung + ")",
    verzoegerung);
  return id;
}

function GP_ticker_div_link(divid, texte, urls,
                            verzoegerung) {
  GP_trennzeichen = " +++ ";
  // globale Variablen für die Parameter belegen
  if (texte)
    GP_text = texte;
  if  (urls)
    GP_links = urls;
  // Textlänge
  var textlen = 0;
  for (var i=0; i<GP_text.length; i++)
    textlen += GP_text[i].length + GP_trennzeichen.length;
  // Position in den einzelnen Texten suchen
  var arrpos = -1;
  var textnr = 0;
  while (arrpos <= GP_tpos) {
    arrpos += GP_text[textnr].length +
              GP_trennzeichen.length;
    textnr ++;
  }
  textnr --;
  position = GP_tpos - arrpos 
             + GP_text[textnr].length 
             + GP_trennzeichen.length;
  // Ticker anzeigen
  GP_ticker_div_link_zeigen(divid, textnr, position, 
                            verzoegerung);
  // GP_tpos "normieren"
  GP_tpos ++;
  if (GP_tpos >= textlen - 1)
    GP_tpos -= textlen;
}

function GP_ticker_div_link_zeigen(divid, textnr, 
                                   position, verzoegerung) {
  // Falls Ticker mit Trennzeichen beginnt ...
  if (position>GP_text[textnr].length) 
    position = position - GP_text[textnr].length 
                        - GP_trennzeichen.length;
  // ggf. Trennzeichen an den Anfang stellen
  var htmltext = "";
  var oldposition = 0;
  if (position < 0) {
    htmltext += GP_trennzeichen.substring(GP_trennzeichen.length
                +position, GP_trennzeichen.length);
    oldposition = position;
    position = 0;
  }
  // Erster Link
  if (oldposition == 0) {
    htmltext += "<a href=\"" + GP_links[textnr] + "\"\>";
    htmltext += GP_text[textnr].substring(position, 
                  GP_text[textnr].length);
    htmltext += "</a\>";
    htmltext += GP_trennzeichen;
  }
  // Restliche Links bis zum Ende des Arrays
  for (var i=textnr+1; i<GP_text.length; i++) {
    htmltext += "<a href=\"" + GP_links[i] + "\"\>";
    htmltext += GP_text[i];
    htmltext += "</a\>";
    htmltext += GP_trennzeichen;
  }
  // Links vom Anfang des Arrays
  for (i=0; i<textnr; i++) {
    htmltext += "<a href=\"" + GP_links[i] + "\"\>";
    htmltext += GP_text[i];
    htmltext += "</a\>";
    htmltext += GP_trennzeichen;
  }
  // Reste des ersten Links, oder Reste Trennzeichen
  if (oldposition == 0) {
    htmltext += "<a href=\"" + GP_links[textnr] + "\"\>";
    htmltext += GP_text[textnr].substring(0, position);
    htmltext += "</a\>";  
  } else {
    htmltext += "<a href=\"" + GP_links[textnr] + "\"\>";
    htmltext += GP_text[textnr];
    htmltext += "</a\>";
    htmltext += GP_trennzeichen.substring(0, 
                  GP_trennzeichen.length+oldposition);
  }
  // Text ausgeben
  if (document.all) 
    document.all(divid).innerHTML = htmltext;
  else if (document.getElementById)
    document.getElementById(divid).innerHTML = htmltext;
  else if (document.layers)
    with (document.layers[divid].document) {
      open();
      write(htmltext);
      close();
    }
  // Tickerberechnung per Timeout aufrufen
  setTimeout("GP_ticker_div_link(\"" + divid 
             + "\", null, null, " + verzoegerung 
             + ")", verzoegerung);
}

