
// --------------------------------------------------------------------------

/* 'Hole Feld 130902' (c) by cybaer@binon.net
   ------------------
 Inhalt    : Holt Datenfeld
 Aufruf    : getfield$(field$,nr,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib)
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Inhalt des gewuenschten Feldes.
 Anmerkung : -
 Beispiele : "AA|BB|CC",3,"" -> "CC"
*/

function getfield$(field$,nr,div$) {
 var entry$,v,w,nrOld;
 if(!div$) {
  div$="|";
 }
 field$=field$+div$;
 nrOld=nr;
 w=0;
 while(true) {
  v=SUCC(w);
  w=INSTR(field$,div$,v);
  if(w==0) {
   entry$=MID$(field$,v,MAX(SUB(LEN(field$),PRED(v)),0));
  } else {
   nr--;
   if(nr<=0) {
    entry$=MID$(field$,v,MAX(SUB(w,v),0));
   }
  }
  if(w==0) { break; }
  if(nr<=0) { break; }
 }
 return entry$;
}

// --------------------------------------------------------------------------

/* 'Hole Feld von rechts 130902' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Holt Feld von rechts
 Aufruf    : rfield$(field$,nr,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib);
             getfield$(), cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Inhalt des gewuenschten Feldes.
 Anmerkung : Nr. 1 ist das letzte Feld
 Beispiele : "AA|BB|CC",1,"" -> "CC"
*/

function rfield$(field$,nr,div$) {
 var max,entry$;
 max=cfield(field$,div$);
 if(nr<=max) {
  entry$=getfield$(field$,SUCC(SUB(max,nr)),div$);
 }
 return entry$;
}

// --------------------------------------------------------------------------

/* 'Anzahl der Felder 130902' (c) by cybaer@binon.net
   --------------------------
 Inhalt    : Ermittle Anzahl der Felder
 Aufruf    : cfield(field$,div$)
 Parameter : field$ (Gesamtfeld)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib)
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Anzahl der verfuegbaren Felder (0, falls das Gesamtfeld leer ist).
 Anmerkung : -
 Beispiele : "AA|BB|CC","" -> 3
*/

function cfield(field$,div$) {
 var count,w,l;
 if(!div$) {
  div$="|";
 }
 l=LEN(field$);
 count=ABS(l>0);
 while(true) {
  w=INSTR(field$,div$,SUCC(w));
  if(w==0) { break; }
  count++;
  if(w==l) { break; }
 }
 return count;
}

// --------------------------------------------------------------------------

/* 'Finde Feld 130902' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Ermittle Feldnummer eines Felds mit bestimmtem Inhalt
 Aufruf    : infield(field$,string$,nr,div$,part)
 Parameter : field$ (Gesamtfeld)
             string$ (Gesuchter Feldinhalt)
             nr (Nummer des Feldes)
             div$ (Feld-Trenner)
             part (= true -> String nur Teil eines Feldes)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib);
             adrfield(), cfield(), nrfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Nummer des gefundenen Feldes oder 0, falls der
             Suchstring nicht im Gesamtfeld vorhanden ist.
 Anmerkung : -
 Beispiele : "AA|BB|CC|BB","BB",0,"",0 -> 2
             "AA|BB|CC|BB","B",0,"",0  -> 0
             "AA|BB|CC|BB","B",0,"",-1 -> 2
             "AA|BB|CC|BB","BB",3,"",0 -> 4
*/

function infield(field$,string$,nr,div$,part) {
 var q,adr,lfield$,rfield$,lfield=0,result;
 if(!div$) {
  div$="|";
 }
 if(nr<=1) {                                    // Suche von Beginn an
  adr=1;                                        // 1. Stringoffset
  lfield$="";                                   // Kein Feld ignorieren
  rfield$=field$;                               // Alle Felder beachten
 } else {                                       // Suche ab Feld Nr
  adr=adrfield(field$,nr,div$);                 // Stringoffset ermitteln
  lfield$=LEFT$(field$,PRED(adr));              // Zu ignorierende Felder
  rfield$=MID$(field$,adr);                     // Zu beachtende Felder
 }
 if(lfield$!="") {                              // Anzahl der Felder, in denen
  lfield=PRED(cfield(lfield$,div$));            // nicht gesucht wird
 }
 if(part) {                                     // Wenn Suche eines Teiles, Suche
  q=INSTR(rfield$,string$);                     // des Strings ueber das Gesamtfeld
 } else {                                       // Sonst inkl. der Trenner suchen
  q=INSTR(div$+rfield$+div$,div$+string$+div$);
 }
 if(q==0) {
  result=0;
 } else {
  result=nrfield(rfield$,q,div$)+lfield;
 }
 return result;
}

// --------------------------------------------------------------------------

/* 'Schreibe Feld 140902' (c) by cybaer@binon.net
   ----------------------
 Inhalt    : Schreibe Feld
 Aufruf    : setfield$(field$,nr,string$,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             string$ (Neuer Feldinhalt)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib);
             getfield$(), adrfield(), cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Neues Gesamtfeld
 Anmerkung : Noch nicht existente (Zwischen-)Felder werden erstellt
 Beispiele : "AA|BB|CC",2,"XX","" -> "AA|XX|CC"
             "AA|BB|CC",5,"XX","" -> "AA|BB|CC||XX"
*/

function setfield$(field$,nr,string$,div$) {
 var count,adr,len,lfield$,rfield$;
 if(!div$) {
  div$="|";
 }
 count=cfield(field$,div$);                     // Anzahl der vorhandenen Felder
 if(nr<=count) {                                // Zu aenderndes Feld existiert
  adr=adrfield(field$,nr,div$);                 // Feldoffset ermitteln und
  lfield$=LEFT$(field$,PRED(adr));              // vorherige & folgende Felder
  rfield$=MID$(field$,ADD(adr,LEN(getfield$(field$,nr,div$)))); // trennen
  field$=lfield$+string$+rfield$;               // Neues Gesamtfeld erstellen
 } else {                                       // Feld muss neu angelegt werden
   field$=addfield$(field$,nr,string$,div$);    // indem es angehaengt wird
 }
 return field$;
}

// --------------------------------------------------------------------------

/* 'Ergaenze Feld 140902' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Ergaenze Feld
 Aufruf    : addfield$(field$,nr,string$,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             string$ (Neues Feld)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib);
             adrfield(), cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Neues Gesamtfeld
 Anmerkung : Noch nicht existente Zwischenfelder werden ebenfalls erstellt
 Beispiele : "AA|BB|CC",2,"XX","" -> "AA|XX|BB|CC"
             "AA|BB|CC",5,"XX","" -> "AA|BB|CC||XX"

*/

function addfield$(field$,nr,string$,div$) {
 var count,adr,lfield$,rfield$;
 if(!div$) {
  div$="|";
 }
 count=cfield(field$,div$);                     // Anzahl existierender Felder
 if(nr<=count) {                                // Neues Feld einfuegen?
  if(nr>0) {                                    // Neue Feldnummer > 0
   adr=adrfield(field$,nr,div$);                // Feldoffset ermitteln
   lfield$=LEFT$(field$,PRED(adr));             // Vorherige Felder und
   rfield$=div$+MID$(field$,adr);               // folgende Felder trennen
  } else {                                      // Neue Feldnummer = 0
   lfield$="";
   rfield$="";
  }
 } else {                                       // Neues Feld anhaengen?
  if(count>0) {                                 // Wenn Gesamtfeld existiert,
   lfield$=field$+STRING$(SUB(nr,count),div$);  // mit Leerfeldern fuellen,
   rfield$="";                                  // und keine folgenden Felder!
  } else {                                      // Gesamtfeld existiert nicht,
   lfield$=STRING$(PRED(nr),div$);              // also aus Leerfeldern bilden,
   rfield$="";                                  // und keine folgenden Felder!
  }
 }
 field$=lfield$+string$+rfield$;                // Neues Gesamtfeld erstellen
 return field$;
}

// --------------------------------------------------------------------------

/* 'Entferne Feld 140902' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Entferne Feld
 Aufruf    : delfield$(field$,nr,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib);
             getfield$(), adrfield(), cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Neues Gesamtfeld
 Anmerkung : -
 Beispiele : "AA|BB|CC",2,"" -> "AA|CC"
*/

function delfield$(field$,nr,div$) {
 var count,adr,lfield$,rfield$;
 if(!div$) {
  div$="|";
 }
 count=cfield(field$,div$);                     // Anzahl existierender Felder
 if(nr<=count) {                                // Feld existiert?
  adr=adrfield(field$,nr,div$);                 // Feldoffset ermitteln
  lfield$=LEFT$(field$,PRED(adr));              // Vorherige & folgende Felder
  rfield$=MID$(field$,ADD(adr,LEN(getfield$(field$,nr,div$)))); // trennen
  if(RIGHT$(lfield$)==div$) {                   // Vorheriges Feld leer?
   lfield$=LEFT$(lfield$,PRED(LEN(lfield$)));   // Korrektur!
  } else if(LEFT$(rfield$)==div$) {             // Folgendes Feld leer?
   rfield$=RIGHT$(rfield$,PRED(LEN(rfield$)));  // Korrektur!
  }
  field$=lfield$+rfield$;                       // Neues Gesamtfeld erstellen
 }
 return field$;
}

// --------------------------------------------------------------------------

/* 'Adressoffset des Feldes 130902' (c) by cybaer@binon.net
   --------------------------------
 Inhalt    : Adressoffset des Feldes
 Aufruf    : adrfield(field$,nr,div$)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des Feldes)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://Coding.binon.net/JSGfALib)
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Stringoffset des Feldes im Gesamtfeld
             oder "0" falls das Feld nicht existiert
 Anmerkung : Der Offset wird nach GfA-Standard berechnet (String beginnt bei 1),
             nicht nach JavaScript-Standard (String beginnt bei 0)!
 Beispiele : "AA|BB|CC",2,"" -> 4
             "AA|BB|CC",3,"" -> 7
*/

function adrfield(field$,nr,div$) {
 var v,w,nrOld;
 if(!div$) {
  div$="|";
 }
 field$=field$+div$;
 nrOld=nr;
 w=0;
 while(true) {
  v=SUCC(w);
  w=INSTR(field$,div$,v);
  if(w==0) {
   v=0;
  } else {
   nr--;
  }
  if(w==0) { break; }
  if(nr<=0) { break; }
 }
 return v;
}

// --------------------------------------------------------------------------

/* 'Nummer des Feldes 130902' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Nummer des Feldes
 Aufruf    : nrfield(field$,adr,div$)
 Parameter : field$ (Gesamtfeld)
             adr (Adressoffset im Gesamtfeld)
             div$ (Feld-Trenner)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/Fields (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Nummer des Feldes
 Anmerkung : -
 Beispiele : "AA|BB|CC",4,"" -> 2
             "AA|BB|CC",5,"" -> 2
             "AA|BB|CC",7,"" -> 3
*/

function nrfield(field$,adr,div$) {
 var nr;
 if(!div$) {
  div$="|";
 }
 nr=cfield(LEFT$(field$,adr),div$);
 if(MID$(field$,adr,1)==div$) {
  nr--;
 }
 return nr;
}

// ======================== Bonus: Block-Funktionen =========================

/* 'Hole umschlossenen Block 130902' (c) by cybaer@binon.net
   ---------------------------------
 Inhalt    : Hole umschlossenen Block
 Aufruf    : iblock$(field$,nr,ldiv$,rdiv$,border)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des gewuenschten Blockes)
             ldiv$ (Linke Block-Grenze)
             rdiv$ (Rechte Block-Grenze)
             border (true, wenn Block inkl. der Grenzen geholt werden soll) 
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             getfield$(), cfield()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Inhalt des gewuenschten Blockes (mit oder ohne Blockgrenzen)
 Anmerkung : -
 Beispiele : "<p>Ein <b>Absatz</b>!</p>",1,"<",">",-1 -> "<p>"
             "<p>Ein <b>Absatz</b>!</p>",2,"<",">",0 -> "b"
             "Fette <b>Schrift</b>!",2,"<",">",0 -> "/b"
*/

function iblock$(field$,nr,ldiv$,rdiv$,border) {
 var left,right,entry$;
 left=cfield(field$,ldiv$);
 right=cfield(field$,rdiv$);
 if(left>0 && right>0) {
  entry$=getfield$(getfield$(field$,SUCC(nr),ldiv$),1,rdiv$);
  if(border && entry$!="") {
   entry$=ldiv$+getfield$(getfield$(field$,SUCC(nr),ldiv$),1,rdiv$)+rdiv$;
  }
 }
 return entry$;
}

// --------------------------------------------------------------------------

/* 'Hole ausgeschlossenen Block 130902' (c) by cybaer@binon.net
   ------------------------------------
 Inhalt    : Hole ausgeschlossenen Block
 Aufruf    : oblock$(field$,nr,ldiv$,rdiv$,opened)
 Parameter : field$ (Gesamtfeld)
             nr (Nummer des gewuenschten Blockes)
             ldiv$ (Linke Block-Grenze)
             rdiv$ (Rechte Block-Grenze)
             opened (true, wenn Block inkl. der Grenzen geholt werden soll) 
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             iblock$()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Inhalt des gewuenschten Blockes (komplett/nicht komplett von Blockgrenzen umschlossen)
 Anmerkung : Sind offene Begrenzer moeglich, dann opened=True. Beispiel:
             "size=+1>Text</font>" liefert bei '1,"<",">"' "Text" (sonst "size=+1")
             Sind offene Begrenzer unmoeglich, dann opened=False. Beispiel:
             "Satzende; Meier &amp; Co." liefert bei '1,"&",";"' "Satzende" (sonst " Meier ")
             Muss noch korrigiert werden!!
 Beispiele : "<p>Ein <b>Absatz</b>!</p>",1,"<",">",-1 -> Ein
             "Fette <b>Schrift</b>!",1,"<",">",-1 -> Schrift
             "Fette <b>Schrift</b>!",1,"<",">",0 -> Fette
*/

function oblock$(field$,nr,ldiv$,rdiv$,opened) {
 var left,right,entry$;
 if(opened) {
  entry$=iblock$(field$+ldiv$,nr,rdiv$,ldiv$,false);
 } else {
  entry$=iblock$(rdiv$+field$+ldiv$,nr,rdiv$,ldiv$,false);
 }
 return entry$;
}

// --------------------------------------------------------------------------

/* 'Entferne IBlocks 140902' (c) by cybaer@binon.net
   -------------------------
 Inhalt    : Loesche umschlossenen Block
 Aufruf    : delblocks$(text$,ldiv$,rdiv$,opened)
 Parameter : text$ (Zu bearbeitender Text)
             ldiv$ (Linke Block-Grenze)
             rdiv$ (Rechte Block-Grenze)
             opened (true, wenn Block inkl. der Grenzen geloescht werden soll) 
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             oblock$()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Text ohne den Block (komplett/nicht komplett von Blockgrenzen umschlossen)
 Anmerkung : -
 Beispiele : "<p>Ein <b>Absatz</b>!</p>","<",">",0 -> "Ein Absatz!" (1. Block ist umschlossen)
             "Fette <b>Schrift</b>!","<",">",-1 -> "Schrift!" (1. Block ist offen)
             "Fette <b>Schrift</b>!","<",">",0 -> "Fette Schrift!" (1. Block ist umschlossen)
*/

function delblocks$(text$,ldiv$,rdiv$,opened) {
 var q=0,q$,result$="";
 while(true) {
  q++;
  q$=oblock$(rc(text$,rdiv$+ldiv$,""),q,ldiv$,rdiv$,opened);
  result$=result$+q$;
  if(q$=="" && q>1) { break; }
 }
 return result$;
}

// --------------------------------------------------------------------------

/* 'Loesche Tags 291203' (c) by cybaer@binon.net
   ---------------------
 Inhalt    : Wandelt HTML-Code in Text-Code um (ohne Entity-Konvertierung,
             aber mit Leerzeichenzusammenfassung und Zeilenumbruechen)
 Aufruf    : deltags$(html$,unix)
 Parameter : Html$ (Zu bearbeitender HTML-Text)
             Unix (true, wenn Unix-Zeilenenden, sonst DOS/Windows-Zeilenenden)
 Sprache   : JavaScript 1.1 (ungesichert), JavaScript 1.2 (gesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             rtag$(), rc()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Text ohne HTML-Tags
 Anmerkung : -
 Beispiele : "<html><head><title>Seitentitel</title></head><body>Kleiner Test:<br>Klappt es?</body></html>",false
             -> "Seitentitel

                 Kleiner Test:
                 Klappt es?"
*/

function deltags$(html$,unix) {
 var newline$="";
 if(isCHR$) {
  if(unix) {
   newline$=CHR$("&HA");
  } else {
   newline$=CHR$("&HA")+CHR$("&HD");
  }
 } else {
  newline$=" ";
 }
 html$=rtag(html$,"/title",newline$+newline$);
 html$=rtag(html$,"/h1",newline$+newline$);
 html$=rtag(html$,"/h2",newline$+newline$);
 html$=rtag(html$,"/h3",newline$+newline$);
 html$=rtag(html$,"/h4",newline$+newline$);
 html$=rtag(html$,"/h5",newline$+newline$);
 html$=rtag(html$,"/h6",newline$+newline$);
 html$=rtag(html$,"br",newline$);
 html$=rtag(html$,"div",newline$);
 html$=rtag(html$,"p",newline$+newline$);
 html$=rtag(html$,"dl",newline$+newline$);
 html$=rtag(html$,"dd",newline$);
 html$=rtag(html$,"dt",newline$);
 html$=rtag(html$,"ol",newline$+newline$);
 html$=rtag(html$,"ul",newline$+newline$);
 html$=rtag(html$,"li",newline$);
 html$=rtag(html$,"table",newline$+newline$);
 html$=rtag(html$,"td"," ");
 html$=rtag(html$,"/tr",newline$);
 html$=rtag(html$,"hr",newline$+STRING$(75,"-")+newline$);
 html$=rc(html$,newline$+newline$+newline$+newline$,newline$+newline$);
 html$=rc(html$,"  "," ");
 html$=rc(html$," "+newline$,newline$);
 html$=delblocks$(html$,"<",">",true);
 return TRIM$(rc(html$,"  "," "));
}

// --------------------------------------------------------------------------

/* 'Ersetze HTML-Tag 130902' (c) by cybaer@binon.net
   -------------------------
 Inhalt    : Ersetzt HTML-Tag
 Aufruf    : rtag(html$,element$,text$)
 Parameter : Html$ (Zu bearbeitender HTML-Text)
             Element$ (Zu ersetzender Tag)
             Text$ (Ersatztext)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: GfA-Basic-Lib (http://coding.binon.net/jscript/jsgfalib.htm);
             rtag$(), rc()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Geaenderter Text
 Anmerkung : Element$ in Kleinschrift!
             Start- und End-Tags werden separat behandelt!
 Beispiele : "<body>Kleiner Test:<br>Klappt es?</body>","br"," "
             -> "Kleiner Test: Klappt es?"
*/

function rtag(html$,element$,text$) {
 html$=rc(html$,"<"+element$+">",text$);
 html$=rc(html$,"<"+element$+" ",text$+"<!");
 element$=UPPER$(element$);
 html$=rc(html$,"<"+element$+">",text$);
 html$=rc(html$,"<"+element$+" ",text$+"<!");
 return html$;
}

// --------------------------------------------------------------------------

// Beispiele
/*
gfa='getfield$("AA|BB|CC",3,"")'; gfaRet='CC'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='rfield$("AA|BB|CC",1,"")'; gfaRet='CC'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='cfield("AA|BB|CC","")'; gfaRet='3'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='infield("AA|BB|CC|BB","BB",0,"",0)'; gfaRet='2'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='infield("AA|BB|CC|BB","B",0,"",0)'; gfaRet='0'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='infield("AA|BB|CC|BB","B",0,"",-1)'; gfaRet='2'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='infield("AA|BB|CC|BB","BB",3,"",0)'; gfaRet='4'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='setfield$("AA|BB|CC",2,"XX","")'; gfaRet='AA|XX|CC'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='setfield$("AA|BB|CC",5,"XX","")'; gfaRet='AA|BB|CC||XX'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='addfield$("AA|BB|CC",2,"XX","")'; gfaRet='AA|XX|BB|CC'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='addfield$("AA|BB|CC",5,"XX","")'; gfaRet='AA|BB|CC||XX'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='delfield$("AA|BB|CC",2,"")'; gfaRet='AA|CC'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='adrfield("AA|BB|CC",2,"")'; gfaRet='4'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='adrfield("AA|BB|CC",3,"")'; gfaRet='7'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='nrfield("AA|BB|CC",4,"")'; gfaRet='2'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='nrfield("AA|BB|CC",5,"")'; gfaRet='2'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='nrfield("AA|BB|CC",7,"")'; gfaRet='3'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')

gfa='iblock$("<p>Ein <b>Absatz</b>!</p>",1,"<",">",-1)'; gfaRet='<p>'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='iblock$("<p>Ein <b>Absatz</b>!</p>",2,"<",">",0)'; gfaRet='b'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='iblock$("Fette <b>Schrift</b>!",2,"<",">",0)'; gfaRet='/b'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='oblock$("<p>Ein <b>Absatz</b>!</p>",1,"<",">",-1)'; gfaRet='Ein '; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='oblock$("Fette <b>Schrift</b>!",1,"<",">",-1)'; gfaRet='Schrift'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='oblock$("Fette <b>Schrift</b>!",1,"<",">",0)'; gfaRet='Fette '; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='delblocks$("<p>Ein <b>Absatz</b>!</p>","<",">",0) \/\/(1. Block ist umschlossen)'; gfaRet='Ein Absatz!'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='delblocks$("Fette <b>Schrift</b>!","<",">",-1) \/\/(1. Block ist offen)'; gfaRet='Schrift!'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')

gfa='delblocks$("Fette <b>Schrift</b>!","<",">",0) \/\/(1. Block ist umschlossen)'; gfaRet='Fette Schrift!'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='rtag("<body>Kleiner Test:<br>Klappt es?</body>","br"," ")'; gfaRet='<body>Kleiner Test: Klappt es?<\/body>'; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
gfa='deltags$("<html><head><title>Seitentitel</title></head><body>Kleiner Test:<br>Klappt es?</body></html>",false)'; gfaRet=''; alert(gfa+' -> \n'+((gfaRet)?gfaRet+' (Soll-Ausgabe)\n':'')+eval(gfa)+' ('+((gfaRet)?'Ist-':'')+'Ausgabe)')
*/
