/***** Alle Rechte vorbehalten: Rainer Wagener, wagener [ed] rohschnitt.de *****/

/********* Globale Variablen *********/

var Op7 = (navigator.appName == "Opera") && (navigator.appVersion.substring(0,1) > 6.99);
var Saf = navigator.userAgent.indexOf("Safari") != -1;
var ie_mac = (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.indexOf("Macintosh") != -1)
var taste, nun, button, posunten, posoben;
var kenn = 0;
var pos1 = 0;
var yB = 0;
var a = 0;
var Beweg = false;
var zahlen = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var hinten = new Array("F","F","F");
var vorne = new Array("0","0","0");
var position = new Array(6);
var farbe = "#FFF";
var schrift = "#000";
var estilo = 0;
var size = "1em";
var eingabe = "Eingabe";
var speicher = new Array("a", "legend");

/********* Eventbeobachtung, Ausgangswerte und Abst&auml;nde festlegen *********/

window.onload = init;
window.onunload = cook;

 function init()
 {
    if(!document.getElementById || !document.body.nodeName || ie_mac)
       return;

    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].className.indexOf("texter") != -1)
         {
            document.forms[i].elements[j].onfocus = clean;
            document.forms[i].elements[j].onblur = test;
         }
      }

    for (var i = 0;i< document.getElementById("fo3").getElementsByTagName("input").length;i++)
    {
       if(document.getElementById("fo3").getElementsByTagName("input")[i].id.indexOf("b") == -1)
          document.getElementById("fo3").getElementsByTagName("input")[i].onclick = stand;
       else
       {
          document.getElementById("fo3").getElementsByTagName("input")[i].onmousedown = buttdown;
          document.getElementById("fo3").getElementsByTagName("input")[i].onkeydown = buttkeydown;
          document.getElementById("fo3").getElementsByTagName("input")[i].onkeyup = buttkeyup;
          document.getElementById("fo3").getElementsByTagName("input")[i].onfocus = stark;
          document.getElementById("fo3").getElementsByTagName("input")[i].onblur = normal;
       }
    }

    for (var i = 0;i< document.getElementById("fo3").getElementsByTagName("button").length;i++)
    {
       document.getElementById("fo3").getElementsByTagName("button")[i].onmousedown = buttdown;
       document.getElementById("fo3").getElementsByTagName("button")[i].onkeydown = buttkeydown;
       document.getElementById("fo3").getElementsByTagName("button")[i].onkeyup = buttkeyup;
       document.getElementById("fo3").getElementsByTagName("button")[i].onfocus = stark;
       document.getElementById("fo3").getElementsByTagName("button")[i].onblur = normal;
    }

    for (var i = 0;i< document.getElementById("fo3").getElementsByTagName("div").length;i++)
    {
       if(document.getElementById("fo3").getElementsByTagName("div")[i].className == "unten")
       {
          document.getElementById("fo3").getElementsByTagName("div")[i].onclick = divclick;
          document.getElementById("fo3").getElementsByTagName("div")[i].onmousedown = divdown;
          document.getElementById("fo3").getElementsByTagName("div")[i].onmouseup = buttkeyup;
          document.getElementById("fo3").getElementsByTagName("div")[i].onmouseout = buttkeyup;
       }
    }

    document.onmouseup = buttup;
    document.onmousemove = buttmove;

    button = 22;
    posunten = 205;
    posoben = 55;

    var p = (document.getElementById("fo1").elements[0].nodeName.toUpperCase() == "FIELDSET") ? 1 : 0;

    document.getElementById("fo1").elements[p].onchange = stilwaehl;
    document.getElementById("fo2").elements[p+1].onclick = emsmall;
    document.getElementById("fo2").elements[p+2].onclick = emnormal;

    for (var i = 0;i< 3;i++)
       position[i] = posunten;

    for (var i = 3;i< 6;i++)
       position[i] = posoben;

    linken();

    if(Saf)
    {
       var pso = navigator.appVersion.substring(navigator.appVersion.lastIndexOf("/")+1);
       if(parseInt(pso) < 130)
       {
          document.getElementById("centro").style.top = "140px";
          document.getElementById("erklaer").style.marginTop = "150px";
          document.getElementById("erklaer").style.marginBottom = "20px";
       }

       for (var i=0;i< document.getElementById("fo3").getElementsByTagName("button").length;i++)
       {
          document.getElementById("fo3").getElementsByTagName("button")[i].style.width = "31px";
       }
    }

    if(document.cookie)
       cookietester();
 }

/********* Reaktion auf verschiedene Events *********/

 function buttdown(e)
 {
    if(estilo != 2) return;

    Beweg = true;
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    kenn = parseInt(quelle.id.slice(1));
    pos1 = (window.Event) ? ereignis.pageY : ereignis.clientY;
    yB = position[kenn];
 }

 function buttup(e)
 {
   Beweg = false;
 }

 function stark(e)
 {
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    quelle.style.borderStyle = "inset";
 }

 function normal(e)
 {
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    quelle.style.borderStyle = "outset";
 }

 function buttmove(e)
 {
   if(!Beweg)
     return;

   else
   {
      var ereignis = (window.Event) ? e : window.event;
      var corr = (window.Event) ? (ereignis.pageY - pos1) : (ereignis.clientY - pos1);
      pos1 = (window.Event) ? ereignis.pageY : ereignis.clientY;
      yB += corr;
      ausrechnen(kenn);
   }
 }

 function buttkeydown(e)
 {
    if(estilo != 2) return;

    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    taste = (window.Event) ? ereignis.which : ereignis.keyCode;
    kenn = parseInt(quelle.id.slice(1));
    yB = position[kenn];

    if(Op7)
    {
      window.clearInterval(nun);
      nun = window.setInterval("buttkeyopera()", 100);
    }

    else
    {
      if(taste == 79)
        yB -= 10;
      if(taste == 85)
        yB += 10;

      ausrechnen(kenn);
    }
 }

 function buttkeyopera()
 {
      if(taste == 79)
         yB -= 10;
      else if(taste == 85)
         yB += 10;
      else
        window.clearInterval(nun);

    ausrechnen(kenn);
 }

 function buttkeyup(e)
 {
   window.clearInterval(nun);
 }

 function divdown(e)
 {
    if(estilo != 2) return;

    var ereignis = (window.event) ? window.event : e;
    var quelle = (window.event) ? ereignis.srcElement : eval(ereignis).target;
    pos1 = (window.event) ? ereignis.offsetY : ereignis.layerY;
    kenn = parseInt(quelle.id.slice(1))-100;
    yB = position[kenn];
    nun = window.setInterval("moveschalt()",200);
 }

 function moveschalt()
 {
    window.clearInterval(nun);
    nun = window.setInterval("divclick()",50);
 }

 function divclick()
 {
    if(estilo != 2) return;

    if((pos1 + posoben) > (yB + button))
    {
       yB += 10;
       if((pos1 + posoben) < (yB + button))
         {
           yB = pos1 + posoben - button;
           window.clearInterval(nun);
         }
       if(yB > (posunten-6))
          yB = posunten;
    }
    else if((pos1 + posoben) < yB)
    {
       yB -= 10;
       if((pos1 + posoben) > yB)
         {
           yB = pos1 + posoben;
           window.clearInterval(nun);
         }
       if(yB < (posoben+6))
          yB = posoben;
    }

    ausrechnen(kenn);
 }

/********* Koordinaten für Schieberegler und entsprechende Farbwerte berechnen *********/

 function ausrechnen(b)
 {
    if(yB > posunten)
       yB = posunten;

    if(yB < posoben)
       yB = posoben;

    position[b] = yB;
    a = Math.round((posunten - yB)/10);

    if(b < 3)
    {
       schrift = "#";
       vorne[b] = zahlen[a];
       for (var i = 0;i < vorne.length;i++)
          schrift += vorne[i];
    }

    else
    {
       farbe = "#";
       hinten[b-3] = zahlen[a];
       for (var i = 0;i < hinten.length;i++)
          farbe += hinten[i];
    }

    document.getElementById("b" + b.toString()).style.top = yB.toString() + "px";
    document.getElementById("read04").value = farbe;
    document.getElementById("read01").value = schrift;

    if(estilo == 2)
    {
       document.getElementsByTagName("body")[0].style.backgroundColor = this.farbe;
       document.getElementsByTagName("body")[0].style.color = this.schrift;

       for(var i=0;i<speicher.length;i++)
          for(var j=0;j<document.getElementsByTagName(speicher[i]).length;j++)
             document.getElementsByTagName(speicher[i])[j].style.color = (window.Event) ? "inherit" : schrift;

       if(Op7 || Saf)
          cook();
    }
 }

/********* Farbwerte für Buttons ermitteln *********/

 function stand(e)
 {
    if(estilo != 2) return;

    var ereignis = (window.event) ? window.event : e;
    var quelle = (window.event) ? ereignis.srcElement : eval(ereignis).target;

    if(quelle.value == "Standard")
    {
        schrift = "#000";
        farbe = "#FFF";
        cookienehmen(0, schrift);
        cookienehmen(3, farbe);
        cook();
        return;
    }

    if(quelle.value == "Invert")
    {
        schrift = "#FFF";
        farbe = "#000";
        cookienehmen(0, schrift);
        cookienehmen(3, farbe);
        cook();
        return;
    }

    if(quelle.value == "Gelb-Blau")
    {
        schrift = "#FF0";
        farbe = "#00F";
        cookienehmen(0, schrift);
        cookienehmen(3, farbe);
        cook();
        return;
    }
 }

 /********* Uebernahme der Texteingabe regeln *********/

 function uebernehmen(b)
 {
    if(estilo != 2) return;

    var subs;
    var ide = "f" + b.toString();
    var zaehler = (b > 203) ? 3 : 0;
    var pruef = zaehler;
    var string = document.getElementById(ide).value;

    for(var i = 0;i < string.length && (zaehler-pruef) < 3;i++)
       if(!isNaN(subs = parseInt(string.substr(i,1),16)))
       {
          yB = posunten - subs * 10;
          ausrechnen(zaehler);
          zaehler++;
       }
 }

/********* Eingabefelder leeren *********/

 function clean(e)
 {
    e = (window.Event) ? e : window.event;
    quelle = (window.Event) ? e.target : e.srcElement;
    quelle.style.background = "#EEEEEE";

    if(quelle.value == eingabe)
      quelle.value = "";
 }

 function test(e)
 {
    e = (window.Event) ? e : window.event;
    quelle = (window.Event) ? e.target : e.srcElement;
    quelle.style.background = "#FFFFFF";

    if(quelle.value == "")
      quelle.value = eingabe;
 }

/********* Cookie für Stil etc. setzen *********/

 function cook()
 {
    if(estilo == 0 && !document.cookie)
       return;

    if(estilo == 2)
    {
       document.cookie = "farbe=" + farbe;
       document.cookie = "schrift=" + schrift;
    }

    document.cookie = "estilo=" + estilo;
    document.cookie = "size=" + size;
 }

/********* Cookie auslesen *********/

 function wertholen(b)
 {
    var Wert = "";
    if(document.cookie.indexOf(b)!= -1)
    {
       var bl = document.cookie;
       var Wertstart = bl.indexOf(b) +  b.length + 1;
       var Wertende = (bl.indexOf(";", Wertstart)!=-1)? bl.indexOf(";", Wertstart):bl.length;
       Wert = bl.substring(Wertstart,Wertende);
    }
    return Wert;
 }

/********* Abfragen ob Cookie *********/

 function cookietester()
 {
    if(wertholen("estilo") == "")
       return;

    else
    {
       size = (wertholen("size") != "") ? wertholen("size") : "1em";

       estilo = parseInt(wertholen("estilo"));
       if(estilo <= 2 && estilo >= 1)
          stil(estilo);
       else
          return;
    }
 }

/********* Cookiewerte zum Ausrechnen schicken *********/

 function cookienehmen(b, cook)
 {
    var subs;
    var zaehler = b;
    var pruef = zaehler;
    var string = cook;

    for(var i = 0;i < string.length && (zaehler-pruef) < 3;i++)
       if(!isNaN(subs = parseInt(string.substr(i,1),16)))
       {
          yB = posunten - subs * 10;
          ausrechnen(zaehler);
          zaehler++;
       }
 }

/********* Stylesheet wechseln *********/

 function stilwaehl(e)
 {
    var ereignis = (window.Event) ? e : window.event;
    var quelle = (window.Event) ? ereignis.target : ereignis.srcElement;
    estilo = quelle.selectedIndex;

    stil(estilo);
 }

 function stil(b)
 {
    estilo = b;

    if(b > 0 && b <= 2)
    {
       document.getElementsByTagName("link")[0].disabled = true;
       document.getElementsByTagName("link")[1].disabled = true;
       document.getElementsByTagName("link")[2].disabled = true;
       document.getElementsByTagName("link")[b].disabled = false;

       if(document.getElementsByTagName("link")[11])
       {
          document.getElementsByTagName("link")[3].disabled = true;
          document.getElementsByTagName("link")[4].disabled = true;
          document.getElementsByTagName("link")[5].disabled = true;
          document.getElementsByTagName("link")[b+3].disabled = false;
          topper();
       }

       if(size != "1em")
          document.getElementById("overall").style.fontSize = size;
    }

    else
    {
       document.getElementsByTagName("link")[1].disabled = true;
       document.getElementsByTagName("link")[2].disabled = true;
       document.getElementsByTagName("link")[0].disabled = false;

       if(document.getElementsByTagName("link")[11])
       {
          document.getElementsByTagName("link")[4].disabled = true;
          document.getElementsByTagName("link")[5].disabled = true;
          document.getElementsByTagName("link")[3].disabled = false;
          antitopper();
       }

       if(size != "1em")
          document.getElementById("overall").style.fontSize = "1em";
    }

    if(b!=2)
    {
       var prov = schrift;
       cookienehmen(0, "#000");
       schrift = prov;
       prov = farbe;
       cookienehmen(3, "#FFF");
       farbe = prov;
       document.getElementsByTagName("body")[0].style.backgroundColor = "";
       document.getElementsByTagName("body")[0].style.color = "";

       for(var i=0;i<speicher.length;i++)
          for(var j=0;j<document.getElementsByTagName(speicher[i]).length;j++)
             document.getElementsByTagName(speicher[i])[j].style.color = "";
    }

    else
    {
       if(schrift == "#000")
          if(document.cookie)
             schrift = (wertholen("schrift") != "") ? wertholen("schrift") : "#000";

       if(farbe == "#FFF")
          if(document.cookie)
             farbe = (wertholen("farbe") != "") ? wertholen("farbe") : "#FFF";

       cookienehmen(0, schrift);
       cookienehmen(3, farbe);
    }

    if(Op7 || Saf)
       cook();
 }

/********* Schriftgröße ändern *********/

 function emnormal()
 {
    size = document.getElementById("overall").style.fontSize = "1em";

    if(Op7 || Saf)
       cook();

    return false;
 }

 function emsmall()
 {
    var y = window.Event ? document.getElementById("overall").style : document.getElementById("overall").currentStyle;

    if(estilo != 0)
    {
       if(y.fontSize.indexOf("em") == -1 || !y.fontSize)
         size = "1em";
       else if(parseFloat(y.fontSize) > 1)
         size = (parseFloat(y.fontSize) - 0.5).toString() + "em";
       else
         size = "1em";
    }

    document.getElementById("overall").style.fontSize = size;

    if(Op7 || Saf)
       cook();

    return false;
 }

 function em()
 {
    var y = window.Event ? document.getElementById("overall").style : document.getElementById("overall").currentStyle;

    if(estilo != 0)
    {
       if(y.fontSize.indexOf("em") == -1 || !y.fontSize)
         size = "1.5em";
       else
         size = (parseFloat(y.fontSize) + 0.5).toString() + "em";
    }

    document.getElementById("overall").style.fontSize = size;

    if(Op7 || Saf)
       cook();
 }

/********* Sprungmarken korrigieren in IE *********/

 function topper()
 {
    for (var i=0;i<document.links.length;i++)
      if(document.links[i].href.indexOf("#inhalt") != -1)
         document.links[i].href = "#top";
 }

 function antitopper()
 {
    for (var i=0;i<document.links.length;i++)
      if(document.links[i].href.indexOf("#top") != -1)
         document.links[i].href = "#inhalt";
 }