var ie5  = (document.all && document.getElementById);
var ns6 = (!document.all && document.getElementById);

var inti;
var aktShow = 0;
var MausAktivation=0;

var fadeVal=0;
var worker;
var LastFadeIsDone=1;
var todo;

var aktInUseAr = new Array();

var changeToText;

var globId;
var lastChangeToId=-1;

var DoAfterFade;

function FadeDone() {
  if (doAfterFade) {
    doAfterFade();
  }
}

var aktLineNum = -1;
var zwiSaveAktLineNum;

function aktLine(lineNum){
  stop();
  zwiSaveAktLineNum = lineNum;
  doAfterFade = aktLinePart2;
  fadeOut();
  
}

function aktLinePart2() {
  var LineObj;

  //Die alte Zeile deMarken
  LineObj = document.getElementById("showtd_" + aktLineNum);
  if (LineObj)
  {
    LineObj.style.backgroundColor = "#e7e7e7";
  }


  aktLineNum = zwiSaveAktLineNum;

  LineObj = document.getElementById("showtd_" + aktLineNum);
  if (LineObj)
  {
    LineObj.style.backgroundColor = "#00ff00";
  }
  
  document.getElementById("showinfo").innerHTML = showLinesAr[aktInUseAr[aktLineNum]]["display"];

  doAfterFade = aktLinePart3;
  fadeIn();

}

function aktLinePart3() {
  //alert("fadeInDone");
  
  if (MausAktivation == 0) {
    start();
  }
}

function deAktAktLine(){

  var LineObj;

  if (aktLineNum > -1) {
    LineObj = document.getElementById("showtd_" + aktLineNum);
    
    aktLineNum = -1
    
    if (LineObj) {
      LineObj.style.backgroundColor = "#e7e7e7";
    }
    
    //die Zeile wird deaktiviert also werde ich auch die infobox ausblenden
    doAfterFade = deAktAktLinePart2;
    fadeOut();
  }
}

function deAktAktLinePart2() {
  document.getElementById("showinfo").innerHTML = "";
  //alert("fadeOutDone");
  doAfterFade = null;
  if (MausAktivation == 0) {
    start();
  }
}


function mausidraufi() {
  stop();
  //aktLine(id);
  //mausAktivation=1;
}

function mausiausi() {
  start();
  //mausAktivation=0;
}


//Beim start ausfuehren
function generateShowBox(){
  fillShowBox();
  cycle();
}

var aaa = 0;



//Befuellt die einzelnen Zeilen zum ersten mal 
function fillShowBox(){
  var randi;
  var divs;
  
  divs = divsAr();

  for (var i=1; i <= divs.length; i++)  
  {
    randi = getNext();
    
    document.getElementById("showdiv_" + i).innerHTML = showLinesAr[randi]["display"];
//    aaa = randi;
  }
}

//Zum ansprechen des Div Arrays da ie keinen namen bei divs haben will
function divsAr()
{
  var tmpDivs = new Array;
  
  tmpDivs[0] = document.getElementById("showdiv_" + 1);
  tmpDivs[1] = document.getElementById("showdiv_" + 2);
  tmpDivs[2] = document.getElementById("showdiv_" + 3);
  tmpDivs[3] = document.getElementById("showdiv_" + 4);
  //tmpDivs[4] = document.getElementById("showdiv_" + 5);
  //tmpDivs[5] = document.getElementById("showdiv_" + 6);
  
  return tmpDivs;
  
}

function getNext(){
    divs = showLinesAr;
    if(aaa == divs.length -1){
        aaa=0;
    }else{
        aaa=aaa+1;
    }
    return aaa;
}

//gibt eine geeignete Id zurueck
function getRandi()
{
    var randi = -1;

    while (inUse(randi))
    {
      randi = Math.random();
      randi = (showLinesAr.length -1) * randi
      randi = Math.round(randi)
    }

    return randi;
}

var lineHeight=16;
var aktMoved=0;
var movi;
var zwiSaveUp;


//Das ist das momentan verstecke Element (nach array nummerierung)
var akthidden=3;

function moveLines(up) {
  var divs;
  var tmp;
 
  divs = divsAr();
  if (up == true || up == false) {
    //da komm ich nur beim ersten mal rein
    
    divs[akthidden].style.top = 0 - lineHeight + "px";
    
    zwiSaveUp=up;
  }

  //Den momentan versteckten nach oben schupfen damit er aus dem nichts auftauchen kann
  if (aktMoved < lineHeight) {
    for (var i=0; i < divs.length; i++) {

      tmp = divs[i].style.top.substring(0, divs[i].style.top.length - 2);

      if (zwiSaveUp == true) {
        divs[i].style.top =  (parseInt(tmp) - 1) + "px";
      }else{
        divs[i].style.top =  (parseInt(tmp) + 1) + "px";
      }
    }

    aktMoved+=1;
    
    movi = window.setTimeout("moveLines();", 100);
  }else{
    //hab fertig gemoved
    
    if (akthidden > 0) {
      akthidden = akthidden - 1
    }else{
      akthidden = divs.length -1 ;
    }
    
    aktMoved=0;
    zwiSaveUp=0;
  }
}

function start()
{
  stop();
  inti = window.setInterval("cycle();", 3000);
}

function stop()
{
  if (inti) {
    window.clearInterval(inti);
  }
}


//schleift mal durch die ganzen angezeigten Elemente und holt sich dann neue
function cycle()
{
  stop();

  var randi;
  
  var divs = divsAr();
  
  //randi = getRandi();
  
  randi = getNext();
  
  divs[akthidden].innerHTML = showLinesAr[randi]["display"];
  
  aktInUseAr[akthidden] = randi;
  
  moveLines(false);

  start();

}


//Prueft ob eine Id in benutzung ist
function inUse(id)
{
  var result = false;

  if (id > -1)
  {
    for (var i=0; i < aktInUseAr.length; i++)
    {
      if (aktInUseAr[i] == id)
      {
        result = true;
      }
    }
  }else{
    result = true;
  }
  return result;
}