/*

  Schnelle Strukturerstellung für das Forum

*/

/*******************************
  Elemente kopieren in eine DIV
  beachte die Änderung des Style-Elementes Display

  <div id="parent-1234"></div>
  <div id="son-1234" style="display:none;">Irgendwas</div>

  subCopy("parent", "son");

  <div id="parent-1234">
    <div id="son-1234" style="display:block;">Irgendwas</div>
  </div>

  Aufruf wäre in diesem Fall
    subCopy('parent','son')
*******************************/
function subCopy(parentElementRoot, newElementRoot)
{
  // Alle Elemente mit dem entsprechenden Namen
  var re=/(.*)-(.*)/gi;
  alp = document.getElementsByTagName("div");
  for (var i=0; i < alp.length; i++)
  {
    var nid = alp[i].id;
    re.lastIndex=0;
    var gto = re.exec(nid);
    if (gto != null)
    {
      if (gto[1]==parentElementRoot)
      {
        cElem = document.getElementById(newElementRoot + "-" + gto[2]);
        if (cElem != undefined)
        {
          var ccElem = cElem.cloneNode(8);
          ccElem.style.display = "block";
          alp[i].appendChild(ccElem);
        }
      }
    }
  }
}

/*******************************
  Baumaufbau
*******************************/


/*************************************************************************

  Aufbau Thread

*************************************************************************/

var openIcon;
var allThreads = new Array();
var allThreadsOpen = false;

// userInfos
var ap = new Array();
// Signaturen
var sig = new Array();

function fsInit()
{
  jscmdWrite("fsInit-Start",0,1);

  // Datencontainer auslesen
  var res=/con-(\d*)-(\d*)/gi;
  var alps = document.getElementsByTagName("div");
  for (var i=0; i < alps.length; i++)
  {
    var node = alps[i];
    var nid = node.id;
    res.lastIndex=0;
    var gts = res.exec(nid);
    if (gts != null)
    {
      var tid = gts[1];
      var userid = gts[2];
      var ipars = 0;
      // Name
      if (node.childNodes[ipars].nodeType == 3)
      {
        var name = node.childNodes[ipars].data;
        ipars += 2;
      }
      else
      {
        var name = "Profil gelöscht";
        ipars += 1;
      }
      // Eintrag
      if (node.childNodes[ipars].nodeType == 3)
      {
        var header = node.childNodes[ipars].data;
        ipars += 2;
      }
      else
      {
        var header = "...";
        ipars += 1;
      }
      // Datum
      if (node.childNodes[ipars].nodeType == 3)
      {
        var datum = node.childNodes[ipars].data;
        ipars += 2;
      }
      else
      {
        var datum = "...";
        ipars += 1;
      }
      // Text
      var text = node.childNodes[ipars].data;

      var tn = new Object();
      tn.id = tid;
      tn.userid = userid;
      tn.datum = datum;
      tn.name = name;
      tn.header = header;
      tn.text = text;
      tn.ready = false;
      allThreads.push(tn);
      // Datencontainer ausblenden
      node.style.display = "none";
    }
  }

  jscmdWrite("Daten ausgelesen",0,1);


  var resc=/thread-(.*)/gi;
  var alps = document.getElementsByTagName("div");
  for (var i=0; i < alps.length; i++)
  {
    var node = alps[i];
    var nid = node.id;
    resc.lastIndex=0;
    var gtc = resc.exec(nid);
    if (gtc != null)
    {
      var tid = gtc[1];
      var thit = null;
      for (var j=0; j < allThreads.length; j++)
      {
        if (allThreads[j].id == tid)
        {
            thit = allThreads[j];
            j = allThreads.length;
        }
      }

      // Head-Line
      var head = domFDiv(node);
      head.id = "head-" + tid;

      var to2 = domFDiv(node);

      //to2.style.position = "relative";
      //to2.style.lineHeight = "100pt";
      // userInfo
      var userInfo = domFDiv(to2);
      userInfo.id = "userInfo-" + thit.userid + "-" + tid;
      userInfo.style.position = "relative";


      // thread-Inhalt
      var t2 = domFDiv(to2);
      t2.id = "c-2-" + tid;
      t2.style.display = "none";
      thit.target = t2;

      // clear
      /*
        var tclear = domFDiv(to2);
        tclear.style.clear = "both";
        tclear.style.lineHeight = "1pt";
        tclear.style.margin = "0pt";
      */

      // signatur
      var signatur = domFDiv(node);
      signatur.id = "c-f-" + thit.userID + "-" + tid;
      thit.signatur = signatur;

      // Foot-Line
      var t3 = domFDiv(node);
      t3.id = "c-3-" + tid;
      thit.footline = t3;

      // Abschluss
      var tclear = domFDiv(node);
      tclear.style.clear = "both";
      tclear.style.lineHeight = "1px";
      tclear.style.margin = "0pt";
      tclear.style.borderBottom = "1px solid black";

      // *** Erzeugen der Kopf-Zeile
      var target = head;
      target.className = "fsHeader";
      target.style.background = styleOfBackground(gstyleka);
      //target.style.border = "1pt solid black";
      // Icon für lineare Darstellung
      var lImgC = domFDiv(target);
      lImgC.id = "cimg-l-" + tid;
      lImgC.style.border = "1pt solid red";
      var lRef = domRef(lImgC,"JavaScript:fsLine(" + tid + ");", target, "th_buttonRight");
      lRef.style.marginLeft = "5pt";
      lRef.id = "ml-" + tid;
      // Icon für Öffnen
      var oImgC = domFDiv(target);
      oImgC.id = "cimg-o-" + tid;
      oImgC.style.border = "1pt solid red";
      var oRef = domRef(oImgC,"JavaScript:fsOpen(" + tid + ");", target, "th_buttonRight");
      oRef.style.marginLeft = "5pt";
      oRef.id = "mo-" + tid;
      // Icon für Schliessen
      var cImgC = domFDiv(target);
      cImgC.id = "cimg-c-" + tid;
      cImgC.style.border = "1pt solid red";
      var cRef = domRef(cImgC,"JavaScript:fsClose(" + tid + ");", target, "th_buttonRight");
      cRef.style.marginLeft = "5pt";
      cRef.id = "mc-" + tid;
      cRef.style.display = "none";
      // Name, Icon für eigenen Beitrag
      var cname = domFDiv(target);
      // Icon für eigenen Beitrag
      var cImgT = domFDiv(target);
      cImgT.id = "cimg-u-" + tid;
      cImgT.style.border = "1pt solid red";
      cImgT.className = "th_buttonRight";
      //var ownT = domImg("../hilfe/fsuser01.gif",cname);
      //ownT.id = "uname-" + gtc[2];
      cImgT.style.paddingLeft = "5pt";
      if (thit.userid != getUserID()) cImgT.style.display = "none";
      // Name
      if (0 < thit.userid)
      {
        var rName = domRef(domText(thit.name),"./profil.php?userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&userTo=" + thit.userid, cname);
        rName.style.color = "#000";
      }
      // Datum
      domText(" " + thit.datum, cname);
      cname.className = "th_buttonRight";
      // Titel
      var ctitel = domFDiv(target);
      var rTitel = domRef(domText(thit.header),"JavaScript:fsOpen(" + tid + ");",ctitel);
      rTitel.style.color = "#000";
      ctitel.style.fontSize = "9pt";
    }
  }

  jscmdWrite("Erstellen der Kopfzeilen",0,1);
  //fsopenThreads();

  var threadNBody = idf("threadNBody");
  if (threadNBody != undefined && threadNBody != null) threadNBody.style.display = "";
  preloadElem("../hilfe/fsopen02.gif", "o");
  preloadElem("../hilfe/fsclose01.gif", "c", 1);
  preloadElem("../hilfe/fsuser01.gif", "u");
  preloadElem("../hilfe/fslinie01.gif", "l");
  insertCImgFunc();

  jscmdWrite("fsOpen-unread start",0,1);

  for (var i = 0; i < unread.length; i++)
  {
    fsOpen(unread[i]);
  }

  jscmdWrite("fsInit-Ende",0,1);
}

function fswitchUserInfos()
{
  var reu=/userInfo-(.*)-(.*)/gi;
  var alpu = document.getElementsByTagName("div");
  for (var i=0; i < alpu.length; i++)
  {
    var node = alpu[i];
    var nid = node.id;
    reu.lastIndex=0;
    var gtu = reu.exec(nid);
    if (gtu != null)
    {
      if (node.childNodes.length == 0)
      {
        // die UserInfo wurd noch nicht geöffnet
        for (var j=0; j < ap.length; j++)
        {
          if (ap[j].id == gtu[1]) node.appendChild(domCopy(ap[j].elem));
        }
        node.style.display = "";
      }
      else
      {
        if (node.style.display == "") node.style.display = "none";
        else node.style.display = "";
      }
    }
  }
}

// Alle Threads öffnen - deprecated
function fsopenThreads()
{
  var res=/tf-(.*)-(.*)/gi;
  var alps = document.getElementsByTagName("div");
  for (var i=0; i < alps.length; i++)
  {
    var node = alps[i];
    var nid = node.id;
    res.lastIndex=0;
    var gts = res.exec(nid);
    if (gts != null)
    {
      node.style.display = "";
    }
  }
  allThreadsOpen = true;
}

function fswitchThread()
{
  jscmdWrite("fswitchThread-Start",0,1);
  //if (!allThreadsOpen) fsopenThreads();
  var commonState = null;
  var commonStateO = "";
  var allOpen = false;
  for (var i=0; i < allThreads.length; i++)
  {
     if (commonState == null)
     {
       if (allThreads[i].target.style.display == "") commonState = "none";
       else
       {
         commonState = "";
         commonStateO = "none";
         allOpen = true;
       }
     }

     jscmdWrite("test-all-open-" + allOpen,0,2);
     if (allOpen && !allThreads[i].ready) fsOpen(allThreads[i].id);
     if (allThreads[i].target != undefined) allThreads[i].target.style.display = commonState;
     if (allThreads[i].footline != undefined) allThreads[i].footline.style.display = commonState;
     if (allThreads[i].signatur != undefined) allThreads[i].signatur.style.display = commonState;
     if (allThreads[i].openSymbol != undefined) allThreads[i].openSymbol.style.display = commonStateO;
     if (allThreads[i].closeSymbol != undefined) allThreads[i].closeSymbol.style.display = commonState;
 }
  jscmdWrite("fswitchThread-Ende",0,1);
}

// Thread wird geöffnet
// wichtig:
//  wenn der Thread bisher noch nicht übersetzt wurde, dann passiert das hier...
function fsOpen(tid)
{
  if (!allThreadsOpen) fsopenThreads();
  for (var i=0; i < allThreads.length; i++)
  {
    if (allThreads[i].id == tid)
    {
      if (!allThreads[i].ready)
      {
        var thread = allThreads[i];
        var node = thread.node;
        var target = thread.target;
        //alert (target.parentNode.parentNode.parentNode.id);
        target.style.paddingBottom = "10pt";
        //allThreads[i].footline = idf("c-3-" + tid);
        thread.openSymbol = idf("mo-" + tid);
        thread.closeSymbol = idf("mc-" + tid);
        //var dc = domCopy(node);
        var dc = domDiv(domText(thread.text));
        dc.style.display = "";
        dc.style.border = "1pt solid black";
        dc.style.padding = "2pt";
        dc.style.background = styleOfBackground(gstylefb);
        if (target != undefined)
        {
          target.appendChild(dc);
          node2HTML(dc, 200, 8);
          dc.style.lineHeight = "1.2";

          var tclear = domFDiv(dc);
          tclear.style.clear = "both";
          tclear.style.lineHeight = "1px";
          tclear.style.margin = "0pt";
          tclear.style.border = "0pt solid red";


          target.appendChild(thread.signatur);
          for (j = 0; j < sig.length; j++)
          {
            if (sig[j].id == thread.userid)
            {
              thread.signatur.appendChild(domCopy(sig[j].elem));
            }
          }
          target.appendChild(thread.footline);
        }
        else alert ("Not Found " + tid);
        //node2HTML(allThreads[i].signatur, 200, 8);

        // Fußzeile erstellen
        if (thread.footline != undefined)
        {
          var footline = thread.footline;

          var thanswer = domRef(domText("antworten"),"JavaScript:fsInput(" + tid + ");",footline);
          thanswer.style.color = "#000";
          thanswer.style.fontSize = "8pt";
          thanswer.id = "a-" + tid;
          thanswer.className = "buttonRDC";

          if (getUserID() == thread.userid)
          {
            var thedit = domRef(domText("editieren"),"JavaScript:fsEdit(" + tid + ");",footline);
            thedit.style.color = "#000";
            thedit.style.fontSize = "8pt";
            thedit.id = "e-" + tid + "-" + 1;
            thedit.className = "buttonRDC";
          }


          var thInsertField = domFDiv(footline);
          thInsertField.id = "i-" + tid;

          var thSpacer = domFDiv(footline);
          thSpacer.style.width = "100%";
          thSpacer.style.lineHeight = "1px";
          thSpacer.style.marginBottom = "5pt";

          //htmlWrite("\n\t\t\t<a id=\"a-$tid\" href=\"JavaScript:fsInput($tid);\" class=\"buttonLDC\" style=\"font-size: 8pt; float: right;\">antworten</a>\n\t\t\t<a id=\"e-$tid-$uid\" href=\"JavaScript:fsEdit($tid);\" class=\"buttonLDC\" style=\"font-size: 8pt; float: right; display: none;\">Editieren</a>\n\t\t\t<div id=\"i-$tid\" style=\"clear:both; width: 100%; line-height: 10pt;\"></div>");
        }
        allThreads[i].ready = true;
      }
      if (allThreads[i].target != undefined) allThreads[i].target.style.display = "";
      if (allThreads[i].footline != undefined) allThreads[i].footline.style.display = "";
      if (allThreads[i].signatur != undefined) allThreads[i].signatur.style.display = "";
      if (allThreads[i].openSymbol != undefined) allThreads[i].openSymbol.style.display = "none";
      if (allThreads[i].closeSymbol != undefined) allThreads[i].closeSymbol.style.display = "";
      i = allThreads.length;
    }
  }
}


function fsClose(tid)
{
  if (!allThreadsOpen) fsopenThreads();
  for (var i=0; i < allThreads.length; i++)
  {
    if (allThreads[i].id == tid)
    {
      if (allThreads[i].target != undefined) allThreads[i].target.style.display = "none";
      if (allThreads[i].footline != undefined) allThreads[i].footline.style.display = "none";
      if (allThreads[i].openSymbol != undefined) allThreads[i].openSymbol.style.display = "";
      if (allThreads[i].closeSymbol != undefined) allThreads[i].closeSymbol.style.display = "none";
      i = allThreads.length;
    }
  }
}

// lineare Darstellung des Verlaufs
function fsLine(tid)
{
  var reu=/tf-(.*)-(.*)/gi;
  var cArray = new Array();
  var alpu = document.getElementsByTagName("div");
  for (var i=0; i < alpu.length; i++)
  {
    var node = alpu[i];
    var nid = node.id;
    reu.lastIndex=0;
    var gtu = reu.exec(nid);
    if (gtu != null)
    {
      var nObj = new Object();
      nObj.display = false;
      nObj.id = gtu[1];
      nObj.prev = gtu[2];
      cArray.push(nObj);
    }
  }
  var tidc = tid;
  while (tidc != 0)
  {
    for (var i = 0; i < cArray.length; i++)
    {
      if (cArray[i].id == tidc)
      {
        cArray[i].display = true;
        tidc = cArray[i].prev;
      }
    }
  }

  for (var i=0; i < allThreads.length; i++)
  {
      display = false;
      var tid = 0;
      var vtid = 0;
      for (var j = 0; j < cArray.length; j++)
      {
        if (allThreads[i].id == cArray[j].id)
        {
          display = cArray[j].display;
          tid = cArray[j].id;
          vtid = cArray[j].prev;
        }
      }
      var btf = idf("tf-" + tid + "-" + vtid);
      if (display)
      {
        fsOpen(tid);
      }
      else
      {
        fsClose(tid);
        if (btf != undefined) btf.style.display = "none";
      }
  }
  allThreadsOpen = false;
}

var bbctid = 0;

// Eingabefeld öffnen für neuen Beitrag
function fsInput(tid)
{
  var parentNode =idf("i-"+tid);
  if (parentNode != undefined)
  {
    var cono = domFDiv(parentNode);
    var bbcNode = idf('bbc');
    if (bbcNode != undefined)
    {
      var bbccono = domFDiv(cono);
      bbccono.appendChild(bbcNode);
      bbcNode.style.display = "";
      bbccono.className = "picKatR";
      bbctid = "mtt-" + tid;
      bbccono.id = "bbccono-" + tid;
    }
    //domBreak(cono);
    var pWidth = parentNode.clientWidth;
    if (pWidth < 300) pWidth = 300;
    var tx = document.createElement("input");
    tx.style.width = (pWidth - 200) + "px";
    tx.style.fontSize = "9pt";
    tx.style.backgroundColor = styleOfBackground(gstylefb);
    tx.style.marginLeft = "10pt";
    tx.style.fontFamily = "Comic Sans MS, Arial";
    tx.name = "mti-" + tid;
    cono.appendChild(tx);
    domBreak(cono);

    var ta = document.createElement("textarea");
    ta.style.width = (pWidth - 200) + "px";
    ta.style.height = "100pt";
    ta.style.fontSize = "9pt";
    ta.style.marginLeft = "10pt";
    ta.style.fontFamily = "Comic Sans MS, Arial";
    ta.style.backgroundColor = styleOfBackground(gstylefb);
    ta.name = "mtt-" + tid;

    addEvent(ta,"focus",fsFocus);
    cono.appendChild(ta);

    var aNode = idf("a-"+tid);
    if (aNode != undefined) aNode.style.display = "none";
    parentNode.id = "io-"+tid;

    var submitnode = idf("submit");
    if (submitnode != undefined)
    {
      cono.appendChild(domCopy(submitnode));
    }
  }
}

function fsEditFields()
{
  jscmdWrite("fsEditFields-Start",0,1);
  //Alle Edit-Fields, die nicht dem user entsprechen löschen
  //Alle Einträge von User kennzeichnen
  if (0 < userID)
  {
    var re=/e-(.*)-(.*)/gi;
    var alp = document.getElementsByTagName("a");
    for (var i=0; i < alp.length; i++)
    {
      var node = alp[i];
      var nid = node.id;
      re.lastIndex=0;
      var gto = re.exec(nid);
      if (gto != null)
      {
        if (gto[2] == userID) node.style.display = "";
      }
    }

  jscmdWrite("fsEditFields-own",0,1);
  // Lämpchen
    var ru=/uname-(.*)/gi;
    var alu = document.getElementsByTagName("img");
    for (var i=0; i < alu.length; i++)
    {
      var node = alu[i];
      var nid = node.id;
      ru.lastIndex=0;
      var gtu = ru.exec(nid);
      if (gtu != null)
      {
        if (gtu[1] == userID) node.style.display = "";
      }
    }
  }
  jscmdWrite("fsEditFields-Ende",0,1);
}


// Eingabefeld öffnen für Korrektur eigener Beitrag
function fsEdit(tid)
{
  if (0 < userID)
  {
    var parentNode =idf("i-"+tid);
    if (parentNode != undefined)
    {
      var cono = domFDiv(parentNode);
      var bbcNode = idf('bbc');
      if (bbcNode != undefined)
      {
        var bbccono = domFDiv(cono);
        bbccono.appendChild(bbcNode);
        bbcNode.style.display = "";
        bbccono.className = "picKatR";
        bbccono.id = "bbccono-" + tid;
        bbctid = "mta-" + tid;
      }
      var pWidth = parentNode.offsetWidth;
      if (pWidth < 300) pWidth = 300;

      var tx = document.createElement("input");
      tx.style.width = (pWidth - 200) + "px";
      tx.style.fontSize = "9pt";
      tx.style.backgroundColor = styleOfBackground(gstylefb);
      tx.style.fontFamily = "Comic Sans MS, Arial";
      tx.name = "mti-" + tid;
      cono.appendChild(tx);
      domBreak(cono);
      var content = "";
      var tNode =idf("header-"+tid);
      if (tNode != undefined)
      {
        for (var i= 0; i < tNode.childNodes.length; i++)
        {
          if (tNode.childNodes[i].nodeType == 3) content += tNode.childNodes[i].data;
        }
      }
      tx.value = content;

      var ta = document.createElement("textarea");
      ta.style.width = (pWidth - 200) + "px";
      ta.style.height = "100pt";
      ta.style.fontSize = "9pt";
      ta.style.fontFamily = "Comic Sans MS, Arial";
      ta.style.backgroundColor = styleOfBackground(gstylefb);
      ta.name = "mta-" + tid;
      cono.appendChild(ta);
      var content = "";
      var tNode =idf("c-1-"+tid);
      if (tNode != undefined)
      {
        for (var i= 0; i < tNode.childNodes.length; i++)
        {
          if (tNode.childNodes[i].nodeType == 3) content += stripMCodes(tNode.childNodes[i].data);
        }
      }
      ta.value = content;

      var submitnode = idf("submit");
      if (submitnode != undefined)
      {
        cono.appendChild(domCopy(submitnode));
      }

      // Die Button für Editieren und Antworten wegblenden
      var aNode =idf("a-"+tid);
      if (aNode != undefined) aNode.style.display = "none";
      var aNode =idf("e-" + tid + "-" + userID);
      if (aNode != undefined) aNode.style.display = "none";
      parentNode.id = "io-"+tid;
    }
  } // test userID
}

// Wenn das Eingabefeld den Focus kriegt, dann das BBC-Panel dahin verschieben
function fsFocus(e)
{
 var a = getEventTarget(e);
 var ru=/(.*)-(.*)/gi;
 var nid = a.name;
 ru.lastIndex=0;
 var gtu = ru.exec(nid);
 if (gtu != null)
 {
   var bbcNode = idf('bbc');
   var bbcNodeTarget = idf("bbccono-" + gtu[2]);
   if (bbcNode != undefined && bbcNodeTarget != undefined)
   {
     bbcNodeTarget.appendChild(bbcNode);
     bbctid = nid;
   }
 }
}

function getfs_textarea()
{
  var erg = undefined;
  alp = document.getElementsByTagName("textarea");
  for (var i=0; i < alp.length; i++)
  {
    if (alp[i].name == bbctid) erg = alp[i];
  }
  return erg;
}

function bheader()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[z][/z]"); spr.focus(); }
}

function bfooter()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[zz][/zz]"); spr.focus(); }
}

function bwarn()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[w][/w]"); spr.focus(); }
}

function bquoteframe()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[frame][/frame]"); spr.focus(); }
}

function bunderline()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[u][/u]"); spr.focus(); }
}

function bbold()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[b][/b]"); spr.focus(); }
}

function bkursiv()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[i][/i]"); spr.focus(); }
}

function broman()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("[r][/r]"); spr.focus(); }
}

function btemplate01()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("\n[imgl200]http://www.wilhelmbusch.de/_user/customer/3/images/letztes_selbstbildnis.jpg[/img]Tausche die Bildadresse gegen eine andere Adresse aus.\n\nVerändere die Zahl von [b]imgl200[/b] auf [b]imgl80[/b], um ein kleineres Bild zu kriegen.\n\nSetze [b]imgl[/b] auf [b]imgr[/b], um das Bild an den rechten Rand zu setzen."); spr.focus(); }
}

function btemplate02()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("\n[joyf]Kopfzeile[||]Ändere die Buchstaben hinter dem ersten joy um andere Hintergründe zu kriegen.\n\nManche Buchstaben kann man noch mit einer Zahl für die Breite kombinieren, [b]joya1[/b] ist ein etwas größerer Rahmen.[/joy]"); spr.focus(); }
}

function btemplate03()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("\n[joyc]Überschrift[||]In diese Box lassen sich weitere Bilder einbringen\n---\nTrennlinien werden durch drei Minus erzeugt und müssen in einer eigenen Zeile stehen\n---\nZu langer Text wird abgeschnitten[/joy]"); spr.focus(); }
}

function btemplate04()
{
  var spr = getfs_textarea();
  if (spr) { spr.value = spr.value.concat("\n[h0]Überschrift[/h]\n[h1]Überschrift[/h]\n"); spr.focus(); }
}

function binsertImg(adr, dir, imgg)
{
  var spr = getfs_textarea();
  var adrc = document.getElementsByName(adr);
  var md = document.getElementsByName(dir);
  var gr = document.getElementsByName(imgg);
  var dir = "";
  var wp = 0;
  for (var i = 0 ; i < md.length; i++)
  {
    if (md[i].checked && i == 1) dir = "i";
    if (md[i].checked && i == 2) dir = "l";
    if (md[i].checked && i == 3) dir = "r";
  }
  if (gr != null)
  {
    var wp = parseInt(gr[0].value);
    if (0 < wp)
    {
      if (wp < 20) wp = 20;
      if (400 < wp) wp = 400;
    }
  }
  //showObject (md);
  //showObject(adrc);
  spr.value = spr.value.concat("[img" , dir);
  if (0 < wp) spr.value = spr.value.concat(wp);
  spr.value = spr.value.concat("]" , adrc[0].value , "[/img]");
  adrc[0].value = "http://";
  spr.focus();
}

/*************************************************************************
  Aufbau Forenübersicht

  Es werden zwei Datensätze ausgewertet
  xa (Kategorie)
   + id der DIV
    1. parentID
    2. id
    3. Ordnungsnummer
    4. PicID
   + childDivs
    1. Ordnungsangaben (für Tests)
    2. Header
    3. Kommentar

  ya (Beitrag)
   + id der DIV
    1. kategorie
    2. firstID
    3. lastID
   + childDivs
    1. Ordnungsangaben (für Tests)
    2. Text-Infos
       1. Header
       2. firstID
       3. Name des Thread-Eröffners
       4. ID des Thread-Eröffners
       5. Datum
       6. lastID
       7. Name des Authors des letzten Beitrages
       8. ID des Authors des letzten Beitrages
       9. Datum
      10. Anzahl der Beiträge insgesamt

-----------------------------------------------------------

  katArray (siehe unten)

*************************************************************************/

var katArray = new Array();

// paar Benchmarkdaten (damit es was zu beobachten gibt)
var kati = 0;
var reci = 0;

function forumInsertKat(super_id, id, ord, pic_id, header, descr, adminDescr)
{
    var trelemn = new Object();
    trelemn.parentID = super_id;
    trelemn.thisID = id;
    trelemn.ord = ord;
    trelemn.pic = pic_id;
    trelemn.header = header;
    trelemn.descr = stripMCodes(descr);
    trelemn.adminDescr = adminDescr;
    trelemn.entriesDone = false;
    trelemn.nextEntry = null;       // letzte Tabellenzeile
    trelemn.nextSubKat = null;      // interner Zeiger für den Aufbau
    trelemn.subKat = new Array();   // Zeiger auf die Zeile mit den Daten für die Unterkategorieen
    trelemn.subKatID = new Array();   // die IDs der Subkategoriien
    trelemn.entries = new Array();  // Objekte mit den Daten der Beiträge
    trelemn.displayElements = new Array();  // Sonstige HTML-Objekte, die geöffnet und geschlossen werden müssen in Verbindung mit den Beiträgen (wie Border, Header, Footer)
    trelemn.headInfos = undefined;  // TR-Zeile mit den Infos in der übergeordneten Kategorie
    trelemn.footer = undefined;
    trelemn.tabs = undefined; // zurück zum Hauptforum
    katArray.push(trelemn);
}

function forumInsertElem(kategorie, id, name, fromID, datum, lastid, lastName, lastFromID, lastdatum, betr, header)
{
    var drelemn = new Object;
    //drelemn.elem = als[i];
    //drelemn.elemID = als[i].id;
    //drelemn.basisname = gto[1];
    drelemn.kategorie = kategorie;
    drelemn.id = id;
    drelemn.lastid = lastid;
    drelemn.header = stripMCodes(header);
    drelemn.firstThreadID = id;
    drelemn.opener = name;
    drelemn.openerID = fromID;
    drelemn.firstDatum = datum;
    drelemn.lastThreadID = lastid;
    drelemn.lastAuthor = lastName;
    drelemn.lastuserID = lastFromID;
    drelemn.lastDatum = lastdatum;
    drelemn.betr = betr;
    for (var j=0; j < katArray.length; j++)
    {
      if (katArray[j].thisID == drelemn.kategorie)
        katArray[j].entries.push(drelemn);
    }
}

function closeMoreInfo(e)
{
  node = getEventTarget(e);
  var re=/(.*)-(.*)/gi;
  re.lastIndex=0;
  var gto = re.exec(node.id);
  if (gto != null)
  {
    elemID = "more-" + parseInt(gto[2]);
    elementClose(elemID);
  }
  //showHTML(node);
}

function SubKatEnter(e)
{
  node = getEventTarget(e);
  node = getParentStartingWith(node, "subkattd");
  //node = getParentStartingWith(node, "trsub");
  //alert ("--- " + node.id);
  node.style.backgroundColor = styleOfBackground(gstylehi);
}

function SubKatLeave(e)
{
  node = getEventTarget(e);
  //node.style.backgroundColor = styleOfBackground(gstyleka);
  node = getParentStartingWith(node, "subkattd");
  //node = getParentStartingWith(node, "trsub");
  node.style.backgroundColor = styleOfBackground(gstylekp);
}

/*
  Tabelleneintrag
  in katArray sind die Objekte gespeichert mit den entsprechenden Infos

  Die Tabelle wird aufgebaut über die rekursive Routine addKatRek
*/
function addKat(item)
{
  //
  // tdKat = Adressleiste
  //
  jscmdWrite("Kategorien verarbeiten " + lpad(item.thisID), 0, 2);
  //writeTextfield("Bench3", "Element " + item.thisID);
  var katBackground = styleOfBackground(gstyleka);
  var subKatBackground = styleOfBackground(gstylekp);
  var subKatHBackground = styleOfBackground(gstyleb);
  //elem = id(item.elem);
  tablexa = idf('xa');
  tbody = getChildW(tablexa, "TBODY");

  var trhead = document.createElement("tr");
  trhead.id = "tr-"+item.thisID;
  trhead.className = "tinytableK";
  tbody.appendChild(trhead);
  var tdKat = td(trhead,"tinytable");
  tdKat.colSpan = 6;
  // Spacer
  /*
  var headSpace = domFDiv(tdKat);
  headSpace.style.background = styleOfBackground(gstyleb);
  headSpace.style.height = "12pt";
  headSpace.style.borderTop = "1pt solid #000";
  */

  // Übergeordnete Kategorieen anwählen
  var superKats = domFDiv(tdKat);
  superKats.id = "sk-"+item.thisID;
  superKats.style.background = styleOfBackground(gstyleb);
  superKats.style.height = "12pt";
  superKats.style.paddingTop = "4pt";
  superKats.style.paddingBottom = "2pt";
  //superKats.style.border = "1pt solid #f00";
  var skID = item.parentID;
  var skerg = Array();
  while (0 < skID)
  {
    var nextItem = getKat(skID);
    if (nextItem == null)
    {
      skID = 0;
    }
    else
    {
      skID = nextItem.parentID;
      var sko = new Object();
      sko.parentID = skID;
      sko.id = nextItem.thisID;
      sko.header = nextItem.header;
      skerg.push(sko);
    }
  }
  skerg.reverse();
  for (var i=0; i<skerg.length; i++)
  {
    //if (0<i) domBreak(superKats);
    var superKatsRef = domRef(domText(skerg[i].header) , "javascript:forumOpen("+skerg[i].id+");" , superKats, "SuperKatButton");
    superKatsRef.style.background = styleOfBackground(gstylebu);
    addEvent(superKatsRef,"mouseover",ButtonEnter);
    addEvent(superKatsRef,"mouseout",ButtonLeave);
  }

  var picnDiv = domFDiv(tdKat,"picKat");
  tdKat.id = "tdKat-" + item.thisID;
  //tdKat.style.background = styleOfBackground(gstyleka);
  tdKat.style.padding = "0pt";
  tdKat.style.borderTop = "0pt solid #000";
  tdKat.style.borderLeft = "0pt solid #000";
  tdKat.style.borderRight = "0pt solid #000";
  //tdKat.style.paddingBottom = "2pt";
  tdKat.style.backgroundColor = katBackground;

  //**************************************
  // Die DIV für den offenen Header
  openHead = domFDiv(tdKat, "tinytable");
  openHead.style.borderTop = "1pt solid #000";
  openHead.style.borderLeft = "1pt solid #000";
  openHead.style.borderRight = "1pt solid #000";
  openHead.style.paddingBottom = "2pt";
  openHead.id = "openHead-" + item.thisID;
  // Button für Kategorie schliessen
  if (0 < item.parentID)
  {
    //var closeRefImg = domImg(hostName + "/hilfe/but16stop2.gif");
    var closeRefImg = domFDiv();
    closeRefImg.id = "cimg-n-" + item.thisID;
    closeRefImg.style.border = "1pt solid red";
    //closeRefImg.border = "0";
    closeRefImg.className = "buttonKat";
    var closeRef = domRef(closeRefImg , "javascript:forumClose("+item.thisID+");" , openHead, "tinytable" );
    closeRef.id = "Button-Close-" + item.thisID;
    closeRef.className = "picKatR";
    closeRef.style.margin = "2pt";
    //closeRef.style.backgroundColor = styleOfBackground(gstylebu);
    getKat(item.thisID).closeHead = closeRef;
    addEvent(closeRef,"mouseover",ButtonBEnter);
    addEvent(closeRef,"mouseout",ButtonBLeave);
  }
  // f1 ist der Header
  // Referenz auf die Unterseite
  f1 = domDiv(domText(item.header), openHead);
  f1.style.fontSize = "14pt";
  f1.style.textAlign = "left";
  f1.style.paddingLeft = "30pt";
  // f2 ist der Kommentar
  f2 = domDiv(domText(item.descr), openHead);
  f2.className = "onlineLinkSmallA";
  f2.style.paddingLeft = "7pt";
  node2HTML(f2,200);
  /*
  if (0 < item.adminDescr.length)
  {
    f3 = domFDiv(openHead);
    f3.innerHTML = item.adminDescr;
  }
  */
  // showHTML(openHead);
  //openHead.appendChild(f2);

  // Feld für die Unterkategorieen
  getKat(item.thisID).nextSubKat = trhead;

  // Tabelle für die Unterkategorieen
  // Eintragen in der übergeordneten Kategorie
  if (0 < item.parentID)
  {
    var parentData = getKat(item.parentID);
    superKatLast = getKat(item.parentID).nextSubKat;
    // nextSubKat ist die aktuelle TR-Zeile mit den Infos über die Kategorie...
    var nextSubKat = trAfter(superKatLast);
    //nextSubKat.style.backgroundColor = styleOfBackground(gstylekp);
    nextSubKat.id = "trsub-" + item.thisID;
    getKat(item.thisID).headInfos = nextSubKat;
    parentData.nextSubKat = nextSubKat;
    parentData.subKat.push(nextSubKat);
    parentData.subKatID.push(item.thisID);
    // Alle Beiträge danach
    parentData.nextEntry = nextSubKat;
    // *** Spalte für Symbol ***
    var cellg = td(nextSubKat, "tinytableKA");
    cellg.style.color = "#000";
    cellg.style.borderLeft = "1pt solid #000";
    //cellg.style.borderRight = "1pt solid #aaa";
    cellg.style.borderTop = "1pt solid #aaa";
    cellg.style.borderBottom = "1pt solid #888";
    cellg.style.paddingLeft = "0pt";
    cellg.style.verticalAlign = "middle";
    cellg.style.backgroundColor = subKatBackground;
    // *** Spalte für KategorieBeschreibung ***
    var cell1 = td(nextSubKat, "tinytableKA");
    cell1.style.color = "#000";
    //cell1.style.borderLeft = "3pt solid #f44";
    cell1.style.borderRight = "1pt solid #aaa";
    cell1.style.borderTop = "1pt solid #aaa";
    cell1.style.borderBottom = "1pt solid #888";
    cell1.style.paddingLeft = "10pt";
    cell1.style.verticalAlign = "middle";
    cell1.style.backgroundColor = subKatBackground;
    cell1.id = "subkattd-" + item.thisID;
    addEvent(cell1,"mouseover",SubKatEnter);
    addEvent(cell1,"mouseout",SubKatLeave);
    var cell2 = td(nextSubKat, "tinytableKA");
    // *** Spalte für Anzahl Einträge ***
    cell2.style.color = "#000";
    cell2.style.paddingRight = "8pt";
    cell2.style.paddingLeft = "4pt";
    cell2.style.borderTop = "1pt solid #aaa";
    cell2.style.borderBottom = "1pt solid #888";
    cell2.style.borderRight = "1pt solid #aaa";
    cell2.style.whiteSpace = "noWrap";
    cell2.style.verticalAlign = "middle";
    cell2.style.background = subKatHBackground;
    //cell2.style.backgroundColor = "#faa";
    cell2.style.textAlign = "center";
    domDiv(domText(" "),cell2);
    // *** Spalte für letzte Einträge ***
    var cell3 = td(nextSubKat, "tinytableKA");
    cell3.colSpan = 3;
    cell3.style.color = "#000";
    cell3.style.borderRight = "1pt solid #000";
    cell3.style.borderTop = "1pt solid #aaa";
    cell3.style.borderBottom = "1pt solid #888";
    cell3.style.paddingRight = "2pt";
    cell3.style.verticalAlign = "middle";
    cell3.style.background = subKatBackground;
    //domDiv(domText(" "),cell3);
    superKatE = domFDiv (cell1, "tinytable");
    superKatE.style.clear = "both";
    superKatE.style.width = "200pt";
    //superKatE.style.paddingTop = "3pt";

    // Das Icon der Kategorie
    var picsuDiv = domFDiv(cellg);
    if (0 < item.pic)
    {
      FTName = String(item.pic);
      while (FTName.length < 3) FTName = "0" + FTName;
      FTName = hostName + "/hilfe/ft" + FTName + ".gif";
      domImg(FTName , picsuDiv);
      picsuDiv.style.margin = "0pt";
    }

    //f4a = domCopy(getChildW(elem, "DIV", 1), "***Element 1 existiert nicht***");
    f4a = domDiv(domText(item.header));
    f4at = domCopy(f2, "***Element 2 existiert nicht***");


    for (var ici = 0; ici < f4at.childNodes.length; ici++)
    {
      if (f4at.childNodes[ici].nodeName == "INPUT")
      {
        f4at.removeChild(f4at.childNodes[ici--]);
      }
    }
    //alert (f4a.outerHTML + "\r\r" + f4at.outerHTML);
    //f4b = domCopy(getChildW(elem, "DIV", 1), "***Element 1 existiert nicht***");

    f4a.className = "tinytable";
    f4a.style.verticalAlign = "top";
    f4a.style.paddingTop = "3pt";
    f4a.style.display = "inline";
    f4a.style.fontSize = "9pt";
    f4a.style.fontWeight = "bold";

    f4b = domDiv(domText(item.header));
    f4b.className = "tinytable";
    f4b.style.display = "inline";
    f4b.style.fontSize = "9pt";

    f4at.style.fontSize = "7pt";

    // Darstellung der geöffneten Unterkategorie
    /*
    var openImg = domImg(hostName + "/hilfe/but16return1.gif");
    openImg.className = "picKatR";
    openImg.style.margin = "2pt";
    openImg.id = "Button-Open-" + item.thisID;
    var openI = domDiv(openImg);
    addEvent(openImg,"mouseover",ButtonBEnter);
    addEvent(openImg,"mouseout",ButtonBLeave);
    openI.appendChild(f4a);
    */
    var openI = domDiv(f4a);
    domBreak(openI);
    openI.appendChild(f4at);
    var openR = domRef(openI , "javascript:forumOpen("+item.thisID+");" , superKatE, "tinytable" );
    openR.id = "openKat-" + item.thisID;
    openR.style.display = "";
    openR.style.color = "#000";
    //addEvent(openR,"mouseover",SubKatEnter);
    //addEvent(openR,"mouseout",SubKatLeave);

    // Darstellung der geschlossenen Unterkategorie
    //var closeImg = domImg(hostName + "/hilfe/but16stop1.gif");
    var closeImg = domFDiv();
    closeImg.id = "cimg-m-" + item.thisID;
    closeImg.style.border = "1pt solid red";
    closeImg.border = "0";

    closeImg.className = "picKatR";
    closeImg.border = "0";
    closeImg.style.border = "0pt solid black";
    closeImg.style.margin = "2pt";
    var closeI = domDiv(closeImg);
    closeI.appendChild(f4b);
    var closeR = domRef(closeI , "javascript:forumClose("+item.thisID+");" , superKatE, "tinytable");
    closeR.id = "closeKat-" + item.thisID;
    closeR.style.display = "none";
    closeR.style.backgroundColor = subKatBackground;
    openR.style.color = "#000";

    getKat(item.thisID).headInfos1 = cell2;
    getKat(item.thisID).headInfos2 = cell3;

    if (0 < getKat(item.parentID).parentID)
    {
      nextSubKat.style.display = "none";
    }
  }

  // Liste aller Beiträge
  // *********************


  jscmdWrite("Header \"" + item.header + "\" aufgebaut ", 7, 3);

  getKat(item.thisID).nextEntry = trhead;

  // Sorting
     var tu = 0;

        item.entries.reverse();
        while (tu < item.entries.length - 1)
        {
          //docWindowWrite("Sorting " + item.thisID , "#cac",
          //   lpad(tu, 4, "_") + " / " + lpad(item.entries.length , 4, "_"),
          //   1);

          if (item.entries[tu+1].lastDatum <= item.entries[tu].lastDatum) tu++;
          else
          {
              var h = item.entries[tu];
              item.entries[tu] = item.entries[tu+1];
              item.entries[tu+1] = h;
              if (0 < tu) tu--;
           }
         }

  jscmdWrite(item.entries.length + " Beitragsdaten sortiert ", 7, 3);

  // Neuen Beitrag erstellen
  if (0 < item.parentID)
  {
      trhead.style.display = "none";
      // footer
      var trfooter = document.createElement("tr");
      item.footer = trfooter;
      tbody.appendChild(trfooter);
      //var tdfooter1 = td(trfooter,"tinytableL");
      var tdfooter2 = td(trfooter,"tinytableL");
      tdfooter2.id = "footer-" + item.thisID;
      var newTopicButton = domRef(domText ("neues Thema") , "javascript:newThreadStart("+item.thisID+");" ,tdfooter2,"buttonLDM");
      newTopicButton.style.background = styleOfBackground(gstylebu);
      newTopicButton.style.marginLeft = "50pt";
      addEvent(newTopicButton,"mouseover",ButtonEnter);
      addEvent(newTopicButton,"mouseout",ButtonLeave);
      trfooter.style.display = "none";
      tdfooter2.colSpan = 6;
      //tdfooter1.style.borderTop = "1pt solid #aaa";
      tdfooter2.style.borderTop = "1pt solid #888";
      tdfooter2.style.borderRight = "1pt solid #000";
      tdfooter2.style.borderLeft = "1pt solid #000";
      domBreak(tdfooter2);
      //trfooter.style.background = styleOfBackground(gstyleka);
  }
  //jscmdWrite("fertig ", 7 ,2);
}

/*
  Die Elemente haben die ID xa-(parentID)-(ID)-(ord)-(picID)
  Die daraus erstellten Objekte werden in dem Array katArray gespeichert
*/
function makeKatTree()
{
  jscmdWrite("MakeKatTree Start",3,0);
  targetTable = idf('xa');
  if (targetTable != undefined) targetTable.style.display = "none";

  // Sortieren (Bubble Sort)
  j=0;
  while (j < katArray.length - 1)
  {
    sort = 0;
    if (katArray[j+1].parentID < katArray[j].parentID) sort = 1;
    else
    {
      if (katArray[j+1].parentID == katArray[j].parentID && katArray[j+1].ord < katArray[j].ord) sort = 2;
    }
    if (sort == 0) j++;
    else
    {
      h = katArray[j];
      katArray[j] = katArray[j+1];
      katArray[j+1] = h;
      if (0 < j) j--;
    }
  }

  //writeTextfield("Bench1", "Kategorien sortiert");
  jscmdWrite("Kategorien sortiert",0,1);

  // Beiträge raussuchen
  /*
  var res=/(.*)-(.*)-(.*)-(.*)/gi;
  als = document.getElementsByTagName("div");
  beti = 0;
  for (var i=0; i < als.length; i++)
  {
    var nid = als[i].id;
    res.lastIndex=0;
    var gto = res.exec(nid);
    if (gto != null)
    {
      if (gto[1]=="ya")
      {
        var drelemn = new Object;
        drelemn.elem = als[i];
        drelemn.elemID = als[i].id;
        drelemn.basisname = gto[1];
        drelemn.kategorie = gto[2];
        drelemn.id = gto[3];
        drelemn.lastid = gto[4];
        for (var j=0; j < katArray.length; j++)
        {
          if (katArray[j].thisID == drelemn.kategorie)
            katArray[j].entries.push(drelemn);
        }
        //writeTextfield("Bench2", "Beiträge " + beti);
        beti++;
      }
    }
  }
  */
  //writeTextfield("Bench2", "Beiträge gelesen");
  //jscmdWrite("Beiträge gelesen",0,1);

  // ************************
  // Das könnte eine eigene Routine werden...
  // Die Startelemente suchen
  kati--;

  for (var i=0; i < katArray.length; i++)
  {
    if (0 == katArray[i].parentID)
      addKatRek(katArray[i], 0);
  }
  //writeTextfield("Bench3", "Seite aufgebaut");

  jscmdWrite("Seite aufgebaut",0,1);

  // Das könnte eine eigene Routine werden...
  // Abschlussgrenze unten
  tbody = getChildW(idf('xa'), "TBODY");
  var trhead = document.createElement("tr");
  tbody.appendChild(trhead);
  var tde = td(trhead,"tinytable");
  tde.colSpan = 6;
  tde.style.borderTop = "1pt solid #000";
  domText(".",tde);
  tde.style.color = styleOfBackground(gstyleb);

  // Öffnen / Schliessen
  ocli = 0;
  for (var i=0; i < katArray.length; i++)
  {
    //forumClose(katArray[i].thisID,2);
    //writeTextfield("Bench4", "Close " + ocli + " (" + kati + ")");
    ocli++;
  }
  for (var i=0; i < katArray.length; i++)
  {
    if (katArray[i].parentID == 0)
    {
      forumOpen(katArray[i].thisID);
      //writeTextfield("Bench4", "Open " + ocli + " (" + kati + ")");
      ocli++;
    }
  }
  jscmdWrite("Kategorieen Geöffnet/Geschlossen",0,1);

  //*************************************************************
  // Hier werden die zusätzlichen Infos für alle Header erstellt
  //*************************************************************
  for (var i=0; i < katArray.length; i++)
  {
    var item = katArray[i];
    //showObject(item);
    subK = countSubKat(item.thisID);
    subE = countSubEntries(item.thisID);
    if (0 < subK || 0 < subE)
    {
      //domBreak(closeHeadInfos);
      //closeHeadInfos.style.display = "inline";
      //domText(" (", closeHeadInfos);
      if (0 < subK)
      {
        //domBold(domText("Subkategorieen: "), item.headInfos1);
        //domText(subK, item.headInfos1);
      }
      if (0 < subK && 0 < subE) domBreak(item.headInfos1);
      if (0 < subE)
      {
        //domBold(domText("Einträge: "), item.headInfos1);
        domText(subE, item.headInfos1);
      }
      //if (0 < subE) domText(", ", item.headInfos1);
      subL = undefined;
      if (0 < subE)
      {
        var moreButtonDiv = domFDiv(item.headInfos2, "picKatR");
        moreButtonDiv.style.border = "0pt solid black";
        //domBold(domText("Letzter Eintrag: "), item.headInfos2);
        var lastEntries = domFDiv (item.headInfos2);
        lastEntries.id = "headInfos-" + item.thisID;
        lastEntries.style.border = "0pt solid black";
        lastEntries.style.lineHeight = "8pt";
        lastEntries.style.fontSize = "7pt";
        lastEntries.style.paddingLeft = "4pt";
        lastEntries.style.paddingBottom = "2pt";
        addEvent(lastEntries,"mouseout",closeMoreInfo);

        subL = undefined;
        for (var um=0; um < 5; um++)
        {
          subL = lastSubEntry(item.thisID, subL);
          //alert ("Ergebniss\r\r" + subL.thema + " " + subL.date + " " + mDate(subL.date,11).innerHTML);
          if (0 < subL.date)
          {
            //if (0 < um) domBreak(lastEntries);
            //domText(mDate(subL.date,11) + " ", lastEntries);
            if (um == 1)
            {
              //var moreInfoImg = domImg(hostName + "/hilfe/but48more2.gif");
              var moreInfoImg = domFDiv();
              moreInfoImg.id = "cimg-c-" + item.thisID;
              moreInfoImg.style.border = "1pt solid red";
              moreInfoImg.border = "0";
              moreInfoImg.style.margin = "0pt";
              moreInfoImg.style.padding = "0pt";
              //moreInfoImg.style.marginLeft = "5pt";
              var moreButtonDivRef = domRef(moreInfoImg, "JavaScript: elementOpen('more-"+ item.thisID +"')", moreButtonDiv);
              //domText ("mehr",moreButtonDiv);
              moreButtonDiv.style.backgroundColor = styleOfBackground(gstylekp);
              moreButtonDiv.style.padding = "0pt";
              lastEntries = domFDiv(lastEntries);
              lastEntries.style.display = "none";
              lastEntries.id = "more-" + item.thisID;
            }
            //lastEntriesW.style.styleFloat="right";
            //lastEntriesW.style.cssFloat="right";
            var lastTheme = domDiv(domText(subL.thema));
            lastTheme.style.textDecoration = "underline";
            var thema = domRef(lastTheme , hostName + "/frame.php?action=forumThreadHist&userID="+getUserID()+"&sessionID="+getSessionID()+"&gstyle="+getGstyle()+"&forum=" + subL.katID + "&thread=" + subL.threadID + "&restr=0", lastEntries, "onlineLinkSmallA");
            thema.style.display = "block";
            thema.style.paddingLeft = "2pt";
            thema.style.paddingBottom = "3pt";
            if (0 < um)
            {
              lastTheme.style.borderTop = "1pt solid #999";
            }
            thema.style.fontSize = "7pt";
            thema.style.lineHeight = "8pt";
            node2HTML(thema,80);

            //lastEntriesW = domFDiv(lastEntries);
            thema.appendChild(mDate(subL.date,11));
            domItalic(domText(" " + subL.author), thema);
            thema.style.whiteSpace = "noWrap";
          }
          else
          {
            um = 2000;
          }
        }
          //showObject (lastEntries);
      }
      //domText(")", closeHeadInfos);
    }
    jscmdWrite("Zusätzlicher Infos für " + item.header + " ", 0, 1);
  }
 //showHTML(idf('xa'));
 // Informationsfeld
 var jbenchi = idf("jbench");
 if (jbenchi != undefined) jbenchi.style.display = "none";
 if (targetTable != undefined) targetTable.style.display = "";


 preloadElem(hostName + "/hilfe/but16stop1.gif", "m");
 preloadElem(hostName + "/hilfe/but16stop2.gif", "n");
 preloadElem(hostName + "/hilfe/but48more2.gif", "c");
 insertCImgFunc();
 jscmdWrite("MakeKatTree Ende",3,0);
 //alert (benchTotal);
}

function addKatRek(item, deep)
{
  addKat(item);
  // Elemente mit entsprechenden Eintrag suchen
  for (var i=0; i < katArray.length; i++)
  {
    if (item.thisID == katArray[i].parentID)
    {
      addKatRek(katArray[i], deep+1);
      //writeTextfield("Bench3", "Aufbau " + reci);
      reci++;
    }
  }
}

function getKat(kid)
{
  var erg = null;
  for (var i=0; i<katArray.length; i++)
  {
    if (katArray[i].thisID == kid)
    {
      erg = katArray[i];
      i = 1000;
    }
  }
  return erg;
}

function forumBTShow(kate, mode)
{
  // Schliesst/Öffnet alle Beitragszeilen
  if (mode == undefined) mode = 0;
  for (var i=0; i < kate.entries.length; i++)
  {
    //alert(kate.entries[i].trid);
    trid = idf(kate.entries[i].trid);
    if (trid != undefined)
    {
      if (mode == 0) trid.style.backgroundColor = "#CCC";
      else trid.style.backgroundColor = "#444";
      //if (mode == 0) trid.style.display = "";
      //else trid.style.display = "none";
    }
  }
  return;
}

/*
  Kategorie Open/Close-Mode
*/

function forumOpen(fid)
{
  var forumKat = getKat(fid);
  jscmdWrite("Forum \"" + forumKat.header + "\" Open Start", 3, 1);
  var toOpenKat = new Array();       // Kategorieen, die geöffnet werden müssen
  var toOpenEntries = new Array();   // Beiträge, die geöffnet werden müssen
  var toOpenSub = new Array();       // Sub-Einträge, die geöffnet werden müssen
  if (forumKat.parentID == 0)
  {
    // TopKategorie wurde geöffnet,
    // dh. alle TopKategorieen und Einträge werden dargestellt
    for (var i=0; i < katArray.length; i++)
    {
      if (katArray[i].parentID == 0)
      {
        toOpenKat.push(katArray[i].thisID);
        toOpenEntries.push(katArray[i].thisID);
      }
      else
      {
        // Die untergeordeten Kategorieen, der Parents die Topkategorieen sind
        if (getKat(katArray[i].parentID).parentID == 0)
           toOpenSub.push(katArray[i].thisID);
      }
    }
  }
  else
  {
    // Unterkategorie wurde geöffnet
    // Alle Vorgängerkategorieen werden geöffnet
    // Jedoch nur die Beiträge der letzten Kategorie
    // Subkategorieen wie Kategorieen aber auch die Subkategorieen der aktuellen Kategorie
    toOpenEntries.push(forumKat.thisID);
    // Subkategorieen werden nur von der aktuell gewählten Kategorie geöffnet
    for (var i=0; i < katArray.length; i++)
    {
      if (katArray[i].parentID == forumKat.thisID)
      {
         toOpenSub.push(katArray[i].thisID);
      }
    }
    var kat = fid;

    toOpenKat.push(fid);
  }

  // Alles, was geöffnet/geschlossen werden muß ist gekennzeichnet
  for (var i=0; i < katArray.length; i++)
  {
    kat = katArray[i];
    closeKatFlag = true;
    closeEntryFlag = true;
    closeSubFlag = true;
    for (var u=0; u < toOpenKat.length; u++)
    {
      if (toOpenKat[u] == kat.thisID) closeKatFlag = false;
    }
    for (var u=0; u < toOpenEntries.length; u++)
    {
      if (toOpenEntries[u] == kat.thisID) closeEntryFlag = false;
    }
    for (var u=0; u < toOpenSub.length; u++)
    {
      if (toOpenSub[u] == kat.thisID) closeSubFlag = false;
    }
    openKat = idf("openKat-" + kat.thisID);
    closeKat = idf("closeKat-" + kat.thisID);

    if (closeSubFlag)
    {
      if (kat.headInfos != undefined) kat.headInfos.style.display = "none";
    }
    else
    {
      if (kat.headInfos != undefined) kat.headInfos.style.display = "";
    }

    // KategorieFelder
    if (closeKatFlag)
    {
      idf("tr-" + kat.thisID).style.display = "none";
      if (openKat != undefined) openKat.style.display = "";
      if (closeKat != undefined) closeKat.style.display = "none";
      for (var u=0; u < kat.subKat.length; u++)
      {
        kat.subKat[u].style.display="none";
      }
      if (kat.footer != undefined) kat.footer.style.display="none";
    }
    else
    {
      idf("tr-" + kat.thisID).style.display = "";
      if (openKat != undefined) openKat.style.display = "none";
      if (closeKat != undefined) closeKat.style.display = "";
      for (var u=0; u < kat.subKat.length; u++)
      {
        kat.subKat[u].style.display="";
      }
      if (kat.footer != undefined) kat.footer.style.display="";
    }
    if (closeEntryFlag)
    {
      for (var u=0; u < kat.entries.length; u++)
      {
        //kat.entries[u].elem.style.backgroundColor="#444";
        if (kat.entries[u].elem != undefined) kat.entries[u].elem.style.display="none";
      }
      for (var u=0; u < kat.displayElements.length; u++)
      {
        kat.displayElements[u].style.display="none";
      }
    }
    else
    {
      // Erstmal feststellen, ob die Unterbeiträge bereits erstellt sind
      if (!kat.entriesDone)
      {
        //
        jscmdWrite("Start Erstellung Beitragsdaten", 0 , 2);
        kat.entriesDone = true;
        var insertAfter = kat.nextEntry;
            for (var ie=0; ie < kat.entries.length; ie++)
            {
              trid = "bt-" + kat.thisID + "-" + kat.entries[ie].lastThreadID;
              // In nextEntry steht der Beitrag
              kat.nextEntry = trAfter(kat.nextEntry);
              // Beitrag schliessen, falls die ParentID nicht 0 ist
              if (0 < kat.parentID)
              {
                kat.nextEntry.style.display = "none";
                //kat.nextEntry.style.backgroundColor = "#f00";
              }

              kat.entries[ie].elem = kat.nextEntry;
              //tbody.appendChild(trheadf);
              kat.nextEntry.id = trid;
              kat.nextEntry.style.background = styleOfBackground(gstylefb);
              //var td3 = td(trheadf,"tinytableL");
              var tdheader = td(kat.nextEntry,"tinytableL");
              var tdanswers = td(kat.nextEntry,"tinytableL");
              var tdopener = td(kat.nextEntry,"tinytableL");
              //var tdopenerDate = td(kat.nextEntry,"tinytableL");
              var tdlast = td(kat.nextEntry,"tinytableL");
              tdheader.colSpan = "2";
              tdheader.style.borderLeft = "1pt solid #000";
              tdheader.style.borderBottom = "1pt solid #aaa";
              tdheader.style.paddingLeft = "10pt";
              tdheader.style.paddingRight = "10pt";
              tdheader.style.paddingBottom = "0pt";
              tdheader.style.verticalAlign = "middle";
              //tdheader.style.width = "500pt";
              tdanswers.style.verticalAlign = "middle";
              tdanswers.style.textAlign = "center";
              //tdanswers.style.paddingRight = "3pt";
              tdanswers.style.borderBottom = "1pt solid #aaa";
              tdanswers.style.paddingBottom = "0pt";
              tdopener.style.verticalAlign = "middle";
              tdopener.style.borderBottom = "1pt solid #aaa";
              tdopener.style.paddingBottom = "0pt";
              tdopener.style.fontSize = "7pt";
              tdopener.style.width = "120pt";
              tdopener.colSpan = 2;
              tdlast.style.verticalAlign = "middle";
              tdlast.style.borderRight = "1pt solid #000";
              tdlast.style.paddingLeft = "5pt";
              tdlast.style.borderBottom = "1pt solid #aaa";
              tdlast.style.paddingBottom = "0pt";
              tdlast.style.fontSize = "7pt";
              tdlast.style.width = "120pt";
              tdlast.style.whiteSpace = "noWrap";
              //tdopenerDate.style.paddingLeft = "5pt";
              //tdopenerDate.style.paddingRight = "5pt";
              //tdopenerDate.style.paddingBottom = "0pt";
              //tdopenerDate.style.verticalAlign = "middle";
              //tdopenerDate.style.borderBottom = "1pt solid #aaa";

              //***** Linkes Feld im Beitrag *****

              //***** Header *****
              var rawHeaderText = domText(kat.entries[ie].header);
              //var headerText = domBold(domText(text2HTML(String(item.entries[i].header),80)));
              //var headerText = domBold(rawHeaderText);
              var headerText = domDiv(rawHeaderText);
              headerText.style.display = "inline";
              headerText.style.width = "200pt";
              node2HTML(headerText,80);
              domRef(headerText , hostName + "/frame.php?action=forumThreadHist&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&forum=" + kat.thisID + "&mode=3&start=0&thread=" + kat.entries[ie].lastThreadID + "#last" , tdheader, "onlineLinkSmallA");

              /*
              // Seitenauswahl (vorerst uninteressant)
              if (gEntries < kat.entries[ie].betr)
              {
                //domBreak(tdheader);
                headerText.style.paddingRight = "10pt"
                //domText("Beiträge: " + betr + " gEntries: " + gEntries, tdheader);
                var endbetr1 = kat.entries[ie].betr/gEntries;
                var endbetr = endbetr1;
                var endbetr2 = endbetr1 - 5;
                if (10 < endbetr2) endbetr = 5;
                for (ui=0; ui < endbetr; ui++)
                {
                  if (0 < ui) domText(", ", tdheader);
                  domRef(domText(ui) , hostName + "/frame.php?action=forumThreadHist&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&forum=" + kat.thisID + "&mode=3&start= " + ui + "&thread=" + kat.entries[ie].lastThreadID + "#last" , tdheader, "onlineLinkSmallD");
                }
                if (endbetr < endbetr1)
                {
                   domText(",...", tdheader, "onlineLinkSmallD");
                   for (ui=endbetr2; ui < endbetr1; ui++)
                   {
                     domText(", ", tdheader, "onlineLinkSmallD");
                     domRef(domText(ui) , hostName + "/frame.php?action=forumThreadHist&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&forum=" + kat.thisID + "&mode=3&start= " + ui + "&thread=" + kat.entries[ie].lastThreadID + "#last" , tdheader, "onlineLinkSmallD");
                   }
                }
              }
              */


              //***** Answers *****
              domText(kat.entries[ie].betr, tdanswers);
              //***** Opener *****
              //domBreak(tdopener);
              if (opener == 0) domText("???", tdlast);
              else domRef(domText(kat.entries[ie].opener) , hostName + "/profil.php?userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&userTo=" + kat.entries[ie].openerID, tdopener, "onlineLinkSmallD");
              domText(" ", tdopener);
              //domRef(domText("Beitrag") , "./frame.php?action=forumThreadHist&userID=" + userID + "&sessionID=" + sessionID + "&gstyle=" + gstyle + "&forum=" + item.thisID + "&thread=" + firstThreadID + "&restr=0", tdopener, "onlineLinkSmallD");
              tdopener.style.whiteSpace = "noWrap";
              tdopener.style.paddingRight = "5pt";
              tdopener.style.paddingLeft = "5pt";

              //***** OpenerDate *****
              /*
              tdopenerDate.style.whiteSpace = "noWrap";
              tdopenerDate.appendChild(mDate(kat.entries[ie].firstDatum, 11));
              */
              domBreak(tdopener);
              var openerDate = mDate(kat.entries[ie].firstDatum, 11);
              openerDate.style.whiteSpace = "noWrap";
              openerDate.style.paddingLeft = "4pt";
              tdopener.appendChild(openerDate);

              //***** Last *****
              // Last wird nur angezeigt, wenn es bereits eine Antwort gibt
              if (1 < kat.entries[ie].betr)
              {
                if (kat.entries[ie].lastuserID == 0) domText("???", tdlast);
                else domRef(domText(kat.entries[ie].lastAuthor), hostName + "/profil.php?userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&userTo=" + kat.entries[ie].lastuserID, tdlast, "onlineLinkSmallD");
                domBreak(tdlast);
                var lastDate = mDate(kat.entries[ie].lastDatum, 11);
                lastDate.style.whiteSpace = "noWrap";
                lastDate.style.paddingLeft = "4pt";
                tdlast.appendChild(lastDate);
              }
              else
              {
                domBreak(tdlast);
              }

              /*
              // Zum letzten Beitrag wird verwaltet über die Beitragshistorie
              domText(" ", tdlast);
              domRef(domText("Beitrag"), hostName + "/frame.php?action=forumThreadHist&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&forum=" + kat.thisID + "&thread=" + kat.entries[ie].lastThreadID + "&restr=0", tdlast, "onlineLinkSmallD");
              tdlast.style.whiteSpace = "noWrap";
              */
              jscmdWrite("Eintrag eingefügt " + kat.entries[ie].header, 0, 3);
            }
            jscmdWrite("Beitragsdaten eingefügt", 0, 2);
      }
      for (var u=0; u < kat.entries.length; u++)
      {
        //kat.entries[u].elem.style.backgroundColor="#aaa";
        kat.entries[u].elem.style.display="";
      }
      for (var u=0; u < kat.displayElements.length; u++)
      {
        kat.displayElements[u].style.display="";
      }
    }
  }
  jscmdWrite("Forum Open Ende", 0, 1);
}

function forumClose(fid)
{
  var forumKat = getKat(fid);
  forumOpen(forumKat.parentID);
  //showObject(forumKat);
  goDelayed("tr-" + forumKat.parentID,"TR",1);
}

function countSubKat(kat)
{
  erg = 0;
  for (var i=0; i < katArray.length; i++)
  {
   if (kat == katArray[i].parentID)
   {
     erg += 1 + countSubKat(katArray[i].thisID);
   }
  }
  return erg;
}


function countSubEntries(kat)
{
  erg = 0;
  for (var i=0; i < katArray.length; i++)
  {
   if (kat == katArray[i].parentID)
   {
     erg += countSubEntries(katArray[i].thisID);
   }
   if (kat == katArray[i].thisID)
   {
     erg += katArray[i].entries.length;
   }

  }
  return erg;
}

function lastSubEntry(kat,beforeEntry)
{
  //wDoc.document.writeln("lastSubEntry(" + kat + "," + beforeEntry + ")<br>");
  //wDoc.document.writeln("<div style=\"padding-left:10pt;\">");
  //if (beforeEntry != null) wDoc.document.writeln("!= " + mDate(beforeEntry.date,0) + " " + beforeEntry.thema + "<br>");
  var erg = new Object();
  erg.date = 0;
  erg.author = "";
  erg.thema = "";
  var obj = getKat(kat);
   for (var u = 0; u < obj.subKatID.length; u++)
   {
     var ergu = lastSubEntry(obj.subKatID[u],beforeEntry);
     if (erg.date < ergu.date)
     {
       //wDoc.document.writeln("<div style=\"color:#900; font-weight:bold;\">Ersetzen des Ergebnisses aus der Abfrage der Unterkategorieen</div>");
       delete erg;
       erg = ergu;
     }
   }

     for (var j=0; j < obj.entries.length; j++)
     {
       var item = obj.entries[j];
       //wDoc.document.writeln("<div style=\"color:#070;\">" + item.header + " " + mDate(item.lastDatum,0) + "</div>");
       //showObject(item);
       var b = true;
       // Den Eintrag davor
       if (beforeEntry != undefined)
       {
         if (beforeEntry.date <= item.lastDatum) b = false;
       }
       //
       if (item.lastDatum <= erg.date) b = false;

       if (b)
       {
         erg.date = item.lastDatum;
         erg.author = item.lastAuthor;
         erg.thema = item.header;
         erg.threadID = item.lastThreadID;
         erg.katID = kat;
         //wDoc.document.writeln("<div style=\"color:#900; font-weight:bold;\">Ersetzen des Ergebnisses</div>");
         // Wegen der Sortierung der Entries kommen jetzt sowieso nur noch
         // ältere Beiträge
         j = obj.entries.length;
       }
     }

  //wDoc.document.writeln("KatID:" + obj.thisID + " " + mDate(erg.date,0) + " = " + mDate(erg.date,11).outerHTML + " " + erg.thema + "<br>");
  //wDoc.document.writeln("</div>");
  return erg;
}


var topicCounter = 0;

function newThreadStartHeader(e)
{
  node = getEventTarget(e);
  var res=/(.*)-(.*)-(.*)/gi;
  res.lastIndex=0;
  var gto = res.exec(node.name);
  if (gto != null)
  {
    sname = "topic-" + gto[2] + "-" + gto[3];
    tareas = document.getElementsByTagName("textarea");
    var area = undefined;
    for (var t = 0; t < tareas.length; t++)
    {
       if (sname==tareas[t].name) area = tareas[t];
    }
    if (area != undefined)
    {
      var submit = idf("tsubmit");
      addEvent(submit,"mouseover",ButtonEnter);
      addEvent(submit,"mouseout",ButtonLeave);
      submit.style.backgroundColor = styleOfBackground(gstylebu);
      submit.style.fontSize = "18pt";

      if (15 < node.value.length)
      {
        area.style.display = "";
        submit.style.display = "";
      }
      else
      {
        area.style.display = "none";
      }
    }
  }

}

function newThreadStart(kid)
{
  var tdfooter = idf("footer-" + kid);
  if (tdfooter != undefined)
  {
    topicCounter++;
    headline = domInput("",tdfooter);
    headline.style.backgroundColor = styleOfBackground(gstylefb);
    headline.style.width = "300pt";
    headline.maxLength = 250;
    headline.style.textAlign = "center";
    headline.style.fontSize = "14pt";
    headline.style.fontFamily = "sans-serif";
    headline.style.marginLeft = "15pt";
    headline.name = "headLine-" + kid + "-count" + topicCounter;
    addEvent(headline,"keyup",newThreadStartHeader);
    domBreak(tdfooter);
    topic = domTextarea("",tdfooter);
    topic.style.backgroundColor = styleOfBackground(gstylefb);
    topic.style.width = "300pt";
    topic.style.height = "100pt";
    topic.style.fontSize = "9pt";
    topic.style.fontFamily = "sans-serif";
    topic.style.display = "none";
    topic.style.marginLeft = "15pt";
    topic.name = "topic-" + kid + "-count" + topicCounter;
    domBreak(tdfooter);
    explain = domDiv(domText("Die Kopfzeile für den neuen Eintrag muß aus mindestens 15 Buchstaben bestehen."),tdfooter);
    domBreak(explain);
    domText("Erst ab 15 Buchstaben wird das Textfeld angezeigt",explain);
    domBreak(explain);
    domText("und ganz unten erscheint der Knopf zum Abschicken des Eintrages",explain);
    domBreak(explain); domBreak(explain);
    domText("Man kann mehrere Einträge gleichzeitig eingeben,",explain);
    domBreak(explain);
    domText("alle Einträge werden über denselben Knopf versendet",explain);
    explain.style.padding = "10pt";
  }
}

/*
  Galerie - DB

  * Alle Informationen über die Kommentare
  galerieData
  .id      = KommentarID - PK aus der Datenbank
  .mode    = Verwendung im Profil...
  .picid   = BildID - PK aus der Datenbank
  .userid
  .troll
  .trollNode
  .text
  .points
  .cutie
  .cutieX
  .cutieY

  galerieEntries
  .id
  .mode
  .comment
  .points
  .cb_mode
  .tf_comment
  .sl_points

  commentTargets
  .node   = DIV , in der das Formular mit den Daten
  .par[0] = Pic-ID

  * Die Cuties müssen dynamisch gesetzt werden
  * und vorallem, mit etwas Zeitverzug
  cutiesC
  .target = Node
  .x
  .y
  .cutie = Node, Kopie des Cutie-Img-Tag in einer DIV
  .cutieImg = Node, Kopie des Cutie-Img-Tag
  .cutieNr = Nummer
  .user = UserID
  .picid = PicID
  .mode
    = 0 für normal
    = 1 für shrinking
    = 2 für growing
  .xSize = Größe des Cuties
  .ySize = Größe des Cuties
  .size = prozentuelle Größe, also 100 für normal
  .status
    = 0 für Position berechnet
    = 1 für Position offen

*/

var galerieEntries = Array();
var galerieData = Array();
var commentTargets = Array();
var cutiesB = Array();
var cutiesC = Array();

function galerieComment(stag,data,text,waste)
{
  /*
    Die Kommentare der Galerie auseinanderfusseln
  */
  //alert ("tag:\n" + stag + "\n\ndata:\n" + data + "\n\ntext:\n" + text);
  comPar = explode(data,"___");
  //alert ("Pic-ID:\n" + comPar[0] + "\n\nKommentar-ID:\n" + comPar[1] + "\n\nUser-ID:\n" + comPar[2] + "\n\nUser-Name:\n" + comPar[3] + "\n\nDate:\n" + comPar[4] + "\n\nMode:\n" + comPar[5] + "\n\nPoints:\n" + comPar[6] + "\n\nTroll:\n" + comPar[7]);

  var muserID = getUserID();
  var msessionID = getSessionID();
  var mgstyle = getGstyle();
  var mmemberMode = getMembermode();

  var comS = idf("galComK-" + comPar[0]);
  //alert (comPar[7] + " " + muserID + " " + comPar[2])
  comS.style.textAlign = "center";
  // Der das Kommentar umfassende Node
  var comN = domFDiv(comS);
  // Trolltest
  if (comPar[7] == 0 || muserID == comPar[2]) comN.style.display = "block";
  else comN.style.display = "none";
  //showObject(tdNode);
  //comN.style.display = "block";
  comN.style.textAlign = "left";
  comN.style.border = "1pt solid black";
  comN.style.padding = "0pt";
  comN.style.margin = "2pt";
  comN.style.marginLeft = "15pt";
  comN.style.marginRight = "15pt";
  comN.style.width = "135pt";
  comN.style.overflow = "hidden";
  //if (comPar[7] == 1) comN.style.backgroundColor = "#f88";
  // Points
  if (0 < comPar[6])
  {
    var ptText = comPar[6];
    if (comPar[6]==1) ptText += " Punkt"; else ptText += " Punkte";
    var comNP = domFDiv(comN);
    domText(ptText,comNP);
    comNP.style.color = "#222";
    comNP.style.textAlign = "left";
    comNP.style.fontSize = "7pt";
    comNP.style.padding = "3pt";
    comNP.style.paddingTop = "1pt";
    comNP.style.styleFloat = "left";
    comNP.style.cssFloat = "left";
  }
  // Melden
  var comTr = domFDiv(comN);
  //comTrT = domRef(domImg("./hilfe/melden01.gif"),"JavaScript:gal_trolli("+ comPar[1] +");", comTr);
  comTrT = domImg("./hilfe/melden01.gif", comTr);
  //domText("galm-" + comPar[0] + "-" + comPar[1], comTr);
  comTr.id = "galm-" + comPar[0] + "-" + comPar[1];
  comTr.style.color = "#222";
  comTr.style.textAlign = "right";
  comTr.style.fontSize = "7pt";
  comTr.style.padding = "3pt";
  comTr.style.paddingTop = "1pt";
  comTr.style.styleFloat = "right";
  comTr.style.cssFloat = "right";
  addEvent(comTr, "mousedown", gal_troll);
  addEvent(comTr, "mouseover", gal_explain_troll_on);
  addEvent(comTr, "mouseout", gal_explain_troll_off);
  //addEvent(comTrT, "mousedown", gal_troll);
  // Name
  var comNU = domFDiv(comN);
  comNURef = domRef(domText(comPar[3]), "./profil.php?userID="+muserID+"&sessionID="+msessionID+"&userTo="+comPar[2]+"&gstyle="+mgstyle, comNU);
  comNURef.style.color = "#222";
  comNU.style.textAlign = "right";
  comNU.style.fontSize = "7pt";
  comNU.style.padding = "3pt";
  comNU.style.paddingTop = "1pt";
  // Haupttext
  if (0 < text.length)
  {
    var comNT = domDiv(domText(text),comN);
    comNT.style.padding = "8pt";
    comNT.style.paddingBottom = "2pt";
    comNT.style.paddingTop = "2pt";
    comNT.style.overflow = "hidden";
    comNT.style.backgroundColor = styleOfBackground(getGstylefb());
  }
  //print "<div style=\"border-top: 1pt solid black; padding: 2pt;\"><a href='./profil.php?userID=$userID&sessionID=$sessionID&userTo=$mid&gstyle=$gstyle'>$name</a></div>";
  //print "<div style=\"$gstylefb padding: 1pt; padding-bottom: 3pt;\">$descr</div>";

  // Cutie
  //  targetCutie ist der Rahmen
  //  cutie ist das Icon, das kopiert wird
  var targetCutie = idf("ccuties-" + comPar[0]);
  if (targetCutie != undefined)
  {
      // Trolltest
      if (comPar[7] == 0 || muserID == comPar[2])
      {
        var cObj = new Object();
        cObj.target = targetCutie;
        cObj.x = parseInt(comPar[9]);
        cObj.y = parseInt(comPar[10]);
        cObj.cutie = undefined;
        cObj.user = comPar[2];
        cObj.picid = parseInt(comPar[0]);
        cObj.xSize = 0;
        cObj.ySize = 0;
        cObj.mode = 0;
        cObj.size = 100;
        cObj.status = 0;
        cObj.cutieNr = parseInt(comPar[8]);
        cutiesC.push(cObj);
      }
  }

  // Kommentarfelder
  if (mmemberMode<10)
  {
    var nObj = new Object();
    nObj.id = comPar[1];
    nObj.picid = comPar[0];
    nObj.userid = comPar[2];
    nObj.points = comPar[6];
    nObj.mode = comPar[5];
    nObj.troll = comPar[7];
    nObj.cutie = comPar[8];
    nObj.cutieX = comPar[9];
    nObj.cutieY = comPar[10];
    nObj.trollNode = comTrT;
    nObj.headnode = comN;
    if (text == undefined) text = "";
    nObj.text = text;
    galerieData.push(nObj);
  }
}

// Ein Bild wurde geladen
// aus irgendeinem Grund schlägt dieser Event nicht immer an.
function galerie_iread(e)
{
  var node = getEventTarget(e);
}

// die Kommentarliste steht in galCom-all
// die einzelnen Ziele in galComT-<n>

function galerieSetup()
{
   // images laden
   var itar=/ccuties\-(\w*)/gi;
   var itardiv = document.getElementsByTagName("div");
   for (var i = 0; i < itardiv.length; i++)
   {
     itar.lastIndex=0;
     var gto = itar.exec(itardiv[i].id);
     if (gto != null)
     {
       var isrc = itardiv[i].firstChild.data;
       removeAllChildren(itardiv[i]);
       var iimg = domImg(isrc , itardiv[i]);
       iimg.id = "gPic-" + gto[1];
       itardiv[i].style.display = "";
       addEvent(iimg,"load",galerie_iread);
     }
   }
   jscmdWrite("galerieSetup Images set", 6, 1);

   // cuties verwalten
   var ptar=/picutie\-(\w*)/gi;
   var ptardiv = document.getElementsByTagName("div");
   var h = 0;
   for (var i = 0; i < ptardiv.length; i++)
   {
     ptar.lastIndex=0;
     var gto = ptar.exec(ptardiv[i].id);
     if (gto != null)
     {
       var isrc = ptardiv[i].childNodes[0].data;
       var iname = ptardiv[i].childNodes[2].data;

       var nObj = new Object();
       nObj.id = gto[1];
       nObj.source = isrc;
       nObj.text = iname;
       nObj.loadRequest = false;
       nObj.elem = null;
       cutiesB.push(nObj);
     }
   }
   jscmdWrite("galerieCuties read", 6, 1);

   // alle Felder mit der Formularmaske versehen...
   commentTargets = ids("galComT",2);
   var muserID = getUserID();
   var mmemberMode = getMembermode();
   for (var i=0; i < commentTargets.length; i++)
   {
     // Das Feld für das Eingabefeld
     var meCom = domFDiv(commentTargets[i].node);
     meCom.id = "galComE-" + commentTargets[i].par[0];
     commentTargets[i].cif = meCom;

     // Das Feld für die Kommentare
     var mCom = domFDiv(commentTargets[i].node);
     mCom.style.clear = "both";
     mCom.id = "galComK-" + commentTargets[i].par[0];
   }

   jscmdWrite("galerieSetup TargetDivs ready", 6, 1);

   refreshAllBGColors();

   // Button-Highligthing und href-schema
   var res=/(.*)\-(.*)/gi;
   var lres=/#(.)(.*)/gi;
   var taga = document.getElementsByTagName("a");
   for (var i = 0; i < taga.length; i++)
   {
     res.lastIndex=0;
     lres.lastIndex=0;
     var gto = res.exec(taga[i].id);
     if (gto != null)
     {
       // cut button
       if (gto[1] == "picu")
       {
          //taga[i].style.border = "2pt solid red";
          addEvent(taga[i], "mouseover", gal_explain_cut_1);
          addEvent(taga[i], "mouseout", gal_explain_cut_0);
          taga[i].className = "gldrz";
          taga[i].style.background = styleOfBackground(getGstylebu());
          var nlink = taga[i].href + "frame.php?action=piccut&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&picid=" + gto[2] + "&start=" + gs_start + "&galid=" + gs_galerieID;
          taga[i].href = nlink;
       }
       // comment button
       if (gto[1] == "gacom")
       {
          //taga[i].style.border = "2pt solid blue";
          addEvent(taga[i], "mouseover", ButtonEnter);
          addEvent(taga[i], "mouseout", ButtonLeave);
          taga[i].className = "buttonLDRZ";
          taga[i].style.background = styleOfBackground(getGstylebu());
          taga[i].style.fontSize = "8pt";
          taga[i].href = "JavaScript:gal_form_comment(" + gto[2] + ");";
       }
     }
     else
     {
       var gtl = lres.exec(taga[i].href);
       if (gtl != null)
       {
         // ownWindow Graphic
         if (gtl[1] == "a")
         {
           taga[i].href = "JavaScript:ownwindow(0,'./frame.php?action=epic&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&picid=" + gtl[2] + "');";
         }
       }
     }
   }

   jscmdWrite("galerieSetup HREFs ready", 6, 1);

   galCom = idf("galCom-all");
   // Die ganzen Galeriekommentare werden ausgewertet über die Funktion galerieComment
   if (galCom != undefined)
   {
     dataExtract (galCom, "gal", galerieComment);
   }
   jscmdWrite("galerieSetup Comments read ready", 6, 1);

   // Pokale erstellen
   var pokd = domImg("./hilfe/pokaldi01.gif");
   pokd.border = "0";
   var pokg = domImg("./hilfe/pokal01g.gif");
   pokg.border = "0";
   var poks = domImg("./hilfe/pokal01s.gif");
   poks.border = "0";
   var pokb = domImg("./hilfe/pokal01b.gif");
   pokb.border = "0";

   var pres=/(.*)-(.*)-(.*)/gi;
   var bres=/clickPic\-(\w*)/gi;
   var tagdiv = document.getElementsByTagName("div");
   for (var i = 0; i < tagdiv.length; i++)
   {
     pres.lastIndex=0;
     bres.lastIndex=0;
     var gtp = pres.exec(tagdiv[i].id);
     if (gtp != null)
     {
       // Pokale
       if (gtp[1] == "gPk")
       {
         var pScore = parseInt(gtp[3]);
         tagdiv[i].classname = "gPokal1";
         var pokal_innerDiv = domFDiv(tagdiv[i] , "gPokal2");
         while (124 < pScore)
         {
           pokal_innerDiv.appendChild(domCopy(pokd));
           domText(" " , pokal_innerDiv);
           pScore -= 125;
         }
         while (24 < pScore)
         {
           pokal_innerDiv.appendChild(domCopy(pokg));
           domText(" " , pokal_innerDiv);
           pScore -= 25;
         }
         while (4 < pScore)
         {
           pokal_innerDiv.appendChild(domCopy(poks));
           domText(" " , pokal_innerDiv);
           pScore -= 5;
         }
         while (0 < pScore)
         {
           pokal_innerDiv.appendChild(domCopy(pokb));
           domText(" " , pokal_innerDiv);
           pScore -= 1;
         }

           //tagdiv[i].appendChild(domImg("./hilfe/pokaldi01.gif"));
           //tagdiv[i].appendChild(domCopy(pokd));
           //domBreak(tagdiv[i]);
       }
     }

     // Bilder
     var gto = bres.exec(tagdiv[i].id);
     if (gto != null)
     {
       addEvent(tagdiv[i], "mousedown", clickPic);
       addEvent(tagdiv[i], "mouseover", cutiesRemove);
       addEvent(tagdiv[i], "mouseout", cutiesRebuild);
     }
   }
   jscmdWrite("galerieSetup Score and Events ready", 6, 1);
}


function galerieMenuSet()
{
   // Einzelne Galerieen
   // Die Informationen bestehen aus id+Name+Datum+Bilder#
   // als Dropdown an aagal hängen
   jscmdWrite("galerieMenuSet Start", 3);
   var allaG = idf("aagal");
   var allG = idf("agals");
   var allGalsCollection = Array();
   var agare=/(\d*)\+([\w\-öäüßÄÖÜ ]*)\+(\d*)\+(\d*)#(.*)$/gi;
   var maxYear = 1000;
   var minYear = 3000;
   if (allG != undefined)
   {
     var data = allG.firstChild.data;
     while (1 < data.length)
     {
       agare.lastIndex=0;
       var gta = agare.exec(data);
       if (gta != null)
       {
          var tn = new Object();
          tn.id = gta[1];
          tn.name = gta[2];
          tn.date = gta[3];
          var d = new Date(parseInt(gta[3]) * 1000);
          var dyear = d.getYear();
          if (dyear < 1900) dyear += 1900;
          var dmonth = d.getMonth()+1;
          if (dyear < minYear) minYear = dyear;
          if (maxYear < dyear) maxYear = dyear;
          tn.year = dyear;
          tn.month = dmonth;
          tn.sumPictures = gta[4];
          allGalsCollection.push(tn);
          data = gta[5];
       }
       else data = "";
     }
   }
   jscmdWrite("Data read", 6,1);

   // Die Übersicht über die Galerieen aufbauen
   // Der Aufbau ist mehrstufig (Jahr - Monat - Party)
   var monthNames = Array ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
   var menuLfirst = "160pt";
   if (allaG != undefined)
   {
     var aErg = domFDiv(document.getElementById("mgal"), "fr");
     aErg.style.padding = "1px";
     aErg.style.clear = "both";
     aErg.style.width = menuLfirst;
     //aErg.style.background = styleOfBackground(getGstylekp());
     //aErg.style.background = "#00f";
     //var aErg = domFDiv(allaG);
     addFlyMenu(allaG, aErg, 0, 4);

     // Die 6 letzten Galerieen
     var maxGalerie = (allGalsCollection.length < 6)?allGalsCollection.length:6;
     for (i = 0; i < maxGalerie; i++)
     {
       var elem = allGalsCollection[i];
       // ev ist das Element der Galerie
       // - eb UnterElement für das Datum
       // - er UnterElement für dis Anzahl der Bilder
       var ev = domFDiv(aErg);
       var eb = domFDiv(ev);
       var er = domFDiv(ev);
       domText (mDate(parseInt(elem.date), 2), eb);
       domText (elem.name, ev);
       domText (elem.sumPictures + " Bilder", er);
       ev.style.padding = "2px";
       ev.style.margin = "0px";
       ev.style.border = "1px solid black";
       ev.style.fontFamily = "sans-serif";
       eb.className = "fr";
       eb.style.paddingLeft = "4px";
       eb.style.paddingRight = "4px";
       eb.style.fontSize = "7pt";
       eb.style.clear = "both";
       er.className = "fr";
       er.style.paddingLeft = "4px";
       er.style.paddingRight = "4px";
       er.style.fontSize = "7pt";
       addFlyAction(ev, "JavaScript:galGoto(\"pict_" + elem.id + "\");",3);
     }

     for (var y = maxYear; minYear <= y; y--)
     {
       var c = 0;
       for (var i = 0; i < allGalsCollection.length; i++)
       {
         if (allGalsCollection[i].year == y) c++;
       }
       if (0 < c)
       {
         // ev ist der Menüpunkt
         // ec ist die Angabe 'Anzahl Galerieen'
         // etet ist nur eingefügt, um einen Fehler im Internet-Explorer bzgl. Floats zu umgehen
         var ev = domFDiv(aErg);
         var etet = domFDiv(ev);
         var ec = domFDiv(ev);
         domText (c + " Galerieen", ec);
         domText ("Archiv " + y, ev);
         //aErg.className = "fr";
         //ev.className = "fr";
         //ev.style.width = menuLfirst;
         ev.style.margin = "0px";
         ev.style.paddingLeft = "5px";
         ev.style.border = "1px solid black";
         ev.style.clear = "both";
         ev.style.fontFamily = "sans-serif";
         //ev.className = "fl";
         ec.className = "fr";
         //ec.style.clear = "both";
         //ev.style.clear = "both";
         //etet.style.clear = "both";
         ec.style.fontSize = "7pt";
         ec.style.padding = "1pt";
         ec.style.paddingRight = "4pt";
         var mErg = addCFlyMenu(ev, 0, 4);
         mErg.className = "fr";
         mErg.style.border = "1px solid black";
         mErg.style.clear = "both";
         mErg.style.padding = "1px";
         mErg.style.width = "120pt";
         mErg.style.background = styleOfBackground(getGstylebu());
         for (var m = 1; m < 13; m++)
         {
           var mc = 0;
           for (var i = 0; i < allGalsCollection.length; i++)
           {
             if (allGalsCollection[i].year == y && allGalsCollection[i].month == m) mc++;
           }
           if (0 < mc)
           {
             // etem ist nur eingefügt, um einen Fehler im Internet-Explorer bzgl. Floats zu umgehen
             var em = domFDiv(mErg);
             var etem = domFDiv(em);
             var ecm = domFDiv(em);
             if (1 < mc) domText (mc + " Galerieen", ecm);
             else domText ("1 Galerie", ecm);
             domText (monthNames[m-1], em);
             em.style.margin = "0px";
             em.style.padding = "1px";
             em.style.paddingLeft = "5px";
             em.style.border = "1px solid black";
             em.style.fontFamily = "sans-serif";
             em.style.background = styleOfBackground(getGstylebu());
             ecm.className = "fr";
             ecm.style.fontSize = "7pt";
             ecm.style.padding = "1px";
             ecm.style.paddingRight = "4pt";
             var pErg = addCFlyMenu(em, 0, 4);
             pErg.className = "fr";
             pErg.style.border = "1px solid black";
             pErg.style.width = "170pt";
             pErg.style.clear = "both";
             pErg.style.padding = "1px";
             pErg.style.background = styleOfBackground(getGstylebu());
             for (var i = 0; i < allGalsCollection.length; i++)
             {
               if (allGalsCollection[i].year == y && allGalsCollection[i].month == m)
               {
                  var elem = allGalsCollection[i];
                  var ep = domFDiv(pErg);
                  var eb = domFDiv(ep);
                  var er = domFDiv(ep);
                  domText (mDate(parseInt(elem.date), 2), eb);
                  domText (elem.name, ep);
                  domText (elem.sumPictures + " Bilder", er);
                  ep.style.padding = "1pt";
                  ep.style.paddingLeft = "5pt";
                  ep.style.border = "1px solid black";
                  ep.style.fontFamily = "sans-serif";
                  ep.style.background = styleOfBackground(getGstylebu());
                  eb.className = "fr";
                  eb.style.fontSize = "7pt";
                  er.className = "fr";
                  er.style.paddingLeft = "4px";
                  er.style.paddingRight = "4px";
                  er.style.fontSize = "7pt";
                  addFlyAction(ep, "JavaScript:galGoto(\"pict_" + elem.id + "\");",3);
               }
             }
             //domFDiv (pErg, "fc");
           }
           //domFDiv (mErg, "fc");
         }
       }
     }
     // Die besonderen Galerieen
     var ev = domFDiv(aErg);
     ev.style.padding = "1px";
     ev.style.clear = "both";
     //ev.style.width = menuLfirst;
     ev.style.border = "1px solid black";
     ev.style.fontFamily = "sans-serif";
     ev.style.fontSize = "8pt";
     domText ("Top 10 Bilder", ev);
     addFlyAction(ev, "JavaScript:galGoto(\"topten\");",3);
     /*
     var ev = domFDiv(aErg);
     ev.style.padding = "1px";
     ev.style.width = menuLfirst;
     ev.style.borderTop = "1px solid black";
     ev.style.fontFamily = "serif";
     ev.style.fontSize = "8pt";
     domText ("Die meisten Kommentare", ev);
     addFlyAction(ev, "JavaScript:galGoto(\"comments\");",3);
     */
     var ev = domFDiv(aErg);
     ev.style.padding = "1px";
     ev.style.clear = "both";
     //ev.style.width = menuLfirst;
     ev.style.border = "1px solid black";
     ev.style.fontFamily = "sans-serif";
     ev.style.fontSize = "8pt";
     domText ("Deine Favoriten", ev);
     addFlyAction(ev, "JavaScript:galGoto(\"favorits\");",3);

     aErg.style.border = "1pt solid black";
     aErg.style.background = styleOfBackground(getGstylebu());
     allaG.style.background = styleOfBackground(getGstylebu());
     allaG.style.color = "#000";
   }
   jscmdWrite("Menu Set", 6,1);
   flyMenuCalculate();
   jscmdWrite("galerieMenuSet Ready", 3);
}

// Die Cuties müssen absolut gesetzt werden
// bei einer dynamischen Veränderung des Bildschirms
// setzt diese Routine die Cuties wieder an die richtige Stelle
//
// Hinzugekommen ist, daß alle Cuties auf dem Bild verschwinden,
// auf dem die Maus sich gerade befindet

function cutieLoadRequest (id)
{
  // holt das Cutie-Element
  // falls kein Element geladen wurde, wird der Ladevorgang angestoßen
  // das Ergebniss ist ein Verweis auf das Element
  // oder undefined, falls das Element nicht existiert
  var erg = undefined;
  for (var i = 0; i < cutiesB.length; i++)
  {
    if (cutiesB[i].id == id)
    {
      if (!cutiesB[i].loadRequest)
      {
         // Es wurde noch keine Anfrage nach dem Image gestellt
         // also Image erstellen.
         cutiesB[i].loadRequest = true;
         cutiesB[i].elem = domImg(cutiesB[i].source);
         //jscmdWrite("cutie request set for " + id + " (" + cutiesB[i].text + ")", 6, 3);
      }
      else
      {
        if (cutiesB[i].elem.complete)
        {
          erg = cutiesB[i].elem;
          //jscmdWrite("cutie complete " + id + " (" + cutiesB[i].text + ")", 6, 3);
        }
        else
        {
          //jscmdWrite("cutie incomplete " + id + " (" + cutiesB[i].text + ") " + cutiesB[i].elem + " " + cutiesB[i].elem.complete, 6, 3);
        }
      }
    }
  }
  return erg;
}

var cutieVisible = true;
function galerieCutieSet(fast)
{
  jscmdWrite("galerieCutieSet Start", 0,1);
  if (fast == undefined) fast = 1000;
  for (i=0; i < cutiesC.length; i++)
  {
    cutiesC[i].status = 1;
  }
  window.setTimeout("galerieCutieSetLoop()",fast);
  jscmdWrite("galerieCutieSet Ende", 0,1);
}

function galerieCutieSetLoop()
{
  jscmdWrite("galerieCutieSetLoop Start", 6, 2);
  var reLoop = 0;
  var notDone = false;
  var aErg = document.getElementById("mgal");
  //var aErg = document.body;
  for (i=0; i < cutiesC.length; i++)
  {
    var cutie = cutiesC[i];
    if (cutiesC[i].status == 1)
    {
      // cutie.cutie = image-Kopie
      // cutie.cutieNr = Nummer
      // solange das Cutie-Image aber nicht hochgeladen wurde
      //  (pcu == undefined) wird der Cutie nicht gesetzt
      if (cutie.cutie == undefined && 0 < cutie.cutieNr)
      {
        var pcu = cutieLoadRequest (cutie.cutieNr);
        if (pcu != undefined)
        {
          var cutieImg = domCopy(pcu);
          var cutieCopy = domDiv(cutieImg,aErg);
          cutieCopy.style.position = "absolute";
          cutieCopy.style.top =  "-2000px";
          cutieCopy.style.left = "-2000px";
          cutieCopy.style.display = "";
          cutie.cutie = cutieCopy;
          cutie.cutieImg = cutieImg;
          cutie.xSize = cutieImg.clientWidth;
          cutie.ySize = cutieImg.clientHeight;
        }
        else
        {
          // es fehlt noch ein Cutie
          notDone = true;
        }
      }
      var targetImg = idf("gPic-" + cutie.picid);
      if (cutie.cutie != undefined && targetImg != undefined)
      {
        if (0 < cutie.cutieNr && cutieVisible)
        {
          reLoop++;
          var koor = getAbsolutPositionOf(cutie.target);
          cutie.cutie.style.top = (koor.y + cutie.y) + "px";
          cutie.cutie.style.left = (koor.x + cutie.x) + "px";
        }
        else
        {
          cutie.cutie.style.top = "-2000px";
        }
        cutiesC[i].status = 0;
      }
      if (20 < reLoop)
      {
        i = cutiesC.length;
        notDone = true;
      }
    }
    //alert (koor.y + "+" + cutie.y + " " + koor.x + "+" + cutie.x);
  }
  if (notDone) window.setTimeout("galerieCutieSetLoop()",1000);
  jscmdWrite("galerieCutieSetLoop Ende", 6, 2);
}

function gal_form_comment(picID)
{
   // Eingabefeld für die Galerie erstellen
   // in dem commentTargets[i] sind alles notwendigen Daten gespeichert
   //    node   = die Zieladresse
   //    par[0] = Pic-ID

   var muserID = getUserID();
   var mmemberMode = getMembermode();
   var b = false;
   var index = 0;
   for (i=0; i < commentTargets.length; i++)
   {
     if (commentTargets[i].par[0] == picID)
     {
       b = true;
       index = i;
     }
   }

   if (b)
   {
     // cif ist das Kommetarfeld
     var mInput = domFDiv(commentTargets[index].cif);
     var id = commentTargets[index].par[0];
     var galcomButton = idf ("gacom-" + id);
     if (galcomButton != undefined) galcomButton.style.display = "none";

     mInput.id = "galComI-" + id;
     if (mmemberMode<10)
     {
       var picElem = new Object;
       picElem.id = commentTargets[index].par[0];
       var points = 0;
       var comment = "";
       var mode = 0;
       cutie = 0;
       cutieX = 0;
       cutieY = 0;
       //
       // Suchen des Kommentars zu dieser Galerie, falls ein Kommentar dazu bereits existiert,
       // dann kommt dieses Kommentar in das Eingabefeld
       for (j=0; j < galerieData.length; j++)
       {
          if (galerieData[j].picid == id && galerieData[j].userid == muserID)
          {
            points = galerieData[j].points;
            mode = galerieData[j].mode;
            comment = galerieData[j].text;
            cutie = galerieData[j].cutie;
            cutieX = galerieData[j].cutieX;
            cutieY = galerieData[j].cutieY;
          }
       }
       picElem.mode = mode;
       picElem.comment = comment;
       picElem.points = points;
       picElem.cutie = cutie;
       picElem.cutieX = cutieX;
       picElem.cutieY = cutieY;
       domBreak(mInput);
       // Kommentarfeld
       var mInputi = domInputName(comment, "piccom-com-" + id ,mInput);
       //mInputi.name = "piccom-com-" + id;

       mInputi.style.backgroundColor = styleOfBackground(gstylefb);
       mInputi.style.width = "180px";
       //mInputi.style.border = "1pt solid black";
       mInputi.style.margin = "5pt";
       mInputi.style.marginLeft = "15pt";
       mInputi.style.fontSize = "8pt";
       domBreak(mInput);
       // Punktefeld
       var mInputp = domSelectName(Array("0 Punkte","1 Punkt ","2 Punkte","3 Punkte","4 Punkte","5 Punkte","6 Punkte","7 Punkte","8 Punkte","9 Punkte","10 Punkte"),points,"piccom-points-" + commentTargets[index].par[0],mInput);
       //mInputp.name = "piccom-points-" + commentTargets[i].par[0];
       mInputp.style.backgroundColor = styleOfBackground(gstylefb);
       mInputp.style.width = "70px";
       mInputp.style.margin = "5pt";
       mInputp.style.marginLeft = "15pt";
       mInputp.style.fontSize = "8pt";
       mInputp.style.textAlign = "right";
       //domBreak(mInput);

       // Cutiefeld
       // Das Cutiefeld wird aus den vorhandenen Cutie-Images erzeugt
       var cutieIDC = Array();
       var cutieDescr = Array();
       cutieIDC.push(0);
       cutieDescr.push("nichts");
       for (var i = 0; i < cutiesB.length; i++)
       {
         cutieIDC.push(cutiesB[i].id);
         cutieDescr.push(cutiesB[i].text);
       }

       var mCutiep = domSelectNameValue(cutieDescr, cutieIDC,cutie,"piccom-cutie-" + commentTargets[index].par[0],mInput);
       mCutiep.id = "cutieSelector-" + id;
       mCutiep.style.backgroundColor = styleOfBackground(gstylefb);
       mCutiep.style.width = "70px";
       mCutiep.style.margin = "5pt";
       mCutiep.style.marginLeft = "15pt";
       mCutiep.style.fontSize = "8pt";
       mCutiep.style.textAlign = "left";
       addEvent(mCutiep, "change", cutieChange);
       domBreak(mInput);

       // Koordinaten (verdeckt)
       var mCutiepX = domInputName(cutieX, "piccom-cutieX-" + commentTargets[index].par[0] ,mInput);
       var mCutiepY = domInputName(cutieY, "piccom-cutieY-" + commentTargets[index].par[0] ,mInput);
       mCutiepX.style.display = "none";
       mCutiepY.style.display = "none";

       // Übersicht über alle Sticker
       var comTr = domFDiv(mInput);
       //comTrT = domRef(domImg("./hilfe/melden01.gif"),"JavaScript:gal_trolli("+ comPar[1] +");", comTr);
       comTrT = domText("Sticker", comTr);
       comTr.id = "galia-" + commentTargets[index].par[0];
       comTr.style.color = "#222";
       comTr.style.textAlign = "right";
       comTr.style.fontSize = "7pt";
       comTr.style.padding = "3pt";
       comTr.style.paddingTop = "1pt";
       comTr.style.paddingRight = "8pt";
       comTr.style.styleFloat = "right";
       comTr.style.cssFloat = "right";
       //addEvent(comTr, "mousedown", gal_troll);
       addEvent(comTr, "mouseover", gal_sticker_on);
       addEvent(comTr, "mouseout", gal_sticker_off);


       // Checkbox
       var mInputc = domCheckboxName("1","piccom-mode-" + id,mInput,(mode==1));
       //mInputc.name = "piccom-mode-" + commentTargets[i].par[0];
       domText("Im Profil anzeigen",mInput);
       picElem.cb_mode = mInputc;
       picElem.tf_comment = mInputi;
       picElem.sl_points = mInputp;
       picElem.sl_cutie = mCutiep;
       galerieEntries.push(picElem);
       // need this for Opera !
       // while (mInputp.value != 0) mInputp.value=0;
     }
   }
   // Durch das Öffnen des Kommentarfeldes haben sich eventuell
   // einige absolute Elemente verschoben
   galerieCutieSet();
}

function gal_trolli(id)
{
  alert (id + " " + galerieData.length);
  for (var i = 0; i < galerieData.length; i++)
  {
    if (galerieData[i].id == id)
    {
      alert ('found');
      if (galerieData[i].troll == 0)
      {
        galerieData[i].headnode.style.backgroundColor = "#faa";
        galerieData[i].troll = 1;
      }
      else
      {
        galerieData[i].headnode.style.backgroundColor = styleOfBackground(gstylefb);
        galerieData[i].troll = 0;
      }
    }
  }
}

function gal_troll(event)
{
  // Melden
  var alm = getEventTarget(event);
  var comHead = getParentStartingWith(alm, "galm");

  var picid = 0;
  var comid = 0;
  var res=/galm\-(\d*)\-(\d*)/gi;
  res.lastIndex=0;
  var gto = res.exec(comHead.id);
  if (gto != null)
  {
    picid = gto[1];
    comid = gto[2];
  }
  for (var i = 0; i < galerieData.length; i++)
  {
    if (galerieData[i].picid == picid && galerieData[i].id == comid)
    {
      if (galerieData[i].troll == 0)
      {
        galerieData[i].headnode.style.backgroundColor = "#faa";
        galerieData[i].troll = 1;
      }
      else
      {
        galerieData[i].headnode.style.backgroundColor = styleOfBackground(gstylefb);
        galerieData[i].troll = 0;
      }
    }
  }

}

function galFindPict (event)
{
  var alm = getEventTarget(event);
  var node = alm;
  var bres=/(?:gPic|cuties|clickPic)\-(\w*)/gi;
  var picid = 0;
  while (node.nodeName != "BODY" && picid == 0)
  {
    bres.lastIndex=0;
    var gto = bres.exec(node.id);
    if (gto != null) picid = gto[1];
    else node = node.parentNode;
  }
  var tn = new Object();
  tn.id = parseInt(picid);
  tn.node = node;
  return tn;
}

function cutiesRemove (event)
{
  var t = galFindPict (event);
  if (0 < t.id)
  {
    for (var i = 0; i < cutiesC.length; i++)
    {
      if (cutiesC[i].picid == t.id)
      {
        cutiesC[i].mode = 1;
      }
    }
  }
  if (!resizeActiv) cutieResize();
}


function cutiesRebuild (event)
{
  var t = galFindPict (event);
  if (0 < t.id)
  {
    for (var i = 0; i < cutiesC.length; i++)
    {
      if (cutiesC[i].picid == t.id)
      {
        cutiesC[i].mode = 2;
      }
    }
  }
  if (!resizeActiv) cutieResize();
}

var resizeActiv = false;
function cutieResize()
{
  var userID = getUserID();
  var b = false;
  for (var i = 0; i < cutiesC.length; i++)
  {
    if (cutiesC[i].mode == 1 && 0 < cutiesC[i].size && cutiesC[i].user != userID)
    {
      var xSize = cutiesC[i].xSize;
      var ySize = cutiesC[i].ySize;
      var size = cutiesC[i].size;
      size -= 10;
      if (size < 0) size = 0;
      cutiesC[i].size = size;
      if (cutiesC[i].cutieImg != undefined)
      {
        cutiesC[i].cutieImg.style.height =  (size / 100 * ySize) + "px";
        if (size == 0) cutiesC[i].cutieImg.style.display = "none";
      }
      b = true;
    }
    if (cutiesC[i].mode == 2 && cutiesC[i].size < 100 && cutiesC[i].user != userID)
    {
      var xSize = cutiesC[i].xSize;
      var ySize = cutiesC[i].ySize;
      var size = cutiesC[i].size;
      size += 10;
      if (100 < size) size = 100;
      cutiesC[i].size = size;
      if (cutiesC[i].cutieImg != undefined)
      {
        cutiesC[i].cutieImg.style.display = "";
        cutiesC[i].cutieImg.style.height =  (size / 100 * ySize) + "px";
      }
      b = true;
    }
  }
  if (b)
  {
    window.setTimeout("cutieResize()",20);
    resizeActiv = true;
  }
  else resizeActiv = false;
}

function clickPic(event)
{
  // Wenn dazu ein Kommentarfeld zu diesem Bild angelegt ist,
  // dann positioniert ein Mausklick auf dem Bild das Cutie
  // ansonsten wird das große Bild geöffnet
  var inWork = false;
  var alm = getEventTarget(event);
  var node = alm;
  var bres=/(?:gPic|cuties|clickPic)\-(\w*)/gi;
  var picid = 0;
  while (node.nodeName != "BODY" && picid == 0)
  {
    bres.lastIndex=0;
    var gto = bres.exec(node.id);
    if (gto != null) picid = gto[1];
    else node = node.parentNode;
  }

  for (var i=0; i<galerieEntries.length;i++)
  {
    if (galerieEntries[i].id == picid) inWork = true;
  }
  if (inWork)
  {
    // feststellen, was für ein Cutie-Icon gesetzt werden soll
    var selCutie = idn("piccom-cutie-" + picid);
    var cutieID = selCutie.value;
    if (0 < cutieID)
    {
      var koor = getAbsolutPositionOf(node);
      var pcu = idf("pcutie-" + cutieID);
      var cutieWidth = 0;
      var cutieHeight = 0;
      if (pcu != undefined)
      {
        cutieWidth = pcu.offsetWidth;
        cutieHeight = pcu.offsetHeight;
      }
      var posX = Math.round(event.clientX + document.body.scrollLeft - koor.x - cutieWidth / 2);
      var posY = Math.round(event.clientY + document.body.scrollTop - koor.y - cutieHeight / 2);

      var cutieX = idn("piccom-cutieX-" + picid);
      var cutieY = idn("piccom-cutieY-" + picid);
      if (cutieX != undefined && cutieY != undefined)
      {
        cutieX.value = posX;
        cutieY.value = posY;
      }

      // Suchen des Icons
      var pCutieExists = false;
      for (var j=0; j<cutiesC.length;j++)
      {
        if (cutiesC[j].user == userID && cutiesC[j].picid == picid)
        {
           pCutieExists = true;
           cutiesC[j].x = posX;
           cutiesC[j].y = posY;
        }
      }
      // Icon neu anlegen
      if (!pCutieExists)
      {
        var cObj = new Object();
        cObj.target = node;
        cObj.x = posX;
        cObj.y = posY;
        cObj.cutie = undefined;
        cObj.user = userID;
        cObj.picid = picid;
        cObj.status = 0;
        cObj.cutieNr = cutieID;
        cutiesC.push(cObj);
      }
      galerieCutieSet();
    }
  }
  else
  {
    ownwindow(0,"./frame.php?action=epic&userID=" + getUserID() + "&sessionID=" + getSessionID() + "&gstyle=" + getGstyle() + "&picid=" + picid);
  }
}

function cutieChange(event)
{
  var alm = getEventTarget(event);

  var re=/piccom\-cutie\-(\w*)/gi;
  var picid = 0;
  re.lastIndex=0;
  var gto = re.exec(alm.name);
  if (gto != null)
  {
    picid = gto[1];
    for (var j=0; j<cutiesC.length;j++)
    {
      if (cutiesC[j].user == userID && cutiesC[j].picid == picid)
      {
        if (cutiesC[j].cutie != undefined) cutiesC[j].cutie.style.top = "-2000px";
        cutiesC[j].cutie = undefined;
        cutiesC[j].cutieNr = alm.value;
      }
    }
    galerieCutieSet();
  }
}

// geht zu der angegeben Galerie
// führt vorher aber die notwendigen Checks durch
// gal = pict_<nr> für eine bestimmte Galerie
//     = topten
//     = comments
//     = favorits
function galGoto(gal)
{
  miniThreadCheck();
  galerieCheck();
  hrefsubmit(0,'ka',gal);
}

function galerieCheck()
{
  jscmdWrite("galerieCheck Start", 0, 0);
  // Test auf Einträge, die nicht geändert wurden
  // erstmal rausgenommen wegen der cuties
  /*
  for (var i=0; i<galerieEntries.length;i++)
  {
    var node=galerieEntries[i];
    //alert (node.tf_comment.value + " = " + node.comment + " = " + (node.tf_comment.value==node.comment));

    if (node.tf_comment.value==node.comment && node.cb_mode.checked==(node.mode==1) && node.sl_points.value==node.points)
    {
        node.tf_comment.parentNode.removeChild(node.tf_comment);
        node.cb_mode.parentNode.removeChild(node.cb_mode);
        node.sl_points.parentNode.removeChild(node.sl_points);
    }
  }
  */
  var trolli = idn("trollify");
  if (trolli != undefined)
  {
    var erg = "";
    var erx = "";
    for (var i=0; i<galerieData.length;i++)
    {
      if (galerieData[i].troll == 1)
      {
        erg += erx + String(galerieData[i].id);
        erx = "+";
      }
    }
    trolli.value = erg;
  }

   // alle Input-Elemente anzeigen
   var re=/piccom\-cutie.\-(.*)/gi;
   var tagi = document.getElementsByTagName("input");
   for (var i = 0; i < tagi.length; i++)
   {
     re.lastIndex=0;
     var gto = re.exec(tagi[i].name);
     if (gto != null)
     {
       tagi[i].style.display = "";
     }
   }
  jscmdWrite("galerieCheck Ende", 0, 0);
}

function gal_explain_troll_on(event)
{
  var alm = getEventTarget(event);
  attach_flying_div (alm, idf("how2troll"));
}

function gal_explain_troll_off(event)
{
  var alm = getEventTarget(event);
  // ist definiert in dom.js
  flying_div_off();
}

function gal_explain_cut_1(event)
{
  var alm = getEventTarget(event);
  attach_flying_div (alm, idf("how2cut"));
  alm.style.backgroundColor = styleOfBackground(gstylehi);
}

function gal_explain_cut_0(event)
{
  var alm = getEventTarget(event);
  flying_div_off();
  alm.style.backgroundColor = styleOfBackground(gstylebu);
}

var sticker_parent_id = 0;
function gal_sticker_on(event)
{
  var alm = getEventTarget(event);
  sticker_parent_id = alm.id;
  attach_flying_div (alm, idf("allSticker"), 2);
  // Sticker durchgehen
  var asr = idf("allStickerSub")
  // Test, ob alle Substicker gesetzt sind
  for (var j = 0; j < cutiesB.length; j++)
  {
    var am = idf("tsticker-" +  cutiesB[j].id);
    if (am == undefined)
    {
      var nd = domFDiv(asr);
      nd.id = "tsticker-" +  cutiesB[j].id;
      nd.style.styleFloat = "right";
      nd.style.cssFloat = "right";
      nd.style.border = "0px solid black";
    }
  }
  window.setTimeout("galerieStickerSetLoop()",100);
}

function gal_sticker_off(event)
{
  var alm = getEventTarget(event);
  flying_div_off();
}

function galerieStickerSetLoop()
{
  jscmdWrite("galerieStickerLoop Start", 0, 0);
  var notDone = false;
  for (var j = 0; j < cutiesB.length; j++)
  {
    // Aller Sticker-Container durchgehen
    var am = idf("tsticker-" +  cutiesB[j].id);
    if (am != undefined)
    {
      // Wenn der Container vorhanden ist,
      // testen, ob der Sticker angelegt wurde
      var amImg = idf("tstickerto-" +  cutiesB[j].id);
      if (amImg == undefined)
      {
        var pcu = cutieLoadRequest (cutiesB[j].id);
        if (pcu != undefined)
        {
          var cutieImg = domCopy(pcu);
          cutieImg.id = "tstickerto-" +  cutiesB[j].id;
          am.appendChild(cutieImg);
          addEvent(cutieImg, "mousedown", gal_sticker_set);
          //jscmdWrite("hinzugefügt", 6, 1);
        }
        else
        {
          // es fehlt noch ein Cutie
          notDone = true;
          //jscmdWrite("wird angefordert " + cutiesB[j].id, 6, 1);
        }
      }
      else
      {
        //jscmdWrite("existiert", 6, 1);
      }
    }
  }
  if (notDone) window.setTimeout("galerieStickerSetLoop()",100);
  jscmdWrite("galerieStickerLoop Ende", 0, 0);
}

function gal_sticker_set(event)
{
  var alm = getEventTarget(event);

  var regCutieID=/tstickerto\-(\w*)/gi;
  var regPicID=/galia\-(\w*)/gi;
  var picid = 0;
  var cid = 0;
  regCutieID.lastIndex=0;
  regPicID.lastIndex=0;
  var gto1 = regCutieID.exec(alm.id);
  var gto2 = regPicID.exec(sticker_parent_id);
  if (gto1 != null && gto2 != null)
  {
    var cutieValue = parseInt(gto1[1]);
    var picid = gto2[1];
    var o = idf("cutieSelector-" + picid);
    o.value = cutieValue;

    // Die Routine ist ähnlich der in CutieChange
    // beide müssen gleich behandelt werden...
    for (var j=0; j<cutiesC.length;j++)
    {
      if (cutiesC[j].user == userID && cutiesC[j].picid == picid)
      {
        if (cutiesC[j].cutie != undefined) cutiesC[j].cutie.style.top = "-2000px";
        cutiesC[j].cutie = undefined;
        cutiesC[j].cutieNr = cutieValue;
      }
    }
    galerieCutieSet(10);
  }
}

// Editieren des Feldes, in dem der Photograph den Event kommentieren kann
function photoGraphCom(mode)
{
  var field0 = idf("pg-0");
  var field1 = idf("pg-1");
  var fieldInput = idn("pgComment");
  if (mode == 0)
  {
    if (field0 != undefined) field0.style.display = "";
    if (field1 != undefined) field1.style.display = "none";
    removeAllChildren(field0);
    if (fieldInput != undefined)
    {
      domText (fieldInput.value , field0);
      photoGraphComTrans();
    }
  }
  if (mode == 1)
  {
    if (field0 != undefined) field0.style.display = "none";
    if (field1 != undefined) field1.style.display = "";
  }
}

function photoGraphComTrans()
{
  var field0 = idf("pg-0");
  if (field0 != undefined)
  {
    node2HTML(field0, 120, 0);
  }
}
