/*

  fast alle Funktionen setzten die Bibliothek DOM vorraus
*/

/*
  filecard (files, targetDiv, indexDiv, mode)
      files = ein Array von HTML-Elementen
      targetDiv =
      indexDiv =
    die HTML-Elementen werden in der targetDiv angezeigt,
    in der IndexDiv wird eine Zahlenauswahl angelegt.


  filecardAdv (files, targetDiv, indexDiv, mode)
      files = ein Array von Objekten mit
        .index = ein String
        .elem = HTML-Element
      in der IndexDiv wird der Text angelegt.

  filecardSoph (files, targetDiv, indexDiv, mode)
      files = ein Array von Objekten mit
        .index = HTML-Element
        .elem = HTML-Element
      die IndexDiv wird dem HTML-Element .index angelegt.
*/

var filecard_Counter = 0;
var filecard_Box = 0;
function filecard (files, targetDiv, indexDiv, mode)
{
  if (mode == undefined) mode = 0;
  if (targetDiv != undefined && indexDiv != undefined && 0 < files.length)
  {
    var erg = new Array();
    for (var i=0; i<files.length; i++)
    {
      var tn = new Object();
      tn.index = i;
      tn.elem = files[i];
      erg.push(tn);
    }
    filecardAdv (erg, targetDiv, indexDiv ,mode);
  }
}

function filecardAdv (files, targetDiv, indexDiv, mode)
{
  if (mode == undefined) mode = 0;
  if (targetDiv != undefined && indexDiv != undefined && 0 < files.length)
  {

    var erg = new Array();
    for (var i=0; i<files.length; i++)
    {
      var tn = new Object();
      var t = domDiv(domText(files[i].index));
      tn.index = t;
      tn.elem = files[i].elem;
      erg.push(tn);
    }
    filecardSoph (erg, targetDiv, indexDiv ,mode);
  }
}


function filecardSoph (files, targetDiv, indexDiv, mode)
{
  if (mode == undefined) mode = 0;
  filecard_Box += 1;
  if (targetDiv != undefined && indexDiv != undefined && 0 < files.length)
  {
    removeAllChildren(targetDiv);
    removeAllChildren(indexDiv);
    for (var i=0; i<files.length; i++)
    {
      if (1 < files.length)
      {
        var index = domDiv(files[i].index,indexDiv,"fl");
        filecard_Counter += 1;
        index.id = "card_index-" + filecard_Box + "-" + filecard_Counter + "-" + mode;
        //addRekEvent(index,"click",filecard_Change);
        addEvent(index,"click",filecard_Change);
        if (mode == 0 || mode == 1)
        {
          //addRekEvent(index,"mouseOver",fileindex_MouseOver1);
          //addRekEvent(index,"mouseOut",fileindex_MouseOut1);
          addEvent(index,"mouseOver",fileindex_MouseOver1);
          addEvent(index,"mouseOut",fileindex_MouseOut1);
        }
        if (mode == 2)
        {
          //addRekEvent(index,"mouseOver",fileindex_MouseOver2);
          //addRekEvent(index,"mouseOut",fileindex_MouseOut2);
          addEvent(index,"mouseover",fileindex_MouseOver2);
          addEvent(index,"mouseout",fileindex_MouseOut2);
          index.style.border = "1px solid black";
          index.style.marginLeft = "2pt";
          index.style.padding = "0pt";
          index.style.paddingLeft = "4pt";
          index.style.paddingRight = "4pt";
          backgroundRek(index, styleOfBackground(gstylebu));
        }
        if (mode == 1 && i<(files.length-1))
        {
          domDiv(domText("|"),indexDiv,"fl");
        }
      }
      var targetElem = domDiv(files[i].elem,targetDiv);
      targetElem.id = "card-" + filecard_Box + "-" + filecard_Counter;
      if (0<i)
      {
        targetElem.style.position = "absolute";
        targetElem.style.left = "-2000px";
      }
    }
  }
}

function filecard_Change(e)
{
  var node = getEventTarget(e);
  var re=/card_index\-(\d+)\-(\d+)\-(\d+)/gi;
  var rc=/card\-(\d+)\-(\d+)/gi;
  var tnode = getParentStartingWith(node, "card_index");
  var nid = tnode.id;
  re.lastIndex=0;
  var gto = re.exec(nid);
  if (gto != null)
  {
    var card_box = parseInt(gto[1]);
    var card_index = parseInt(gto[2]);
    var alp = document.getElementsByTagName("div");
    for (var j=0; j < alp.length; j++)
    {
      // Fettdruck
      re.lastIndex=0;
      var gtu = re.exec(alp[j].id);
      if (gtu != null)
      {
        if (card_box == parseInt(gtu[1]))
        {
          var tMode = parseInt(gtu[3]);
          if (card_index == parseInt(gtu[2]))
          {
            alp[j].style.fontWeight = "bold";
          }
          else
          {
            alp[j].style.fontWeight = "normal";
          }
        }
      }

      // Elemente ein oder ausblenden
      rc.lastIndex=0;
      var gtm = rc.exec(alp[j].id);
      if (gtm != null)
      {
        if (card_box == parseInt(gtm[1]))
        {
          if (card_index == parseInt(gtm[2]))
          {
            alp[j].style.position = "relative";
            alp[j].style.left = "0px";
          }
          else
          {
            alp[j].style.position = "absolute";
            alp[j].style.left = "-2000px";
          }
        }
      }
    }
  }
}

function fileindex_MouseOver1(e)
{
  var node = getEventTarget(e);
  node.style.textDecoration = "underline";
}

function fileindex_MouseOut1(e)
{
  var node = getEventTarget(e);
  node.style.textDecoration = "";
}

function fileindex_MouseOver2(e)
{
  var node = getEventTarget(e);
  var tnode = getParentStartingWith(node, "card_index");
  backgroundRek(tnode, styleOfBackground(gstylehi));
  //tnode.style.backgroundColor = styleOfBackground(gstylehi);
}

function fileindex_MouseOut2(e)
{
  var node = getEventTarget(e);
  var tnode = getParentStartingWith(node, "card_index");
  backgroundRek(tnode, styleOfBackground(gstylebu));
  //tnode.style.backgroundColor = styleOfBackground(gstylebu);
}

/*
  switchtr enthält eine Liste von Objekten mit folgenden Attributen
   .id = Kennzeichner für die Switch-Button
   .rows = Array mit den HTML-Elementen, die an oder ausgeschaltet werden sollen
   .elem_on = HTML-Element
   .elem_off = HTML-Element
   .state = momentaner Zustand (wird erstmal nicht genutzt)

  switch_rows(array_rows, openElem, closeElem, mode)
    array_rows = Liste von Elementen, die an oder ausgeschaltet werden sollen.
    openElem = HTML-Element
    closeElem = HTML-Element
    mode =

  Achtung, das ParentHandling bei den An/Aus-Knöpfen bedarf besonderer Beachtung,
  eventuell beide in eine eigene DIV packen

*/

var switchtr_Counter = 0;
var switchtr = new Array();

function switch_rows(array_rows, openElem, closeElem, mode)
{

  if (mode == undefined) mode = 0;
  if (openElem != undefined && closeElem != undefined && 0 < array_rows.length)
  {
    switchtr_Counter += 1;
    var parent_on = openElem.parentNode; var parent_off = closeElem.parentNode;
    var tn = new Object();
    tn.id = switchtr_Counter;
    tn.elem_on = domDiv(openElem,parent_on);
    //tn.elem_on.id = "mytoggle-1-" + switchtr_Counter;
    openElem.id = "mytoggle-1-" + switchtr_Counter;
    tn.elem_off = domDiv(closeElem,parent_off);
    //tn.elem_off.id = "mytoggle-0-" + switchtr_Counter;
    closeElem.id = "mytoggle-0-" + switchtr_Counter;
    //tn.elem_off.style.display = "none";
    tn.elem_off.style.position = "absolute";
    tn.elem_off.style.top = "-100px";
    tn.rows = array_rows;

    tn.elem_on.className = "fr";
    tn.elem_off.className = "fr";

    //addRekEvent(tn.elem_on,"click",switch_rows_Event);
    //addRekEvent(tn.elem_off,"click",switch_rows_Event);
    addEvent(openElem,"click",switch_rows_Event);
    addEvent(closeElem,"click",switch_rows_Event);

    //addRekEvent(tn.elem_on,"mouseover",switch_rows_MouseOver1);
    //addRekEvent(tn.elem_on,"mouseout",switch_rows_MouseOut1);
    //addRekEvent(tn.elem_off,"mouseover",switch_rows_MouseOver1);
    //addRekEvent(tn.elem_off,"mouseout",switch_rows_MouseOut1);
    addEvent(openElem,"mouseover",switch_rows_MouseOver1);
    addEvent(openElem,"mouseout",switch_rows_MouseOut1);
    addEvent(closeElem,"mouseover",switch_rows_MouseOver1);
    addEvent(closeElem,"mouseout",switch_rows_MouseOut1);

    /*
    addRekEvent(index,"mouseOver",fileindex_MouseOver2);
    addRekEvent(index,"mouseOut",fileindex_MouseOut2);
    index.style.border = "1px solid black";
    index.style.marginLeft = "2pt";
    index.style.padding = "0pt";
    index.style.paddingLeft = "4pt";
    index.style.paddingRight = "4pt";
    backgroundRek(index, styleOfBackground(gstylebu));
    */

    switchtr.push(tn);
  }
}


function switch_rows_Event(e)
{
  var node = getEventTarget(e);
  var re=/mytoggle\-(\d+)\-(\d+)/gi;
  var nid = node.id;
  re.lastIndex=0;
  var gto = re.exec(nid);
  if (gto != null)
  {
    var state = parseInt(gto[1]);
    var index = parseInt(gto[2]);
    var t = -1;
    for (var i=0; i<switchtr.length; i++) if (index == switchtr[i].id) t = i;
    if (0 <= t)
    {
      var displayN = "";
      if (state == 1)
      {
        displayN = "none";
        //switchtr[t].elem_on.style.display = "none";
        //switchtr[t].elem_off.style.display = "";
        switchtr[t].elem_on.style.top = "-100pt";
        switchtr[t].elem_on.style.position = "absolute";
        switchtr[t].elem_off.style.top = "0pt";
        switchtr[t].elem_off.style.position = "relative";
        for (var k=0; k<switchtr[t].rows.length; k++)
        {
          //switchtr[t].rows[k].style.display = "table-row";
          switchtr[t].rows[k].style.position = "relative";
          switchtr[t].rows[k].style.top = "0pt";
          //switchtr[t].rows[k].style.border = "2px solid #0a0";
          //switchtr[t].rows[k].style.background = "#0a0";
        }
        var news = idf("grp_ButtonOnNews_" + index);
        if (news != undefined) news.style.display = "none";
      }
      else
      {
        //switchtr[t].elem_on.style.display = "";
        //switchtr[t].elem_off.style.display = "none";
        switchtr[t].elem_on.style.top = "0pt";
        switchtr[t].elem_on.style.position = "relative";
        switchtr[t].elem_off.style.top = "-100pt";
        switchtr[t].elem_off.style.position = "absolute";
        for (var k=0; k<switchtr[t].rows.length; k++)
        {
          //switchtr[t].rows[k].style.display = "none";
          switchtr[t].rows[k].style.position = "absolute";
          switchtr[t].rows[k].style.top = "-2000pt";
          //switchtr[t].rows[k].style.border = "2px solid #a00";
          //switchtr[t].rows[k].style.background = "#a00";
        }
      }
    }
    //alert (state + " " + index);
  }
}

function switch_rows_MouseOver1(e)
{
  var node = getEventTarget(e);
  var tnode = getParentStartingWith(node, "mytoggle");
  backgroundRek(tnode, styleOfBackground(gstylehi));
  //tnode.style.backgroundColor = styleOfBackground(gstylehi);
}

function switch_rows_MouseOut1(e)
{
  var node = getEventTarget(e);
  var tnode = getParentStartingWith(node, "mytoggle");
  backgroundRek(tnode, styleOfBackground(gstylebu));
  //tnode.style.backgroundColor = styleOfBackground(gstylebu);
}

