package template;

use baseq;

@ISA = qw ( baseq );

####################################################################
####         Konstruktor der Templateklasse
####         Argumente  : 
####         Returnwert : -
####################################################################
sub init {
	my $that = shift;
	my $class = ref($that) || $that;
	my $self = baseq->init(@_);
	bless $self, $class;	
   	$self->{template}    = $self->{id}+0;
    $self->{knr}	 = $self->{parent}->{knr}+0;
    $self->{htmlfile}  = "";
	$self->{qtface}   = "Helvetica";	
	$self->{qtsize}   = "+2";
	$self->{qtcolor}  = "#000000";
	$self->{atface}   = "Helvetica";	
	$self->{atsize}   = "+1";
	$self->{atcolor}  = "#000000";
	$self->{stface}   = "Helvetica";	
	$self->{stsize}   = "+0";
	$self->{stcolor}  = "#000000";
	$self->{shadowcolor}  = "#999999";
	
	my %hagrafik=( "BA" => $self->trans("HI46"), "VL" => $self->trans("HI47"), "SK" => $self->trans("HI48"), "PI" => $self->trans("HI49"));
	my @lagrafik = qw/BA PI VL SK/;

	my %hegrafik=( "BA" => $self->trans("HI46"), "VL" => $self->trans("HI47"), "PI" => $self->trans("HI49") );
	my @legrafik = qw/BA PI VL/;

	my %hmgrafik=( "BA" => $self->trans("HI46"), "VL" => $self->trans("HI47") );
	my @lmgrafik = qw/BA VL/;

	my %hsgrafik=( "SK" => $self->trans("HI48") );
	my @lsgrafik = qw/SK/;

	$self->{hsort} = { 0  => $self->trans("HI50"), 1  => $self->trans("HI51"), 2  => $self->trans("HI52")  };
	$self->{lsort} = ["0", "1", "2"];
	$self->{hschmuck}={0 => "nichts", 1 => "3D", 2 => "Schatten" };
	$self->{lschmuck}=["0", "1", "2"];

	$self->{htyp}={"E"  => $self->trans("HI32"),  "M"  => $self->trans("HI33"),
	       	       "T"  => $self->trans("HI34"),  "S3" => $self->trans("HI36d"),
				   "S4" => $self->trans("HI35a"), "S5" => $self->trans("HI35"), "S6" => $self->trans("HI35c"),
				   "S7" => $self->trans("HI36"),  "S11"=> $self->trans("HI36c"),
				   "D"  => $self->trans("HI36a"), "H"  => $self->trans("HI36b")	   };

	$self->{ltyp} = ["E", "D", "M", "S3", "S4", "S5", "S6", "S7", "S11", "T", "H"];

	$self->{hgrafik}={"E" => \%hegrafik , "D" => \%hegrafik , "M" => \%hmgrafik , "S" => \%hsgrafik , "T" => {} , "H" => {} };
	$self->{lgrafik}={"E" => \@legrafik , "D" => \@legrafik , "M" => \@lmgrafik , "S" => \@lsgrafik , "T" => [] , "H" => [] };

	return $self;
}
#"
####################################################################
####         Konstruktor der Fragenklasse
####         Argumente  : parent, umfid, fid
####         Returnwert : -
####################################################################
sub loadtmp {
   my $self = shift;
   my $force=shift;
   if ($self->{template} eq "") {$self->{template}=0}
   if ( (defined $self->{parent}->{template}) && ($self->{template} == $self->{parent}->{template})  && ! $force ) {
   ( $self->{tmpbeschr}, $self->{htmlfile},
    $self->{qtface}, $self->{qtsize}, $self->{qtcolor},
	$self->{atface}, $self->{atsize}, $self->{atcolor},
	$self->{stface}, $self->{stsize}, $self->{stcolor},
	$self->{shadowcolor} )  = $self->{parent}->copytemplate;

	$self->{RHfontcolor}=$self->{parent}->{RHfontcolor};
	$self->{RLfontcolor}=$self->{parent}->{RLfontcolor};
   }
   else {
	my $sql = "select beschr, file, qtface, qtsize, qtcolor, ".
		  "atface, atsize, atcolor, stface, stsize, stcolor, shadowcolor from templatehtm where nr=$self->{template}";
	( $self->{tmpbeschr},$self->{htmlfile},
    $self->{qtface}, $self->{qtsize}, $self->{qtcolor},
	$self->{atface}, $self->{atsize}, $self->{atcolor},
	$self->{stface}, $self->{stsize}, $self->{stcolor},
	$self->{shadowcolor} ) = $self->sqlselect($sql);
    $sql="select hexcode, name from farben where knr=0 or knr='$self->{knr}' order by knr,nr";
	my $sth=$self->sqlprepare($sql);
	my @Lcolor; my %Hcolor; my $hex; my $name;
	while ( ($hex, $name)=$sth->fetchrow_array) {push (@Lcolor, $hex); $Hcolor{$hex}=$name;}
        $self->{RHfontcolor}=\%Hcolor;
	$self->{RLfontcolor}=\@Lcolor;
   }
   return ;
}

####################################################################
####         gibt seine Eigenschaften zurueck !
####         Argumente  : -
####         Returnwert : Templateeigenschaften
####################################################################
sub copytemplate {
	my $self = shift;
    return ( $self->{tmpbeschr}, $self->{htmlfile}, 
    $self->{qtface}, $self->{qtsize}, $self->{qtcolor},
	$self->{atface}, $self->{atsize}, $self->{atcolor},
	$self->{stface}, $self->{stsize}, $self->{stcolor},
	$self->{shadowcolor} );
}

####################################################################
####         Ermittelt eine neue fid und speichert sich
####         Argumente  : -
####         Returnwert : -
####################################################################
sub new {
	my $self = shift;
    $self->{tmpbeschr}   = "Neues Template";
	my $sql1 = "select max(nr) from templatehtm";
	$self->{template} = ($self->sqlselect($sql1))+1;
    my $sql2 = "insert into templatehtm values ( $self->{template}, $self->{knr}, ".
		   "'$self->{tmpbeschr}', '$self->{htmlfile}', ".
		   "'$self->{qtface}', '$self->{qtsize}', '$self->{qtcolor}', ".
		   "'$self->{atface}', '$self->{atsize}', '$self->{atcolor}', ".
		   "'$self->{stface}', '$self->{stsize}', '$self->{stcolor}', ".
		   "'$self->{shadowcolor}')";
	$self->sqldo($sql2);
}

####################################################################
####         Speichert sich mit Update
####         Argumente  : evtl Fragentext und Fragentyp
####         Returnwert : -
####################################################################
sub store {
	my $self = shift;
	my $sql = "update templatehtm set knr=$self->{knr} , beschr='$self->{tmpbeschr}', ".
		  "file='$self->{htmlfile}', ".
		  "qtface='$self->{qtface}', qtsize='$self->{qtsize}', qtcolor='$self->{qtcolor}', ".
		  "atface='$self->{atface}', atsize='$self->{atsize}', atcolor='$self->{atcolor}', ".
		  "stface='$self->{stface}', stsize='$self->{stsize}', stcolor='$self->{stcolor}', ".
		  "shadowcolor='$self->{shadowcolor}' where nr=$self->{template}";
	$self->sqldo($sql);
}

####################################################################
####         Löscht sich und alle seine Antworten der Probanden
####	     aus der DB
####         Argumente  : -
####         Returnwert : -
####################################################################
sub delete {
	my $self = shift;
	my $sql  = "delete from template where nr=$self->{template}";
        $self->sqldo($sql);
}

####################################################################
####         Schreibt ins Logfile
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub log {
	my ($self, $emer, $TEXT) = @_;
        $self->printlog($emer, "T[$self->{template}] $TEXT");
}

####################################################################
####         Gibt den Text im Questionfont zurück
####         Argumente  : Text
####         Returnwert : -
####################################################################

sub qfont {
	my $self = shift;
        return "<FONT FACE=\"$self->{qtface}\" SIZE=\"$self->{qtsize}\" COLOR=\"$self->{qtcolor}\">".shift()."</FONT>";
}

####################################################################
####         Gibt den Text im Antwortfont zurück
####         Argumente  : Text
####         Returnwert : -
####################################################################

sub afont {
	my $self = shift;
        return "<FONT FACE=\"$self->{atface}\" SIZE=\"$self->{atsize}\" COLOR=\"$self->{atcolor}\">".shift()."</FONT>";
}

####################################################################
####         Gibt den Text im Standardfont zurück
####         Argumente  : Text
####         Returnwert : Text mit Font-Tags
####################################################################
sub sfont {
	my $self = shift;
        return "<FONT FACE=\"$self->{stface}\" SIZE=\"$self->{stsize}\" COLOR=\"$self->{stcolor}\">".shift()."</FONT>";
}

####################################################################
####         Gibt den Text im Standardfont aber klein zurück
####         Argumente  : Text
####         Returnwert : Text mit Font-Tags
####################################################################
sub smfont {
	my $self = shift;
        return "<FONT FACE=\"$self->{stface}\" SIZE=0 COLOR=\"$self->{stcolor}\">".shift()."</FONT>";
}

####################################################################
####         Formatiert einen Text aus der Hilfedatei
####         Argumente  : Text
####         Returnwert : Text mit Font-Tags und BRs
####################################################################
sub format {
	my $self = shift;
        my $txt=shift;
	my $qfont=$self->qfont; my $afont=$self->afont;
	$qfont=~s/<\/FONT>//i;
	$afont=~s/<\/FONT>//i;

	$txt=~s/<QFONT>/$qfont/g;
	$txt=~s/<AFONT>/$afont/g;
	$txt=~s/\r*\n/<BR>\r\n/g;	
	$txt=~s/Ä/&Auml;/g;
	$txt=~s/Ö/&Ouml;/g;
	$txt=~s/Ü/&Uuml;/g;
	$txt=~s/ä/&auml;/g;
	$txt=~s/ö/&ouml;/g;
	$txt=~s/ü/&uuml;/g;
	$txt=~s/ß/&szlig;/g;
	$txt=~s/<\$(\w+)>/$self->{$1}/g;
	return "<TABLE>\n".$self->TR([ $self->sfont("\n$txt\n") ])."</TABLE>\n";
}

####################################################################
####         Schreibt HTML
####         Argumente  : Der Inhalt als HTML
####         Returnwert : -
####################################################################
sub printhtml {
	my ($self, $TITLE, $INHALT, $FILE) = @_;
	$self->log(4,"Entering Template->printhtml");
    my $HEAD="Content-type: text/html\n\n";my $htmlfile;
	my $FORMTAG="\n<FORM METHOD=\"$baseq::POST\" ENCTYPE=\"application/x-www-form-urlencoded\">\n";
	my $n="<§§>";
	my $META="<META NAME=\"Author\" Content=\"prorara.web\" >\n".	
	         "<META http-equiv=\"content-type\" Content=\"text\/html\; charset=ISO-8859-1\" >\n";

		$self->log(4,"Oeffne Datei: ".$baseq::TEMPLATES.$self->{htmlfile}); 
		open (FILE, $baseq::TEMPLATES.$self->{htmlfile} ) or $self->log (1, "Konnte '".$baseq::TEMPLATES.$self->{htmlfile}."' nicht oeffnen");
		my $erg=read(FILE ,$htmlfile, 10000);
		close FILE;

	if (! defined $erg) {$self->log (1, "Konnte '".$baseq::TEMPLATES.$self->{htmlfile}."' nicht lesen"); }
	if ($erg == 10000) {$self->log (1, "'".$baseq::TEMPLATES.$self->{htmlfile}."' ist zu gross !"); }
	
	my $THEHIDDEN = $self->HD("umfid",$baseq::VARS{umfid}).
            $self->HD("fid",$baseq::VARS{fid}).
	        $self->HD("knr",$baseq::VARS{knr}).
	        $self->HD("pin",$baseq::VARS{pin}).
            $self->HD("pass",$baseq::VARS{pass}).
        $self->HD("helpkontext",$self->{helpkontext}).
           $self->HD("ausschl",$baseq::VARS{ausschl}).
           $self->HD("helpkontext",$self->{helpkontext}).
           $self->HD("grpid",$self->{grpid}).
           $self->HD("grplfd",$self->{grplfd});
       foreach (@{$self->{statselpin}}) { $THEHIDDEN.=$self->HD($_,1); }

    $htmlfile=~s/\r//g;
    $htmlfile=~s/\n/$n/g;
	$htmlfile=~s/(<TITLE>).*(<\/TITLE>)/$1$TITLE$2/i;						# Den TITEL ersetzen
	if ($self->{warntext} eq "") {$htmlfile=~s/<WARN>.*<\/WARN>//i;}					#Wenn kein Warnungstext
		else { $htmlfile=~s/<WARN>(.*)!.*!(.*)<\/WARN>/\n$1\n$self->{warntext}\n$2\n/i;}   # Sonst Warnungstext einsetzen
	
	if ($FILE eq "") {
				$htmlfile=~s/<INHALT>.*<\/INHALT>/$FORMTAG$THEHIDDEN$INHALT<\/FORM>\n/i;   #Inhalt einsetzen
        			$htmlfile=~s/$n/\n/g;
				print $HEAD.$htmlfile;
	}
	else {
      	$htmlfile=~s/<INHALT>.*<\/INHALT>/$INHALT/i;							#Inhalt einsetzen !
        $htmlfile=~s/$n/\n/g;
		open (FILE, ">$FILE") or $self->log (2, "Konnte '$FILE' nicht oeffnen");
		print FILE $htmlfile;
		close FILE;
        }
}


####################################################################
####         nimmt die Änderungen aus dem Formular an
####         Argumente  : Zeiger auf Variablen
####         Returnwert : -
####################################################################
sub getbearb {
	my $self = shift;
	if ($baseq::VARS{tbut} eq $self->trans("BU13")){$self->htmlbearb;}
	elsif ($baseq::VARS{tbut} eq $self->trans("BU17") ){$self->htmlbearb;}
	elsif ($baseq::VARS{tbut} eq $self->trans("BU22") ){$self->templateansicht;}
	elsif ($baseq::VARS{tbut} eq $self->trans("BU24") ){$self->hilfe;}
	elsif ($baseq::VARS{tbut} eq $self->trans("BU1") ){
		$self->{tmpbeschr}=$self->fclean($baseq::VARS{tbeschr});
		$self->{htmlfile}=$self->fclean($baseq::VARS{tfile});
		$self->{qtface}=$self->fclean($baseq::VARS{tqtface});	
		$self->{qtsize}=$self->fclean($baseq::VARS{tqtsize});	
		$self->{qtcolor}=$self->fclean($baseq::VARS{tqtcolor});	
		$self->{atface}=$self->fclean($baseq::VARS{tatface});	
		$self->{atsize}=$self->fclean($baseq::VARS{tatsize});	
		$self->{atcolor}=$self->fclean($baseq::VARS{tatcolor});	
		$self->{stface}=$self->fclean($baseq::VARS{tstface});	
		$self->{stsize}=$self->fclean($baseq::VARS{tstsize});	
		$self->{stcolor}=$self->fclean($baseq::VARS{tstcolor});	
		$self->{shadowcolor}=$self->fclean($baseq::VARS{shadowcolor});	
		$self->store;
		$self->loadtmp(1);
        $self->htmlbearb;
	}
        elsif  ($baseq::VARS{tbut} eq $self->trans("BU23") ){$self->getfarben;}
    	elsif  ($baseq::VARS{tbut} eq $self->trans("BU21") ){$self->farbenbearb;}
        else {$self->htmlbearb;}
}


####################################################################
####         Gibt einen Hilfetext aus
####         Argumente  : -
####         Returnwert : -
####################################################################
sub hilfe {
	my $self = shift;
	my $file=$baseq::HELPPATH.$baseq::VARS{helpkontext}."-".$self->{sprache}.".help";
	$self->log(4,"Oeffne Datei: ".$file); 
	if ( open ( HELP,$file ) ){	
		while (my $x=<HELP>) {$txt.=$x;}
		close (HELP);
		$self->printhtml("Hilfe",$self->format($txt).$self->SMrow( ["kbut"], ["BU13"]) );
	}
	else { 
		$self->printhtml("Hilfe",$self->qfont($self->trans("WA20")).$self->SMrow( ["kbut"], ["BU13"]));
		$self->log(2,"Konnte '$file' nicht öffnen!");
	}

	$self->exit;
}

####################################################################
####         Gibt das Template zur Bearbeitung aus
####         Argumente  : Text
####         Returnwert : Text mit Font-Tags
####################################################################
sub htmlbearb {
	my $self = shift;
	$self->{warntext}="Template: ".$self->{tmpbeschr};
	$self->printhtml("Template ändern","<TABLE>".
	$self->TR([$self->sfont("Beschreibung:"), $self->TF("tbeschr",$self->{tmpbeschr},80) ]).	
	$self->TR([$self->sfont("Templatedatei:"), $self->TF("tfile",$self->{htmlfile},80) ]).	
	$self->TR([$self->sfont($self->trans("HI31e")),	$self->DDfcolor("shadowcolor", $self->{shadowcolor}) ]).
	"</TABLE>\n".
    "<TABLE>\n".
	$self->TR(["&nbsp;",$self->sfont("Typ"),$self->sfont("Gr&ouml;&szlig;e"),$self->sfont("Farbe")]).
	$self->TR([$self->sfont("Fragen:"),
		   $self->DDfface("tqtface",$self->{qtface}),
           $self->TF("tqtsize",$self->{qtsize},10),
           $self->DDfcolor("tqtcolor",$self->{qtcolor}) ]).
	$self->TR([$self->sfont("Antworten:"),
		   $self->DDfface("tatface",$self->{atface}),
           $self->TF("tatsize",$self->{atsize},10),
           $self->DDfcolor("tatcolor",$self->{atcolor}) ]).
	$self->TR([$self->sfont("Standard:"),
		   $self->DDfface("tstface",$self->{stface}),
           $self->TF("tstsize",$self->{stsize},10),
           $self->DDfcolor("tstcolor",$self->{stcolor}) ]).

      	"</TABLE>\n".$self->HD("ktemplate",$self->{template}).
	
	$self->SMrow( ["tbut","kbut","tbut","tbut"], ["BU1","BU13","BU22","BU24"] ) );
       	$self->exit;

				$self->sfont($self->trans("HI31e")),
				$self->DDfcolor("shadowcolor", $self->{shadowcolor}),

}

####################################################################
####         Gibt die Farbpalette zur Bearbeitung aus
####         Argumente  : -
####         Returnwert : -
####################################################################
sub farbenbearb {
	my $self = shift;
	$self->{warntext}="Bitte bearbeiten Sie Ihre Farbeinstellungen";
        my $HTML="<TABLE cellspacing=5>\n"; my $hex; my $name; my @Lhex; my @Lname;
	$SQL="select hexcode, name from farben where knr=$self->{knr} order by nr";
	my $sth=$self->sqlprepare($SQL);
        while (($hex, $name)=$sth->fetchrow_array){push @Lhex,$hex; push @Lname, $name;}
        my $stcolor=$self->{stcolor}; unshift @Lhex,""; unshift @Lname,""; # ab 1 beginnen....
	for (my $x=1; $x<(@Lhex+5); $x++) {
	  $self->{stcolor}=@Lhex[$x];
	  $HTML.=$self->TR([ $self->sfont("Beispiel"),
			    $self->TF("thex$x",$Lhex[$x],7),
			    $self->TF("tname$x",$Lname[$x],30) ]);
	}
 	$self->{stcolor}=$stcolor;
	$HTML.= "</TABLE>\n".
	$self->HD("ktemplate",$self->{id}).
	$self->SMrow( ["tbut","kbut"] , ["BU23","BU13"] );

	$self->printhtml($self->trans("TI14"),$HTML);
	$self->exit;
}

####################################################################
####         Gibt die Farbpalette zur Bearbeitung aus
####         Argumente  : -
####         Returnwert : -
####################################################################
sub getfarben {
	my $self=shift;
        my ($a,$b);
	my $SQL="delete from farben where knr=$self->{knr}";
        $self->sqldo($SQL);
	my $key; my $valu; my @Lhex; my @Lname; my $x;
	while (($key, $valu)= each %baseq::VARS ) {
	  $x=0;($x)=$key=~/^thex(\d+)$/;
	  if ($valu ne "") {$Lhex[$x]=$valu;}
	  $x=0;($x)=$key=~/^tname(\d+)$/;
	  if ($valu ne "") {$Lname[$x]=$valu;}
	}
	for ($x=1; $x<(@Lhex); $x++) {
             $a=$self->fclean($Lhex[$x]); $b=$self->fclean($Lname[$x]);
	     $self->sqldo("insert into farben values ($self->{knr}, $x, '$a', '$b')");
	}
        $self->farbenbearb;
}

####################################################################
####         Gibt das Template zur Bearbeitung aus
####         Argumente  : Text
####         Returnwert : Text mit Font-Tags
####################################################################
sub templateansicht {
	my $self = shift;
	$self->{warntext}="Template: ".$self->{tmpbeschr};
	$self->printhtml($self->trans("TI15"),$self->qfont("Bitte sagen uns ihre Meinung !")."\n<BR>\n<TABLE>\n<TR><TD>".
	$self->afont(
	$self->RB("U1F1","U1F1A1")."&nbsp;Antwort Nummer 1:\n".
	$self->TF("U1F1A1T","",50)."<BR>\n".
	$self->RB("U1F1","U1F1A2")."&nbsp;Die zweite Antwort\n<BR>\n".
	$self->RB("U1F1","U1F1A3")."&nbsp;Die dritte Antwort\n<BR>\n"	).
	"</TD><TD>\n&nbsp;</TD></TR>\n".
	"</TABLE>\n<BR>\n".
	$self->HD("ktemplate",$self->{template}).
	"\n<BR>\n".$self->SM("tbut", "BU13")."&nbsp;&nbsp;&nbsp;".
	$self->sfont("Text in Standardfarbe")  );
	$self->exit;
}

####################################################################
####         gibt eine DropDownliste der Schriftfarben zurueck
####         Argumente  : $self, name, selected, farbe fuer Grafik ?
####         Returnwert : HTMLstring
####################################################################
sub DDfcolor {
  my ($self,  $name, $sel, $grafik) = @_;
  my @acolor=@{$self->{RLfontcolor}};
  my %hcolor=%{$self->{RHfontcolor}};
  if ($grafik) {
	$hcolor{0}="egal";
	unshift @acolor,"0";
  }
  return $self->DD($name,\@acolor,$sel,\%hcolor); 
}

####################################################################
####         gibt eine DropDownliste der Fragennummern zurueck
####         Argumente  : $self, name, selected, farbe fuer Grafik ?
####         Returnwert : HTMLstring
####################################################################
sub DDordernum {
  my ($self,  $name, $sel) = @_;
  my %ordernums=%$baseq::RHordernums;
  my @o=sort {$ordernums{$a} <=> $ordernums{$b}} keys %ordernums;	
  return $self->DD($name,$baseq::RLordernums,$sel,$baseq::RHordernums); 
}

####################################################################
####         gibt eine DropDownliste der Schriftstile zurueck
####         Argumente  : -
####         Returnwert : HTMLstring
####################################################################
sub DDfface {
  my ($self, $name, $sel) = @_;
  return $self->DD($name,$self->{RLfontface},$sel); 
}


####################################################################
####         gibt eine DropDownliste der Schriftstile zurueck
####         Argumente  : -
####         Returnwert : HTMLstring
####################################################################
sub grafikhtml {
  my ($self,$sep) = @_;
  my $ID=$self->IDstr;
  $self->log(4,$self->{details}." -- ".$self->IDstr);
  my %grdata;
  my @TRANS=qw/lfd proz txt/;
  my $IDG= defined $baseq::VARS{$ID."G"} ? $baseq::VARS{$ID."G"} : $self->{grafik};
  my $IDS= defined $baseq::VARS{$ID."S"} ? $baseq::VARS{$ID."S"} : $self->{sort};
  my $IDV= defined $baseq::VARS{$ID."V"} ? $baseq::VARS{$ID."V"} : $self->{gschmuck};
  my $IDG= substr($IDG,0,2);
  if ($self->{details} ne "" && $ID ne $self->{details}) {
	return $self->HD($ID."G", $IDG).
		   $self->HD($ID."S", $IDS).
		   $self->HD($ID."V", $IDV);
  }
  my $grafik=grafikm->init($self);
  my $zufz=int(rand 10000000)+1;
  my $filename=$baseq::UMFIMG.$ID.$IDG."S".$IDS."V".$IDV."P".$self->{grpid}."x".$self->{grplfd}."x$sep$zufz.gif";		
  $self->log(4,"Grafikdatei = $baseq::PATH.$filename / X=$X, IDG=$IDG, IDS=$IDS IDV=$IDV");
  $grdata{GRA}=$IDG;      
  $grdata{pid}=$self->{grpid};
  $grdata{plfd}=$self->{grplfd};
  $grdata{schmuck}= $IDV;
  $grdata{filename}=$baseq::PATH.$filename;
  $grdata{sorttype}=$TRANS[$IDS];
  $grdata{shadowcolor}=$self->{shadowcolor};
  $grdata{textformath}="&T - &P%";
  $grdata{textformatv}="Nr.&L (&Z) ";
  $grdata{nachkomma}=0;
  if ($IDG eq "SK") {	
		$grdata{schmuck}="";
		$grdata{nachkomma}=2;
		$grdata{textformath}="  &T";
		$grdata{textformatv}="&Z";
		$grdata{printN}=0;
  }
  $grafik->setdata(\%grdata);
  $self->makegrafik($grafik);  
  my $typ=substr($self->{typ},0,1); 
  my $HTML= $self->IMGsubmit($filename, "stbut".$grafik->{id})."<BR>\n".
	$self->sfont(
		" Grafik:".$self->DD($ID."G", $self->{lgrafik}{$typ}, $IDG, $self->{hgrafik}{$typ} ).
		" Sortierung:".$self->DD($ID."S", $self->{lsort}, $IDS, $self->{hsort} ).
		" Verzierung:".$self->DD($ID."V", $self->{lschmuck}, $IDV, $self->{hschmuck} ) );
  if ($ID eq $self->{details}) {$HTML.="<HR>\n".$self->grafikdetails; }
  $HTML.=$self->SM("stbut","BU58")."&nbsp; &nbsp;\n".$self->SM("stbut".$self->IDstr,"BU59")."\n";	
  return $HTML;
}

sub grafikdetails {};
