befehl='';
variable='';
konstante='';
kommentar='';
anzahl=0;

function konvertieren()
{
befehl=document.F.befehl.value;
variable=document.F.variable.value;
konstante=document.F.konstante.value;
kommentar=document.F.kommentar.value;
document.F.anzahl.value=0;

fso = new ActiveXObject("Scripting.FileSystemObject");
x_in = fso.GetFile(document.F.datei_in.value);
y_in = x_in.OpenAsTextStream();
x_out= fso.GetFile(document.F.datei_out.value);
y_out= x_out.OpenAsTextStream(2);

vorlauf();

while(y_in.AtEndOfStream == false) {
  text=textzeile(y_in.ReadLine());
  
  y_out.writeLine(text);
}
nachlauf();
document.F.anzahl.value=anzahl;

y_in.close();
y_out.close();

alert('HTML-Seite aufgebaut');

// return false;
}

function vorlauf()
{
y_out.writeLine('<HTML>');
y_out.writeLine('<HEAD>');
y_out.writeLine('<TITLE></TITLE>');
y_out.writeLine('<STYLE TYPE="text/css">');
y_out.writeLine('<!--');
y_out.writeLine('#befehl');
y_out.writeLine('{');
y_out.writeLine('color:"#'+befehl+'";');
y_out.writeLine('}');
y_out.writeLine('#variable');
y_out.writeLine('{');
y_out.writeLine('color:"#'+variable+'";');
y_out.writeLine('}');
y_out.writeLine('#konstante');
y_out.writeLine('{');
y_out.writeLine('color:"#'+konstante+'";');
y_out.writeLine('}');
y_out.writeLine('#kommentar');
y_out.writeLine('{');
y_out.writeLine('color:"#'+kommentar+'";');
y_out.writeLine('}');
y_out.writeLine('// -->');
y_out.writeLine('</STYLE>');
y_out.writeLine('</HEAD>');
y_out.writeLine('<BASEFONT FACE="Courier">');
y_out.writeLine('<BODY TEXT="'+kommentar+'">');
anzahl=27;
}

function nachlauf()
{
datum=new Date();
jahr=datum.getYear();
monat=datum.getMonth()+1;
tag=datum.getDate();
y_out.writeLine('* Copyright BJH Software, Datei überarbeitet am: '+tag+'.'+monat+'.'+jahr);
y_out.writeLine('</BODY>');
y_out.writeLine('</HTML>');
anzahl=anzahl+3;
}

/********************************************************************************
* Einzelne Programmzeile überarbeiten und mit den entsprechenden Farben versehen.
* ACHTUNG: Der Einfachheit halber wurde sich nach dem Pretty Printer gerichtet,
* Einstellung: Kleinbuchstaben sind Variablen, Großbuchstaben sind Befehle 
********************************************************************************/
function textzeile(text_in)
{
//K=Kommentar (Standard) B=Befehl V=Variable C=Konstante
farbe='B';
neue_farbe='J';
leerzeichen_gewandelt='J';
konstante_an='N';

if (text_in.length < 1) {
  text_out=' <BR>';
} else {
  text_out='';

// Kommentarzeile
  if (text_in.charAt(0)=='*') {
    farbe ='K';
  } else {
    text_out=text_out+'<SPAN ID="befehl">';
  }

  for (i=0;i<=text_in.length;i++) {
    t=text_in.charAt(i);

    if (t == ' ') {
// Leerzeichen durch Konstante unterdrücken, Leerzeichen werden aneinander geschoben
      if (leerzeichen_gewandelt=='J') {
        leerzeichen_gewandelt='N';
        text_out=text_out+' ';
      } else {
        leerzeichen_gewandelt='J';
        text_out=text_out+'&nbsp;';
      }
      if (konstante_an != 'J') {
        neue_farbe='J';
      }
    } else {
// Kommentar innerhalb einer Zeile
      if (t=='"') {
        text_out=text_out+'</SPAN>';
        farbe = 'K';
      } else {
        if (farbe != 'K') {
// Konstantenzeichen gefunden, solange behalten bis Ende-Zeichen,
// allerdings erst durch nächstes Zeichen Konstantenfarbe abschalten !
          if (t=="'") {
            if (konstante_an=='J') {
              konstante_an='N';
            } else {
              text_out=text_out+'</SPAN><SPAN ID="konstante">';
              konstante_an='J';
              farbe = 'C';
            }
          } else {
            if (t >= '0' && t <= '9') {
              if (farbe != 'C' && neue_farbe=='J') {
                text_out=text_out+'</SPAN><SPAN ID="konstante">';
                farbe = 'C';
              }
            } else {
              if (t >= 'a' && t <= 'z') {
                if (farbe != 'V' && neue_farbe=='J') {
                  text_out=text_out+'</SPAN><SPAN ID="variable">';
                  farbe = 'V';
                }
              } else {
                if (farbe != 'B' && neue_farbe=='J') {
                  text_out=text_out+'</SPAN><SPAN ID="befehl">';
                  farbe = 'B';
                }
              }
            }
          }
        }
      }
      neue_farbe='N';
      leerzeichen_gewandelt='J';
      text_out=text_out+t;
    }
  }
  if (farbe != 'K') {
    text_out=text_out+'</SPAN>';
  }
  text_out=text_out+'<BR>';
}
anzahl++;
return(text_out);
}
