function showObject(obj)
{
 var w = window.open("","candle","resizable,scrollbars,toolbar,titlebar,personalbar");
 w.innerHeight = 200;
 w.innerWidth = 600;
 for (var i in obj)
 {
      w.document.writeln(obj.id + "." + i + " = ");
      if (i != "frameElement" || true)
      {
         try
         {
          w.document.writeln(obj[i]);
         }
         catch (e)
         {
          w.document.writeln("<i>Zugriff verweigert</i>");
         }
      }
      w.document.writeln("<br>");
 }
 w.document.writeln("<hr>");
 if (obj != undefined && obj != null)
   for (var i in obj.style)
   {
      w.document.writeln(obj.id + ".style." + i + " = ");
      w.document.writeln(obj.style[i]);
      w.document.writeln("<br>");
   }
 w.document.writeln("<hr>");
 /*
 w.document.writeln("tagName " + obj.tagName + "<br>");
 w.document.writeln("id " + obj.id + "<br>");
 w.document.writeln("name " + obj.name + "<br>");
 w.document.writeln("className " + obj.className + "<br>");
 w.document.writeln("complete " + obj.complete + "<br>");
 w.document.writeln("readyState " + obj.readyState + "<br>");
 w.document.writeln("href " + obj.href + "<br>");
 w.document.writeln("src " + obj.src + "<br>");
 w.document.writeln("fileSize " + obj.fileSize + "<br>");
 w.document.writeln("width " + obj.width + "<br>");
 w.document.writeln("offsetWidth " + obj.offsetWidth + "<br>");
 w.document.writeln("clientWidth " + obj.clientWidth + "<br>");
 w.document.writeln("scrollWidth " + obj.scrollWidth + "<br>");
 w.document.writeln("height " + obj.height + "<br>");
 w.document.writeln("offsetHeight " + obj.offsetHeight + "<br>");
 w.document.writeln("clientHeight " + obj.clientHeight + "<br>");
 w.document.writeln("scrollHeight " + obj.scrollHeight + "<br>");
 w.document.writeln("offsetLeft " + obj.offsetLeft + "<br>");
 w.document.writeln("clientLeft " + obj.clientLeft + "<br>");
 w.document.writeln("scrollLeft " + obj.scrollLeft + "<br>");
 w.document.writeln("offsetTop " + obj.offsetTop + "<br>");
 w.document.writeln("clientTop " + obj.clientTop + "<br>");
 w.document.writeln("scrollTop " + obj.scrollTop + "<br>");
 w.document.writeln("outerHTML " + obj.outerHTML + "<br>");
 w.document.writeln("innerHTML " + obj.innerHTML + "<br>");
 w.document.writeln("outerText " + obj.outerText + "<br>");
 */
 w.document.writeln("<hr>");
 if (obj != undefined && obj != null)
   if (obj.attributes != undefined)
   {
     w.document.writeln("<table border=\"0\">");
     for (var i = 0; i < obj.attributes.length; i++ )
     {
       var attr = obj.attributes[i];
       w.document.writeln("<tr><td>" + attr.nodeName + "</td><td>=</td><td>" + attr.value + "</td><td>" + attr.nodeValue + "</td><td>" + (obj.ownerDocument === document) + "</td></tr>");
     }
     w.document.writeln("</table>");
   }
 w.document.writeln("<hr>");
 //
 if (obj != undefined && obj != null)
   if (obj.length != undefined)
   {
     for (var i = 0; i < obj.length; i++ )
     {
       w.document.writeln("[" + i + "]" + obj[i] + "<br>");
       for (var j in obj[i])
       {
         w.document.writeln(obj.id + "[" + i + "]" + "." + j + " = ");
         if (j != "frameElement") w.document.writeln(obj[i][j]);
         w.document.writeln("<br>");
       }
     }
   }
 return;
}

var wDoc;

function showHTML(obj, deep)
{
 if (deep == undefined)
 {
   wDoc = window.open("","candle","resizable,scrollbars,toolbar,titlebar,personalbar");
   deep = 0;
 }
 wDoc.innerHeight = 200;
 wDoc.innerWidth = 600;
 var bc = "fff";
 if (obj.nodeName == "INPUT") bc = "dfd";
 if (obj.nodeName == "TEXTAREA") bc = "dfd";
 if (obj.nodeName == "SELECT") bc = "dfd";
 if (obj.nodeName == "TBODY") bc = "88f";
 if (obj.nodeName == "TR") bc = "aaf";
 if (obj.nodeName == "TD") bc = "ccf";
 if (obj.nodeName == "A") bc = "fcc";
 if (obj.nodeName == "IMG") bc = "ff9";
 wDoc.document.writeln("<div style=\"padding-left:5pt; border: 1pt solid #999; margin: 2pt; font-family: monospace; font-size:9pt; background-color: #" + bc + ";\">");
 if (obj.nodeType == 3)
 {
   wDoc.document.writeln("<font face=\"Times New Roman\">" + obj.data + "</font>");
 }
 else
 {
   //wDoc.document.writeln("<b>" + obj.nodeName + "</b>");
   wDoc.document.writeln("<div style=\"display: inline; font-weight:bold;\">" + obj.nodeName + "</div>");
   if (obj.nodeName == "INPUT") wDoc.document.writeln("&nbsp;<b>" + obj.type + "</b>");
   if (obj.id != undefined) wDoc.document.writeln("&nbsp;<u>" + obj.id + "</u>");
   if (obj.name != undefined) wDoc.document.writeln("&nbsp;<u>" + obj.name + "</u>");
   if (obj.className != undefined) wDoc.document.writeln("&nbsp;<b>" + obj.className + "</b>");
   wDoc.document.writeln("&nbsp;OffsetPosition:" + obj.offsetTop + "," + obj.offsetLeft);
   wDoc.document.writeln("&nbsp;ClientPosition:" + obj.clientTop + "," + obj.clientLeft);
   wDoc.document.writeln("&nbsp;Size:" + obj.offsetWidth + "," + obj.offsetHeight);
   if (obj.nodeName == "IMG")
   {
     wDoc.document.writeln("&nbsp;<i>" + obj.src + "</i>");
     if (obj.fileSize != undefined) wDoc.document.writeln("&nbsp;" + obj.fileSize + " Bytes");             }
   if (obj.nodeName == "A") wDoc.document.writeln("&nbsp;<i>" + obj.href + "</i>");

   if (obj.nodeName == "INPUT" || obj.nodeName == "TEXTAREA") wDoc.document.writeln("<br><div style=\"padding-left:5pt; border: 1pt solid #999; margin: 2pt; background-color: #fff; font-family: Times New Roman;\">" + obj.value + "</div>");

 }
 wDoc.document.writeln("<br>");
 for (var i = 0; i < obj.childNodes.length; i++)
 {
   showHTML(obj.childNodes[i], deep+1);
 }
 wDoc.document.writeln("</div>");
}

// rekursives Suchprogramm nach einem Element
function searchObject(target, obj, maxDepth, deep, sestring)
{
 if (maxDepth == undefined)
 {
   maxDepth = 5;
 }
 if (deep == undefined)
 {
   wDoc = window.open("","candle","resizable,scrollbars,toolbar,titlebar,personalbar");
   deep = 0;
 }

 if (sestring == undefined)
 {
   sestring = "";
 }
 if (target == obj) wDoc.document.writeln("<b style=\"color: #a00;\">"+sestring+"</b><br><br>");
 if (deep < maxDepth)
 {
   if (obj.document != undefined && obj.document != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.document, maxDepth, deep + 1 , sestring + ".document")
   }
   if (obj.parentNode != undefined && obj.parentNode != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.parentNode, maxDepth, deep + 1 , sestring + ".parentNode")
   }
   if (obj.parent != undefined && obj.parent != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.parent, maxDepth, deep + 1 , sestring + ".parent")
   }
   if (obj.body != undefined && obj.body != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.body, maxDepth, deep + 1 , sestring + ".body")
   }
   if (obj.documentElement != undefined && obj.documentElement != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.documentElement, maxDepth, deep + 1 , sestring + ".documentElement")
   }
   if (obj.parentWindow != undefined && obj.parentWindow != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.parentWindow, maxDepth, deep + 1 , sestring + ".parentWindow")
   }
   if (obj.defaultView != undefined && obj.defaultView != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.defaultView, maxDepth, deep + 1 , sestring + ".defaultView")
   }
   if (obj.ownerDocument != undefined && obj.ownerDocument != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.ownerDocument, maxDepth, deep + 1 , sestring + ".ownerDocument")
   }
   if (obj.frameElement != undefined && obj.frameElement != null)
   {
     wDoc.document.writeln("<div>"+sestring+"</div>");
     searchObject(target, obj.frameElement, maxDepth, deep + 1 , sestring + ".frameElement")
   }
   if (obj.childNodes != undefined && obj.childNodes != null)
   {
     for (var i = 0; i < obj.childNodes.length; i++)
     {
       wDoc.document.writeln("<div>"+sestring+"</div>");
       searchObject(target, obj.childNodes[i], maxDepth, deep + 1 , sestring + ".childNodes")
     }
   }
 }
}

function startc()
{
 window.setTimeout('reload()',120000);
}

function reload()
{
 window.location.reload();
}

function setMenuPage(indexloc)
{
 if (1 < window.parent.frames.length) window.parent.frames[0].location=indexloc;
}

function setMainPage(indexloc)
{
 if (1 < window.parent.frames.length) window.parent.frames[1].location=indexloc;
}

function setIndex(indexloc)
{
 if (1 < window.parent.frames.length)
 {
   var newRD = "&userID=" + getUserID() +  "&sessionID=" + getSessionID() +  "&gstyle=" + getGstyle();
   window.parent.frames[0].location=indexloc + newRD;
 }
}

function replaceAll(r,ra,rn,max, smilieCounterOn)
{
  if (max == undefined) max = 10000;
  if (smilieCounterOn == undefined) smilieCounterOn = 0;
  var counter = 0;
  while (0 <= r.indexOf(ra) && counter < max)
  {
    counter++;
    if (smilieCounterOn == 1) smilieCounter++;
    r = r.replace(ra,rn);
  }
  // restlichen Smilies ersetzen
  if (smilieCounterOn == 1)
  {
    while (0 <= r.indexOf(ra))
    {
      if (smilieCounterOn == 1) smilieCounter++;
      r = r.replace(ra,"");
    }
  }
  return r;
}

function nvl (obj1, obj2)
{
  var erg = null;
  if (obj1 == null) erg = obj2
  else erg = obj1;
  return erg;
}

function explode(text, delim)
{
 //scmdWrite("Explode start",0,1);
 var reht = new RegExp("(.*?)"+delim+"((?:.|\n|\r|\t)*)","gi");
 RegExp.multiline=true;
 var erg = new Array();
 var rtext = text;
 var b = 1;
 while (b)
 {
   var ln = rtext.length;
   b = 0;
   reht.lastIndex=0;
   var gt = reht.exec(rtext);
   if (gt != undefined)
   {
        erg.push(gt[1]);
        //alert (gt[1] + " " + gt[2]);
        b = 1;
        rtext = gt[2];
        //jscmdWrite("Text split: " + ln + " -> " + rtext.length + " + " + gt[1].length,0,2);
        //jscmdWrite("Text elem: " + rtext + " + " + gt[1],0,2);
   }
   else erg.push(rtext)
 }
 //jscmdWrite("Explode ende",0,1);
 return erg;
}

function explodeDigit(text, mode)
{
 // Mode = 1 akzeptiert keine Nullwerte
 if (mode == undefined) mode = 1;
 var reht = new RegExp("(\\\d+)\\\D*(.*)","gi");
 RegExp.multiline=true;
 var erg = new Array();
 var rtext = text;
 var b = 1;
 while (b)
 {
   b = 0;
   reht.lastIndex=0;
   var gt = reht.exec(rtext);
   if (gt != undefined)
   {
     if (0 < gt[1].length)
     {
       var t = parseInt(gt[1]);
       if (mode == 0 || 0 < t) erg.push(t);
     }
     b = 1;
     rtext = gt[2];
   }
   else
   {
     if (0 < rtext.length)
     {
       var t = parseInt(rtext);
       if (mode == 0 || 0 < t) erg.push(t);
     }
   }
 }
 return erg;
}

function bcplus(text, btag)
{
  // Sucht folgenden Eintrag
  // [btag.=...]
  // wobei hinter btag ein weiterer x-beliebiger Buchstabe oder Zahl stehen darf
  // Ergebniss
  //   null  falls nicht vorhanden
  //   [0] Option, [1] Parameter
      var reht = new RegExp("\\\["+btag+"(\\\w?)=((?:.|\\\s)*?)\\\]","gi");
      reht.lastIndex=0;
      RegExp.multiline=true;
      var erg = null;
      var gt = reht.exec(text);
      if (gt != undefined)
      {
        erg = new Array();
        erg.push(gt[1]);
        erg.push(gt[2]);
      }
      return erg;
}

function bc(text, btag)
{
  // Sucht folgenden Eintrag
  // [btag.=...]
  // wobei hinter btag ein weiterer x-beliebiger Buchstabe oder Zahl stehen darf
  // Ergebniss
  //   null  falls nicht vorhanden
  //   Array: [0] Text davor, [1] Option, [2] Parameter, [3] Text danach
      var reht = new RegExp("(.*)\\\["+btag+"(\\\w?)=((?:.|\\\s)*?)\\\](.*)","gi");
      reht.lastIndex=0;
      RegExp.multiline=true;
      var erg = null;
      var gt = reht.exec(text);
      if (gt != undefined)
      {
        erg = new Array();
        erg.push(gt[1]);
        erg.push(gt[2]);
        erg.push(gt[3]);
        erg.push(gt[4]);
      }
      return erg;
}


function bcpplus(text, btag)
{
  // Sucht folgenden Eintrag
  // [btag.=...]...[/btag]
  // wobei hinter btag ein weiterer x-beliebiger Buchstabe oder Zahl stehen darf
  // Ergebniss
  //   null  falls nicht vorhanden
  //   Array: [0] Option, [1] Parameter, [2] Text zwischen den Tags

      //var rehtc = new RegExp("((?:.|\\\s|\\\r)*)\\\["+btag+"(\\\w?)=((?:.|\\\s|\\\r)*?)\\\]((?:.|\\\s|\\\r)*?)\\\[\\\/"+btag+"\\\]((?:.|\\\s|\\\r)*)","gi");
      var rehtc = new RegExp("\\\["+btag+"(\\\w?)=(\[\\\s\\\S\]*?)\\\]([\\\s\\\S\]*?)\\\[\\\/"+btag+"\\\]","gi");
      rehtc.lastIndex=0;
      RegExp.multiline=true;
      //alert ("marke 3\r\r" + text);
      var erg = null;
      var gt = rehtc.exec(text);
      //alert ("marke 4");
      if (gt != undefined)
      {
        var erg = new Array();
        erg.push(gt[1]);
        erg.push(gt[2]);
        erg.push(gt[3]);
        erg.push(gt[0].length);
      }
      return erg;
}


function dcpplus(text, btag)
{
  // Sucht folgenden Eintrag
  // [btag.]...[/btag]
  // wobei hinter btag ein weiterer x-beliebiger Buchstabe oder Zahl stehen darf
  // Ergebniss
  //   null  falls nicht vorhanden
  //   Array: [0] einstellige Option nicht-numerisch, [1] Wert, [2] Text zwischen den Tags

      var rehtc = new RegExp("\\\["+btag+"(\\\D?)(\\\d*)\\\](.*?)\\\[\\\/"+btag+"\\\]","gi");
      rehtc.lastIndex=0;
      RegExp.multiline=true;
      //alert ("marke 3\r\r" + text);
      var erg = null;
      var gt = rehtc.exec(text);
      //alert ("marke 4");
      if (gt != undefined)
      {
        var erg = new Array();
        erg.push(gt[1]);
        erg.push(gt[2]);
        erg.push(gt[3]);
        erg.push(gt[0].length);
      }
      return erg;
}

function bcp(text, btag)
{
  // Sucht folgenden Eintrag
  // [btag.=...]...[/btag]
  // wobei hinter btag ein weiterer x-beliebiger Buchstabe oder Zahl stehen darf
  // Ergebniss
  //   null  falls nicht vorhanden
  //   Array: [0] Text davor, [1] Option, [2] Parameter, [3] Text zwischen den Tags, [4] Text danach

      //var rehtc = new RegExp("((?:.|\\\s|\\\r)*)\\\["+btag+"(\\\w?)=((?:.|\\\s|\\\r)*?)\\\]((?:.|\\\s|\\\r)*?)\\\[\\\/"+btag+"\\\]((?:.|\\\s|\\\r)*)","gi");
      var rehtc = new RegExp("([\\\s\\\S\]*?)\\\["+btag+"(\\\w?)=(\[\\\s\\\S\]*?)\\\]([\\\s\\\S\]*?)\\\[\\\/"+btag+"\\\]([\\\s\\\S\]*)","gi");
      rehtc.lastIndex=0;
      RegExp.multiline=true;
      //alert ("marke 3\r\r" + text);
      var erg = null;
      var gt = rehtc.exec(text);
      //alert ("marke 4");
      if (gt != undefined)
      {
        var erg = new Array();
        erg.push(gt[1]);
        erg.push(gt[2]);
        erg.push(gt[3]);
        erg.push(gt[4]);
        erg.push(gt[5]);
      }
      return erg;
}

function bb2tag(text, btag, tagv, tagn)
{
      // wandelt eine Kombination der Art
      // [btag]...[/btag] um in
      // <tagv>...<tagn>
      var stz = new RegExp("\\\["+btag+"\\\]([\\\s\\\S\]*?)\\\[\\\/"+btag+"\\\]","gi");
      //alert (stz.toString());
      var reht=stz;
      reht.lastIndex=0;
      RegExp.multiline=true;
      var erg;
      var b = 1;
      while (b)
      {
        var gt = reht.exec(text);
        b = 0;
        if (gt)
        {
           b = 1;
           erg = tagv + gt[1] + tagn;
           text = text.replace(gt[0],erg);
        }
      }
      return text;
}

/*
  smilieCounter muss extern auf Null gesetzt werden.
  smonV = 1 wenn der SmilieCounter aktiviert werden soll
*/
var smilieCounter = 0;
function replaceSmilie(text,smilie,icon,smonV)
{
  if (smonV == undefined) smonV = 0;
  if (smilieCounter == undefined) smilieCounter = 0;
  var rest = 10000;
  if (0 < smonV)
  {
    rest = (smilieCounter < 3)?(3-smilieCounter):0;
  }
  text = replaceAll(text,smilie,"<img src=\"" + getServerFromLoc() + "/Smilie/" + icon + ".gif\" border=\"0\" alt=\""+ icon +"\">",rest,1);
  return text;
}

function escapeHTML(text)
{
  // wandelt < > um
  text = replaceAll(text,"\"","&quot;");
  text = replaceAll(text,"<","&lt;");
  text = replaceAll(text,">","&gt;");
  return text;
}

function rekAuth(text)
{
  // User [auth=name___id___datum]
  var b = 1
  while (b)
  {
    b = 0;
    var userm = bcplus(text, "auth");
    if (userm != null)
    {
      b = 1;
      var authpar = explode(userm[1],"___");
      var muserID = getUserID();
      var msessionID = getSessionID();
      var mgstyle = getGstyle();
      text = text.replace("[auth"+datem[0]+"="+datem[1]+"]"+datem[2]+"[/auth]","<div style=\"margin-bottom:1pt;\">"+authpar[1]+"</div>");
    }
  }
  return text;
}

// allmailID wird extern gesetzt und soll das ansprechen der einzelnen Mailframes ermöglichen.
// gImg ist ein Zähler aller Images auf der Seite, die nach und nach ersetzt werden sollen
var t2htmlnr = 0;
var allmailID = 0;
var gImg = 0;
var mailCount = 0;

function rekText2HTML(r, maxImage, mode)
{
  // für Mails
  if (mode == undefined) mode = 0;
  t2htmlnr++;
  var b = 1;
  var c = 0;
  var erg = "";
  while (b)
  {
    // Mail-Frame
    b = 0;
    //docWindowWrite("rekText2HTML", "#aad", r, 3);

    var mailm = bcpplus(r, "mail");
    if (mailm != null)
    {
      //alert (mailm[0].length + " " + mailm[1].length + " " + mailm[2].length);
      b = 1;
      c++;
      //alert ("m0:\r" + mailm[0] + "\r\rm1:\r" + mailm[1] + "\r\rm2:\r" + mailm[2]);
      //re = rekText2HTML(mailm[0], maxImage, mode, mailcount + 1);
      var muserID = getUserID();
      var msessionID = getSessionID();
      var mgstyle = getGstyle();
      /*
       * mailpar:
       * [1] = userID
       * [2] = Username
       * [3] = Datum
       * [4] = Header
       * [5] = VorgängerMailId
       */
      mailpar = explode(mailm[1],"___");
      var zerg = "";
      // mode = 0 für normal
      if (mode == 0)
      {
        zerg = "<div id='mail-" + allmailID + "-" + mailCount + "' class=\"mailFrame\"><div class=\"profilmail\">";
        zerg += "<div id='mailHead-" + allmailID + "-" + mailCount + "'>";
        zerg += "<div class=\"buttonLDRN\">" + mDate(mailpar[2],1) + "</div>";
        var mailAuthorName = "<a id='mailWriter-" + allmailID + "-" + mailCount + "' href=\"./profil.php?userID="+muserID+"&sessionID="+msessionID+"&userTo="+mailpar[0]+"&gstyle="+mgstyle+"\" class=\"mailh1\">" + mailpar[1] + "</a>";
        if (mailpar[1] == "#anonym#") mailAuthorName = "anonym";
        zerg += mailAuthorName;
        zerg += "<div id='mailTHead-" + allmailID + "-" + mailCount + "' class=\"mailheader\">" + mailpar[3] + "</div></div>";
        zerg += "<div id='mailCon-" + allmailID + "-" + mailCount + "' class=\"mail\">" + text2HTML(stripMCodes(mailm[2]), maxImage, mode) + "</div>";
        zerg += "<div id='mailOrig-" + allmailID + "-" + mailCount + "' class=\"mail\" style=\"display:none;\">" + escapeHTML(mailm[2]) + "</div>";
            //signatur = idf("sig-" + mailpar[0]);
        zerg += "<div id=\"signatur-" + mailpar[0] + "-" + mailCount + "\" style=\"clear:both;\"></div>";
        zerg += "</div></div>";
      }
      // mode = 1 für Chat
      if (mode == 1)
      {
        zerg = "<div id='mail-" + allmailID + "-" + mailCount +  "' class=\"tinytable\">";
        zerg += "<b>" + mailpar[1] + "</b> <i>" + mDate(mailpar[2],7) + "</i>: ";
        zerg += text2HTML(stripMCodes(mailm[2]) , maxImage, mode);
        zerg += "</div>";
      }

      // mode = 2 für Chat und GrpMails
      if (mode == 2)
      {
        var bTop = "";
        if (0 < mailCount) bTop = "border-Top: 1px solid #888;";
        zerg = "<div id='mail-" + allmailID + "-" + mailCount +  "' class=\"tinytable\" style=\"" + bTop + "clear: both; padding: 0pt; background: #fff; width: 295pt; font-size: 10pt;\">";
        zerg += "<div class=\"fr\" style=\"padding-left: 5pt; font-size: 8pt;\">" + mDate(mailpar[2],21) + "</div>";
        zerg += "<div style=\"border: 0pt solid black; float: left; padding-top: 2pt; padding-right: 8pt; \"><b>" + mailpar[1] + "</b>";
        zerg += " : </div> <div style=\"padding: 2pt; padding-left: 10pt; background: #fff;\">";
        zerg += text2HTML(stripMCodes(mailm[2]) , maxImage, mode);
        zerg += "</div></div>";
      }

      //var rep = "[mail"+mailm[0]+"="+mailm[1]+"]"+mailm[2]+"[/mail]";
      erg = erg.concat(zerg);
      //r = r.replace("[mail"+mailm[0]+"="+mailm[1]+"]"+mailm[2]+"[/mail]",zerg);
      r = r.slice(mailm[3]);
      //alert (mailm[3] + " ### " + r);
      //b = 0;
      mailCount++;
    }
  }

  //if (0 < r.length) erg = erg.concat(r);
  if (0 < r.length)
  {
    erg = erg.concat(text2HTML(stripMCodes(r), maxImage, mode));
  }
  //if (c==0) r = text2HTML(r, maxImage, mode);
  return erg;
}

function rekText2HTML_old(r, maxImage, mode)
{
  // für Mails
  if (mode == undefined) mode = 0;
  t2htmlnr++;
  var b = 1;
  var c = 0;
  while (b)
  {
    // Mail-Frame
    b = 0;
    //docWindowWrite("rekText2HTML", "#aad", r, 3);

    var mailm = bcpplus(r, "mail");
    if (mailm != null)
    {
      alert (mailm[0].length + " " + mailm[1].length + " " + mailm[3].length);
      b = 1;
      c++;
      //alert ("m0:\r" + mailm[0] + "\r\rm1:\r" + mailm[1] + "\r\rm2:\r" + mailm[2]);
      //re = rekText2HTML(mailm[0], maxImage, mode, mailcount + 1);
      var muserID = getUserID();
      var msessionID = getSessionID();
      var mgstyle = getGstyle();
      mailpar = explode(mailm[1],"___");
      var zerg = "";
      // mode = 0 für normal
      if (mode == 0)
      {
        zerg = "<div id='mail-" + allmailID + "-" + mailCount + "' class=\"mailFrame\"><div class=\"profilmail\">";
        zerg += "<div id='mailHead-" + allmailID + "-" + mailCount + "'>";
        zerg += "<div class=\"buttonLDRN\">" + mDate(mailpar[2],1) + "</div>";
        zerg += "<a href=\"./profil.php?userID="+muserID+"&sessionID="+msessionID+"&userTo="+mailpar[0]+"&gstyle="+mgstyle+"\" class=\"mailh1\">" + mailpar[1] + "</a>";
        zerg += "<div id='mailTHead-" + allmailID + "-" + mailCount + "' class=\"mailheader\">" + mailpar[3] + "</div></div>";
        zerg += "<div id='mailCon-" + allmailID + "-" + mailCount + "' class=\"mail\">" + text2HTML(stripMCodes(mailm[2]), maxImage, mode) + "</div>";
        zerg += "<div id='mailOrig-" + allmailID + "-" + mailCount + "' class=\"mail\" style=\"display:none;\">" + escapeHTML(mailm[2]) + "</div>";
            //signatur = idf("sig-" + mailpar[0]);
        zerg += "<div id=\"signatur-" + mailpar[0] + "-" + mailCount + "\" style=\"clear:both;\"></div>";
        zerg += "</div></div>";
      }
      // mode = 1 für Chat
      if (mode == 1)
      {
        zerg = "<div id='mail-" + allmailID + "-" + mailCount +  "' class=\"tinytable\">";
        zerg += "<b>" + mailpar[1] + "</b> <i>" + mDate(mailpar[2],7) + "</i>: ";
        zerg += text2HTML(stripMCodes(mailm[2]) , maxImage, mode);
        zerg += "</div>";
      }

      r = r.replace("[mail"+mailm[0]+"="+mailm[1]+"]"+mailm[2]+"[/mail]",zerg);
      mailCount++;
    }
  }

  if (c==0) r = text2HTML(r, maxImage, mode);
  return r;
}

function stripMCodes(r)
{
  // Spezielle formatierung für IE
  r = replaceAll(r,"\r","");
  r = replaceAll(r,"\n","");
  r = replaceAll(r,"^^M","\n");
  //bench("stripMCodes",3);
  return r;
}

function addMCodes(r)
{
  // Spezielle formatierung für IE
  r = replaceAll(r,"\n","^^M");
  r = replaceAll(r,"\r","");
  return r;
}


function mCodes2HTML(r)
{
  // Spezielle formatierung für IE
  r = replaceAll(r,"^^M","<br>");
  //bench("stripMCodes",3);
  return r;
}

/*
 mode (Bit=gesetzt)
  0
  1
  2   Smilie-Beschränkung (3 Smilies)
*/
var nodeIndexCounter = 1000;
var nodeIndexElemCounter = 1000;
var nodeIndexSet = false;
var nodeIndexFirst = false;
function text2HTML(r, maxImage, mode)
{
  //bench("text2HTML start",4);
  if (mode == undefined) mode = 0;
      var re = r;
      t2htmlnr++;
      // Sonderzeichen ersetzen...
      re = replaceAll(re,"\r","");
      //re = replaceAll(re,"&","&amp;");

      // Kommentar
      var rekom=/\n\/\/.*?\n/gi;
      rekom.lastIndex=0;
      RegExp.multiline=true;
      b = 1;
      while (b)
      {
        var gt = rekom.exec(re);
        b = 0;
        if (gt)
        {
           b = 1;
           re = re.replace(gt[0],"\n");
        }
      }
      //bench("url",5);

      re = replaceAll(re,"\"","&quot;");
      re = replaceAll(re,"<","&lt;");
      re = replaceAll(re,">","&gt;");
      re = bb2tag(re,"b","<b>","</b>");
      re = bb2tag(re,"i","<i>","</i>");
      re = bb2tag(re,"u","<u>","</u>");
      re = bb2tag(re,"r","<font face=\"serif\">","</font>");
      re = bb2tag(re,"a","<font face=\"arial\">","</font>");
      re = bb2tag(re,"z","<font style=\"font-size:14pt\">","</font>");
      re = bb2tag(re,"zz","<font style=\"font-size:8pt\">","</font>");
      re = bb2tag(re,"w","<b style=\"color:#ff0000\">","</b>");
      //re = bb2tag(re,"add","<div style=\"display: inline; background-Color: #dd7; text-decoration: underline;\">","</div>");
      //re = bb2tag(re,"sub","<div style=\"display: inline; background-Color: #dd7; text-decoration: line-through;\">","</div>");
      re = replaceAll(re,"\n---\n","<hr style=\"clear: both;\">");
      re = replaceAll(re,"%\n","");
      re = replaceAll(re,"\n","<br>");
      re = replaceImg(re);

      // Index setzen
      // Das muß noch ausgebaut werden...
      // Vorallem verschiedene Stile
      if (!nodeIndexSet)
      {
        nodeIndexSet = true;
        nodeIndexFirst = true;
        nodeIndexCounter++;
        re = "<div id=\"GIndex_" + nodeIndexCounter + "\" class=\"gtcontainer01\">[~#" + nodeIndexCounter + "_0#~]</div>" + re;
      }
      //bench("Formatierung",5);

      // Datum
      var b = 1
      while (b)
      {
        b = 0;
        var datem = bcplus(re, "date");
        if (datem != null)
        {
          b = 1;
          //dm = parseInt(datem[1]) * 1000;
          dm = parseInt(datem[1]);
          var de = "???";
          if (datem[0] == "") de = mDate(dm, 0);
          if (datem[0] == "d") de = mDate(dm, 2);
          if (datem[0] == "h") de = mDate(dm, 3);
          if (datem[0] == "m") de = mDate(dm, 4);
          if (datem[0] == "s") de = mDate(dm, 5);
          if (datem[0] == "r") de = mDate(dm, 6);
          if (datem[0] == "k") de = mDate(dm, 8);
          if (datem[0] == "v") de = mDate(dm, 14);
          if (datem[0] == "w") de = mDate(dm, 15);
          if (datem[0] == "x") de = mDate(dm, 16);
          if (datem[0] == "y") de = mDate(dm, 17);
          if (datem[0] == "z") de = mDate(dm, 18);
          //if (datem[0] == "f") de = mDate(dm, 11);
          //if (datem[0] == "g") de = mDate(dm, 13);
          //if (datem[0] == "h") de = mDate(dm, 12);
          re = re.replace("[date"+datem[0]+"="+datem[1]+"]",de);
        }
      }
      //bench("datumplus",5);

      // User
      var b = 1
      while (b)
      {
        b = 0;
        var userm = bcpplus(re, "user");
        if (userm != null)
        {
          b = 1;
          var muserID = getUserID();
          var msessionID = getSessionID();
          var mgstyle = getGstyle();
          re = re.replace("[user="+userm[1]+"]"+userm[2]+"[/user]","<a href=\"./profil.php?userID="+muserID+"&sessionID="+msessionID+"&userTo="+userm[1]+"&gstyle="+mgstyle+"\">" + userm[2] + "</a>");
        }
      }
      //bench("user",5);

      // Frame
      // [frame.=..._...] = normal, float(L)eft, float(R)ight, (H)idable; Breite; Rahmen
      re = bb2tag(re,"frame","<div style=\"margin-left:5pt;marging-right:5pt;border:1pt solid black;padding:2pt;\">","</div>");

      var b = 1
      while (b)
      {
        b = 0;
        var framem = bcpplus(re, "frame");
        if (framem != null)
        {
          b = 1;
          var ws = "";
          var adds = "";
          var bo = 0;
          framepar = explode(framem[1],"_");
          var w = parseInt(framepar[0]);
          if (10 < w) ws = "width: " + w + "pt;";
          if (framepar[1] != undefined) bo = parseInt(framepar[1]);
          var floatd = "";
          if (framem[0]=="l")
          {
            floatd = "float: left;";
            adds = "margin-right: 5pt; margin-left: 0pt; margin-bottom: 2pt;";
          }
          if (framem[0]=="r")
          {
            floatd = "float: right;";
            adds = "margin-left: 5pt; margin-right: 0pt; margin-bottom: 2pt;";
          }
          re = re.replace("[frame" + framem[0] + "=" + framem[1] + "]" + framem[2] + "[/frame]","<div style=\"padding:2pt;" + adds + "border:" + bo + "pt solid black;padding:2px; " + ws + floatd + "\">" + framem[2] + "</div>");
        }
      }

      // Wiki-Links
      // [wiki200]text[/wiki]
      var b = 1
      while (b)
      {
        b = 0;
        var wikim = dcpplus(re, "wiki");
        if (wikim != null)
        {
          var option = wikim[0];
          if ("1" <= option &&  option <= "9") themeid = parseInt(wikim[0] + wikim[1])
          else themeid = parseInt(wikim[1])
          b = 1;
          var muserID = getUserID();
          var msessionID = getSessionID();
          var mgstyle = getGstyle();
          re = re.replace("[wiki"+wikim[0]+wikim[1]+"]"+wikim[2]+"[/wiki]","<a href=\"./frame.php?action=wikinews&userID="+muserID+"&sessionID="+msessionID+"&gstyle="+mgstyle+"&themeid="+themeid+"\">" + wikim[2] + "</a>");

        }
      }

      // color
      var b = 1
      var remcolor = new RegExp("\\[col(\[a-zA-Z\]?)\\](.*?)\\[\\/col\\]","gi");
      remcolor.lastIndex=0;
      RegExp.multiline=true;
      while (b)
      {
        b = 0;
        var gt = remcolor.exec(re);
        var transferTable = 0;
        if (gt != undefined)
        {
          //alert(gt[1] + ";" + gt[2]);
          b = 1;
          bold = true;
          var col = Array ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
          var len = gt[2].length;
          var erg = "";
          var offset = 80;
          var ampl = 60;
          var maxPeriode = 2;
          var charPeriode = 2;
          var minSize = 0;
          var maxSize = 0;
          var margin = 0;
          var border = 0;
          if (gt[1] == 'b')
          {
            offset = 100;
            ampl = 120;
          }
          if (gt[1] == 'c')
          {
            offset = 120;
            ampl = 130;
          }
          if (gt[1] == 'd')
          {
            offset = 40;
            ampl = 130;
          }
          if (gt[1] == 'e')
          {
            offset = 120;
            ampl = 130;
            maxPeriode = 4;
          }
          if (gt[1] == 'f')
          {
            offset = 0;
            ampl = 0;
            minSize = 10;
            maxSize = 24;
            charPeriode = 17;
            bold = false;
          }
          if (gt[1] == 'g')
          {
            offset = 0;
            ampl = 0;
            minSize = 10;
            maxSize = 24;
            charPeriode = 11;
            bold = false;
          }
          if (gt[1] == 'h')
          {
            offset = 0;
            ampl = 0;
            minSize = 18;
            maxSize = 36;
            charPeriode = 11;
            margin = -3;
            bold = false;
          }
          if (gt[1] == 'i')
          {
            offset = 0;
            ampl = 0;
            minSize = 18;
            maxSize = 48;
            charPeriode = 11;
            margin = -5;
            bold = false;
          }
          if (gt[1] == 'j')
          {
            offset = 120;
            ampl = 130;
            minSize = 18;
            maxSize = 36;
            charPeriode = 11;
            maxPeriode = 2;
            margin = -4;
            bold = false;
          }
          if (gt[1] == 'k')
          {
            offset = 120;
            ampl = 130;
            minSize = 18;
            maxSize = 36;
            charPeriode = 11;
            maxPeriode = 4;
            margin = -1;
            border = 1;
            bold = false;
          }
          if (gt[1] == 'l')
          {
            offset = 120;
            ampl = 130;
            minSize = 18;
            maxSize = 36;
            charPeriode = 11;
            maxPeriode = 4;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 'm')
          {
            offset = 120;
            ampl = 130;
            minSize = 18;
            maxSize = 36;
            charPeriode = 11;
            maxPeriode = 4;
            margin = 0;
            border = 3;
            bold = false;
          }
          if (gt[1] == 'n')
          {
            offset = 120;
            ampl = 130;
            minSize = 24;
            maxSize = 36;
            charPeriode = 17;
            maxPeriode = 1;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 'o')
          {
            offset = 120;
            ampl = 130;
            minSize = 24;
            maxSize = 48;
            charPeriode = 17;
            maxPeriode = 2;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 'p')
          {
            offset = 180;
            ampl = 70;
            minSize = 24;
            maxSize = 48;
            charPeriode = 17;
            maxPeriode = 1;
            margin = 0;
            border = 3;
            bold = false;
          }
          if (gt[1] == 'q')
          {
            offset = 180;
            ampl = 70;
            minSize = 24;
            maxSize = 36;
            charPeriode = 7;
            maxPeriode = 1;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 'r')
          {
            offset = 180;
            ampl = 70;
            minSize = 14;
            maxSize = 24;
            charPeriode = 7;
            maxPeriode = 1;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 's')
          {
            offset = 180;
            ampl = 70;
            minSize = 14;
            maxSize = 24;
            charPeriode = 7;
            maxPeriode = 4;
            margin = 0;
            border = 2;
            bold = false;
          }
          if (gt[1] == 't')
          {
            offset = 180;
            ampl = 70;
            minSize = 14;
            maxSize = 24;
            charPeriode = 7;
            maxPeriode = 4;
            margin = 0;
            border = 3;
            bold = false;
          }
          if (gt[1] == 'z')
          {
            offset = 0;
            ampl = 0;
            maxPeriode = 4;
            transferTable = 1;
          }
          var periode = maxPeriode * 3.141592654 / len;
          for (var i=0; i<len; i++)
          {
            var theChar = gt[2].charAt(i);
            var p1 = Math.floor(offset + ampl * Math.sin (periode * i));
            var p2 = Math.floor(offset + ampl * Math.sin (periode * ( i + len / 3)));
            var p3 = Math.floor(offset + ampl * Math.sin (periode * ( i + 2 * len / 3)));
            if (p1 < 0) p1 = 0;
            if (p2 < 0) p2 = 0;
            if (p3 < 0) p3 = 0;
            style = 0;
            var fontSizeStyle = "";
            var borderStyle = "";
             var marginStyle = "";

            ph = "#" + col[Math.floor(p1 / 16)] + col[Math.floor(p1 % 16)]
              + col[Math.floor(p2 / 16)] + col[Math.floor(p2 % 16)]
              + col[Math.floor(p3 / 16)] + col[Math.floor(p3 % 16)];

            if (6 < minSize || margin != 0 || border != 0)
            {
              if (6 < minSize)
              {
                var aSize = (charPeriode * i + 13) % (maxSize - minSize) + minSize;
                fontSizeStyle = "font-size: " + aSize + "pt;";
              }
              if (0 != margin)
              {
                marginStyle = "margin-right: " + margin + "pt;";
              }
              if (0 != border)
              {
                if (border == 1)
                {
                  borderStyle = "border: 1pt solid " + ph + ";";
                }
                if (border == 2 && theChar != " ")
                {
                  borderStyle = "border: 1px solid " + ph + "; background-color: " + ph + ";";
                  ph = "#000";
                }
                if (border == 3 && theChar != " ")
                {
                  borderStyle = "border: 1pt solid #000; background-color: " + ph + ";";
                  ph = "#000";
                }
              }
              style = "style=\"" + fontSizeStyle + marginStyle + borderStyle + "\"";
            }

            erg = erg.concat("<font color=\"" , ph , "\" " , style , ">",transferCharCode(theChar, transferTable),"</font>");
          }

          //alert (erg);
          //if (gt[1] == 'a' || gt[1] == '')
          if (bold)
          {
            erg = "<b>" + erg + "</b>";
          }
          re = re.replace(gt[0],erg);
        }
      }

      // Header
      // Infos können in den Index-Tag aufgenommen werden.
      var b = 1
      while (b)
      {
        b = 0;
        var headerm = dcpplus(re, "h");
        if (headerm != null)
        {
          var option = headerm[0];
          if ("1" <= option &&  option <= "9") val = parseInt(headerm[0] + headerm[1])
          else val = parseInt(headerm[1])
          b = 1;
          var headero = "[h" + headerm [0] + headerm [1] + "]" + headerm [2] + "[/h]";
          switch (val)
          {
            case 1:
              re = re.replace(headero,"<div style=\"padding: 2pt; padding-left: 10pt; margin-Top: 2pt; border-Bottom: 1pt solid black; font-size: 12; font-weight: bold;\">" + headerm [2] + "</div>");
                 break;
            case 2:
              re = re.replace(headero,"<div style=\"background: "+ styleOfBackground(getGstylekp()) +"; padding: 2pt; padding-left: 10pt; margin-Top: 2pt; border-Bottom: 1pt solid black; font-size: 12; font-weight: bold;\">" + headerm [2] + "</div>");
                 break;
            case 3:
              re = re.replace(headero,"<div style=\"background: "+ styleOfBackground(getGstylekp()) +"; padding: 2pt; padding-left: 10pt; margin-Top: 2pt; border-Bottom: 1pt solid black; font-size: 14; font-weight: bold;\">" + headerm [2] + "</div>");
                 break;
            case 4:
              re = re.replace(headero,"<div style=\"padding: 2pt; padding-left: 5pt; margin-Top: 2pt; font-size: 12; font-weight: bold;\">" + headerm [2] + "</div>");
                 break;
            case 5:
              re = re.replace(headero,"<div style=\"background: "+ styleOfBackground(getGstylekp()) +"; padding: 5pt; margin-Top: 2pt; font-size: 14;\">" + headerm [2] + "</div>");
                 break;
            default:
              re = re.replace(headero,"<div style=\"padding: 2pt; padding-left: 10pt; margin-Top: 2pt; border-Bottom: 1pt solid black; font-size: 12;\">" + headerm [2] + "</div>");
              break;
          }
        }
      }
      //bench("header",5);

      // Liste
      var b = 1
      while (b)
      {
        b = 0;
        var listem = dcpplus(re, "li");
        if (listem != null)
        {
          b = 1;
          var pfa = 10 * parseInt(listem[1]);
          re = re.replace("[li" + listem[0] + listem[1] + "]" + listem[2] + "[/li]","<div style=\"float:left; padding: 2pt; padding-Left:" + pfa + "pt; clear: both;\">*</div><div style=\"float: left; line-height: 1.2;\">" + listem[2] + "</div><div style=\"clear: both; line-Height: 1pt;\"></div>");
        }
      }
      //bench("header",5);


      // MiniTabelle [taba]...[||]...[/tab]
      var b = 1

      var remt = new RegExp("\\[tab(\[abc\]?)(\\d*)\\](.*?)\\[\\|\\|\\](.*?)\\[\\/tab\\]","gi");
      remt.lastIndex=0;
      RegExp.multiline=true;

      while (b)
      {
        b = 0;
        var gt = remt.exec(re);
        if (gt != undefined)
        {
          //alert(gt[1] + ";" + gt[2] + ";" + gt[3] + ";" + gt[4]);
          b = 1;
          //alert (gt[1]);
          if (gt[1] == 'a' || gt[1] == '')
              re = re.replace(gt[0],"<div style=\"padding: 2pt;\"><div style=\"float:left; padding-Right:5pt; clear: both; width: 80pt; text-align: right; font-Weight: bold;\">" + gt[3] + "</div><div style=\"float: left; line-height: 1.2; width: 170pt;\">" + gt[4] + "</div><div style=\"clear: both; line-Height: 1pt;\"></div></div>");
          if (gt[1] == 'b')
              re = re.replace(gt[0],"<div style=\"padding: 2pt;\"><div style=\"float:left; padding-Right:5pt; clear: both; width: 80pt; text-align: right; font-Weight: bold;\">" + gt[3] + "</div><div style=\"float: left; line-height: 1.6; width: 170pt; font-size: 7pt;\">" + gt[4] + "</div><div style=\"clear: both; line-Height: 1pt;\"></div></div>");
          if (gt[1] == 'c')
              re = re.replace(gt[0],"<div style=\"padding: 2pt;\"><div style=\"float:left; padding-Right:5pt; clear: both; width: 80pt; text-align: right; font-Weight: bold;\">" + gt[3] + "</div><div style=\"float: left; line-height: 1.2;\">" + gt[4] + "</div><div style=\"clear: both; line-Height: 1pt;\"></div></div>");
        }
      }
      //bench("header",5);

      // Zierrahmen
      // joy
      // a-z für Design
      // 0-9 für Größe
      var b = 1

      var remt = new RegExp("\\[joy(\[a-zA-Z\]?)(\\d?)\\](.*?)\\[\\|\\|\\](.*?)\\[\\/joy\\]","gi");
      remt.lastIndex=0;
      RegExp.multiline=true;

      while (b)
      {
        b = 0;
        var gt = remt.exec(re);
        if (gt != undefined)
        {
          //alert(gt[1] + ";" + gt[2] + ";" + gt[3] + ";" + gt[4]);
          b = 1;
          var allWidth = "80pt";
          var joygt2 = 0;
          if (0 < gt[2].length) joygt2 = parseInt(gt[2]);
          if (1 == joygt2) allWidth = "160pt";
          if (2 == joygt2) allWidth = "240pt";
          if (3 == joygt2) allWidth = "320pt";
          var topaStyle = "";
          var conaStyle = "";
          var outaStyle = "";
          if (gt[1] == "a")
          {
            topaStyle = getGstyleka();
          }
          if (gt[1] == "b")
          {
            topaStyle = getGstylekp();
          }
          if (gt[1] == "c")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back11b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "d")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back12b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "d")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back18b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "e")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back20b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "f")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back21a.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "g")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back22a.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "h")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back23a.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "i")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back25a.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "j")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back28a.jpg); height: 230px; overflow: hidden; color:#fff;";
            allWidth = "180px";
          }
          if (gt[1] == "k")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back60a.gif);";
          }
          if (gt[1] == "l")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back61.gif); font-family: Courier New;";
          }
          if (gt[1] == "m")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back62.jpg);";
          }
          if (gt[1] == "n")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back63a.jpg);";
          }
          if (gt[1] == "o")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back64a.jpg);";
          }
          if (gt[1] == "p")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back65a.jpg);";
          }
          if (gt[1] == "q")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back66.jpg);";
          }
          if (gt[1] == "r")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back20b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "s")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back23b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "t")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back11b.jpg); height: 230px; overflow: hidden;";
            allWidth = "180px";
          }
          if (gt[1] == "u")
          {
            topaStyle = "background: #9bcbca;";
            conaStyle = "background: #a9cdc8;";
            outaStyle = "background: #a9cdc8; height: 230px; overflow: hidden;";
          }
          if (gt[1] == "v")
          {
            topaStyle = "background: #bdb97f;";
            conaStyle = "background: #cdca93;";
            outaStyle = "background: #cdca93; height: 230px; overflow: hidden;";
          }
          if (gt[1] == "w")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back25b.jpg); height: 230px; overflow: hidden;";
            allWidth = "345px";
          }
          if (gt[1] == "x")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back25c.jpg); height: 230px; overflow: hidden; color:#fff;";
            allWidth = "345px";
          }
          // --- Big ---
          if (gt[1] == "A")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7001.jpg); height: 400px; overflow: hidden;";
            allWidth = "314px";
          }
          if (gt[1] == "B")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7002.jpg); height: 400px; overflow: hidden;";
            allWidth = "314px";
          }
          if (gt[1] == "C")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7003.jpg); height: 300px; overflow: hidden;";
            allWidth = "400px";
          }
          if (gt[1] == "D")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7004.jpg); height: 300px; overflow: hidden;";
            allWidth = "400px";
          }
          if (gt[1] == "E")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7005.jpg); height: 295px; overflow: hidden; color:#fff;";
            allWidth = "400px";
          }
          if (gt[1] == "F")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7006.jpg); height: 295px; overflow: hidden; color:#fff;";
            allWidth = "400px";
          }
          if (gt[1] == "G")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7011.jpg); height: 360px; overflow: hidden;";
            allWidth = "240px";
          }
          if (gt[1] == "H")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7012.jpg); height: 360px; overflow: hidden;";
            allWidth = "240px";
          }
          if (gt[1] == "I")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7013.jpg); height: 420px; overflow: hidden; color:#fff;";
            allWidth = "280px";
          }
          if (gt[1] == "J")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7014.jpg); height: 300px; overflow: hidden; color:#fff;";
            allWidth = "450px";
          }
          if (gt[1] == "K")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7020.jpg); height: 300px; overflow: hidden; color:#000;";
            allWidth = "400px";
          }
          if (gt[1] == "L")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7021.jpg); height: 300px; overflow: hidden; color:#000;";
            allWidth = "400px";
          }
          if (gt[1] == "M")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7022.jpg); height: 300px; overflow: hidden; color:#000;";
            allWidth = "400px";
          }
          if (gt[1] == "N")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7023.jpg); height: 300px; overflow: hidden; color:#000;";
            allWidth = "400px";
          }
          if (gt[1] == "N")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7032.jpg); height: 360px; overflow: hidden; color:#fff;";
            allWidth = "480px";
          }
          if (gt[1] == "O")
          {
            topaStyle = "background: transparent;";
            conaStyle = "background: transparent;";
            outaStyle = "background-image:url(./pict/back7036.jpg); height: 360px; overflow: hidden; color:#000;";
            allWidth = "480px";
          }
          re = re.replace(gt[0],"<div style=\"float:left; width: "+ allWidth +"; text-align: left; border:1pt solid black;" + outaStyle + "\"><div style=\"font-Weight: bold; text-align: center; padding: 1pt;" + topaStyle + "\">" + gt[3] + "</div><div style=\"padding: 2pt;" + conaStyle + "\">" + gt[4] + "</div></div>");
        }
      }
      //bench("joyframes",5);

      // User [auth=name___id___datum]
      re = rekAuth(re);
      //bench("auth",5);

      // Urladeadresse
      var reht=/([\s>\(])(http:\/\/)([\-a-zA-Z0-9_\/\\:\.\?&=]*)[\s<>]/gi;
      reht.lastIndex=0;
      RegExp.multiline=true;
      b = 1;
      while (b)
      {
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
           b = 1;
           re = re.replace(gt[1]+gt[2]+gt[3],gt[1] + "<a href=\"" + gt[2]+gt[3] + "\"><tt>" + gt[3] + "</tt></a>");
           //re = re.replace(gt[1]+gt[2]+gt[3],gt[1] + "\n<a>link</a>\n");
        }
      }
      //bench("url",5);

      // Mail-Adresse
      var reht=/([\s>\(])([a-zA-Z0-9\-\.]*)@([\-a-zA-Z0-9_\/\\:\.\?&]*\.[\-a-zA-Z0-9_\/\\:\.\?&]*)/gi;
      reht.lastIndex=0;
      RegExp.multiline=true;
      b = 1;
      while (b)
      {
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
           b = 1;
           re = re.replace(gt[1]+gt[2]+"@"+gt[3],gt[1] + "<a href=\"mailto:"+ gt[2]+"@"+gt[3] +"\">" + gt[2] + "</a>");
        }
      }
      //bench("mail",5);

      // Links
      // Blink ist noch zu machen -> da unterschiedliche Stile
      //   zB underline
      var reht=/\[link((?:red|blue|green|blink|dark|noline|\s)*)=[\s]*([^\]]*)\](.*?)\[\/link\]/gi;
      var reli1=/green/gi;
      var reli2=/red/gi;
      var reli3=/blue/gi;
      var reli4=/dark/gi;
      var reli5=/blink/gi;
      var reli6=/noline/gi;
      RegExp.multiline=true;
      var erg;
      b = 1;
      while (b)
      {
        reht.lastIndex=0;
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
           b = 1;
           erg = "";
           //alert (gt[1] + " " + gt[2] + " " + gt[3]);
           var cgreen = 0;
           var cred = 0;
           var cblue = 0;
           var cdark = 0;
           var noline = 0;
           var ref = gt[2];
           reli1.lastIndex=0; var gt1 = reli1.exec(gt[1]); if (gt1) cgreen = 1;
           reli2.lastIndex=0; var gt2 = reli2.exec(gt[1]); if (gt2) cred = 1;
           reli3.lastIndex=0; var gt3 = reli3.exec(gt[1]); if (gt3) cblue = 1;
           reli4.lastIndex=0; var gt4 = reli4.exec(gt[1]); if (gt4) cdark = 1;
           reli6.lastIndex=0; var gt6 = reli6.exec(gt[1]); if (gt6) noline = 1;
           var col = "a";
           if (cdark == 1) col = "6";
           var colc = "color: #" + (cred==1?col:"0") + (cgreen==1?col:"0") + (cblue==1?col:"0") + ";";
           if (noline == 1) colc += " text-decoration: none";

           //re = re.replace(gt[0],colc);
           re = re.replace(gt[0],"<a href=\"" + ref + "\" style=\"" + colc + "\">" + gt[3] + "</a>");
        }
      }

      // Images
      if (maxImage == undefined) maxImage = 400;
      var reht=/\[img(r|l|i|c)?([0-9]*)\](.*?)(\s*:text:\s*(.|\s)*?\s*)?\[\/img\]/gi;
      var comt=/\s*:text:\s*((.|\s)*)?/gi;
      reht.lastIndex=0;
      RegExp.multiline=true;
      var erg;
      var untertext;
      var hasuntertext;
      b = 1;
      while (b)
      {
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
           gImg++;
           b = 1;
           //alert (gt);
           hasuntertext = false;
           untertext = "";
           if (gt[4] != null && 0 < gt[4].length)
           {
             //alert(gt);
             comt.lastIndex=0;
             var cm = comt.exec(gt[4]);
             untertext = cm[1];
             hasuntertext = true;
             //alert(gt);
           }
           erg = "";
           //alert (gt);
           var style = "";
           var resizeMode = 2;
           var resizeStyle = 0;
           var blankImg = true;
           if (gt[1] == null) style = " style=\"display:block;\"";
           if (gt[1] == "i") style = " style=\"display:inline;\"";
           if (gt[1] == "l")
           {
             style = " style=\"float:left;padding-right:5pt;\"";
             resizeMode = 0;
           }
           if (gt[1] == "r")
           {
             style = " style=\"float:right;padding-left:5pt;\"";
             resizeMode = 1;
           }
           if (gt[1] == "c")
           {
             style = "text-Align: center;";
             blankImg = false;
             resizeMode = 2;
             resizeStyle = 2;
           }

           if (hasuntertext) erg = erg + "<div " + style + "><table border=\"0\" cellspacing=\"0\"><tr><td style=\"text-align:center;\">";
           if (blankImg)
           {
             erg = erg + "<img id='gImg-" + gImg + "' src=\"" + gt[3] + "\" ";
           //erg += " onLoad=\"resize(event," + wp + "," + resizeMode + ");\"";
           //docWindowWrite("Graphik gefunden " + "gImg-" + gImg, "#eea", "Size: " + wp, 0)
             if  (!hasuntertext) erg = erg + style;
             erg = erg + ">";
           }
           else
           {
             erg = erg + "<div style=\"" + style + "\"><img id='gImg-" + gImg + "' src=\"" + gt[3] + "\" ";
             erg = erg + "></div>";
           }

           wp = maxImage;
           if (0 < gt[2].length)
           {
             var wp = parseInt(gt[2]);
             //erg = erg + "width=\"" + wp + "\"";
           }
           if (wp < 20) wp = 20;
           if (maxImage < wp) wp = maxImage;
           resizeElemID("gImg-" + gImg, wp, resizeMode, resizeStyle);

           if (hasuntertext) erg = erg + "</td></tr><tr><td class=\"pic-unter\">" + untertext + "</td></tr></table></div>";
           //alert(erg);
           re = re.replace(gt[0],erg);

        }
      }
      //bench("img",5);

      // video if (maxImage == undefined) maxImage = 400;
      var reht=/\[video(.)?\](.*?)\[\/video\]/gi;
      reht.lastIndex=0;
      RegExp.multiline=true;
      var erg;
      var untertext;
      var hasuntertext;
      b = 1;
      while (b)
      {
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
          var url = gt[2];
          var stDim = "width=\"425\" height=\"367\"";
          erg = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"><param name=\"movie\" value=\"" + url + "\" " + stDim + "></param><embed src=\"" + url + "\" type=\"application/x-shockwave-flash\"  " + stDim + "></embed></object>";
          re = re.replace(gt[0],erg);
        }
      }


      // Komplexformat
      // rechts,mitte,links
      // #000
      // 14+2 = Buchstabengröße + Zeilenvergrößerung
      // rand10,10 Abstand links rechts
      // Arial, Roman, TT, Comic
      // Fett, Kursiv
      var reht=/\[format=([^\]]*)\](.*?)\[\/format\]/gi;
      var refo1=/(rechts|mitte|links|fett|kursiv)/gi;
      var refo2=/#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/gi;
      var refo3=/(\d+)([\+\-]\d+)/gi;
      var refo4=/rand(\d+),(\d+)/gi;
      var refo5=/(Arial|Roman|TT|Comic|Georgia|Lucida|Verdana)/gi;
      RegExp.multiline=true;
      var erg;
      b = 1;
      while (b)
      {
        reht.lastIndex=0;
        var gt = reht.exec(re);
        b = 0;
        if (gt)
        {
           b = 1;
           erg = "";
           var formats = explode(gt[1], ";");
           var style = "";
           for (var fi=0; fi < formats.length; fi++)
           {
             fil = formats[fi];
             refo1.lastIndex=0;
             var gt1 = refo1.exec(fil);
             if (gt1)
             {
               //alert ("Richtung=" + gt1[1]);
               if (gt1[1]=="mitte") style += "text-align: center;";
               if (gt1[1]=="rechts") style += "text-align: right;";
               if (gt1[1]=="fett") style += "font-weight: bold;";
               if (gt1[1]=="kursiv") style += "font-style: italic;";
             }
             refo2.lastIndex=0;
             var gt2 = refo2.exec(fil);
             if (gt2)
             {
               //alert ("Farbe=" + gt2[1]);
               style += "color:#" + gt2[1] + ";";
             }
             refo3.lastIndex=0;
             var gt3 = refo3.exec(fil);
             if (gt3)
             {
               var fh = parseInt(gt3[1]);
               var lh = parseInt(gt3[2]);
               if (lh < -4) lh = -4;
               if (2*fh < lh) lh = 2*fh;
               lh += fh;
               //alert ("Größe=" + fh + " Abstand=" + lh);
               style += "font-Size: " + fh + "pt; line-Height: " + lh + "pt;";
             }
             refo4.lastIndex=0;
             var gt4 = refo4.exec(fil);
             if (gt4)
             {
               var rl = parseInt(gt4[1]);
               var rr = parseInt(gt4[2]);
               if (rl < 0) rl = 0;
               if (rr < 0) rr = 0;
               if (120 < rr) rr = 120;
               if (120 < rl) rl = 120;
               style += "padding-Left: " + rl + "pt; padding-Right: " + rr + "pt;";
             }
             refo5.lastIndex=0;
             var gt5 = refo5.exec(fil);
             if (gt5)
             {
               if (gt5[1]=="Arial") style += "font-family: Arial;";
               if (gt5[1]=="TT") style += "font-family: Courier New;";
               if (gt5[1]=="Roman") style += "font-family: Times New Roman;";
               if (gt5[1]=="Comic") style += "font-family: Comic Sans MS;";
               if (gt5[1]=="Georgia") style += "font-family: Georgia;";
               if (gt5[1]=="Lucida") style += "font-family: Lucida Console;";
               if (gt5[1]=="Verdana") style += "font-family: Verdana;";
             }
           }
           if (0 < style.length)
           {
             re = re.replace(gt[0],"<div style=\"" + style + "\">" + gt[2] + "</div>");
           }
        }
      }

       // Smilies
      var smon = 0;
      smilieCounter = 0;
      if (0 < (mode&4)) smon = 1;
      re = replaceSmilie(re,":-)))","happy",smon);
      re = replaceSmilie(re,":-))","harlol",smon);
      re = replaceSmilie(re,":-)","icon_lol",smon);
      re = replaceSmilie(re,":-P","icon_razz",smon);
      re = replaceSmilie(re,";-))","glueck",smon);
      re = replaceSmilie(re,";-)","zwinker2",smon);
      re = replaceSmilie(re,":-D","icon_biggrin",smon);
      re = replaceSmilie(re,":kopfpatsch:","kopfpatsch",smon);
      re = replaceSmilie(re,":--:","schlecht",smon);
      re = replaceSmilie(re,":++:","daumen",smon);
      re = replaceSmilie(re,":angel:","ANGEL",smon);
      re = replaceSmilie(re,":-b","BOUNCE2",smon);
      re = replaceSmilie(re,":-k","kiffer77",smon);
      re = replaceSmilie(re,";-!","smokin",smon);
      re = replaceSmilie(re,":hug:","hug",smon);
      re = replaceSmilie(re,":kiss:","kiss2",smon);
      re = replaceSmilie(re,":lieb:","troest",smon);
      re = replaceSmilie(re,":wink:","wave",smon);
      re = replaceSmilie(re,":-u","lew",smon);

      re = replaceSmilie(re,":-(((","frust2",smon);
      re = replaceSmilie(re,":-((","heul",smon);
      re = replaceSmilie(re,":-(","icon_frown",smon);
      re = replaceSmilie(re,":-??","icon_confused",smon);
      re = replaceSmilie(re,":-?","help",smon);
      re = replaceSmilie(re,";-?","shrug",smon);
      re = replaceSmilie(re,":-o","icon_eek",smon);
      re = replaceSmilie(re,":-/","grummel",smon);
      re = replaceSmilie(re,":-V","icon_evil",smon);
      re = replaceSmilie(re,":-v","icon_mad",smon);
      re = replaceSmilie(re,":-m","butt",smon);
      re = replaceSmilie(re,":-f","fu0ck",smon);
      re = replaceSmilie(re,":-g","gaehn",smon);
      re = replaceSmilie(re,":-!","messy",smon);
      re = replaceSmilie(re,":gr:","madpunchy",smon);
      re = replaceSmilie(re,":grr:","wurf",smon);
      re = replaceSmilie(re,":grrr:","tomate",smon);
      re = replaceSmilie(re,":thread+:","good_thread",smon);
      re = replaceSmilie(re,":agb:","siehenubs",smon);
      re = replaceSmilie(re,":-r","outahere",smon);
      re = replaceSmilie(re,":-l","lehrer",smon);
      re = replaceSmilie(re,":-x","oops",smon);
      re = replaceSmilie(re,":-K","party",smon);
      re = replaceSmilie(re,":-a","puke",smon);
      re = replaceSmilie(re,":-q","rotwerd",smon);

      re = replaceAll(re,"~[~","[");
      re = replaceAll(re,"^^T","&nbsp;&nbsp;");
      //bench("smilies",5);

      // Indezes sind in der Form [index(1)=(2)](3)[/index]
      // wobei (2) die Linkadresse ist, die wiederum alles enthalten darf
      // die ZielElemente (3) haben die id="GTIndex_$GrpID_$elemID"
      // die VerweisElemente (2) haben die id="GGIndex_$GrpID_$elemID" (Wird momentan nicht verwendet, und eventuell auch in Zukunft nicht)
      // der Container für die Links hat die GIndex_$GrpID
      // nodeIndex ist ein Zähler über die Link-Container (momentan ist nur einer möglich)
      // nodeIndexElemCounter ist der Zähler über alle Links
      var b = 1;
      while (b)
      {
        b = 0;
        var indexm = bcpplus(re, "index");
        if (indexm != null)
        {
          b = 1;
          if (0 < indexm[1].length)
          {
            nodeIndexElemCounter++;
            var reri= new RegExp("\\[~#" + nodeIndexCounter + "_\\\w+#~\\]","gi");;
            RegExp.multiline=true;
            reri.lastIndex=0;
            var gt = reri.exec(re);
            if (gt)
            {
              re = re.replace(gt[0],"<div class=\"gtindex01\"><a href=\"JavaScript:setInnerIndex(" + nodeIndexCounter + "," + nodeIndexElemCounter + ");\" style=\"color:black;\">" + indexm[1] + "</a></div>" + gt[0]);
            }
            var myIStyle = "position: absolute; left: -2000px; display: none;";
            if (nodeIndexFirst)
            {
              myIStyle = "position: static; left: 0px;";
            }

            //re = re.replace("[index" + indexm[0] + "=" + indexm[1] + "]" + indexm[2] + "[/index]","<div id=\"GTIndex_" + nodeIndexCounter +"_" + nodeIndexElemCounter + "\" style=\"" + myIStyle + "\">" + indexm[2] + "</div>");
            re = re.replace("[index" + indexm[0] + "=" + indexm[1] + "]" + indexm[2] + "[/index]","<div id=\"GTIndex_" + nodeIndexCounter +"_" + nodeIndexElemCounter + "\" style=\"" + myIStyle + "\">" + indexm[2] + "</div>");
            nodeIndexFirst = false;
          }
        }
      }

      // Löschen der Index-Pionter
      // [~#1001_0#~]
      var reht=/\[~#\w+_\w+#~\]/gi;
      var b = 1
      while (b)
      {
        b = 0;
        RegExp.multiline=true;
        reht.lastIndex=0;
        var gt = reht.exec(re);
        if (gt)
        {
          b = 1;
          re = re.replace(gt[0],"");
        }
      }

  //bench("text2HTML ende",4);
 return re;
}

/*
  mode (Bit=gesetzt)
   0-2 siehe text2HTML (spezielle Mail-Stiles)
   3   M-Codes werden entfernt, ^^M als Zeilenumbruch wird ignoriert
*/
function node2HTML(node, maxImgWidth, mode)
{
  //docWindowWrite("node2HTML", "#eea", "", 0)
  // Alle Textknoten werden ersetzt durch formatierte DIVs
  if (maxImgWidth == undefined) maxImgWidth = 200;
  if (mode == undefined) mode = 0;
  nodeIndexSet = false;
  work = "";
  for (i = 0; i < node.childNodes.length; i++)
  {
    var ciNode = node.childNodes[i];
    if (ciNode.nodeType == 3)
    {
      work = work.concat(ciNode.data);
    }
  }

  var n = document.createElement("div");
  n.style.display = "inline";
  if ((mode&8) == 0) n.innerHTML = rekText2HTML(work, maxImgWidth, mode&7);
  else n.innerHTML = rekText2HTML(stripMCodes(work), maxImgWidth, mode&7);
  //ciNode.data = "";
  if (node != undefined)
  {
    removeAllChildren(node);
    node.appendChild(n);
    //ciNode.parentNode.replaceChild(n, ciNode);
  }
  // else alert (ciNode  + ":\r" + ciNode.data + "\r\r" + n);
  //nodeMakeIndex();
}

function setInnerIndex(grpIndex,elemIndex)
{
  var regb=/GTIndex_(\w+)_(\w+)/gi;
  var alp = document.getElementsByTagName("div");
  for (var i=0; i < alp.length; i++)
  {
    var node = alp[i];
    var nid = node.id;
    regb.lastIndex=0;
    var gto = regb.exec(nid);
    if (gto != null)
    {
      var tgrp = parseInt(gto[1]);
      var telem = parseInt(gto[2]);
      if (tgrp == grpIndex)
      {
        if (telem == elemIndex)
        {
          node.style.position = "static";
          node.style.left = "0px";
          node.style.display = "";
        }
        else
        {
          node.style.position = "absolute";
          node.style.left = "-2000px;";
          node.style.display = "none";
        }
      }
    }
  }
}

function node2HTML_old(node, maxImgWidth, mode)
{
  //docWindowWrite("node2HTML", "#eea", "", 0)
  // Alle Textknoten werden ersetzt durch formatierte DIVs
  if (maxImgWidth == undefined) maxImgWidth = 200;
  if (mode == undefined) mode = 0;
  for (i = 0; i < node.childNodes.length; i++)
  {
    var ciNode = node.childNodes[i];
    if (ciNode.nodeType == 3)
    {
      var r = ciNode.data;
      var n = document.createElement("div");
      n.style.display = "inline";
      if ((mode&8) == 0) n.innerHTML = rekText2HTML(ciNode.data, maxImgWidth, mode&7);
      else n.innerHTML = rekText2HTML(stripMCodes(ciNode.data), maxImgWidth, mode&7);
      //ciNode.data = "";
      if (ciNode.parentNode != undefined) ciNode.parentNode.replaceChild(n, ciNode);
      // else alert (ciNode  + ":\r" + ciNode.data + "\r\r" + n);
    }
    //bench("node " + i + " formatiert",2);
  }
}

function truncate(e,t,si,su,suy,maxImage)
{
  // Begrenzt die Länge eines Textfeldes auf si Zeichen und
  // zeigt die verbleibenden Zeichen im Textfeld mit der ID 't' an
  // si ist ein Input-Text-Feld, in dem die verbleibenden Zeichen angezeigt werden
  // su ist eine div zur Vorrausschau
  // suy ist eine Höhenbegrenzung der Vorrausschau
  srcE = nvl(e.srcElement, e.target);
  var r = srcE.value;
  var len = r.length;
  var spt = document.getElementById(t);
  if (si < len)
  { r = r.slice (0,si); srcE.value = r; len = si; }
  if (spt != undefined && spt != null)
  {
    spt.value = si-len;
  }
  if (su)
  {
    var spr = document.getElementById(su);
    if (spr)
    {
      var re = text2HTML(r, maxImage);


      spr.innerHTML=re;
      if (suy)
      {
        while (suy < spr.offsetHeight)
        {
          var lene = re.length;
          re = re.slice (0,lene-1);
          spr.innerHTML=re;
        }
      }
    }
    else
    {
      //alert ("div " + su + " Element zur Vorschau nicht gefunden");
    }
  }
}


function truncate2(inputName,t,si,su,maxImage,mode)
{
  // Begrenzt die Länge eines Textfeldes auf si Zeichen und
  // zeigt die verbleibenden Zeichen in einer DIV mit der ID 't' an
  // si ist ein Input-Text-Feld, in dem die verbleibenden Zeichen angezeigt werden
  // su ist eine div zur Vorrausschau
  // benötigt dom.js
  if (maxImage == undefined) maxImage = 200;
  if (mode == undefined) mode = 0;
  var inp = idn(inputName);
  if (inp == undefined) alert (inputName + " existiert nicht");
  var r = inp.value;
  var len = r.length;
  var spt = document.getElementById(t);
  if (spt != undefined)
  {
    removeAllChildren(spt);
    if (si < len)
    { r = r.slice (0,si); inp.value = r; len = si; }
    domText(si-len,spt);
  }
  var spr = document.getElementById(su);
  if (spr!=undefined && 0<mode)
  {
    var re = text2HTML(r, maxImage);
    spr.innerHTML=re;
    domClear(spr);
  }
}


function truncate3(textArea,vorschauID,maxImage,mode)
{
  // VorschauID ist eine ID zu einer Div zur Vorrausschau
  // benötigt dom.js
  if (maxImage == undefined) maxImage = 200;
  if (mode == undefined) mode = 0;
  var r = textArea.value;
  var spr = document.getElementById(vorschauID);
  if (spr!=undefined && 0<mode)
  {
    var re = text2HTML(r, maxImage);
    spr.innerHTML=re;
    domClear(spr);
  }
}

function lpad (number, count, fill)
{
  var erg = String(number);
  if (fill == undefined) fill = "0";
  if (count == undefined) count = 2;
  while (erg.length < count) erg = fill + erg;
  return erg;
}

function mDate(dt, mode)
{
 var monatsNamen = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
 var monatsNamenKurz = new Array("jan", "feb", "mär", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez");
 var dn = new Date();
 var dm = parseInt(dt) * 1000;
 var d = new Date(dm);
 var dyear = d.getYear();
 if (dyear < 1900) dyear += 1900;
 var dmonth = d.getMonth()+1;
 var ddate = d.getDate();
 var dhour = d.getHours();
 var dminutes = d.getMinutes();
 var dseconds = d.getSeconds();
 var erg = "";
 if (mode == 0) erg += dhour + ":" + lpad(dminutes) + ":" + lpad(dseconds) + " " + ddate + "." + lpad(dmonth) + "." + dyear;
 if (mode == 1) erg += ddate + "." + lpad(dmonth) + "." + dyear + " " + dhour + ":" + lpad(dminutes) + ":" + lpad(dseconds);
 if (mode == 2) erg += ddate + "." + lpad(dmonth) + "." + dyear;
 if (mode == 3) erg += dhour + ":" + lpad(dminutes) + ":" + lpad(dseconds);
 if (mode == 4) erg += dhour + ":" + dminutes;
 if (mode == 5) erg += Math.floor((dn-d) / 1000);
 if (mode == 6)
 {
   di =  Math.floor((dn-d) / 1000);
   if (0 < di)
   {
     if (di < 60)erg += di + "sek";
     else
     {
       di /= 60;
       if (di < 60) erg += Math.floor(di) + "min";
       else
       {
         di /= 60;
         if (di < 24) erg += Math.floor(di) + "std";
         else erg += Math.floor(di/24) + "d";
       }
     }
   }
 }
 if (mode == 7)
 {
   // für Chat-Mode
   di =  Math.floor((dn-d) / 1000);
   if (0 < di)
   {
     if (di < 60) erg += di + "sek";
     else
     {
       di /= 60;
       if (di < 60) erg += Math.floor(di) + "min";
       // Was soll man angeben, wenn der Kontakt älter ist als 60min ?
       else erg += "";
     }
   }
 }
 if (mode == 8) erg = ddate + "." + lpad(dmonth) + "." + lpad(dyear%100) + " " + dhour + ":" + lpad(dminutes);
 if (mode == 9) erg += dhour + ":" + lpad(dminutes) + " " + ddate + "." + lpad(dmonth) + "." + lpad(dyear%100);
 if (mode == 10) erg += ddate + "." + lpad(dmonth) + "." + lpad(dyear%100) + " " + dhour + ":" + lpad(dminutes);
 if (mode == 14) erg += ddate + "." + monatsNamen[(dmonth - 1)%12] + "." + lpad(dyear%100);
 if (mode == 15) erg += ddate + "." + monatsNamen[(dmonth - 1)%12] + "." + lpad(dyear%100) + " " + dhour + ":" + lpad(dminutes);
 if (mode == 11 || mode == 13)
 {
   erg = domFDiv();
   erg.style.display = "inline";
   // der Mode für das Forum
   di =  Math.floor((dn-d) / 1000);
   dbeitrag = Math.floor ((parseInt(d) + 3600000) / 86400000);
   djetzt = Math.floor (parseInt(dn) / 86400000);
   if ((djetzt - dbeitrag) < 2)
   {
     if (di < 900 && mode == 13)
     {
       bjetzt = domDiv(domText("vor ") , erg);

       tsec = di % 60;
       tbeitrag = Math.floor(di / 60);
       tmin = tbeitrag % 60;

       if (0 < tmin) domText(tmin + " min", bjetzt);
       else domText(tsec + " sek", bjetzt);

       bjetzt.style.color = "#800";
       bjetzt.style.display = "inline";
       bjetzt.style.fontWeight = "bold";
     }
     else
     {
       if ((djetzt - dbeitrag) < 1)
       {
         bheute = domDiv(domText("heute ") , erg);
         bheute.style.color = "#800";
         bheute.style.display = "inline";
         bheute.style.fontWeight = "bold";
       }
       else if ((djetzt - dbeitrag) < 2)
       {
         bgestern = domDiv(domText("gestern ") , erg);
         bgestern.style.color = "#080";
         bgestern.style.display = "inline";
         bgestern.style.fontWeight = "bold";
       }
       tbeitrag = Math.floor((parseInt(d) + 3600000) / 1000 - dbeitrag * 86400);
       tsec = tbeitrag % 60;
       tbeitrag = Math.floor(tbeitrag / 60);
       tmin = tbeitrag % 60;
       tbeitrag = Math.floor(tbeitrag / 60);
       thour = tbeitrag;
       domText (thour + ":" + lpad(tmin) , erg);
     }
   }
   else
   {
     if (0 < di)
     {
       domText ("vor " , erg);
       if (di < 60) domText(di + "sek" , erg);
       else
       {
         di /= 60;
         if (di < 60) domText(Math.floor(di) + "min" , erg);
         else
         {
           di /= 60;
           if (di < 24) domText(Math.floor(di) + "std" , erg);
           else
           {
             var ddays = Math.floor(di/24);
             domText(ddays , erg);
             if (ddays == 1) domText(" Tag" , erg);
             else domText(" Tagen" , erg);
           }
         }
       }
     }
   }
 }

 // Anzeige für heute und gestern
 if (mode == 12)
 {
   erg = domFDiv();
   erg.style.display = "inline";
   // der Mode für das Forum
   di =  Math.floor((dn-d) / 1000);
   dbeitrag = Math.floor ((parseInt(d) + 3600000) / 86400000);
   djetzt = Math.floor (parseInt(dn) / 86400000);
   if ((djetzt - dbeitrag) < 2)
   {
     if ((djetzt - dbeitrag) < 1)
     {
       bheute = domDiv(domText("heute ") , erg);
       bheute.style.color = "#800";
       bheute.style.display = "inline";
       bheute.style.fontWeight = "bold";
     }
     else if ((djetzt - dbeitrag) < 2)
     {
       bgestern = domDiv(domText("gestern ") , erg);
       bgestern.style.color = "#080";
       bgestern.style.display = "inline";
       bgestern.style.fontWeight = "bold";
     }
     tbeitrag = Math.floor((parseInt(d) + 3600000) / 1000 - dbeitrag * 86400);
     tsec = tbeitrag % 60;
     tbeitrag = Math.floor(tbeitrag / 60);
     tmin = tbeitrag % 60;
     tbeitrag = Math.floor(tbeitrag / 60);
     thour = tbeitrag;
     domText (thour + ":" + lpad(tmin) , erg);
   }
   else
   {
     if (0 < di)
     {
       domText (ddate + "." + lpad(dmonth) + "." + lpad(dyear%100) + " " + dhour + ":" + lpad(dminutes) , erg);
     }
   }
 }

 // HTML-Ausgabe für relative Angaben
 if (mode == 16 || mode == 17 || mode == 18)
 {
   //var di =  Math.round((dn-d) / 1000);
   var di =  Math.floor((dn-d) / 1000);
   erg = di;
   var din = -di;
   if (0 <= di && di < 60) erg = "vor " + di + "sek";
   if (60 <= di && di < 3600) erg = "vor " + Math.floor(di/60) + "min und " + (di%60) + "sek";
   if (3600 <= di && di < 86400)
   {
     var dim = Math.floor(di/60);
     var dimh = Math.floor(dim/60);
     var dimm = Math.floor((dim%60));
     erg = "vor " + dimh + " Stunde" + ((dimh==1)?"":"n");
     if (dimm != 0) erg += " und " + dimm + " Minute" + ((dimm==1)?"":"n");
   }
   if (86400 <= di)
   {
     var dim = Math.floor(di/3600);
     var dimd = Math.floor(dim/24);
     var dimh = Math.floor((dim%24));
     erg = "vor " + dimd + " Tag" + ((dimh==1)?"":"en");
     if (dimh != 0) erg += " und " + dimh + " Stunde" + ((dimh==1)?"":"n");
   }
   if (0 < din && din < 60)
   {
     erg = "in " + din + "sek";
   }
   if (60 <= din && din < 3600)
   {
     erg = "in " + Math.floor(din/60) + "min und " + (din%60) + "sek";
   }
   if (3600 <= din && din < 86400)
   {
     var dim = Math.floor(din/60);
     var dimh = Math.floor(dim/60);
     var dimm = Math.floor((dim%60));
     erg = "in " + dimh + " Stunde" + ((dimh==1)?"":"n");
     if (dimm != 0) erg += " und " + dimm + " Minute" + ((dimm==1)?"":"n");
   }
   if (86400 <= din)
   {
     var dim = Math.floor(din/3600);
     var dimd = Math.floor(dim/24);
     var dimh = Math.floor((dim%24));
     erg = "in " + dimd + " Tag" + ((dimh==1)?"":"en");
     if (dimh != 0) erg += " und " + dimh + " Stunde" + ((dimh==1)?"":"n");
   }
   if (mode == 17)
   {
     if (0 <= din && din < 7200) erg = "<font color=\"#AA0000\" style=\"font-weight: bold;\">" + erg + "</font>";
     if (7200 <= din && din < 86400) erg = "<font color=\"#AA6600\" style=\"font-weight: bold;\">" + erg + "</font>";
   }
   if (mode == 18)
   {
     if (0 <= din && din < 7200) erg = "<font color=\"#AA0000\" style=\"font-weight: bold; font-size: 16pt;\">" + erg + "</font>";
     if (7200 <= din && din < 86400) erg = "<font color=\"#AA0000\" style=\"font-weight: bold; font-size: 12pt;\">" + erg + "</font>";
   }
 }
 if (mode == 20) erg += ddate + "." + monatsNamenKurz[(dmonth - 1)%12] + "." + lpad(dyear%100);


 // Reine Textausgabe
 if (mode == 21)
 {
   di =  Math.floor((dn-d) / 1000);
   if (0 < di)
   {
     if (di < 60)erg += "vor " + di + "sek";
     else
     {
       di /= 60;
       if (di < 60) erg += "vor " + Math.floor(di) + "min";
       else
       {
         di /= 60;
         if (di < 24) erg += "vor " + Math.floor(di) + "std";
         else
         erg = mDate(dt,22);
       }
     }
   }
 }
 if (mode == 22) erg += ddate + "." + lpad(dmonth) + "." + lpad(dyear%100);
 if (mode == 23) erg += ddate + "." + monatsNamenKurz[(dmonth - 1)%12] + "." + lpad(dyear%100) + " " + dhour + ":" + lpad(dminutes);

 return erg;
}

function moreSmilies(event, urla)
{
  var v = window.open(urla,"candlem","resizable,scrollbars,toolbar,titlebar,personalbar");
  v.innerHeight = 200;
  v.innerWidth = 400;
}

function replaceImg(ri)
{
 var t = 1;
 while (t)
 {
   t = 0;
   var re=/(^.*)(\[img.:.*\])(.*)/gi;
   re.lastIndex=0;
   RegExp.multiline=true;
   var gt = re.exec(ri);
   var rei=/\[img.:(.*)\]/i;
   if (gt)
   {
     t = 1;
     var gtimg = rei.exec(gt[2]);
     if (gtimg)
     {
       var spt = document.getElementById(gtimg[1]);
       //alert(gtimg);
       //showObject(spr);
       if (spt)
       {
         var re = /\W(\w*\.(jpg|tif))/i;
         var gto = re.exec(spt.src);
         ri = gt[1] + "<img src=\"/projekt01/img/" + gto[1] + "\" style=\"float:left;\">"  + gt[3];
       }
       else
       {
         ri = gt[1] + " <b style=\"color:#f00\"><tt>Fehler, kein Image </tt>"+ gtimg[1] +"<tt> gefunden</tt></b> " + gt[3];
       }
     }
   }
 }
 return ri;
}


function ins(e, tf, element)
{
  srcE = nvl(e.srcElement, e.target);
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat(element); spr.focus(); }
}

function insm(e, tf, element)
{
  var spr = window.opener.document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat(element); spr.focus(); }
  //showObject (window.opener.document);
}

var vfett = 0;
var vkursiv = 0;
var vroman = 0;
var vheader = 0;
var vfooter = 0;
var vwarn = 0;
var vunder = 0;
var vframe = 0;

function fett(e, tf)
{
  var ev = ""; var ea = "";
  //vfett = 1 - vfett;
  //ev = (vfett ? "*bold*" : "bold"); ea = (vfett ? "[b]" : "[/b]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[b][/b]"); spr.focus(); }
}

function kursiv(e, tf)
{
  var ev = ""; var ea = "";
  //vkursiv = 1 - vkursiv;
  //ev = (vkursiv ? "*italic*" : "italic"); ea = (vkursiv ? "[i]" : "[/i]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[i][/i]"); spr.focus(); }
}

function roman(e, tf)
{
  var ev = ""; var ea = "";
  //vroman = 1 - vroman;
  //ev = (vroman ? "*roman*" : "roman"); ea = (vroman ? "[r]" : "[/r]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[r][/r]"); spr.focus(); }
}

function header(e, tf)
{
  var ev = ""; var ea = "";
  //vheader = 1 - vheader;
  //ev = (vheader ? "*groß*" : "groß"); ea = (vheader ? "[z]" : "[/z]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[z][/z]"); spr.focus(); }
}

function footer(e, tf)
{
  var ev = ""; var ea = "";
  //vfooter = 1 - vfooter;
  //ev = (vfooter ? "*klein*" : "klein"); ea = (vfooter ? "[zz]" : "[/zz]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[zz][/zz]"); spr.focus(); }
}

function warn(e, tf)
{
  var ev = ""; var ea = "";
  //vwarn = 1 - vwarn;
  //ev = (vwarn ? "*rot*" : "rot"); ea = (vwarn ? "[w]" : "[/w]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[w][/w]"); spr.focus(); }
}

function underline(e, tf)
{
  var ev = ""; var ea = "";
  //vunder = 1 - vunder;
  //ev = (vunder ? "*underline*" : "underline"); ea = (vunder ? "[u]" : "[/u]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[u][/u]"); spr.focus(); }
}

function quoteframe(e, tf)
{
  var ev = ""; var ea = "";
  //vframe = 1 - vframe;
  //ev = (vframe ? "*rahmen*" : "rahmen"); ea = (vframe ? "[frame]" : "[/frame]");
  srcE = nvl(e.srcElement, e.target);
  //srcE.value = ev;
  var spr = document.getElementById(tf);
  if (spr) { spr.value = spr.value.concat("[frame][/frame]"); spr.focus(); }
}

function img(e, tf)
{
  var tid = e.srcElement.id;
  var spr = document.getElementById(tf);
  spr.value = spr.value.concat('[imgl:',tid,']'); spr.focus();
}

function insertImg(e, tf, adr, dir, imgg)
{
  var spr = document.getElementById(tf);
  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();
}


function insertImgl(e, tf, adr, size)
{
  var spr = document.getElementById(tf);
  spr.value = spr.value.concat("[imgl");
  if (size != undefined) if (5 < size) spr.value = spr.value.concat(size);
  spr.value = spr.value.concat("]" , adr , "[/img]");
  spr.focus();
}

function insertImgc(e, tf, adr, size)
{
  var spr = document.getElementById(tf);
  spr.value = spr.value.concat("[imgc");
  if (size != undefined) if (5 < size) spr.value = spr.value.concat(size);
  spr.value = spr.value.concat("]" , adr , "[/img]");
  spr.focus();
}

function setTextAreaSize(event,tf,value) {
  var spr = document.getElementById(tf);
  if (spr != undefined && 0 < value) {
    spr.rows = value;
    spr.focus();
  }
}

function hideDiv(e, tf, t)
{
  var spr = document.getElementById(tf);
  if (!t) t = "Vorschau";
  //showObject(spr);
  srcE = nvl(e.srcElement, e.target);
  if (spr.style.display == "none") { spr.style.display = "inline"; srcE.value = t + " aus";}
  else { spr.style.display = "none"; srcE.value = t + " an";}
}

function openDiv(e, tf)
{
  if (tf == undefined) tf = e;
  var spr = document.getElementById(tf);
  spr.style.display = "inline";
}

function toggleDiv(e, tf)
{
  if (tf == undefined) tf = e;
  var spr = document.getElementById(tf);
  if (spr.style.display == "none") spr.style.display = "inline";
  else spr.style.display = "none";
}

function hideDivB(e, tf, t)
{
  var spr = document.getElementById(tf);
  if (!t) t = "Vorschau";
  //showObject(spr);
  srcE = null;
  if (e != null) srcE = nvl(e.srcElement, e.target);
  if (spr.style.display == "none")
  {
    spr.style.display = "block";
    if (srcE != null) srcE.value = t + " aus";
  }
  else
  {
    spr.style.display = "none";
    if (srcE != null) srcE.value = t + " an";
  }
}


//=================================
// div advanced
//=================================

function elementOpen(tid)
{
  var spr = document.getElementById(tid);
  if (spr != undefined) spr.style.display = "";
}

function elementClose(tid)
{
  var spr = document.getElementById(tid);
  if (spr != undefined) spr.style.display = "none";
}


function elementToggle(tid, mode)
{
  var spr = document.getElementById(tid);
  if (mode == undefined) mode = 0;
  if (spr != undefined)
  {
    if (mode == 0)
    {
      if (spr.style.display == "") spr.style.display = "none";
      else spr.style.display = "";
    }
  }
}

//=================================
// spezielles Open
//=================================

function dopen(event,basisname,index,type)
{
  //showObject(document);

  var spr = document.getElementsByTagName("div");
   for (var i=0; i < spr.length; i++)
   {
     node = spr[i];
     //node = document.getElementById(i);
     if (node)
     {
         //showObject(node);
         nodeid = node.id;

         var re = /^(.*)\-(.*)$/gi;
         re.lastIndex=0;
         var gto = re.exec(nodeid);
         if (gto != null)
         {
           if (gto[1] == basisname)
           {
             if (gto[2] == index)
             {
                //alert("found " + basisname + "-" + index);
                if (type == undefined)
                  node.style.display="inline";
                else
                  {
                    if (type == 0) node.style.display="block";
                    if (type == 1) node.style.fontWeight="bold";
                    if (type == 2) { node.style.color="#ffffff"; node.style.backgroundColor="#000077"; }
                    if (type == 3) { node.style.position="relative"; node.style.left="0px"; }
                  }
             }
             else
             {
                if (type == undefined)
                  node.style.display="none";
                else
                  {
                    if (type == 0) node.style.display="none";
                    if (type == 1) node.style.fontWeight="normal";
                    if (type == 2) { node.style.color="#000000";  node.style.backgroundColor="#eeeeee";  }
                    if (type == 3) { node.style.position="absolute"; node.style.left="-2000px"; }
                  }
             }
           }
         }
     }
   }
}

function dopen2(basisname,index,type, tagType)
{
  //showObject(document);

  if (tagType == undefined) tagType = "div";
  var spr = document.getElementsByTagName(tagType);
  for (var i=0; i < spr.length; i++)
  {
    node = spr[i];
    if (node)
    {
      nodeid = node.id;
      var re = /^(.*)\-(.*)$/gi;
      re.lastIndex=0;
      var gto = re.exec(nodeid);
      if (gto != null)
      {
        if (gto[1] == basisname)
        {
          if (gto[2] == index)
          {
            //alert("found2open " + basisname + "-" + index + " " + type);
            if (type == undefined)
              node.style.display="inline";
            else
            {
              if (type == 0) node.style.display="block";
              if (type == 1) node.style.fontWeight="bold";
              if (type == 2) node.style.backgroundColor=styleOfBackground(gstylehi);
              if (type == 3)
              {
                node.style.position="relative";
                node.style.left="0pt";
                node.style.top="0pt";
              }
            }
          }
          else
          {
            //alert("found2close " + basisname + "-" + gto[2] + " " + type);
            if (type == undefined)
              node.style.display="none";
            else
            {
              if (type == 0) node.style.display="none";
              if (type == 1) node.style.fontWeight="normal";
              if (type == 2) node.style.backgroundColor=styleOfBackground(gstylebu);
              if (type == 3)
              {
                node.style.position="absolute";
                node.style.left="-2000pt";
                node.style.top="-2000pt";
              }
            }
          }
        }
      }
    }
  }
}


function dopenAll(event,basisname, type)
{
  //showObject(document);
  if (type == undefined) type=0;
  var spr = document.getElementsByTagName("div");
  for (var i=0; i < spr.length; i++)
   {
     node = spr[i];
     //node = document.getElementById(i);
     if (node)
     {
         //showObject(node);
         nodeid = node.id;

         var re = /^(.*)\-(.*)$/i;
         var gto = re.exec(nodeid);
         if (gto != null)
         {
           if (gto[1] == basisname)
           {
             if (type==0) node.style.display="block";
             if (type==1) node.style.display="inline";
             if (type==2) node.style.display="none";
             if (type==3) node.style.display="";
           }
         }
     }
   }
   return true;
}


function setRows(event, basisname, basisnr ,nr , entr)
{
  /*
    öffnet und schliesst die Spalten einer Zeile
    Die ID der Zeile hat die Form 'id-ziffer1-ziffer2'
    Betrachtet werden
      id = basisname
      ziffer1 = basisnr
    Geschlossen davon werden alle Zeilen, die gilt
      floor(ziffer2 / entr) = nr
  */
 spr = document.getElementsByTagName("tr");
 var re=/(.*)-(.*)-(.*)/gi;
 for (var i=0; i < spr.length; i++)
 {
      var nid = spr[i].id;
      re.lastIndex=0;
      var gto = re.exec(nid);
      if (gto != null)
      {
        ibasisname = gto[1];
        if (basisname == ibasisname)
        {
          fnumber = parseInt(gto[2]);
          snumber = parseInt(gto[3]);
          sinumber = Math.floor(snumber/entr);
          if (fnumber == basisnr)
          {
            if (sinumber == nr) spr[i].style.display = "";
            else spr[i].style.display = "none";
          }
          //w.document.writeln(spr[i].id + " " + fnumber + " " + snumber + " " + Math.floor(snumber/8) + "<br>");
        }
      }
 }
}


function trswitch(basisname, type)
{
  /*
    öffnet und schliesst die Spalten einer Zeile
    Die ID der Zeile hat die Form 'id-ziffer'
    Betrachtet werden
      id = basisname
  */

 if (type == undefined) type=0;
 spr = document.getElementsByTagName("tr");
 var re=/(.*)-(.*)/gi;
 var tnr = -1;

 re.lastIndex=0;
 var gtma = re.exec(basisname);
 if (gtma != null)
 {
   basisname = gtma[1];
   tnr = gtma[2];
 }

 for (var i=0; i < spr.length; i++)
 {
      var nid = spr[i].id;
      re.lastIndex=0;
      var gto = re.exec(nid);
      if (gto != null)
      {
        ibasisname = gto[1];
        if (basisname == ibasisname)
        {
            ibasisnr = gto[2];
            if (tnr == -1 || tnr==ibasisnr)
            {
              if (type == 0)
              {
                if (spr[i].style.display == "") spr[i].style.display = "none";
                else spr[i].style.display = "";
              }
              if (type == 1) spr[i].style.display = "";
              if (type == 2) spr[i].style.display = "none";
            }
        }
      }
 }

  //showObject(spr);

}

//=================================
// spezielles Submit
//=================================

// Macht ein Clone alle Formularfelder des Typs 'kenn-***'
// (Sternchen steht dann für was beliebiges Nichtleeres)
// in das Formular mit der Namen 'formname'
// und submitted das Formular;
// Gedacht für Seiten, mit verschiedenen Formularmöglichkeiten
//
// Besser ist aber immer, wenn es für alles nur ein einziges Formular gibt
// und es über verschiedene Submit-Knöpfe ausgewertet wird

function subm(event, formname, kenn)
{
 var form = null;

 var form = document.getElementsByName(formname)[0];
 //showObject (f);
 //showObject (form);


 if (form == null) alert ("Formular nicht gefunden: " + formname);
 else
 {
    form.innerHTML = "";
    tags = new Array();
    tags = tags.concat (document.getElementsByTagName("input"));
    tags = tags.concat (document.getElementsByTagName("select"));
    tags = tags.concat (document.getElementsByTagName("textarea"));


    // Ersetzen durch TagNameSuche
    for (var ti = 0; ti < tags.length; ti++)
    {
      var tn = tags[ti];
      for (var i = 0; i < tn.length; i++)
      {
         var n = tn[i];
            var re = /^(.*)\-(.*)$/i;
            var gto = re.exec(n.name);
            if (gto != null)
            {
              if (gto[1] == kenn)
              {
                var found = false;
                for (var j = 0; j < form.length; j++)
                {
                  if (n.name == form[j].name)
                  {
                    found = true;
                    if (n.type == 'radio') found = !n.checked;
                  }
                }
                //alert (found + "\n" + gto[1] + " " + gto[2] + "\nType " + n.type + "\nValue " + n.value + "\nChecked " + n.checked)
                if (!found)
                {
                   if (n.form == null)
                     {
                       var clone = n.cloneNode(8)
                       form.appendChild(clone);
                       clone.value = n.value;
                       clone.checked = n.checked;
                       clone.selectedIndex = n.selectedIndex;
                     }
                }
              }
            }
         } // for Schleife
    } // for Schleife
    form.submit();
 }
}

//=================================
// Submit per Script auslösen
//=================================

function hrefsubmit(event, formname, tname)
{
 var form = null;

 form = document.getElementsByName(formname)[0];

 if (form == null) alert ("Formular nicht gefunden: " + formname);
 else
 {
    var postElems = explode(tname,"&");
    for (var i = 0; i < postElems.length; i++)
    {
      var sui = document.createElement("input");
      form.appendChild(sui);
      sui.name = postElems[i];
      sui.value = 1;
    }
    //showObject (sui);
    form.submit();
 }
 return true;
}

/*
  Aufruf
    hsubmit('ka','hhh&hhu&hha')
  wird umgewandelt in ein Formular
*/
function hsubmit(formname, tname)
{
 var form = null;
 form = document.getElementsByName(formname)[0];
 if (form == null) alert ("Formular nicht gefunden: " + formname);
 else
 {
    var postElems = explode(tname,"&");
    for (var i = 0; i < postElems.length; i++)
    {
      var sui = document.createElement("input");
      form.appendChild(sui);
      sui.name = postElems[i];
      sui.value = 1;
    }
    //showObject (sui);
    form.submit();
 }
 return true;
}

//=================================
// Termineingabe im Forum
//=================================


var ft_r = new Array();
var ft_we = Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");

function ft_read(data)
{
 var re=/^(.*?)#(.*)/i;
 var rep=/(.*)@(.*)@(.*)@(.*)@(.*)@(.*)/i;
 re.lastIndex=0;
 RegExp.multiline=true;

 var gt;
 while (gt = re.exec(data))
 {
   p = gt[1];
   data = gt[2];
   pi = rep.exec(p);
   var t = new Object;
   t.wo = pi[1];
   t.tag = pi[2];
   t.monat = pi[3];
   t.jahr = pi[4];
   t.std = pi[5];
   t.min = pi[6];
   ft_r.push(t);
 }
 ft_show();
}

function ft_show()
{
  var spt = document.getElementById('termin');
  var sedi = document.getElementById('atermin');
  sedi.value = "";
  var erg="<table border=\"0\">";
  for (i=0;i<ft_r.length;i++)
  {
   erg=erg.concat("<tr><td class=\"TextS\" style=\"text-align:right;\";>");
   if (0 < ft_r[i].wo)
   {
    erg=erg.concat(ft_we[ft_r[i].wo-1],"</td><td class=\"TextS\" style=\"text-align:right;\";>",ft_r[i].std,":",ft_r[i].min);
   }
   else
   {
    erg=erg.concat(ft_r[i].tag,".",ft_r[i].monat,".",ft_r[i].jahr,"</td><td class=\"TextS\" style=\"text-align:right;\";>",ft_r[i].std,":",ft_r[i].min);
   }
  sedi.value = sedi.value.concat(ft_r[i].wo, "@", ft_r[i].tag, "@", ft_r[i].monat, "@", ft_r[i].jahr, "@", ft_r[i].std, "@", ft_r[i].min, "#");
    erg=erg.concat("</td><td class=\"TextS\"><div style=\"display:block;width:250px;text-align:right;\"><button onClick=\"return ft_change("+i+")\" class=\"buttonSP\">Ändern</button>");
    erg=erg.concat("<button onClick=\"return ft_del("+i+")\" class=\"buttonSP\">Löschen</button></div>");
    erg=erg.concat("</td></tr>");
  }
  erg = erg.concat("</table>");
  spt.innerHTML = erg;
}

function ft_get(style)
{
  var tag = document.getElementById('kDay');
  var monat = document.getElementById('kMon');
  var jahr = document.getElementById('kJahr');
  var wo = document.getElementById('wDay');
  var std = document.getElementById('kHours');
  var min = document.getElementById('kMin');
  var t = new Object;
  t.tag = tag.value;
  t.monat = monat.value;
  t.jahr = jahr.value;
  t.std = std.value;
  t.min = min.value;
  t.wo = wo.value;
  //showObject(spt3);
  ft_r.push(t);
  ft_show();
  return false;
}


function ft_del(nr)
{
  if (nr==0) { ft_r=ft_r.slice(1,ft_r.length); }
  else
  if (nr==ft_r.length-1) { ft_r=ft_r.slice(0,ft_r.length-1); }
  else
  if (0<nr && nr<ft_r.length-1)
  {
    ra=ft_r.slice(0,nr);
    rb=ft_r.slice(nr+1,ft_r.length);
    ft_r=ra.concat(rb);
  }
  ft_show();
  return false;
}

function ft_change(i)
{
  var tag = document.getElementById('kDay');
  var monat = document.getElementById('kMon');
  var jahr = document.getElementById('kJahr');
  var wo = document.getElementById('wDay');
  var std = document.getElementById('kHours');
  var min = document.getElementById('kMin');
  tag.value = ft_r[i].tag;
  monat.value = ft_r[i].monat;
  jahr.value = ft_r[i].jahr;
  wo.value = ft_r[i].wo;
  std.value = ft_r[i].std;
  min.value = ft_r[i].min;
  ft_del(i);
  return false;
}

//=================================
// Tracking, Browser, etc...
//=================================

function setBrowserInfos(frmName, target)
{

 var erg = "";
 erg += "[appCodeName: " + navigator.appCodeName + "]\n";
 erg += "[appName: " + navigator.appName + "]\n";
 erg += "[cpuClass: " + navigator.cpuClass + "]\n";
 erg += "[platform: " + navigator.platform + "]\n";
 erg += "[appVersion: " + navigator.appVersion + "]\n";
 erg += "[userAgent: " + navigator.userAgent + "]\n";
 erg += "[cookieEnabled: " + navigator.cookieEnabled + "]\n";
 erg += "[width: " + window.screen.width + "]\n";
 erg += "[height: " + window.screen.height + "]\n";
 erg += "[availWidth: " + window.screen.availWidth + "]\n";
 erg += "[availHeight: " + window.screen.availHeight + "]\n";
 erg += "[colorDepth: " + window.screen.colorDepth + "]\n";
 for (var i = 0; i < window.history.length; i++)
 {
   if (window.history[i] != undefined) erg += "[History" + i + ":" + window.history[i] + "]\n";
 }

 var spr = document.getElementsByName(target);
 var frm = document.getElementsByName(frmName);
   if (spr != null && frm != null )
   {
     //showObject (spr[0]);
     spr[0].value=erg;
     frm[0].submit();
   }
}

//=================================
// Hilfe Highlighting
//=================================
function hilfe(idh)
{
  var spr = document.getElementById(idh);
  spr.style.borderWidth="1pt";
  spr.style.borderColor="#f00";
  spr.style.borderStyle="solid";
  spr.style.color="#000";
  spr.style.padding="2pt";
}

function hilfeOff(idh)
{
  var spr = document.getElementById(idh);
  spr.style.borderWidth="1pt";
  spr.style.borderColor="#ccc";
  spr.style.borderStyle="solid";
  spr.style.color="#111";
  spr.style.padding="2pt";
}

var v = 1;

function helpW(event, datei, userDat, anker)
{
 if (anker == undefined) anker = "";
 else anker = "#" + anker;
 var path="./hilfe/" + datei + ".html" + anker;
 var w;
 w = window.open("./hilfe/hilfe.html","help" + v,"resizable,scrollbars,toolbar,titlebar,personalbar");
 v = v + 1;
 // Warten, bis die Frames aufgebaut sind
 w.resizeTo(600,600);
 while (w.frames == undefined);
 while (w.frames.length < 2);
 while ((w.frames[1] == undefined) || (w.frames[2] == undefined));
 w.frames[1].location = path;
 w.frames[2].location = "../frame.php?action=mail2adm&" + userDat;
 w.focus();
 //showObject (w);
}

function ownwindow(event, datei, mode)
{
 if (mode == undefined) mode = 0;
 var dn = new Date();
 var width = 0;
 var height = 0;
 if (mode == 1)
 {
   width = 360;
   height = 240;
 }
 var w = null;
 if (width == 0 || height == 0)
 {
   //w = window.open(datei,"mail" + Date.parse(dn),"resizable,scrollbars,toolbar,titlebar,personalbar");
   w = window.open(datei,"mail" + Date.parse(dn),"");
 }
 else w = window.open(datei,"mail" + Date.parse(dn),"resizable,scrollbars,toolbar,titlebar,personalbar,height="+height+",width="+width);
 //w.resizeTo(800,600);
 w.focus();
}

function popwindow(name, datei)
{
 var dn = new Date();
 var w = window.open(datei,name + "_" + Date.parse(dn),"resizable,scrollbars,toolbar,titlebar,personalbar,height=600,width=400");
 w.resizeTo(600,400);
 w.focus();
}

function sparentwindow(event, datei)
{
  window.opener.location.href = datei;
}

function ccwindow(mb)
{
  if (window.opener != undefined)
  {
    window.opener.location=mb;
    window.close();
  }
}

//=================================
// Highlighting Button
//=================================

function setBKR(elem, color)
{
  if (elem != null)
  {
    if (elem.style != null) elem.style.background = color;
    for (var i = 0; i < elem.childNodes.length; i++)
    {
      setBKR(elem.childNodes[i], color);
    }
  }
}

function setBK(e, color)
{
  // Setzt das nächste Element mit Reaktion auf Mausklick auf die entsprechende Hintergrundfarbe
  var srcE = nvl(e.srcElement, e.target);
  //showObject (srcE);
  var pE = srcE;
  var erg = false;
  while (!erg)
  {
    if (pE == undefined) erg = true
    else
    {
      erg = (pE.onclick != null);
      erg = erg || (pE.tagName == "INPUT");
      if (pE.href != null)
      {
        if (pE.tagName == "A" || pE.tagName == "a") erg = erg || (5 < pE.href.length);
      }
      if (!erg) pE = pE.parentNode;
    }
  }
  //alert (e + " " + srcE + " " + pE.tagName + " " + color);
  //alert (color + "\n" + pE.style.backgroundColor + "\n" + pE.bgColor);
  //showObject(pE);
  if (pE != undefined) setBKR(pE, color);
  //showObject (srcE);
}


/*******************
 Instant Graphic
********************/


function resizeExp(event, size)
{
  vpic = nvl(event.srcElement, event.target);
  if (vpic.width < vpic.height) vpic.width = size+"pt";
  else vpic.heigth = size+"pt";

}

/*
  side:
    undefined, 0 = float left
    1            = float right
    2            = normal
  resizeStyle
    undefined, 0 = max für beide Seiten
    1            = max nur für Höhe
    2            = max nur für Breite

*/
function resize(event, size, side, resizeStyle)
{
  vpic = nvl(event.srcElement, event.target);
  resizeElem (vpic, size, side, resizeStyle);
}

/*
function resizeElemID(elemID, size, side)
{
  vpic = document.getElementById(elemID);
  resizeElem (vpic, size, side);
}
*/

var resizeImg = new Array();
var setResizeFun = true;

function resizeElem(elem, size, side, resizeStyle)
{
  var b = false;
  var index = 0;
  for (var i=0; i<resizeImg.length; i++)
  {
    if (elem.id == resizeImg[i].id)
    {
      b = true;
      index = 0;
    }
  }
  if (b)
  {
    resizeImg[index].done = false;
  }
  else
  {
    var m = new Object;
    if (resizeStyle == undefined) resizeStyle = 0;
    m.img = elem;
    m.id = elem.id;
    m.size = size;
    m.side = side;
    m.sty = resizeStyle;
    m.done = false;
    resizeImg.push (m);
  }
  if (setResizeFun)
  {
    window.setInterval("resizeElemIntervall()",250);
    setResizeFun = false;
  }
}

function resizeElemID(elemID, size, side, resizeStyle)
{
  //docWindowWrite("Graphik hinzugefügt " + elemID, "#cca", "Size: " + size, 0)
  var m = new Object;
  if (resizeStyle == undefined) resizeStyle = 0;
  m.img = null;
  m.id = elemID;
  m.size = size;
  m.side = side;
  m.sty = resizeStyle;
  m.done = false;
  resizeImg.push (m);
  if (setResizeFun)
  {
    window.setInterval("resizeElemIntervall()",250);
    setResizeFun = false;
  }
}

function resizeElemIntervall()
{
  var i=0;
  while (i < resizeImg.length)
  {
    red = false
    m = resizeImg[i];
    if (!m.done)
    {
      elem = m.img;
      elemID = m.id;
      if (elem == null || elem == undefined)
      {
        elem = document.getElementById(elemID);
      }
      if (elem != null && elem != undefined)
      {
        if (elem.complete && 0<elem.width) red = true;
      }
      if (red)
      {
        //docWindowWrite("Graphik wird verkleinert", "#cca", "id: " + elemID, 0)
        //alert (elem.id + " " + elem.width + " " + m.size);
        size = m.size;
        side = m.side;
        sty = m.sty;
        w = elem.width;
        h = elem.height;
        //showObject (elem);
        //alert (elem.id + " " + w + " " + h);
        if (size < w || size < h )
        {
          var dx = (Math.ceil(w / size));
          var dy = (Math.ceil(h / size));
          var d = dx;
          if (d < dy) d = dy;
          var ddx = (w / size);
          var ddy = (h / size);
          var dd = ddx;
          if (dd < ddy) dd = ddy;
          if (sty == 0)
          {
            wn =   w / d;
            elem.width = wn;
          }
          if (sty == 1)
          {
            elem.width *= size / elem.height;
            elem.height = size;
          }
          if (sty == 2)
          {
            elem.style.height = h * size / w + "px";
            elem.style.width = size + "px";
          }
        }
        if ((side == undefined) || (side == 0))
          elem.style.styleFloat = "left";
        else
          {
            if (side == 1) elem.style.styleFloat = "right";
            if (side == 2) elem.style.styleFloat = "";
          }
        m.done = true;
      }
    }
    i++;
  }
}

function scaleImage(img, size)
{
  var red = false;
  if (img != null && img != undefined)
  {
    if (img.complete && 0<img.width) red = true;
  }
  if (red)
  {
    w = img.width;
    h = img.height;
    //showObject (elem);
    //alert (elem.id + " " + w + " " + h);
    if (size < w || size < h )
    {
      var dx = (w / size);
      var dy = (h / size);
      var d = dx;
      if (d < dy) d = dy;
      img.style.height = (h / d) + "px";
      img.style.width = (w / d) + "px";
    }
  }
}

// Bild auf Breite size, nur wenn es nicht vergößert werden muß
function resizeM(event, size, mode)
{
  if (mode == undefined) mode = 0;
  vpic = nvl(event.srcElement, event.target);
  if (vpic != undefined)
  {
    if (mode == 0)
    {
      vpic.style.width = size + "px";
    }
    if (mode == 1)
    {
      vpic.style.height = size + "px";
    }
  }
}


var vDocArea = null;
var adr = null;
var nodei = null;
var vpicEvent = null;
var vprevW = null;

function showPic(event, elem, vData)
{
  if (adr == null)
  {
     vpicEvent = nvl(event.srcElement, event.target);
     adr = vpicEvent.value;
     nodei = document.getElementById(elem);
     if (vData != undefined)
     {
       vDocArea = document.getElementById(vData);
       if (vDocArea != undefined)
       {
         adr0 = adr;
         adr1 = "file:" + adr.replace(/\\/gi,"/");
         adr2 = "file://localhost/" + adr.replace(/\\/gi,"/");
         //nodei.style.display = "none";
         nodei.src = adr2;
         nodei.alt = adr2;
         /*
         window.setTimeout(showPicU,500);
         vprevW = window.open(adr,"vorschau","location,resizable,scrollbars,toolbar,titlebar,personalbar");
         */
         lci = 0;
       }
     }
  }
}

var lci;

function showPicU()
{
 if (lci < 5 && !nodei.complete)
 {
   window.setTimeout(showPicU,500);
   nodei.src = "file://localhost/" + adr.replace(/\\/gi,"/");
   lci++;
 }
 else
 {
      var fehler = 0;
      var re = /\.(.*)$/gi;
      re.lastIndex=0;
      var gto = re.exec(adr);
      var dtyp=null;
      if (gto != null) dtyp = gto[1]

      nodei.style.display = "block";

      if (dtyp == null) fehler = 1;
      if (!nodei.complete) fehler = 2;
      if (100000 < nodei.fileSize) fehler = 3;
      if (dtyp!="jpg" && dtyp!="gif" && dtyp!="png") fehler = 1;
      //if (dtyp=="gif" && 200 < v.width) fehler = 4;

      stat = "";
      if (fehler == 0)
      {
        vDocArea.style.display = "";
        stat = "Bilddaten:\n";
        stat += "Breite: " + nodei.width + " Pixel\n";
        stat += "Höhe: " + nodei.height + " Pixel\n";
        stat += "Größe: " + Math.floor(nodei.fileSize / 1024) + " kb\n";
        stat += "Dateiendung: " + dtyp + "\n";
        vDocArea.style.backgroundColor="#aaccaa";
        vDocArea.value = stat;
      }
      else
      {
        //vDocArea.style.backgroundColor="#ffaaaa";
      }

      switch (fehler)
      {
        case 1:
          stat += "Kein zulässiger Dateityp\n";
          break;
        case 2:
          stat += "Fehler in Datei\n";
          break;
        case 3:
          stat += "Datei ist zu groß\n";
          break;
        case 4:
          stat += "Warnung: GIF-Dateien nur bis Breite 200px erlaubt.\n";
          break;
      }
      adr = null;
      vDocArea = null;
      try
      {
        vprevW.close();
      }
      catch (e) {}
      vprevW = null;
  }
}

//*********************************

function transferCharCode(charC, mode)
{
  var erg = charC;
  var ch = -1;
  var cCode = charC.charCodeAt(0)
  if (97 <= cCode && cCode <= 122) ch = cCode - 97;
  if (65 <= cCode && cCode <= 90) ch = cCode - 39;

  var tableS1 = Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  var tableS2 = Array("a","b","c","d","3","f","g","h","1","j","k","l","m","n","0","p","q","r","5","t","u","v","w","x","y","z","4","B","C","D","3","F","G","H","1","J","K","L","M","N","0","P","Q","R","5","T","U","V","W","X","Y","Z");

  if (-1 < ch)
  {
    if (mode == 1)
    {
      erg = tableS2[ch];
    }
  }
  return erg;
}
