#!/bin/bash
#####################################################################################################################
# defines

BIG="500"; SMALL="$[ $BIG / 4 ]";

LINKS="releases music pics linx supervision news";

FILES="temp/files.dat"

UML1="ÄÖÜäöüß"
UML2="ÄÖÜäöüß"

COLOR1="#333333";
COLOR2="#333333";
COLOR3="#222222";

TIDY="tidy -f /dev/null";

#####################################################################################################################

OLINE="<BR>o<BR>o<BR>o<BR>o<BR>o<BR>o<BR>o<BR>o<BR>o<BR>o"
OLINE=o$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE$OLINE;
OLINE="<img src=filmrand.gif width=20 height=1>"

header ()
{
   echo "create $1" >&2;

   UTITEL="$1"; LTITEL=$(echo "$1"|tr "A-Z" "a-z");

   echo "<HTML><HEAD>";
   echo "<TITLE>$UTITEL</TITLE>";
   echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8559-1\">";
   echo "<meta name=\"author\" content=\"peter@grobner.at\">";
   echo "<meta name=\"keywords\" lang=\"de\" content=\"elektronic music, techno, ambient, alois huber, laton, sabotage\">";
   echo "<meta name=\"date\" content=\"$(date '+%Y-%m-%dT%X')\">";
   echo "</HEAD>";

   echo "<BODY BACKGROUND=\"bg.jpg\" TEXT=#EEEEEE LINK=#FFFFFF VLINK=#888888 ALINK=#888888 BGCOLOR=#111111>";

   echo "<TABLE CELLPADDING=2 CELLSPACING=0 SUMMARY=""><TR>";
   echo "<TD ALIGN=Center VALIGN=top><BIG>";

   for LINK in $LINKS; do

    if [ "$LINK" != "$LTITEL" ]; then href "$LINK.htm" "$LINK<BR>"; else echo "<SMALL><BLINK>$UTITEL</BLINK></SMALL><BR>"; fi;
   
   done;

   if [ "$1$2" != "" ]; then echo "<P>";                   fi;
   if [ "$2"   != "" ]; then href "$2.htm" "&lt;&lt;&lt;"; fi;
   if [ "$3"   != "" ]; then href "$3.htm" "&gt;&gt;&gt;"; fi;

   echo "</BIG><P><IMG SRC=aph.gif ALT=\"\" WIDTH=140 HEIGHT=400 BORDER=0><P>";
   echo "email to<BR><A HREF=mailto:laton@magnet.at>laton@magnet.at</A><P>";
   echo "last update:<BR>$(date +"%d.%m.%Y")<P><BIG>";
   
   if [ "$2"   != "" ]; then href "$2.htm" "&lt;&lt;&lt;"; fi;
   if [ "$3"   != "" ]; then href "$3.htm" "&gt;&gt;&gt;"; fi;

   echo "</BIG></TD>"
   echo "<TD BGCOLOR=$COLOR1 ALIGN=right background=filmrand.gif width=20 rowspan=2>$OLINE</TD>"
   echo "<TD BGCOLOR=$COLOR2 VALIGN=top><H1>#define __""$UTITEL""__</H1>"
   echo "<BIG>struct $LTITEL={<BR>"
   echo "<DL><DD><CODE>"
}

footer ()
{
   echo "</CODE></DL>"
   echo "};</BIG>"
   echo "</TD>"
   echo "<TD BGCOLOR=$COLOR1 ALIGN=left background=filmrand.gif width=20 rowspan=2>$OLINE</TD>"
   echo "</TR><TR>"
   echo "<TD>&nbsp;</TD>"
#   echo "<TD BGCOLOR=$COLOR1 ALIGN=right>o</TD>"
   echo "<TD BGCOLOR=$COLOR2 ALIGN=right><SMALL><SMALL><SMALL>(webdesign by <A HREF=mailto:peter@grobner.at>peter@grobner.at</A>)</SMALL></SMALL></SMALL></TD>"
#   echo "<TD BGCOLOR=$COLOR1 ALIGN=left>o</TD>"
   echo "</TR></TABLE>"

   echo "</BODY></HTML>"
}

releases ()
{
  htmlpage releases RELEASES temp/releases
}

music ()
{
  header MUSIC;

  I=0;

  echo "<TABLE BORDER=3 SUMMARY=\"\"><TR>";

  pFILE=""; FILE="";
  pNAME=""; NAME="";
  pDOC="";  DOC="";

  while read nFILE nNAME nDOC nPIC; do

    if [ "$FILE" == "" -a "$pFILE" != "" ]; then break; fi;

    if [ "$FILE" != "" ]; then

      htmlpage "$FILE" "$NAME" "$DOC" "$pFILE" "$nFILE" > html/$FILE.htm

      echo "<TD><A HREF=$FILE.htm><IMG SRC=$FILE""2.jpg ALT=$NAME WIDTH=$SMALL HEIGHT=$SMALL BORDER=0></A></TD>";

      I=$[ $I + 1 ];
 
      if [ $I -eq  4 ]; then echo "</TR><TR>"; fi;
      if [ $I -eq  4 ]; then I=0;              fi;
    fi;

    pFILE="$FILE"; FILE="$nFILE";
    pNAME="$NAME"; NAME="$nNAME";
    pDOC="$DOC";   DOC="$nDOC";

  done < "$FILES";

  echo "</TR></TABLE>"

  footer;
}

linx ()
{
  header LINX;

  cd "urls"; echo "<UL>";

  for URL in *.url; do

    tr -d "\r" < "$URL" | while read LINE; do

      case "$LINE" in

        URL=*)  echo "<LI><A HREF=\"${LINE#URL=}\">${URL%.url}</A>&nbsp;<P>";
      esac;
    done;
  done;

  cd ..; echo "</UL>";

  footer;
}

pics ()
{
  htmlpage pics PICS temp/pics
}

supervision ()
{
  htmlpage supervision SUPERVISION temp/supervision
}

news ()
{
  htmlpage NEWS temp/news
}

htmlpage()
{
  (header "$2" "$4" "$5"; if [ -f "$3" ]; then body "$3" "<IMG SRC=$1""1.jpg ALT=\"\" WIDTH=$BIG HEIGHT=$BIG>"; fi; footer)|$TIDY;
}

#####################################################################################################################
# tools

href ()
{
   echo "<A HREF=\"$1\">$2</A>";
}

body ()
{
  cat "$1"|tr -d "\r"|tr "\t$UML1" " $UML2"|\
  sed -e "s+Ä+\&Auml;+g"  \
      -e "s+Ö+\&Ouml;+g"  \
      -e "s+Ü+\&Uuml;+g"  \
      -e "s+ä+\&auml;+g"  \
      -e "s+ö+\&ouml;+g"  \
      -e "s+ü+\&uuml;+g"  \
      -e "s+ß+\&szlig;+g" \
      -e "s+\"+\&quot;+g" \
      -e "s+\„+\&quot;+g" \
      -e "s+\“+\&quot;+g" \
      -e "s+\`+\&#145;+g" \
      -e "s+\´+\&#146;+g" \
      -e "s+  *+ +g" \
      -e "s+  *$++g" \
      -e "s+\*\*\*\(.*\)$+<P></CODE><BIG><BIG><B>\1</B></BIG></BIG><CODE>+g" \
      -e "s+\*\*\(.*\)$+<P></CODE><BIG><B>\1</B></BIG><CODE>+g" \
      -e "s+\*\(.*\)$+<P><B>\1</B>+g" \
      -e "s+\^\(.*\)$+<CENTER>\1</CENTER>+g" \
      -e "s+#Title: *\(.*\)|\(.*\)$+<BIG><B>Title[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Interpret: *\(.*\)|\(.*\)$+<BIG><B>Interpret[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Year: *\(.*\)|\(.*\)$+<BIG><B>Year[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Format: *\(.*\)|\(.*\)$+<BIG><B>Format[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Label: *\(.*\)|\(.*\)$+<BIG><B>Label[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Distribution: *\(.*\)|\(.*\)$+<BIG><B>Distribution[]</B>=<BR>{<BR> \&nbsp;\"\1\",<BR> \&nbsp;\"\2\";<BR>}</BIG>+g" \
      -e "s+#Title: *\(.*\)$+<BIG><B>Title</B>=\"\1\";</BIG>+g" \
      -e "s+#Interpret: *\(.*\)$+<BIG><B>Interpret</B>=\"\1\";</BIG>+g" \
      -e "s+#Year: *\(.*\)$+<BIG><B>Year</B>=\"\1\";</BIG>+g" \
      -e "s+#Format: *\(.*\)$+<BIG><B>Format</B>=\"\1\";</BIG>+g" \
      -e "s+#Label: *\(.*\)$+<BIG><B>Label</B>=\"\1\";</BIG>+g" \
      -e "s+#Distribution: *\(.*\)$+<BIG><B>Distribution</B>=\"\1\";</BIG>+g" \
      -e "s+#pic: .*$+<P>$2<P>+g" \
      -e "s+#pic= *\(.*\)  *\([0-9]*\)  *\([0-9]*\).*$+<P><IMG SRC=\1 ALT=\1 WIDTH=\2 HEIGHT=\3>+g" \
      -e "s+#pic= *\(.*\)  *\([0-9]*\).*$+<P><IMG SRC=\1 ALT=\1 WIDTH=\2>+g" \
      -e "s+#pic= *\([^ ]*\)$+<P><IMG SRC=\1 ALT=\1>+g" \
      -e "s+#tabon+<TABLE>+g" \
      -e "s+^|||||\(.*\)$+<TR><TD COLSPAN=5> \&nbsp; <SMALL><CODE>\1</CODE></SMALL></TD></TR>+g" \
      -e "s+^||||\(.*\)$+<TR><TD COLSPAN=4> \&nbsp; <SMALL><CODE>\1</CODE></SMALL></TD></TR>+g" \
      -e "s+^|||\(.*\)$+<TR><TD COLSPAN=3> \&nbsp; <SMALL><CODE>\1</CODE></SMALL></TD></TR>+g" \
      -e "s+^||\(.*\)$+<TR><TD COLSPAN=2> \&nbsp; <SMALL><CODE>\1</CODE></SMALL></TD></TR>+g" \
      -e "s+^|\([^|]*\)|\(.*\)$+<TR><TD>\&nbsp;\1</TD><TD><CODE>\2</CODE></TD></TR>+g" \
      -e "s+^|\(.*\)$+<TR><TD>\&nbsp;\1</TD></TR>+g" \
      -e "s+|+</CODE></TD><TD><CODE>+g" \
      -e "s+#taboff+</TABLE>+g" \
      -e "s+#liston+<UL>+g" \
      -e "s+^- +<P><LI>+g" \
      -e "s+#listoff+</UL>+g" \
      -e "s+[ ]*\"+\"+g" \
      -e "s+\(.*\)$+\1<BR>+g" \
      -e "s+#link:\([^ #]*\) *#\([^#]*\)#+<A HREF=\1>\2</A>+g" \
      -e "s+#http://\([^ \"<]*\)+<A HREF=http://\1>http://\1</A>+g" \
      -e "s+#mail:\([^ \"<]*\)+<A HREF=mailto:\1>\1</A>+g" \
      -e "s+TABLE><BR>+TABLE>+g" \
      -e "s+<TABLE>+<TABLE CELLPADDING=4 SUMMARY=\"\">+g" \
      -e "s+</TR><BR>+</TR>+g" \
      -e "s+UL><BR>+UL>+g" \
      -e "s+CENTER><BR>+CENTER>+g" \
      -e "s+\(<BR>\)*<BR>+<BR>+g" \
      -e "s+^[ ]*<BR>++g" \
      -e "s+^<BR>$++g";
}

mkjpg ()
{
  convert -geometry "$1" "$3" tmp$$.jpg;

  djpeg tmp$$.jpg|cjpeg -qu "$2" -opt >"$4";

  rm tmp$$.jpg
}

#####################################################################################################################
# main

OUT=""; T=""; rm $FILES;

cat allpages.txt|tr -d "\r" > temp/allpages.txt;

while read A B C D E; do

  case "$A" in

    \#\#*)       A="===";;

    \#Umlaute:)  UML1="$B"; echo "convert $UML1 -> $UML2";;

    ===*)        if [ "$OUT" != "" ]; then htmlpage $OUT $U temp/$OUT|$TIDY >html/$OUT.htm; fi;

                 A="==="; OUT=""; U=""; T=""; if [ "$C" == "/" ]; then OUT="$B"; U="$D"; rm "temp/$OUT"; fi;;

    \#Title:)    T="TITLE";;

    \#pic:*)     if [ "$T" == "TITLE" ]; then echo "$OUT $U temp/$OUT $B" >>$FILES; fi;;

    \|*)         if [ "$T" != "TABLE" ]; then T="TABLE"; echo "#tabon" >>temp/$OUT; fi;;

    -*)          if [ "$T" != "LIST" ];  then T="LIST"; echo "#liston" >>temp/$OUT; fi;;

    "")          if [ "$T" == "LIST"  ]; then T=""; echo "#listoff"    >>temp/$OUT; fi;
                 if [ "$T" == "TABLE" ]; then T=""; echo "#taboff"     >>temp/$OUT; fi;;

    *)           if [ "$T" == "TABLE" ]; then T=""; echo "#taboff"     >>temp/$OUT; fi;;
  esac;

  if [ "$A" != "===" -a "$OUT" != "" ]; then echo "$A $B $C $D $E" >>temp/$OUT; fi;

done < temp/allpages.txt;

echo >>$FILES;

if [ "$1" == "-qu" ]; then

  echo "image quality set to $2"

  while read FILE NAME DOC PIC DUMMY; do

   if [ -f "$PIC" ]; then

    echo "updating $FILE""1.jpg";       mkjpg "$BIG"   "$2" "$PIC"                   "html/$FILE""1.jpg";
    echo "updating $FILE""2.jpg";       mkjpg "$SMALL" "$2" "$PIC"                   "html/$FILE""2.jpg";

   else 

     if [ "$PIC" != "" ]; then echo "Warning: $PIC not found!"; fi;
   fi;

  done < "$FILES";

    echo "updating ahub.jpg";           mkjpg "$BIG"   "95" "photos/ahub.jpg"        "html/ahub.jpg";
#   echo "updating talisman.jpg";       mkjpg "$BIG"   "95" "photos/talisman.jpg"    "html/talisman.jpg";
    echo "updating innen.jpg";          mkjpg "$BIG"   "95" "photos/Innen02a.jpg"    "html/innen.jpg";
    echo "updating 2l1.jpg";            mkjpg "$BIG"   "95" "photos/2l1.jpg"         "html/2l1.jpg";
    echo "updating supervision.jpg";    mkjpg "$BIG"   "$2" "photos/supervision.jpg" "html/supervision.jpg";

    echo "updating aph.gif"; if [ "$2" -ge "30" ]; then cp  "photos/aph1.gif"	     "html/aph.gif";
    else						cp  "photos/aph2.gif"	     "html/aph.gif";  fi;

    echo "updating bg.jpg";         			cp  "photos/bg.jpg"	     "html/bg.jpg";
fi;

music|$TIDY >html/music.htm;
#linx  > html/linx.htm;

###for FILE in $LINKS; do $FILE > html/$FILE.htm; done;

cp html/releases.htm html/index.htm
cp html/releases.htm html/index.html

cp temp/allpages.txt allpages.txt; recode "lat1..lat1/CR-LF" allpages.txt;

cp      allpages.txt html/allpages.txt;

echo "Dir html/ has a amount of $(du -bh html|grep html\$|sed -e "s/[	 ]*html//") bytes";

if [ "$1" == "-ftp" ]; then sitecopy -u laton; exit; fi;

#####################################################################################################################



