#! /usr/bin/perl
use utf8;
use Crypt::Twofish;
use Time::Local;
use File::Path;
use strict;
use vars qw( @SPR $Fehler %Aufruf $FehlerCode @User);

no utf8;

require "../_req_globalmonitoring.pl";


# nwp_main.pl
# by Rolf Mohr (MMworx) (webmaster@standort-dortmund.de)

# Mini-Administrations für Netzwerkpartner

my $MailProg = '/usr/sbin/sendmail';
my $TFK = "4JuGsr52TrsHcVs9zTf36Gf7zRq4Gs7b";

my @Eingabeliste = (); my $Eingabe = 0; my $Eintrag = 0;
my $Name = 0; my $Wert = 0;

# *****************************************************************************************************

# Formulardaten (GET oder POST) einlesen und umformen ---------------------------------
if ($ENV{REQUEST_METHOD} eq "GET")
{
 @Eingabeliste = split(/&/, $ENV{'QUERY_STRING'});
}
else
{
 read(STDIN, $Eingabe, $ENV{'CONTENT_LENGTH'});
 @Eingabeliste = split(/[&;]/, $Eingabe);
}
foreach $Eintrag (@Eingabeliste)
{
 $Eintrag =~ s/\+/ /go;
 ($Name, $Wert) = split(/=/, $Eintrag);
 $Name =~ s/\%(..)/pack("c", hex($1))/ge;
 $Wert =~ s/\%(..)/pack("c", hex($1))/ge;
 $Wert =~ s/[{|+*}<>#~\t\r]//g;
 $Wert =~ s/[\']/`/g;
 if ($Name ne "NewInvoice") {$Wert =~ s/\n//g;}
 $Aufruf{$Name} = $Wert;
}

$Fehler = "";
$FehlerCode = 0;
@SPR = ();
@User = ();


# Param "LG" steuert sprache - hier zuweisen, wenn nicht vorhanden
if (length($Aufruf{'LG'}) < 1) {$Aufruf{'LG'} = "d";}

# Sprache laden
$Name = lc($Aufruf{'LG'}); $Wert = "_admin-text-$Name.pl";
if (-e $Wert) { open (DATEI,"<$Wert"); @SPR = <DATEI>;  close (DATEI);}
else { open (DATEI,"<_admin-text-d.pl"); @SPR = <DATEI>;  close (DATEI);}
for (@SPR) {chomp $_;}

# Logincheck
$Name = &NWP_Check_The_Login($Aufruf{'VK'});
if (! $Name) {&Error_And_Out; exit(0);} # Fehlerseite in den Modulen ablegen!


if ($Aufruf{'S'} <= 1)
{
 &Start;
}

elsif ($Aufruf{'S'} == 3)			# Account-Übersicht öffnen
{
 &OpenAccount_2;
}


elsif ($Aufruf{'S'} == 10)			# Account Löschen: Sicherheitsabfrage
{
 &DeleteAccount_1;
}
elsif ($Aufruf{'S'} == 11)			# Account Löschen: durchführen
{
 &DeleteAccount_2;
}

elsif ($Aufruf{'S'} == 30)			# neuen Dialog Account im gewählten Company Account einrichten: Step 1
{
 &Add_DA_01;
}
elsif ($Aufruf{'S'} == 31)			# neuen Dialog Account im gewählten Company Account einrichten: Step 2
{
 &Add_DA_02;
 if ($Fehler ne "") {&Add_DA_01;}
}
elsif ($Aufruf{'S'} == 32)			# neuen Dialog Account im gewählten Company Account einrichten: Step 3
{
 &Add_DA_03;
 if ($Fehler ne "") {&Add_DA_01;}
}







elsif ($Aufruf{'S'} == 50)			# Übersicht der Accounts etc. anzeigen
{
 &Uebersicht;
}

elsif ($Aufruf{'S'} == 60)			# Logbook anzeigen
{
 &Logbook;
}

elsif ($Aufruf{'S'} == 70)			# direktes einloggen in den Schulaccount
{
 &SL_Open;
}
elsif ($Aufruf{'S'} == 71)			# direktes einloggen in einen Dialog-Account
{
 &DA_Open;
}

elsif ($Aufruf{'S'} == 80)			# Account "freischalten": Schritt 1 (der Account erhält dann Rechnungen)
{
 &Freischalten_1;
}
elsif ($Aufruf{'S'} == 81)			# Account "freischalten": Schritt 2 (der Account erhält dann Rechnungen)
{
 &Freischalten_2;
}

elsif ($Aufruf{'S'} == 90)			# Rechnungsadresse ändern Step 1
{
 &ChangeInv_1;
}
elsif ($Aufruf{'S'} == 91)			# Rechnungsadresse ändern Step 2
{
 &ChangeInv_2;
 if ($Fehler ne "") {&ChangeInv_1;}
}

elsif ($Aufruf{'S'} == 110)			# freigeschaltete Accounts öffnen: 1
{
 &OpenActivated_1;
}
elsif ($Aufruf{'S'} == 111)			# freigeschaltete Accounts öffnen: 2
{
 &OpenActivated_2;
 if ($Fehler ne "") {&OpenActivated_1;}
}

elsif ($Aufruf{'S'} == 115)			# direktes einloggen in den Schulaccount - FÜR FREIGESCHALTETE!
{
 &SL_Open_ACTIVATED;
}
elsif ($Aufruf{'S'} == 116)			# direktes einloggen in einen Dialog-Account - FÜR FREIGESCHALTETE!
{
 &DA_Open_ACTIVATED;
}

elsif ($Aufruf{'S'} == 120)			# Tools freischalten - step 1
{
 &Tools_More_1;
}
elsif ($Aufruf{'S'} == 121)			# Tools freischalten - step 2
{
 &Tools_More_2;
}

elsif ($Aufruf{'S'} == 125)			# Tools abschalten - step 1
{
 &Tools_Less_1;
}
elsif ($Aufruf{'S'} == 126)			# Tools abschalten - step 2
{
 &Tools_Less_2;
}

elsif ($Aufruf{'S'} == 130)			# Executives Accounts Anzahl - step 1
{
 &Executives_1;
}
elsif ($Aufruf{'S'} == 131)			# Executives Accounts Anzahl - step 2
{
 &Executives_2;
}


elsif ($Aufruf{'S'} == 9000)
{
 &Logout;
}

exit(0);

# *****************************************************************************************************
#        SUBROUTINEN
# *****************************************************************************************************

# neuen Dialog Account im gewählten Company Account einrichten: Step 3
sub Add_DA_03
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time(); my $res = 0;

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = ""; my $Test = 0;

 my $KK = 0; my $DC_EM = ""; my $k = 0; my $KP_ID2 = 0;

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 $KP_ID2 = $ID2;

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss


 # jetzt noch einmal Anrede, Name etc checken
 $Aufruf{'ESL'} = lc($Aufruf{'ESL'});

 if ($Aufruf{'ANR'} < 57 || $Aufruf{'ANR'} > 58) {$Fehler = $SPR[390]; $FehlerCode = 1; return;}

 if (length($Aufruf{'NM'}) < 2 || length($Aufruf{'NM'}) > 45) {$Fehler = $SPR[391]; $FehlerCode = 2; return;} # 45 statt 35 wegen umlauten
 if ($Aufruf{'NM'} eq $SPR[386]) {$Fehler = $SPR[391]; $FehlerCode = 2; return;}

 if ($Aufruf{'ABTG'} eq "-") {$Fehler = $SPR[411]; $FehlerCode = 5; return;}

 $Dummy = &Glob_Check_If_Is_Email($Aufruf{'ESL'});
 if (! $Dummy) {$Fehler = $SPR[392]; $FehlerCode = 3; return;}

 # 1. Email schon global vorhanden?
 $i = substr($Aufruf{'ESL'}, 0, 1); # erstes Zeichen der Email als Teil des Dateinamens
 $DM = "../../../cgi-bin/login/$i"."_logdata_163_.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);

 $Test = 0;
 for (@Data1)
 {
  if (length($_) > 3)
  {
   $Dummy = &Hex_2_Ascii ($_);
   $Dummy = (split("#", $Dummy))[0];
   if ($Dummy eq $Aufruf{'ESL'}) {$Test = 1; last;}
  }
 }

 if ($Test) {$Fehler = $SPR[393]; $FehlerCode = 3; return;}

 # 2. Email in noch nicht bestätigten Anmeldungen? alle Systeme durchforsten, dazu akt-projektordner.pl einlesen (root cgi)
 $DM = "../../../cgi-bin/akt-projektordner.pl";
 open (DATEI,"<$DM"); @Temp1 = <DATEI>; close(DATEI); $Dummy = shift(@Temp1); # kommentar entfernen

 my $Cipher = Crypt::Twofish->new($TFK);

 $Test = 0;
 for (@Temp1)
 {
  chomp $_;
  if ($_ eq "innovation") {$DM = "../order/recent_order.pl";}
  else { $DM = "../../../$_/cgi-bin/_order/recent_order.pl";}

  if (-e $DM)
  {
   open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

   foreach $res (@Data1)
   {
    if (length($res) > 5)
    {
     @ET1 = split("\t", $res);

     # dekodieren der E-Mail
     $KK = &Hex_2_Ascii($ET1[0]);
     $DC_EM = "";
     for ($i = 0; $i < 16; $i++)
     {
      $k = substr($KK, $i * 16, 16);
      $DC_EM .= $Cipher->decrypt($k);
     }
     $Dummy = (split("#", $DC_EM))[0];
     if (lc($Dummy) eq $Aufruf{'EML'}) {$Test = 1; last;}
    }
   }
   if ($Test) {last;}

  } # -e
 } # temp1

 if ($Test) {$Fehler = $SPR[393]; $FehlerCode = 3; return;}


 # Passwort
 if (length($Aufruf{'PW'}) < 8) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}
 if ($Aufruf{'PW'} =~ /[^a-zA-Z0-9]/) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}

 # Check auf Benutzung kleiner und großer Buchstaben sowie Zahlen
 my $BK = 0; my $BG = 0; my $ZL = 0;
 for ($i = 0; $i < length($Aufruf{'PW'}); $i++)
 {
  $Test = ord(substr($Aufruf{'PW'}, $i, 1));
  if ($Test >= 48 && $Test <= 57) {$ZL++;} # Zahl
  if ($Test >= 65 && $Test <= 90) {$BG++;} # Buchstabe groß
  if ($Test >= 97 && $Test <= 122) {$BK++;} # Buchstabe klein
 }
 if (!$BK ||! $BG || !$ZL) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}

 # OK bis hier, Account anlegen

  # 1) ID1 + ID2 für Account anlegen. Beachten: das 1. Zeichen darf keine "1" sein, da
 # die "1" als Indikator für Test-Accounts genutzt wird
 # wg. globalem Login müssen die IDs 1+ 2 auch global getestet und abgeglichen werden

 $DM = "../../cgi-bin/login/_used_id1_id2.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);

 srand;
 my $VLG = "abcdefghjk2mnpqrstuvwxyz23456789abcdefghjkamnpqrstuvwxyz23456789abcdefghjk2";
 my $ID1 = ""; my $ID2 = "";

 $Test = 1;
 while ($Test)
 {
  $ID1 = "";
  for ($i = 0; $i < 12; $i++) { $ID1 .= substr($VLG, int(rand 50), 1); } # ID länge vorher 9, durch globales Login s.o. jetzt lieber 12

  $Test = 0;
  for (@Data1)
  {
   $Dummy = (split("\t", $_))[0];
   if ($Dummy eq $ID1) {$Test = 1; last;}
  }
 }

 $Test = 1;
 while ($Test)
 {
  $ID2 = "";
  for ($i = 0; $i < 12; $i++) { $ID2 .= substr($VLG, int(rand 50), 1); } # ID länge vorher 9, durch globales Login s.o. jetzt lieber 12

  $Test = 0;
  for (@Data1)
  {
   $Dummy = (split("\t", $_))[1];
   if ($Dummy eq $ID2) {$Test = 1; last;}
  }
 }

 # die ermittelten IDs global speichern
 $Dummy = "$ID1\t$ID2\t\n"; $DM = "../../../cgi-bin/login/_used_id1_id2.pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close (DATEI);


 # Kundennummer aus CID des Schul-Accounts
 my $KundenNummer = $CID[31];

 # 2) Die CID für den Dialog Account aus der CID des Company accounts bilden und anpassen (Aufbau: siehe readme)
 my @CID_DA = @CID;

 $CID_DA[1] = $SPR[$Aufruf{'ANR'} + 4]; # Anrede Klartext
 $CID_DA[2] = $Aufruf{'NM'}; # Name
 $CID_DA[3] = $Aufruf{'ESL'}; # Email
 $CID_DA[18] = $SPR[$Aufruf{'ANR'} + 43]; # geschlechtsspezifische Anrede in Mails
 $CID_DA[19] = $Aufruf{'ANR'}; # Parameter der Anrede (57, 58, ...)
 $CID_DA[30] = "-"; # nur bei Schul-Account: Rechnungsanschrift
 $CID_DA[32] = "DA"; # nur bei Dialog-Account: Flag "dies ist ein Lehrer-Account"
 $CID_DA[33] = $Aufruf{'UID'}; # ID1 des Company accounts (nur bei Dialog-Account)
 $CID_DA[34] = $KP_ID2; # ID2 des Company accounts (nur bei Dialog-Account)

 # CID_DA leicht kodieren, vorher in CID Format ("#" getrennt) bringen
 $Dummy = join("#", @CID_DA); $Dummy .= "#\n";

 $Dummy = &Ascii_2_Hex($Dummy);
 $Dummy =~ tr/0123456789abcdefghijklmnopqrstuvwxyz/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/;
 # Angaben der CID immer in der 2. Zeile !
 $Dummy = "#\n".$Dummy;

 # ... CID Ordner anlegen und CID + Stack dort ablegen. Ordner ist in @ET3 (s.o.)
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$ID1";
 $i = mkdir ($DM, 0755); $i = chmod 0777, $DM;

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/".$ID1."/cid-".$ID1.".pl";
 open (DATEI,">$DM"); print DATEI $Dummy; close (DATEI);
 $i = chmod 0777, $DM;

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/".$ID1."/stack-".$ID1.".pl";
 open (DATEI,">$DM"); close (DATEI);
 $i = chmod 0777, $DM;


 # im übergeordneten Company Account die CID2 Datenbank updaten, damit der Company Account "weiß", welche
 # Dialog-Accounts er verwaltet.  Aufbau: time, ID1 + 2 des Dialogaccounts
 $Dummy = "$TM\t$ID1\t$ID2\t\n";
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid2-".$Aufruf{'UID'}.".pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close (DATEI);


 # im übergeordneten Company Account die Datenbank  mit Abteilungen updaten
 # ... Abteilung einlesen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/current_departments_".$Aufruf{'UID'}.".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

 @Temp1 = ();
 for (@Data1)
 {
  if (length($_) > 3)
  {
   @ET1 = split("\t", $_);
   if ($ET1[0] ne $Aufruf{'ABTG'}) {push(@Temp1, $_);}
   else
   {
    chomp $_;
    @ET1 = split("\t", $_);
    $_ .= "$ID1\t\n"; push(@Temp1, $_);
   }
  }
 }
 open (DATEI,">$DM"); print DATEI @Temp1; close(DATEI);


 # ... Email/Passwort an Login DB hängen. Die ersten 4 Einträge sind identisch, dann kommen noch spezifische Angaben

 # ... Email kodieren
 my $CF_email = $Aufruf{'ESL'}."#";

 while (length($CF_email) % 256 != 0) {$CF_email .= chr( int(rand(20) + 97) );}
 $Cipher = Crypt::Twofish->new($TFK);
 $DM = "";
 for ($i = 0; $i < 16; $i++)
 {
  $k = substr($CF_email, $i * 16, 16); $DM .= $Cipher->encrypt($k);
 }
 $DM = &Ascii_2_Hex($DM); $CF_email = $DM;

 # ... Passwort kodieren
 my $CF_passwort = $Aufruf{'PW'}."#";

 while (length($CF_passwort) % 256 != 0) {$CF_passwort .= chr( int(rand(20) + 97) );}
 $Cipher = Crypt::Twofish->new($TFK);
 $DM = "";
 for ($i = 0; $i < 16; $i++)
 {
  $k = substr($CF_passwort, $i * 16, 16); $DM .= $Cipher->encrypt($k);
 }
 $DM = &Ascii_2_Hex($DM); $CF_passwort = $DM;

 $Dummy = "$CF_email\t$CF_passwort\t$ID1\t$ID2\tDA\t$Aufruf{'UID'}\t$KP_ID2\t0\t0\t0\t0\t0\t\n"; # Dialogaccount: "DA", ID1 + 2 des Company accounts
 $DM = "../../../".$ET3[4]."/cgi-bin/_system/_dt_acount_login_tp504_.pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close (DATEI);


 # Email für globales Login sichern (Email - Ordner)
 $Dummy = "$Aufruf{'ESL'}#$ET3[4]#"; $Dummy = &Ascii_2_Hex($Dummy); $Dummy .= "\n";
 $i = substr($Aufruf{'ESL'}, 0, 1); # erstes Zeichen der Email als Teil des Dateinamens
 $DM = "../../../cgi-bin/login/$i"."_logdata_163_.pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close (DATEI);

 # Loggen: da mehrere Nutzer möglich sind, muss pro Nutzer geloggt und der Name mitgeführt werden
 # zeit, ID2, Name des Anlegenden, Info, Verzeichnis,zeit

 my $NE = "$TM\t$User[2]\t$User[3]\tneuer Dialog Account ($Aufruf{'NM'}) im Company Account $CID[29]\t$ET3[4]\t$TM\t\n";
 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # zurück
  print "<li><a href='nwp_main.pl?S=3&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}&EML=$Aufruf{'EML'}' class='links-a-active' id='online-a'>$SPR[381]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[404]\n"; # neuen DA einrichten
 print "</h1>\n\n";

 print "<p>\n";
  $Dummy = $SPR[406]; $DM = "$SPR[$Aufruf{'ANR'} + 4] $Aufruf{'NM'}"; # Anrede und Name
  $Dummy =~ s/XXP1/$DM/;
  $Dummy =~ s/XXP2/$CID[29]/; # Name der Schule
  $Dummy =~ s/XXP3/$Aufruf{'ESL'}/; # Email
  $Dummy =~ s/XXP4/$Aufruf{'PW'}/; # Passwort
  print "$Dummy\n";
 print "</p>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Add_DA_03


# neuen Dialog Account im gewählten Company Account einrichten: Step 2
sub Add_DA_02
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time(); my $res = 0;

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = ""; my $Test = 0;

 my $KK = 0; my $DC_EM = ""; my $k = 0;

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss


 # jetzt Anrede, Name etc checken
 $Aufruf{'ESL'} = lc($Aufruf{'ESL'});

 if ($Aufruf{'ANR'} < 57 || $Aufruf{'ANR'} > 58) {$Fehler = $SPR[390]; $FehlerCode = 1; return;}

 if (length($Aufruf{'NM'}) < 2 || length($Aufruf{'NM'}) > 45) {$Fehler = $SPR[391]; $FehlerCode = 2; return;} # 45 statt 35 wegen umlauten
 if ($Aufruf{'NM'} eq $SPR[386]) {$Fehler = $SPR[391]; $FehlerCode = 2; return;}

 if ($Aufruf{'ABTG'} eq "-") {$Fehler = $SPR[411]; $FehlerCode = 5; return;}


 $Dummy = &Glob_Check_If_Is_Email($Aufruf{'ESL'});
 if (! $Dummy) {$Fehler = $SPR[392]; $FehlerCode = 3; return;}

 # 1. Email schon global vorhanden?
 $i = substr($Aufruf{'ESL'}, 0, 1); # erstes Zeichen der Email als Teil des Dateinamens
 $DM = "../../../cgi-bin/login/$i"."_logdata_163_.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);

 $Test = 0;
 for (@Data1)
 {
  if (length($_) > 3)
  {
   $Dummy = &Hex_2_Ascii ($_);
   $Dummy = (split("#", $Dummy))[0];
   if ($Dummy eq $Aufruf{'ESL'}) {$Test = 1; last;}
  }
 }

 if ($Test) {$Fehler = $SPR[393]; $FehlerCode = 3; return;}

 # 2. Email in noch nicht bestätigten Anmeldungen? alle Systeme durchforsten, dazu akt-projektordner.pl einlesen (root cgi)
 $DM = "../../../cgi-bin/akt-projektordner.pl";
 open (DATEI,"<$DM"); @Temp1 = <DATEI>; close(DATEI); $Dummy = shift(@Temp1); # kommentar entfernen

 my $Cipher = Crypt::Twofish->new($TFK);

 $Test = 0;
 for (@Temp1)
 {
  chomp $_;
  if ($_ eq "innovation") {$DM = "../order/recent_order.pl";}
  else { $DM = "../../../$_/cgi-bin/_order/recent_order.pl";}

  if (-e $DM)
  {
   open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

   foreach $res (@Data1)
   {
    if (length($res) > 5)
    {
     @ET1 = split("\t", $res);

     # dekodieren der E-Mail
     $KK = &Hex_2_Ascii($ET1[0]);
     $DC_EM = "";
     for ($i = 0; $i < 16; $i++)
     {
      $k = substr($KK, $i * 16, 16);
      $DC_EM .= $Cipher->decrypt($k);
     }
     $Dummy = (split("#", $DC_EM))[0];
     if (lc($Dummy) eq $Aufruf{'EML'}) {$Test = 1; last;}
    }
   }
   if ($Test) {last;}

  } # -e
 } # temp1

 if ($Test) {$Fehler = $SPR[393]; $FehlerCode = 3; return;}


 # Passwort
 if (length($Aufruf{'PW'}) < 8) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}
 if ($Aufruf{'PW'} =~ /[^a-zA-Z0-9]/) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}

 # Check auf Benutzung kleiner und großer Buchstaben sowie Zahlen
 my $BK = 0; my $BG = 0; my $ZL = 0;
 for ($i = 0; $i < length($Aufruf{'PW'}); $i++)
 {
  $Test = ord(substr($Aufruf{'PW'}, $i, 1));
  if ($Test >= 48 && $Test <= 57) {$ZL++;} # Zahl
  if ($Test >= 65 && $Test <= 90) {$BG++;} # Buchstabe groß
  if ($Test >= 97 && $Test <= 122) {$BK++;} # Buchstabe klein
 }
 if (!$BK ||! $BG || !$ZL) {$Fehler = $SPR[395]; $FehlerCode = 4; return;}

 # OK bis hier

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # zurück
  print "<li><a href='nwp_main.pl?S=3&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}&EML=$Aufruf{'EML'}' class='links-a-active' id='online-a'>$SPR[381]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[383]\n"; # neuen DA einrichten
 print "</h1>\n\n";


 print "<p>\n";

  # Abteilung einlesen
  $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/current_departments_".$Aufruf{'UID'}.".pl";
  open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

  $i = "";
  for (@Data1)
  {
   if (length($_) > 3)
   {
    @ET1 = split("\t", $_);
    if ($ET1[0] eq $Aufruf{'ABTG'}) {$i = $ET1[1]; last;}
   }
  }

  print "<b>$SPR[398] $CID[29]:</b><br><br>\n";
  print "$SPR[$Aufruf{'ANR'} + 4] $Aufruf{'NM'}<br>\n";
  print "Abteilung: $i<br>\n";
  print "$Aufruf{'ESL'}<br>\n";
  print "$Aufruf{'PW'}<br><br>\n";


  print "<form id='form2' action='nwp_main.pl' method='post'>\n";
  print "<input type='hidden' name='S' value='32'>\n";
  print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
  print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
  print "<input type='hidden' name='EML' value='$Aufruf{'EML'}'>\n";

  print "<input type='hidden' name='ANR' value='$Aufruf{'ANR'}'>\n";
  print "<input type='hidden' name='NM' value='$Aufruf{'NM'}'>\n";
  print "<input type='hidden' name='ESL' value='$Aufruf{'ESL'}'>\n";
  print "<input type='hidden' name='PW' value='$Aufruf{'PW'}'>\n";
  print "<input type='hidden' name='ABTG' value='$Aufruf{'ABTG'}'>\n";

  print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";

  print "</p>\n\n<br>\n";

  print "<input type='submit' value='Dialog Account anlegen'>\n";
  print "</form>\n\n<br><br>\n\n";


  print "<form id='form2' action='nwp_main.pl' method='post'>\n";
  print "<input type='hidden' name='S' value='30'>\n";
  print "<input type='hidden' name='KOR' value='OK'>\n";
  print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
  print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
  print "<input type='hidden' name='EML' value='$Aufruf{'EML'}'>\n";

  print "<input type='hidden' name='ANR' value='$Aufruf{'ANR'}'>\n";
  print "<input type='hidden' name='NM' value='$Aufruf{'NM'}'>\n";
  print "<input type='hidden' name='ESL' value='$Aufruf{'ESL'}'>\n";
  print "<input type='hidden' name='PW' value='$Aufruf{'PW'}'>\n";
  print "<input type='hidden' name='ABTG' value='$Aufruf{'ABTG'}'>\n";

  print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";

 print "<input type='submit' value='Eingaben bearbeiten'>\n";
 print "</form>\n\n";


 print "</p>\n\n";



 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Add_DA_02


# neuen Dialog Account im gewählten Company Account einrichten: Step 1
sub Add_DA_01
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # zurück
  print "<li><a href='nwp_main.pl?S=3&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}&EML=$Aufruf{'EML'}' class='links-a-active' id='online-a'>$SPR[381]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[383]\n"; # neuen DA einrichten
 print "</h1>\n\n";

 print "<form id='form2' action='nwp_main.pl' method='post'>\n";
 print "<input type='hidden' name='S' value='31'>\n";
 print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
 print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
 print "<input type='hidden' name='EML' value='$Aufruf{'EML'}'>\n";
 print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";

 if ($Fehler ne "")
 {
  print "<p style='color:#cc0000;'>\n";
  print "Bitte korrigieren Sie die rot markierte Eingabe.\n";
  print "</p>\n\n";

 }

 if ($Aufruf{'KOR'} eq "OK") {$Fehler = " ";}

 print "<p>\n";
 # Anrede
 print "<p class='header-p'>\n";
 print "$SPR[384]\n";
 if ($FehlerCode eq "1") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 print "<select class='select' name='ANR' size='1'>\n";
  $Dummy = ""; if ($Fehler eq "" || $Fehler ne "" && $Aufruf{'ANR'} eq "57") {$Dummy = "selected";}
  print "<option value='57' $Dummy>$SPR[61]</option>\n";
  $Dummy = ""; if ($Fehler ne "" && $Aufruf{'ANR'} eq "58") {$Dummy = "selected";}
  print "<option value='58' $Dummy>$SPR[62]</option>\n";
 print "</select>\n\n";

 # kleiner Abstand
 print "<p>\n<br></p>\n\n";

 # Name
 print "<p class='header-p'>\n";
 print "$SPR[385]\n";
 if ($FehlerCode eq "2") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 if ($FehlerCode eq "2")
 {
  print "<input name='NM' type='text' maxlength='35' class='input-text-breit-error' value='$Aufruf{'NM'}'>\n";
 }
 else
 {
  if ($Fehler eq "") { print "<input type='text' class='input-text-breit' name='NM' maxlength='35' value='$SPR[386]' onFocus=\"if(this.value=='$SPR[386]') this.value=''\">\n\n";}
  else { print "<input type='text' class='input-text-breit' name='NM' maxlength='35' value='$Aufruf{'NM'}'>\n\n";}
 }

 # Email
 print "<p class='header-p'>\n";
 print "$SPR[387]\n";
 if ($FehlerCode eq "3") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 if ($FehlerCode eq "3") { print "<input name='ESL' type='text' class='input-text-breit-error' value='$Aufruf{'ESL'}'>\n"; }
 else { print "<input name='ESL' type='text' class='input-text-breit' value='$Aufruf{'ESL'}'>\n"; }



 # Abteilung (nur im Living net) - zunächst einlesen

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/current_departments_".$Aufruf{'UID'}.".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

 print "<p class='header-p'>\n";
 print "$SPR[408]\n";
 if ($FehlerCode eq "5") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 print "<select class='select' name='ABTG' size='1'>\n";
  $Dummy = ""; if ($Fehler eq "" || $Fehler ne "" && $Aufruf{'ABTG'} eq "-") {$Dummy = "selected";}
  print "<option value='-' $Dummy>$SPR[409]</option>\n";

  for (@Data1)
  {
   if (length($_) > 3)
   {
    @ET1 = split("\t", $_);
    $Dummy = ""; if ($Fehler ne "" && $Aufruf{'ABTG'} eq $ET1[0]) {$Dummy = "selected";}
    print "<option value='$ET1[0]' $Dummy>$ET1[1]</option>\n";
   }
  }
 print "</select>\n\n";



 # Passwort - Vorgabe erstellen
 srand;
 my $P1VLG = "BDFGHJKLMNPRSTVWXZBDFGHJKLMNPRSTVWXZBDFGHJKLMNPRSTVWXZBDFGHJKLMNPRSTVWXZBDFGHJKLMNPRSTVWXZ"; # für Passwort - Teil 1
 my $P2VLG = "aeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeouaeou"; # für Passwort - Teil 2
 my $CF_Passwort = substr($P1VLG, int(rand 50), 1); $CF_Passwort .= substr($P2VLG, int(rand 50), 1);
 for ($i = 0; $i < 2; $i++) { $CF_Passwort .= int(rand(7)) + 2; }
 $CF_Passwort .= substr($P1VLG, int(rand 50), 1); $CF_Passwort .= substr($P2VLG, int(rand 50), 1);
 for ($i = 0; $i < 2; $i++) { $CF_Passwort .= int(rand(7)) + 2; }

 print "<p class='header-p'>\n";
 print "$SPR[388]\n";
 if ($FehlerCode eq "4") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 if ($FehlerCode eq "4") { print "<input name='PW' type='text' class='input-text-breit-error' value='$Aufruf{'PW'}'>\n"; }
 else
 {
  if ($Fehler eq "") { print "<input name='PW' type='text' class='input-text-breit' value='$CF_Passwort'>\n"; }
  else { print "<input name='PW' type='text' class='input-text-breit' value='$Aufruf{'PW'}'>\n"; }
 }

 print "<p>\n<br></p>\n\n";

 print "<input type='submit' value='Weiter'>\n";

 print "</form>\n\n<br><br>\n";

 print "</p>\n\n";



 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Add_DA_01



# Executives Accounts: Anzahl möglicher Accounts ändern - step 2
sub Executives_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # direkt den Param ATL in die cid-max-dac des Users schreiben
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-max-dac-".$Aufruf{'UID'}.".pl";
 if (-e $DM) { open (DATEI,">$DM"); print DATEI $Aufruf{'ATL'}; close(DATEI); }
 else {&Start; exit(0);} # kurzschluss

 # loggen (normal)
 my $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]: Anzahl Accounts geaendert ($Aufruf{'ATL'})\t$ET3[4]\t$TM\t\n";

 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);


 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[271]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 print "<p>\n";

 print "$SPR[277]\n"; # bestätigen

 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Executives_2


# Executives Accounts: Anzahl möglicher Accounts ändern - step 1
sub Executives_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 my $TheExecutives = 0; # DB einlesen -> cid-max-dac-????.pl
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-max-dac-".$Aufruf{'UID'}.".pl";
 if (-e $DM) { open (DATEI,"<$DM"); $TheExecutives = <DATEI>; close(DATEI); chomp $TheExecutives; }
 else {&Start; exit(0);} # kurzschluss

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[271]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 print "<form id='form2' action='nwp_main.pl' method='post'>\n";
 print "<input type='hidden' name='S' value='131'>\n";
 print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
 print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
 print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";

 print "<p>\n";

 print "$SPR[273]<br><br>\n"; # Anzahl wählen


 print "<select class='select' name='ATL' size='1'>\n";
 for ($i = 3; $i <= 100; $i++)
 {
  $Dummy = ""; if ($i == $TheExecutives) {$Dummy = "selected";}
  print "<option value='$i' $Dummy>$i $SPR[274]</option>\n";
 }
 print "</select>\n\n";

 print "<br><br><input type='submit' class='input-form-senden' value='$SPR[275]'>\n";
 print "</form>\n\n";


 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Executives_1

# Tools abschalten - step 2
sub Tools_Less_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # Tool entfernen
 @Temp1 = ();
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-".$Aufruf{'UID'}.".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI); $Dummy = shift(@Data1); push(@Temp1, $Dummy);

 for (@Data1)
 {
  if (length($_) > 5)
  {
   $DM = (split("\t", $_))[10];
   if ($DM ne $Aufruf{'ATL'}) {push(@Temp1, $_);}
  }
 }

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-".$Aufruf{'UID'}.".pl";
 open (DATEI,">$DM"); print DATEI @Temp1; close (DATEI);

 # loggen (normal)
 my $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]: Tool abgeschaltet $Aufruf{'ATL'}\t$ET3[4]\t$TM\t\n";

 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[259]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 print "<p>\n";
 print "$SPR[265]\n"; # bestätigen
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Tools_Less_2



# Tools abschalten - step 1
sub Tools_Less_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss


 # Tool DB des Accounts einlesen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-".$Aufruf{'UID'}.".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI); $Dummy = shift(@Data1); # kommentar entfernen

 my $ToolFlag = 0; # wenn > 1 kann abgeschaltet werden
 for (@Data1) { if (length($_) > 5) {$ToolFlag++;} }

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[259]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 if ($ToolFlag > 1)
 {
  # Form nur, wenn Tool abgeschaltet werden kann
  print "<form id='form2' action='nwp_main.pl' method='post'>\n";
  print "<input type='hidden' name='S' value='126'>\n";
  print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
  print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
  print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";
 }

 print "<p>\n";

 if ($ToolFlag <= 1)
 {
  print "$SPR[262]\n"; # kein abschalten möglich
 }
 else
 {
  # Tool freischalten
  print "$SPR[261]<br><br>\n";
  print "<select class='select' name='ATL' size='1'>\n";
  $i = 0;
  for (@Data1)
  {
   if (length($_) > 3)
   {
    @ET1 = split("\t", $_);
    $Dummy = ""; if (! $i) {$Dummy = "selected";} $i++;
    $j = (split("~", $ET1[14]))[1];
    print "<option value='$ET1[10]' $Dummy>$j</option>\n";
   }
  }
  print "</select>\n\n";

  print "<br><br><input type='submit' class='input-form-senden' value='$SPR[263]'>\n";
  print "</form>\n\n";

 } # Tool abschalten

 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Tools_Less_1


# weitere Tools freischalten - step 2
sub Tools_More_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # Prefabs einlesen
 $DM = "../_prefab/_available_tools_613.pl";
 open (DATEI,"<$DM"); @Prefab = <DATEI>; close(DATEI); $Dummy = shift(@Prefab); # kommentar entfernen

 # ... gewähltes Tool suchen
 $DM = ""; # als Flag
 for (@Prefab) { if (length($_) > 5) { @ET1 = split("\t", $_); if ($ET1[10] eq $Aufruf{'ATL'}) {$DM = $_; last;} } }
 if ($DM eq "") {&Start; exit(0);} # kurzschluss

 # etwas ummodeln ....
 @ET1 = split("\t", $DM);
 $ET1[7] = "K"; # als "gekauft" markieren - siehe readme
 $Dummy = ""; for ($i = 2; $i < 10; $i++) { $Dummy .= "$ET1[$i]\t"; }
 $Dummy .= "X\tX\t$ET1[10]\tX\t$ET1[12]\t$ET1[13]\t";
 # jetzt noch die verschiedenen Sprachen bzw. Namen der Tools beginnend ab [14] anhängen
 $DM = @ET1; for ($i = 14; $i < $DM; $i++) { if (length($ET1[$i]) > 2) {$Dummy .= "$ET1[$i]\t"; } }
 $Dummy .= "\t\t\n";


 # ... und an Tool DB des Accounts anhängen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-".$Aufruf{'UID'}.".pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close (DATEI);

 # loggen (normal)
 my $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]: zusaetzliches Tool $Aufruf{'ATL'}\t$ET3[4]\t$TM\t\n";

 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[248]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 print "<p>\n";
 print "$SPR[254]\n"; # bestätigen
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Tools_More_2



# weitere Tools freischalten - step 1
sub Tools_More_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss


 # Prefabs einlesen
 $DM = "../_prefab/_available_tools_613.pl";
 open (DATEI,"<$DM"); @Prefab = <DATEI>; close(DATEI); $Dummy = shift(@Prefab); # kommentar entfernen

 # ... Tool DB des Accounts einlesen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-".$Aufruf{'UID'}.".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI); $Dummy = shift(@Data1); # kommentar entfernen

 # vergleichen
 @Temp1 = (); my $ToolFlag = 0; # wenn "1" gibt es noch tools
 for (@Prefab)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   $i = 1; # als Flag
   foreach $j (@Data1) { $Dummy = (split("\t", $j))[10];  if ($Dummy eq $ET1[10]) {$i = 0; last;} }
   if ($i) {push(@Temp1, $_); $ToolFlag = 1;}
  }
 }


 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Edit Account"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[248]\n"; # Schul-Account: Tools
 print "</h1>\n\n";

 if ($ToolFlag)
 {
  # Form nur, wenn Tool geschaltet werden kann
  print "<form id='form2' action='nwp_main.pl' method='post'>\n";
  print "<input type='hidden' name='S' value='121'>\n";
  print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
  print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
  print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";
 }

 print "<p>\n";

 if (! $ToolFlag)
 {
  print "$SPR[251]\n"; # kein Tool mehr vorhanden
 }
 else
 {
  # Tool freischalten
  print "$SPR[250]<br><br>\n";
  print "<select class='select' name='ATL' size='1'>\n";
  $i = 0;
  for (@Temp1)
  {
   if (length($_) > 3)
   {
    @ET1 = split("\t", $_);
    $Dummy = ""; if (! $i) {$Dummy = "selected";} $i++;
    $j = (split("~", $ET1[14]))[1];
    print "<option value='$ET1[10]' $Dummy>$j</option>\n";
   }
  }
  print "</select>\n\n";

  print "<br><br><input type='submit' class='input-form-senden' value='$SPR[252]'>\n";
  print "</form>\n\n";

 } # Tool freischalten

 print "</p>\n\n";



 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Tools_More_1


# Fehlerseite (Login-Check) in den Modulen anstatt Security Check
sub Error_And_Out
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();
 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my $LoginString = "";

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # Administration
 print "</h1>\n\n";

 # Hauptfunktionen
 print "<ul id='navi-charts'>\n";
 print "&nbsp;\n"; # hier leer
 print "</ul>\n\n";

 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 # print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[63]</a></li></ul>\n\n";
 print "&nbsp;\n"; # hier leer

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[1]\n"; # Administration
 print "</h1>\n\n";

 print "<p>\n";
  print "<b>$SPR[28]</b><br>$SPR[29]<br><br>\n";
  print "<b>$SPR[30]</b><br>$SPR[31]<br><br>\n";
  print "<b>$SPR[32]</b><br>$SPR[33]<br><br><br>\n";
 print "</p>\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Error_And_Out



# Dialog-Account öffnen - HIER NUR "FREIGESCHALTETE" OHNE IFAS DUMMY CHECK!
sub DA_Open_ACTIVATED
{
 my $Dummy = 0; my $DM = 0; my $DM2 = 0; my $i = 0; my $res = 0;  my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 # CID einlesen
 $DM = "../dt/".$Aufruf{'UID'}."/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&ErrorPage; exit(0);} # kurzschluss

 # hier jetzt die Logindatei, temp. VK etc anlegen
 my $LogKomp = "$Aufruf{'UID'}\t \t";
 for (@CID) {$LogKomp .= "$_\t";} $LogKomp .= "\n";

 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";
 my $VK = "p".$TM."_";
 for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); }
 $VK = lc($VK);

 $DM = "../_tmp/$VK".".pl";
 open (DATEI,">$DM"); print DATEI $LogKomp; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "LOGIN"
 print "</h1>\n\n";

 # Links (hier nur "fenster schließen")
 print "<ul id='navi-charts'>\n";
  print "<li><a href='#' onclick=\"self.close()\;\" class='links-a-active'>$SPR[311]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";
  print "&nbsp;\n";
 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[312]\n"; # Dialog-Account: Login
 print "</h1>\n\n";

 print "<p>\n";
 print "$SPR[522]<br><br>\n"; # bestätigt $Dummy = "dt/_acs_main.pl?VK=$VK";
 # link zum Account
 $DM = "../dt/ac_main.pl?VK=$VK";
 print "<a href='$DM' class='rechts-weiterbutton-breit-a'>$SPR[523]</a>\n";
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # DA_Open_ACTIVATED


# Schulaccount öffnen - HIER NUR "FREIGESCHALTETE" OHNE IFAS DUMMY CHECK!
sub SL_Open_ACTIVATED
{
 my $Dummy = 0; my $DM = 0; my $DM2 = 0; my $i = 0; my $res = 0;  my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 # CID einlesen
 $DM = "../dt/".$Aufruf{'UID'}."/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&ErrorPage; exit(0);} # kurzschluss

 # hier jetzt die Logindatei, temp. VK etc anlegen
 my $LogKomp = "$Aufruf{'UID'}\t \t";
 for (@CID) {$LogKomp .= "$_\t";} $LogKomp .= "\n";

 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";
 my $VK = "p".$TM."_";
 for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); }
 $VK = lc($VK);

 $DM = "../_tmp/$VK".".pl";
 open (DATEI,">$DM"); print DATEI $LogKomp; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "LOGIN"
 print "</h1>\n\n";

 # Links (hier nur "fenster schließen")
 print "<ul id='navi-charts'>\n";
  print "<li><a href='#' onclick=\"self.close()\;\" class='links-a-active'>$SPR[311]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";
  print "&nbsp;\n";
 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[312]\n"; # Schul-Account: Login
 print "</h1>\n\n";

 print "<p>\n";
 print "$SPR[319]<br><br>\n"; # bestätigt $Dummy = "dt/_acs_main.pl?VK=$VK";
 # link zum Account
 $DM = "../dt/_acs_main.pl?VK=$VK";
 print "<a href='$DM' class='rechts-weiterbutton-breit-a'>$SPR[321]</a>\n";
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # SL_Open_ACTIVATED


# freigeschaltete Accounts öffnen: 2
# gilt nur für von NWP's freigeschaltete Accounts!
sub OpenActivated_2
{
 my @Data1 = (); my @ET1 = (); my $i = 0; my $k = 0; my $DM = 0; my $Dummy = ""; my $Test = 0;
 my $KK = 0; my $DC_EM = ""; my $EM_Keep = "";  my @CID = (); my @Temp1 = (); my @User2 = ();
 my @ET2 = (); my $TM = time();

 my $KeepProjektFolder = "innovation";
 $Aufruf{'EML'} = lc($Aufruf{'EML'});

 my @Aktivierte = (); # in dieser Funktion werden nur vom NWP aktivierte Accounts geöffnet
 $DM = "_count_aktiviert_".$User[1].".pl"; # Anwenderspezifische DB gemäß ID1
 open (DATEI,"<$DM"); @Aktivierte = <DATEI>; close (DATEI);

 $k = 0; # hier als Flag
 for (@Aktivierte)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_); if ($ET1[4] eq $Aufruf{'EML'}) {$k = $_; last;}
  }
 }

 if (! $k) {$Fehler = $SPR[348]; return;}

 @ET1 = split("\t", $k);
 $KeepProjektFolder = (split("\t", $k))[-2]; # hier steht das Verzeichnis, in dem der Account angelegt wurde

 # Login DB des Projektordners einlesen ....
 $DM = "../../../".$KeepProjektFolder."/cgi-bin/_system/_dt_acount_login_tp504_.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

 # ... und ID 1 suchen ... (auf [2] in @ET1 + @ET2)
 $k = 0; # als Flag
 for (@Data1) { if (length($_) > 5) { @ET2 = split("\t", $_); if ($ET1[2] eq $ET2[2]) {$k = $_; last;} } }

 if (! $k) {$Fehler = $SPR[349]; return;}

 # bis hier OK, in "$k" ist aktuell der Login String
 @ET1 = split("\t", $k);
 my $LogKomp = "$ET1[2]\tET1[3]\t"; # ID1 und ID2

 # jetzt die CID einlesen
 $DM = "../../../".$KeepProjektFolder."/cgi-bin/dt/$ET1[2]/cid-$ET1[2].pl";
 if (! -e $DM) { $Fehler = $SPR[349]; return; } # Kurzschluss
 open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close (DATEI); # Angaben CID in 2. Zeile

 $DM = $Dummy;
 $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
 $DM = &Hex_2_Ascii($DM); chomp $DM;
 my @MBR = split("#", $DM);
 for (@MBR) {$LogKomp .= "$_\t";} $LogKomp .= "\n"; # CID an login anhängen

 # VK
 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";
 # login für PC, hier also VK mit "p" beginnen

 # NEU 27.08.2012: das Login für PC und Handy ist identisch. Keine Unterscheidung mehr nötig!
 # "p" aber ruhig weiter benutzen ....
 my $VK = "p".$TM."_";
 for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); }
 $VK = lc($VK);

 # Datei mit VK anlegen
 $DM = "../../../".$KeepProjektFolder."/cgi-bin/_tmp/$VK".".pl";
 open (DATEI,">$DM"); print DATEI $LogKomp; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n";
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  print "<li><a class='links-a-active' id='online-a'>$SPR[44]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='adm_main_337.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[351] <span class='client'>$MBR[29]</span>\n"; # Account: Name
 print "</h1>\n\n";

 # Angaben zur Person
 # ... Admin
 print "<p class='header-p'>\n$SPR[352]\n</p>\n";
 print "<h2 class='subhead-h2'>\n$MBR[1] $MBR[2]\n</h2>\n\n";
 # ... Email
 print "<p class='header-p'>\n$SPR[353]\n</p>\n";
 print "<h2 class='subhead-h2'>\n$MBR[3]\n</h2>\n\n";
 # ... Kundennummer
# print "<p class='header-p'>\n$SPR[354]\n</p>\n";
# print "<h2 class='subhead-h2'>\n$CID[31]\n</h2>\n\n";

 print "<br><br>\n";

 print "<br>\n<p>\n";
 # Login zum Schul-Account
 $DM = "../../../".$KeepProjektFolder."/cgi-bin/dt/_acs_main.pl?VK=$VK";
 print "<a class='rechts-weiterbutton-breit-a' href='$DM'  target='_blank'><b>$SPR[167]</b> $SPR[168]</a>\n";
 print "</p>\n\n";



 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";



} # OpenActivated_2


# freigeschaltete Accounts öffnen: 1
# gilt nur für von NWP's freigeschaltete Accounts!
sub OpenActivated_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Konsole"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  print "<li><a class='links-a-active' id='online-a'>$SPR[44]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[44]\n";
 print "</h1>\n\n";

 # aktivierte Accounts einlesen, um weiter unten Namen anzuzeigen
 my @Aktivierte = (); # in dieser Funktion werden nur vom NWP aktivierte Accounts geöffnet
 $DM = "_count_aktiviert_".$User[1].".pl"; # Anwenderspezifische DB gemäß ID1
 open (DATEI,"<$DM"); @Aktivierte = <DATEI>; close (DATEI);

 my $TheActivated = ""; # Strings
 for (@Aktivierte)
 {
  if (length($_) > 5) { @ET1 = split("\t", $_); $TheActivated .= "<b>$ET1[1]</b><br>\n"; }
 }


 if ($TheActivated ne "")
 {
  # nur, wenn accounts freigeschaltet wurden
  print "<form id='form2' action='nwp_main.pl' method='post'>\n";
  print "<input type='hidden' name='S' value='111'>\n";
  print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
  print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";
 }

 print "<p>\n";

 # Hier jetzt Info und Namen der aktivierten Accounts anzeigen
 print "$SPR[358]<br><br>\n";
 if ($TheActivated ne "") {print "$TheActivated<br><br>\n";}
 else {print "<b>$SPR[360]</b>\n";}



 if ($TheActivated ne "")
 {
   # hier nur weiter, wenn Accounts aktiviert wurden ....

   if ($Fehler ne "")
   {
    print "<p style='color:#cc0000;'>\n";
    print "<b>Hinweis:</b><br>$Fehler\n";
    print "</p><br>\n\n";
   }
   else { print "<b>$SPR[362]</b><br>\n$SPR[363]<br><br>\n"; } # Info

   print "<input type='text' name='EML'  class='input-text-breit' value='$Aufruf{'EML'}'>\n";

   print "<br><br>\n<input type='submit' class='input-form-senden' value=''>\n";
   print "</form>\n\n";
 }


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # OpenActivated_1


# Rechnungsadresse ändern Step 2
sub ChangeInv_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # zuerst den Parameter checken
 if (length($Aufruf{'NewInvoice'}) < 2) {$Fehler = $SPR[207]; return;}
 @Data1 = split("\n", $Aufruf{'NewInvoice'});
 $Dummy = @Data1; if ($Dummy < 3) {$Fehler = $SPR[207]; return;}

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # in CID einbauen: vorbereiten
 $Dummy = $Aufruf{'NewInvoice'}; $Dummy =~ s/\n/\|/g; $CID[30] = $Dummy;

 $Dummy = join("#", @CID);
 $Dummy = &Ascii_2_Hex($Dummy); $Dummy =~ tr/0123456789abcdefghijklmnopqrstuvwxyz/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/;
 $Dummy = "#\n".$Dummy; # Angaben der CID immer in der 2. Zeile !

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";
 open (DATEI,">$DM"); print DATEI $Dummy; close(DATEI);

 # loggen (normal)
 my $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]: Rechnungsanschrift geandert\t$ET3[4]\t$TM\t\n";

 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);


 # direkt wieder zur "Freischaltung"
 &Freischalten_1;

} # ChangeInv_2


# Rechnungsadresse ändern Step 1
sub ChangeInv_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Freischalten"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[180]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Rechnungsnaschrift ändern
  print "<li><a href='nwp_main.pl?S=90&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[182]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[182]\n"; # Schul-Account: Anschrift ändern
 print "</h1>\n\n";

 print "<form id='form2' action='nwp_main.pl' method='post'>\n";
 print "<input type='hidden' name='S' value='91'>\n";
 print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
 print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
 print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";


 print "<p>\n";


 if ($Fehler ne "")
 {
  print "<p style='color:#cc0000;'>\n";
  print "<b>Hinweis:</b><br>$Fehler\n";
  print "</p><br>\n\n";
 }
 else { print "$SPR[203]\n<br><br>\n"; } # Info

 if ($Fehler eq "") { $Dummy = $CID[30]; $Dummy =~ s/\|/\n/g; }
 else {$Dummy = $Aufruf{'NewInvoice'};}

 print "<textarea name='NewInvoice' class='scl-content-textarea'>$Dummy</textarea>\n";

 print "<br><br>\n<input type='submit' class='input-form-senden' value='$SPR[205]'>\n";
 print "</form>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";



} # ChangeInv_1


# Account "freischalten": Schritt 2 (der Account erhält dann Rechnungen)
sub Freischalten_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my @Prefab = (); my $res = ""; my $feq = ""; my $ID2 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$ID2 = (split("\t", $_))[3]; $i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";
 my $System_Verzeichnis = $ET3[4]; # für unten merken

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # Zeit für RechnungscronJob setzen
 my ($x, $x, $x, $Monatstag, $Monat, $Jahr, $x, $x, $x) = localtime($TM);
 my $CJ_time = timelocal(0, 45, 0, $Monatstag, $Monat, $Jahr); # auf 00:45:00 Uhr setzen


 # pro forma einlesen: Toolgebühren für Folgetools:
 my @Fee_All = (); # Tools für alle (DA + SL)
 $DM = "../dt/_lang/_sm_groesse_d.pl"; open (DATEI,"<$DM"); @Fee_All = <DATEI>; close(DATEI); $Dummy = shift(@Fee_All);
 my @Fee_SL = (); # Tools nur für SL
 $DM = "../dt/_lang/_sm_groesse_d.pl"; open (DATEI,"<$DM"); @Fee_SL = <DATEI>; close(DATEI); $Dummy = shift(@Fee_SL);


 # FOLGERECHNUNGEN .................................................
 my $NE_CJ = ""; # String für den CronJob "Folgerechnung"
 my $Sneak_Log_String = "$TM\t$CID[29]\t$Aufruf{'UID'}\t$ID2\t$CID[3]\t"; # Überwachung und loggen ...

 # wenn vorhanden: weitere Rechnungen
 my $JesterFlag = 0; # Narrenflag: wenn es mehr als ein Tool gibt, dürfen nicht alle markiert sein ...
 if ($Aufruf{'ANZ'} > 0)
 {
  $Sneak_Log_String .= "$Aufruf{'ANZ'} FOLGETOOLS\t";

  # 1. Tool prefab einlesen
  $DM = "../_prefab/_available_tools_613.pl";
  open (DATEI,"<$DM"); @Prefab = <DATEI>; close(DATEI); $Dummy = shift(@Prefab); # kommentar entfernen

  for ($i = 0; $i < $Aufruf{'ANZ'}; $i++)
  {
   $DM = "CB".$i;
   if ($Aufruf{$DM} eq "OK")
   {
    $DM = "CBMOD".$i; $Dummy = $Aufruf{$DM}; # in $Dummy ist jetzt die Tool ID des Tools, das in Rechnung gestellt werden soll
    $Sneak_Log_String .= "$Dummy\t";

    $DM = 0; # hier als Flag
    foreach $res (@Prefab)
    {
     if (length($res) > 5) { @ET1 = split("\t", $res); if ($ET1[10] eq $Dummy) {$DM = 1; last;} } # Tool ID in @Prefab suchen
    }

    if ($DM)
    {
     # Tool ID in Prefab gefunden - in @ET1 ist jetzt das Tool
     # aus @Fee_All die Kosten für Tools ermitteln (7 - 10)

     $feq = ""; # hier als Flag
     foreach $res(@Fee_All) { @ET2 = split("~", $res); if ($ET2[0] eq $CID[11]) {$feq = $res; last;} }
     if ($feq ne "")
     {
      # Gebühreneintrag gefunden: jetzt kann der Eintrag für den CronJob gebildet werden
      @ET2 = split("~", $feq); $NE_CJ .= "$CJ_time\tINVC\t$CID[29]\t$CID[10]\t$ET2[7]\t$ET2[8]\t$ET2[9]\t$ET2[10]\t$Aufruf{'UID'}\t$ET3[4]\t1\t\n";
      $JesterFlag++;
     } # Gebühreneintrag gefunden
    } # Tool ID in Prefab gefunden

   } # Aufruf "OK"
   else {$Sneak_Log_String .= "NO INV\t";} # wenn folgetool keine Rechnung erhalten soll
  } # for $i

  # hier jetzt noch für Blödies prüfen, ob alle Tools (wenn vorhanden) markiert wurden ...
  if ($JesterFlag >= $Aufruf{'ANZ'}) {&Freischalten_1; exit(0);}

  # ... nur weiter, wenn etwas geschrieben werden soll
  if ($NE_CJ ne "")
  {
   $DM = "../../../cgi-bin/job/misc_events.pl";
   open (DATEI,">>$DM"); print DATEI $NE_CJ; close(DATEI);
  }
 } # weitere Tools vom Account freigeschaltet

 # LizenzRechnung in CronJob, Aufbau siehe CronJob
 $Dummy = "$CJ_time\t$ET3[4]\t$Aufruf{'UID'}\t1\t$ID2\t\n";
 $DM = "../../../cgi-bin/job/invoice-events.pl";
 open (DATEI,">>$DM"); print DATEI $Dummy; close(DATEI);

 # aus dem CronJob "Ifas Reminder" entfernen
 $DM = "../../../cgi-bin/job/misc_events.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 @Temp1 = (); $i = 0;
 for (@Data1)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   if ($ET1[1] eq "IFSRMND" && $ET1[3] eq $Aufruf{'UID'}) {$i++;}
   else {push(@Temp1, $_);}
  }
 }
 open (DATEI,">$DM"); print DATEI @Temp1; close(DATEI);



 # CID für weitere Tool-Rechnungen löschen und neu anlegen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/invoice-db-chg-$Aufruf{'UID'}".".pl"; $Dummy = unlink($DM);
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/invoice-db-$Aufruf{'UID'}".".pl";
 open (DATEI,">$DM"); print DATEI "# Rechnungssteuerung, siehe dt_login.pl bzw. das Modul zur bestätigung einer Schulaccount Anmeldung\n1\n"; close (DATEI);

 # CID "Testaccount" entfernen
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-ist-testaccount-$Aufruf{'UID'}".".pl"; $Dummy = unlink($DM);

 # hier leider noch ein switch nötig: Anzahl der möglichen Executive Accounts gemäß Größe des Untenehmens ....
 $feq = 50; # als Vorgabe, falls nichts gefunden wird, ansonsten enthält feq gleich die Anzahl an Accounts
 for (@Fee_All)  {  @ET1 = split("~", $res); if ($ET1[0] eq $CID[11]) {$feq = $ET1[6]; last;} }
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-max-dac-$Aufruf{'UID'}".".pl";
 open (DATEI,">$DM"); print DATEI $feq; close (DATEI);


 # aus small-db entfernen
 $DM = "_smalldb_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI); @Temp1 = ();
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy ne $Aufruf{'UID'}) {push(@Temp1, $_);} }
 open (DATEI,">$DM"); print DATEI @Temp1; close(DATEI);

 # loggen (normal)
 my $NE = "$TM\t$User[2]\t$User[3]\tCompany Account freigeschaltet ( $CID[29] )\t$ET3[4]\t$TM\t\n";
 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);


 # DB mit aktivierten Schul-Accounts anlegen -> $Sneak_Log_String
 $Sneak_Log_String .= "$System_Verzeichnis\t\n";
 $DM = "_count_aktiviert_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open (DATEI,">>$DM"); print DATEI $Sneak_Log_String; close(DATEI);


 # Mail an WTG
 open(MAIL,"|$MailProg -t -f$SPR[282]");
 print MAIL "To: $SPR[286]\n"; # WTG
 # print MAIL "To: webmaster\@standort-dortmund.de\n";

 print MAIL "From: $SPR[282]\n"; # Immer Absender der Systemnachrichten
 print MAIL "Subject: $SPR[292]\n";
 print MAIL "Content-Type: text/plain; charset=utf-8\n\n";

 print MAIL "$SPR[296]\n\n"; # Info

 print MAIL "$CID[29]\n"; # Name des Unternehmens
 print MAIL "$CID[1] $CID[2]\n"; # Name des Company Accounts
 print MAIL "ID 2: $ID2\n\n";

 print MAIL "NWP:\n";
 print MAIL "$User[3]\n$User[4]\n$User[5])\n($User[1] / $User[2])\n\n";

 close (MAIL);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Freischalten"
 print "</h1>\n\n";

 # Links - hier keine
 print "<ul id='navi-charts'>\n";

 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[195]\n"; # Schul-Account: "freigeschaltet!"
 print "</h1>\n\n";

 # Info
 print "<p>\n";
 $Dummy = $SPR[196]; $Dummy =~ s/XXP1/$CID[29]/g;
 print "$Dummy\n";
 print "</p>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Freischalten_2


# Account "freischalten": Schritt 1 (der Account erhält dann Rechnungen)
sub Freischalten_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $j = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @CID = (); my @Temp1 = ();


 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # neu ab Januar 2016: Rechnungsdaten einlesen (zur Ausgabe): cid-inv-???.pl
 my $RechnungsInfo = 0;
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-inv-".$Aufruf{'UID'}.".pl";
 if (-e $DM)
 {
  open (DATEI,"<$DM"); $RechnungsInfo = <DATEI>; close(DATEI);
 }
 else {&Start; exit(0);} # kurzschluss


 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Freischalten"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[180]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Rechnungsanschrift ändern
  print "<li><a href='nwp_main.pl?S=90&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[182]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[180]\n"; # Schul-Account: "freischalten"
 print "</h1>\n\n";

 print "<form id='form2' action='nwp_main.pl' method='post'>\n";
 print "<input type='hidden' name='S' value='81'>\n";
 print "<input type='hidden' name='UID' value='$Aufruf{'UID'}'>\n";
 print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n";
 print "<input type='hidden' name='VK' value='$Aufruf{'VK'}'>\n\n";


 print "<p>\n";
 print "$SPR[184]\n<br><br>\n"; # Info
 print "<b>$SPR[186]</b><br>\n"; # aktuelle Rechnungsanschrift
 $Dummy = $CID[30]; $Dummy =~ s/\|/<br>/g; print "$Dummy<br><br>\n\n";

 # ab Januar 2016: hier noch Rechnungssummen und Info
 print "<b>$SPR[420]</b><br>\n"; # Bereitstellungsgebühr pro Jahr:
 @ET1 = split("\t", $RechnungsInfo);
 print "$SPR[421] $ET1[0] $SPR[424]<br>\n"; # Umsatzsteuerbasis X Euro
 $Dummy = $SPR[422]; $DM = "$ET1[3]%"; $Dummy =~ s/XXP1/$DM/;
 print "$Dummy $ET1[1] $SPR[424]<br>\n"; # Umsatzsteuer XXP1 X Euro: (XXP1 = 19%)
 print "$SPR[423] $ET1[2] $SPR[424]<br><br>\n"; # Rechnungsbetrag X Euro

 # ab Januar 2016: hier Toolgebühren
 print "<b>$SPR[188]</b><br>\n";
 print "$SPR[421] $ET1[4] $SPR[424]<br>\n"; # Umsatzsteuerbasis X Euro
 $Dummy = $SPR[422]; $DM = "$ET1[3]%"; $Dummy =~ s/XXP1/$DM/;
 print "$Dummy $ET1[5] $SPR[424]<br>\n"; # Umsatzsteuer XXP1 X Euro: (XXP1 = 19%)
 print "$SPR[423] $ET1[6] $SPR[424]\n"; # Rechnungsbetrag X Euro


 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-tool-db-$Aufruf{'UID'}".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI); $Dummy = shift(@Data1); # kommentar entfernen

 $i = 0; # als Zähler
 for (@Data1)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   if ($ET1[5] eq "K")
   {
    $Dummy = (split("~", $ET1[14]))[1]; # Name
    $DM = "$Dummy\t$ET1[10]\t\n"; push(@Temp1, $DM); $i++;
   }
  }
 }

 if ($i < 2) {$i = 0;} # wenn nur ein einziges Tool, kann nichts markiert werden

 if ($i)
 {
  print "<br><br>\n$SPR[189]<br><br>\n"; # Toolarten
  print "\n<input type='hidden' name='ANZ' value='$i'>\n\n";

  $j = 0;
  for (@Temp1)
  {
   @ET1 = split("\t", $_);
   $DM = "CB".$j;
   print "<input type='checkbox' name='$DM' value='OK'>&nbsp;$ET1[0]<br>\n"; # markierer
   $DM = "CBMOD".$j;
   print "<input type='hidden' name='$DM' value='$ET1[1]'>\n\n"; # Art des Tools
   $j++;
  }

 }

 # Info zum Ändern der Beträge oben
 print "<br><br>\n$SPR[425]<br><a href='mailto:$SPR[426]'>$SPR[426]</a><br><br>\n"; # bei Fragen ... Mailadresse

 print "<input type='submit' class='input-form-senden' value='$SPR[192]'>\n";
 print "</form>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Freischalten_1


# Dialog-Account öffnen
sub DA_Open
{
 my $Dummy = 0; my $DM = 0; my $DM2 = 0; my $i = 0; my $res = 0;  my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 # Dumbo Check: wenn Haupt Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 # WICHTIG: die UID des Company Accounts kommt hier als "UIDMN"!
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UIDMN'}) {$i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID des Executives einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&ErrorPage; exit(0);} # kurzschluss

 # hier jetzt die Logindatei, temp. VK etc anlegen
 my $LogKomp = "$Aufruf{'UID'}\t \t";
 for (@CID) {$LogKomp .= "$_\t";} $LogKomp .= "\n";

 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";
 my $VK = "p".$TM."_";
 for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); }
 $VK = lc($VK);

 $DM = "../../../".$ET3[4]."/cgi-bin/_tmp/$VK".".pl";
 open (DATEI,">$DM"); print DATEI $LogKomp; close (DATEI);

 # HTML Header aufbauen - neuer Header ab August, wegen gewünschter, anderer BrowserCaption .....
 # &Build_ADM_HTML;
 &Build_ADM_HTML2NWP($SPR[368]); # Hier jetzt "Executive Account (Testversion)"

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[2]\n"; # "LOGIN"
 print "</h1>\n\n";

 # Links - hier keine
 print "<ul id='navi-charts'>\n";
  # print "<li><a href='#' onclick=\"self.close()\;\" class='links-a-active'>$SPR[230]</a></li>\n";
  print "&nbsp;\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";
  print "&nbsp;\n";

 # "Logout" - hier als self.close ....
 print "<ul class='header-logout-ul'><li><a href='#' onclick=\"self.close()\;\">$SPR[140]</a></li></ul>\n\n";


 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[368]\n"; # Dialog-Account: Login
 print "</h1>\n\n";

 print "<p>\n";
 # print "$SPR[242]<br><br>\n"; # bestätigt $Dummy = "dt/_acs_main.pl?VK=$VK";
 print "<br><br><br><br>\n";
 # link zum Account
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/ac_main.pl?VK=$VK";
 print "<a href='$DM' class='rechts-weiterbutton-breit-a'>$SPR[243]</a>\n";
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # DA_Open


# Schulaccount öffnen
sub SL_Open
{
 my $Dummy = 0; my $DM = 0; my $DM2 = 0; my $i = 0; my $res = 0;  my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&ErrorPage; exit(0);} # kurzschluss

 # hier jetzt die Logindatei, temp. VK etc anlegen
 my $LogKomp = "$Aufruf{'UID'}\t \t";
 for (@CID) {$LogKomp .= "$_\t";} $LogKomp .= "\n";

 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";
 my $VK = "p".$TM."_";
 for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); }
 $VK = lc($VK);

 $DM = "../../../".$ET3[4]."/cgi-bin/_tmp/$VK".".pl";
 open (DATEI,">$DM"); print DATEI $LogKomp; close (DATEI);

 # HTML Header aufbauen - neuer Header ab August, wegen gewünschter, anderer BrowserCaption .....
 # &Build_ADM_HTML;
 &Build_ADM_HTML2NWP($SPR[367]); # Hier jetzt "Company Account (Testversion)"

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[2]\n"; # "LOGIN"
 print "</h1>\n\n";

 # Links - hier keine
 print "<ul id='navi-charts'>\n";
  # print "<li><a href='#' onclick=\"self.close()\;\" class='links-a-active'>$SPR[230]</a></li>\n";
  print "&nbsp;\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";
  print "&nbsp;\n";


 # "Logout" - hier als self.close ....
 print "<ul class='header-logout-ul'><li><a href='#' onclick=\"self.close()\;\">$SPR[140]</a></li></ul>\n\n";


 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[367]\n"; # Schul-Account: Login
 print "</h1>\n\n";

 print "<p>\n";
 # print "$SPR[238]<br><br>\n"; # bestätigt $Dummy = "dt/_acs_main.pl?VK=$VK";
 print "<br><br><br><br>\n";
 # link zum Account
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/_acs_main.pl?VK=$VK";
 print "<a href='$DM' class='rechts-weiterbutton-breit-a'>$SPR[240]</a>\n";
 print "</p>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # SL_Open



# Account Löschen: Durchführen
sub DeleteAccount_2
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $res = 0;  my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @ET2 = (); my @CID = (); my @Temp1 = ();

 my $TheID_1 = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # Sonder Log Löschaktionen. Aufbau:
 # Time, Schulname, Schul-Leitung, ID1 des Schul-Accounts, Projektordner. Diese Einträge sind fix,
 # ab ofs [5] werden - wenn vorhanden - Dialog-Accounts angehängt. Aufbau dann: ID1~ID2~

 my $Log_ShutDown = "$TM\t$CID[29]\t$CID[1] $CID[2]\t$Aufruf{'UID'}\t$Aufruf{'PF'}\t";

 # da hauptsächlich die Login-Datenbank bearbeitet wird, hier zunächst einlesen
 my @LoginDB = ();

 $DM = "../../../".$ET3[4]."/cgi-bin/_system/_dt_acount_login_tp504_.pl";

 if (-e $DM) { open (DATEI,"<$DM"); @LoginDB = <DATEI>; close (DATEI); }
 else {&Start; exit(0);} # kurzschluss

 # ebenfalls direkt einlesen: CronJob Events
 my @CronJobEvents = (); $DM = "../../../cgi-bin/job/_events.pl";
 open (DATEI,"<$DM"); @CronJobEvents = <DATEI>; close (DATEI);

 # 1) zunächst alle ggf. vorhandenen Dialog-Accounts bearbeiten, dazu cid2- .... einlesen
 my @AllMyDialogAccounts = (); # Liste der untergeordneten Dialog-Accounts

 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid2-".$Aufruf{'UID'}.".pl";
 # WICHTIG: hier kann nicht geprüft werden, ob die Datei existiert, da diese Datei nur dann angelegt wird, wenn Dialog Accounts eingerichtet wurden!
 open (DATEI,"<$DM"); @AllMyDialogAccounts = <DATEI>; close(DATEI);
 my $IsAvailDAA = 0; $DM = @AllMyDialogAccounts; if ($DM > 0) {$IsAvailDAA = 1; } # $IsAvailDAA als Flag

 my $Cipher = Crypt::Twofish->new($TFK);
 my $DialogEmail = ""; my $DC_EM = ""; my $k = 0; my $j = 0; my $KK = "";

 my $NE = ""; # zum Anhängen an $Log_ShutDown
 # jetzt die Dialog-Accounts einzeln abklappern

 for (@AllMyDialogAccounts)
 {
  if (length($_) > 4)
  {
       $NE = "";
       @ET1 = split("\t", $_); # aufbau: time, ID1, ID2
       $TheID_1 = $ET1[1]; # für unten merken
       $NE = "$ET1[1]~$ET1[2]~"; # ID1 + ID2 merken
       # aus der Login DB können Dialog-Accounts direkt entfernt werden (s.o.)
       @Temp1 = ();
       foreach $res (@LoginDB)
       {
        if (length($res) > 5)
        {
         @ET2 = split("\t", $res);
         if ($ET2[2] eq $ET1[1])
         {
          $DialogEmail = $ET2[0]; # Email für unten merken, nicht mehr in geänderter Form eintragen!
         }
         else {push(@Temp1, $res);}
        }
       }
       @LoginDB = @Temp1; # Änderungen sichern


       # b) evt. vorhandene Reminder Events aus dem CronJob löschen
       @Temp1 = ();
       foreach $res (@CronJobEvents)
       {
        if (length($res) > 4)
        {
         @ET2 = split("\t", $res);
         if ($ET2[2] ne $ET1[1]) {push(@Temp1, $res);}
        }
       }
       @CronJobEvents = @Temp1;


       # c) falls Dialog-Account momentan eingeloggt: ausloggen durch Löschen der VK
       $DM = "../../../".$ET3[4]."/cgi-bin/_tmp/";
       $Dummy = opendir(VERZ, $DM); @Data1 = readdir(VERZ); closedir VERZ;
       foreach $res (@Data1)
       {
        if (length($res) > 4)
        {
         $i = $DM.$res;
         open (DATEI,"<$i"); $Dummy = <DATEI>; close(DATEI);
         $Dummy = (split("\t", $Dummy))[0]; # hier steht ID1
         if ($Dummy eq $ET1[1]) {$Dummy = unlink ($i);}
        }
       }

       # d) email global direkt löschen!
       $Dummy = &Hex_2_Ascii($DialogEmail); $DC_EM = "";
       for ($j = 0; $j < 16; $j++) { $k = substr($Dummy, $j * 16, 16); $DC_EM .= $Cipher->decrypt($k); }
       $DialogEmail = (split("#", $DC_EM))[0]; # ist jetzt email als klartext

       $i = substr($DialogEmail, 0, 1); # erstes Zeichen der Email als Teil des Dateinamens
       $DM = "../../../cgi-bin/login/$i"."_logdata_163_.pl";
       open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
       @Temp1 = ();
       foreach $res (@Data1)
       {
        if (length($res) > 3)
        {
         $Dummy = &Hex_2_Ascii ($res);
         $i = (split("#", $Dummy))[0];
         if ($i ne $DialogEmail) { push(@Temp1, $res); }
        }
       }
       open (DATEI,">$DM"); print DATEI @Temp1; close (DATEI);

       $Log_ShutDown .= "$NE\t"; # Dialog-Daten an ShutDown Log anhängen



       # e) Dialog-Account Verzeichnis löschen
       $DM = "../../../".$ET3[4]."/cgi-bin/dt/$TheID_1"; if (-d $DM) { $Dummy = rmtree($DM); }

  } # length
 } # for @AllMyDialogAccounts


 # Login DB und Events nur dann neu speichern, wenn sich auch etwas getan hat (also Dialog-Accounts bearbeitet wurden)
 # $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid2-".$Aufruf{'UID'}.".pl";
 if ($IsAvailDAA)
 {
  $DM = "../../../".$ET3[4]."/cgi-bin/_system/_dt_acount_login_tp504_.pl";
  open (DATEI,">$DM"); print DATEI @LoginDB; close (DATEI);

  $DM = "../../../cgi-bin/job/_events.pl";
  open (DATEI,">$DM"); print DATEI @CronJobEvents; close (DATEI);
 }

 # Bis hier wurden nur ggf. vorhandene Dialog-Accounts des Schul-Accounts bearbeitet.

 # 2) den Testaccount des Company Accounts löschen  -> $CID[26] = ID 1 des Testaccounts
 # der Test-account ist "pur" - also ohne einträge in Login/Mail etc ...
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$CID[26]"; if (-d $DM) { $Dummy = rmtree($DM); }

 # 3) jetzt den Schul-Account bearbeiten: Login DB, CronJob, Logout, globales Login
 $DM = "../../../".$ET3[4]."/cgi-bin/_system/_dt_acount_login_tp504_.pl";
 open (DATEI,"<$DM"); @LoginDB = <DATEI>; close (DATEI);

 # ... Login: bei IFAS immer löschen, also nicht weiter vorhalten!
 @Temp1 = ();
 for (@LoginDB)
 {
  if (length($_) > 5)
  {
   @ET2 = split("\t", $_);
   if ($ET2[2] eq $Aufruf{'UID'})
   {
    $DialogEmail = $ET2[0]; # Email für unten merken
   }
   else {push(@Temp1, $_);}
  }
 }
 @LoginDB = @Temp1;
 $DM = "../../../".$ET3[4]."/cgi-bin/_system/_dt_acount_login_tp504_.pl";
 open (DATEI,">$DM"); print DATEI @LoginDB; close (DATEI);

 # ... CronJob "Events" -> hier kann direkt gelöscht werden!
 @CronJobEvents = (); $DM = "../../../cgi-bin/job/_events.pl";
 open (DATEI,"<$DM"); @CronJobEvents = <DATEI>; close (DATEI);

 @Temp1 = ();
 foreach $res (@CronJobEvents)
 {
  if (length($res) > 4)
  {
   @ET2 = split("\t", $res);
   if ($ET2[2] ne $Aufruf{'UID'}) {push(@Temp1, $_);}
  }
 }
 @CronJobEvents = @Temp1;

 $DM = "../../../cgi-bin/job/_events.pl";
 open (DATEI,">$DM"); print DATEI @CronJobEvents; close (DATEI);


 # ... CronJob "Rechnungen" -> hier kann direkt gelöscht werden!
 @CronJobEvents = (); $DM = "../../../cgi-bin/job/invoice-events.pl";
 open (DATEI,"<$DM"); @CronJobEvents = <DATEI>; close (DATEI);

 @Temp1 = ();
 for (@CronJobEvents)
 {
  if (length($_) > 4)
  {
   @ET2 = split("\t", $_);
   if ($ET2[2] ne $Aufruf{'UID'}) {push(@Temp1, $_);}
  }
 }
 @CronJobEvents = @Temp1;

 $DM = "../../../cgi-bin/job/invoice-events.pl";
 open (DATEI,">$DM"); print DATEI @CronJobEvents; close (DATEI);

 # ... Logout
 $DM = "../../../".$ET3[4]."/cgi-bin/_tmp/";
 $Dummy = opendir(VERZ, $DM); @Data1 = readdir(VERZ); closedir VERZ;
 for (@Data1)
 {
  if (length($_) > 4)
  {
   $i = $DM.$_;
   open (DATEI,"<$i"); $Dummy = <DATEI>; close(DATEI);
   $Dummy = (split("\t", $Dummy))[0]; # hier steht ID1
   if ($Dummy eq $Aufruf{'UID'}) {$Dummy = unlink ($i);}
  }
 }


 # ... globales Login
 $Dummy = &Hex_2_Ascii($DialogEmail); $DC_EM = "";
 for ($j = 0; $j < 16; $j++) { $k = substr($Dummy, $j * 16, 16); $DC_EM .= $Cipher->decrypt($k); }
 $DialogEmail = (split("#", $DC_EM))[0]; # ist jetzt email als klartext

 $i = substr($DialogEmail, 0, 1); # erstes Zeichen der Email als Teil des Dateinamens
 $DM = "../../../cgi-bin/login/$i"."_logdata_163_.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 @Temp1 = ();
 foreach $res (@Data1)
 {
  if (length($res) > 3)
  {
   $Dummy = &Hex_2_Ascii ($res);
   $i = (split("#", $Dummy))[0];
   if ($i ne $DialogEmail) { push(@Temp1, $res); }
  }
 }
 open (DATEI,">$DM"); print DATEI @Temp1; close (DATEI);

 # nur bei IFAS: Schul-Account Verzeichnis komplett löschen, nicht mehr vorhalten!
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}"; if (-d $DM) { $Dummy = rmtree($DM); }

 # aus dem CronJob "Ifas Reminder" entfernen
 $DM = "../../../cgi-bin/job/misc_events.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 @Temp1 = (); $i = 0;
 for (@Data1)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   if ($ET1[1] eq "IFSRMND" && $ET1[3] eq $Aufruf{'UID'}) {$i++;}
   else {push(@Temp1, $_);}
  }
 }
 open (DATEI,">$DM"); print DATEI @Temp1; close(DATEI);

 # aus der small-db entfernen
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI); @Temp1 = ();
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy ne $Aufruf{'UID'}) {push(@Temp1, $_);} }
 open (DATEI,">$DM"); print DATEI @Temp1; close(DATEI);

 # Schul-Account ausgeschaltet!

 # normales Loggen: time - Name der Schule - Kundennummer - Was wurde getan - Projektordner - ID 1
 $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]\t$CID[31]\tCompany Account geloescht\t$ET3[4]\t$Aufruf{'UID'}\t\n";
 $DM = "_log_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open(DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 open(DATEI,">$DM"); print DATEI $NE; print DATEI @Data1; close (DATEI);

 # zusätzliches Loggen
 $NE = "$TM\t$User[2]\t$User[3]\t$CID[29]\t$CID[31]\tSchul-Account abgeschaltet\t$ET3[4]\t$Aufruf{'UID'}\t\n";
 $DM = "_count_abgeschaltet_".$User[1].".pl"; # Anwenderspezifisches Loggen gemäß ID1
 open (DATEI,">>$DM"); print DATEI $NE; close (DATEI);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Löschen"
 print "</h1>\n\n";

 # Links - hier keine ANZEIGEN!
 print "<ul id='navi-charts'>\n";
  print "&nbsp;\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[220]\n"; # Schul-Account: abgeschaltet
 print "</h1>\n\n";

 print "<p>\n";
 $DM = $SPR[222]; $DM =~ s/XXP1/$CID[29]/;
 print "$DM\n";
 print "<p>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # DeleteAccount_2


# Account Löschen: Sicherheitsabfrage
sub DeleteAccount_1
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @CID = ();

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $i = ""; # als Flag
 for (@Data1) { $Dummy = (split("\t", $_))[2]; if ($Dummy eq $Aufruf{'UID'}) {$i = $_; last;} }
 if ($i eq "") {&Start; exit(0);} # kurzschluss

 my @ET3 = split("\t", $i); # in @ET3 sind jetzt ID, der Systemordner [4] etc.

 # CID einlesen, je nach Projektordner ($ET3[4])
 $DM = "../../../".$ET3[4]."/cgi-bin/dt/$Aufruf{'UID'}/cid-".$Aufruf{'UID'}.".pl";

 if (-e $DM)
 {
  open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile
  $DM = $Dummy;
  $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
  $DM = &Hex_2_Ascii($DM); chomp $DM;
  @CID = split("#", $DM);
 }
 else {&Start; exit(0);} # kurzschluss

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Löschen"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$Aufruf{'UID'}' class='links-a-active' id='online-a'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "<span class='client'>$CID[29]:</span> $SPR[214]\n"; # Schul-Account: löschen
 print "</h1>\n\n";

 print "<p>\n";
 $DM = $SPR[216]; $DM =~ s/XXP1/$CID[29]/;
 print "$DM\n\n<br><br>\n\n";
 print "<p>\n\n";

 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=11&UID=$Aufruf{'UID'}&PF=$Aufruf{'PF'}' class='rechts-weiterbutton-breit-a'>$SPR[218]</a>\n\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # DeleteAccount_1



# Account direkt öffnen, ID2 wird als Param "EML" übertragen!
sub OpenAccount_2
{
 my @Data1 = (); my @ET1 = (); my $i = 0; my $k = 0; my $DM = 0; my $Dummy = ""; my $Test = 0;
 my $KK = 0; my $DC_EM = ""; my $EM_Keep = ""; my @User2 = (); my @CID = (); my @Temp1 = ();

 my $KeepProjektFolder = "";

 # Dumbo Check: wenn Account nicht in Small-DB dann Fehler (wg. "vor/zurück/neu laden" im Browser)
 $DM = "_smalldb_".$User[1].".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

 $i = 0; # als Flag. WICHTIG: hier auf ID2 [3] und $Aufruf{'EML'} testen!!!!!!!!!
 for (@Data1)
 {
  @ET1 = split("\t", $_);
  if ($ET1[3] eq $Aufruf{'EML'}) {$i = 1; $KeepProjektFolder = $ET1[4]; last;}
 }
 if (! $i) {&Start; exit(0);} # kurzschluss

 $Test = 0;
 $DM = "../../../$KeepProjektFolder/cgi-bin/_system/_dt_acount_login_tp504_.pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 for (@Data1) { $Dummy = (split("\t", $_))[3]; if ($Dummy eq $Aufruf{'EML'}) {@User2 = split("\t", $_); $Test = 1; last;} }
 if (! $Test) {&Start; exit(0);} # kurzschluss


 # CID einlesen
 $DM = "../../../$KeepProjektFolder/cgi-bin/dt/$User2[2]/cid-$User2[2].pl";
 open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI); # CID Daten in der 2. Zeile

 $DM = $Dummy;
 $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
 $DM = &Hex_2_Ascii($DM); chomp $DM;
 @CID = split("#", $DM);

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Admin"
 print "</h1>\n\n";

 # Links
 print "<ul id='navi-charts'>\n";
  # Tool freischalten
  print "<li><a href='nwp_main.pl?S=120&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$User2[2]&PF=$KeepProjektFolder' class='links-a-active'>$SPR[248]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Tool abschalten
  print "<li><a href='nwp_main.pl?S=125&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$User2[2]&PF=$KeepProjektFolder' class='links-a-active'>$SPR[259]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Executives
  print "<li><a href='nwp_main.pl?S=130&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$User2[2]&PF=$KeepProjektFolder' class='links-a-active'>$SPR[271]</a></li>\n";
  print "<li class='links-li-spacer-big'>&nbsp;</li>\n";# kleiner Spacer


  # "Freischalten"
  print "<li><a href='nwp_main.pl?S=80&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$User2[2]&PF=$KeepProjektFolder' class='links-a-active'>$SPR[154]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer
  # Löschen
  print "<li><a href='nwp_main.pl?S=10&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&UID=$User2[2]&PF=$KeepProjektFolder' class='links-a-active'>$SPR[155]</a></li>\n";
 print "</ul>\n\n";

 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[42]: <span class='client'>$CID[29]</span>\n"; # Schul-Account: Name
 print "</h1>\n\n";

 # Angaben zur Person
 # ... Schul-Leitung
 print "<p class='header-p'>\n$SPR[161]\n</p>\n";
 print "<h2 class='subhead-h2'>\n$CID[1] $CID[2]\n</h2>\n\n";
 # ... Email
 print "<p class='header-p'>\n$SPR[162]\n</p>\n";
 print "<h2 class='subhead-h2'>\n$CID[3]\n</h2>\n\n";
 # ... Kundennummer
 print "<p class='header-p'>\n$SPR[163]\n</p>\n";
 print "<h2 class='subhead-h2'>\n$CID[31]\n</h2>\n\n";


 print "<br>\n<p>\n";
 # Login zum Company Account
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=70&UID=$User2[2]&PF=$KeepProjektFolder'  target='_blank'><b>$SPR[375]</b></a> $SPR[374]\n";
 print "</p>\n\n";

  print "<br>\n<p>\n";
  print "<b>$SPR[376]</b><br>\n"; # zugehörige DA


 # Dialog-Accounts aufführen (wenn vorhanden) und Login anbieten
 $DM = "../../../$KeepProjektFolder/cgi-bin/dt/$User2[2]/cid2-$User2[2].pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close (DATEI);
 $Dummy = @Data1;
 if ($Dummy > 0)
 {
  for (@Data1)
  {
   if (length($_) > 5)
   {
    @ET1 = split("\t", $_);
    $DM = "../../../$KeepProjektFolder/cgi-bin/dt/$ET1[1]/cid-$ET1[1]".".pl";
    if (-e $DM)
    {
     open (DATEI,"<$DM"); $Dummy = <DATEI>; $Dummy = <DATEI>; close(DATEI);
     $DM = $Dummy;
     $DM =~ tr/b9ejt8zvd7gao6whq5ukn4cms3fpy2ir1lx0/0123456789abcdefghijklmnopqrstuvwxyz/;
     $DM = &Hex_2_Ascii($DM); chomp $DM;
     @Temp1 = split("#", $DM);
     print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=71&UID=$ET1[1]&PF=$KeepProjektFolder&UIDMN=$User2[2]'  target='_blank'><b>$Temp1[1] $Temp1[2]</b></a> $SPR[374]<br>\n";
    }
   }
  }
 }
 else {print "$SPR[377]\n";} # keine DA vorhanden

 print "</p>\n\n";

 # NEU ab Juli 2015: DialogAccount einrichten
 print "<br>\n<p>\n";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=30&UID=$User2[2]&PF=$KeepProjektFolder&EML=$Aufruf{'EML'}'><b>$SPR[378]</b></a>\n";
 print "</p>\n\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # OpenAccount_2

# Startseite
sub Start
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = ();

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # "Konsole"
 print "</h1>\n\n";

 # Hauptfunktionen
 print "<ul id='navi-charts'>\n";
  # Neu
  print "<li><a href='nwp_new.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' class='links-a-active'>$SPR[41]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer

  # Übersicht Testversionen
  print "<li><a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=1' class='links-a-active'>$SPR[42]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer

  # Übersicht (freigeschaltete Accounts)
  print "<li><a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=110' class='links-a-active'>$SPR[44]</a></li>\n";
  print "<li class='links-li-spacer-small'>&nbsp;</li>\n";# kleiner Spacer


  # Logbook
  print "<li><a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=60' class='links-a-active'>$SPR[43]</a></li>\n";
  # print "<li><a class='links-a-deact'>$SPR[8]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[25]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[413] $User[3]\n"; # "Company Accounts von $User"
 print "&nbsp;\n";
 print "</h1>\n\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Start

# Übersicht der angelegten "Test-Accounts"
sub Uebersicht
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time(); my $res = ""; my $NE = ""; my $kkk = 0;

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my @Temp1 = (); my @Data2 = (); my @Temp2 = (); my @ET2 = ();

 my $ActiveTools = 0; # zähler für aktive Tools des Schul- und Dialog-Accounts
 my $FinishedTools = 0; # zähler für beendete Tools des Schul- und Dialog-Accounts

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # Administration
 print "</h1>\n\n";

 # Hauptfunktionen
 print "<ul id='navi-charts'>\n";
 # print "<li><a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=110' class='links-a-active'>freigeschaltete Company Accounts</a></li>\n";
 print "<li><a class='links-a-active' id='online-a'>$SPR[42]</a></li>\n";
 print "&nbsp;\n"; # hier leer
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";


 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "Company Accounts (Testversion)\n";
 print "</h1>\n\n";

 # filter-Links
 print "Zeit: ";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=1'>auf</a>&nbsp;&nbsp;";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=2'>ab</a>&nbsp;&nbsp;&nbsp;";
 print "Unternehmen: ";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=3'>auf</a>&nbsp;&nbsp;";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=4'>ab</a>&nbsp;&nbsp;&nbsp;";
 print "Dialog Accounts: ";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=5'>auf</a>&nbsp;&nbsp;";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=6'>ab</a>&nbsp;&nbsp;&nbsp;";
 print "Dialog-Tools: ";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=7'>auf</a>&nbsp;&nbsp;";
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}&S=50&MOD=8'>ab</a><br><br>";

 print "<p>\n";

 # anwenderspezifische DB!
 $DM = "_smalldb_$User[1]".".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);

 # @Data um Accounts und Tools erweitern
 @Temp1 = ();
 for (@Data1)
 {
  if (length($_) > 5)
  {
   $ActiveTools = 0; $FinishedTools = 0;
   @ET1 = split("\t", $_);
   $NE = "$ET1[0]\t$ET1[1]\t$ET1[2]\t$ET1[3]\t$ET1[4]\t$ET1[5]\t$ET1[6]\t";

   # Accounts -------------------------------
   $Dummy = 0;
   $DM = "../../../$ET1[4]"."/cgi-bin/dt/".$ET1[2]."/cid2-".$ET1[2].".pl";
   if (-e $DM)
   {
    open (DATEI,"<$DM"); @Data2 = <DATEI>; close(DATEI);
    foreach $res (@Data2) {if (length($res) > 4) {$Dummy++;} }
   }
   $NE .= "$Dummy\t";


   # Tools ------------------------------------
   # zuerst Stack des Schulaccounts
   $DM = "../../../$ET1[4]"."/cgi-bin/dt/".$ET1[2]."/stack-".$ET1[2].".pl";
   if (-e $DM)
   {
    open (DATEI,"<$DM"); @Temp2 = <DATEI>; close(DATEI);
    foreach $res (@Temp2)
    {
     if (length($res) > 4)
     {
      $Dummy = (split("\t", $res))[0];
      if ($Dummy eq "A") {$ActiveTools++;}
      elsif ($Dummy eq "F") {$FinishedTools++;}
     }
    }
   }

   # jetzt Stacks der Dialog-Accounts
   foreach $res (@Data2)
   {
    if (length($res) > 4)
    {
     $Dummy = (split("\t", $res))[1]; # ID1 des Dialog-Accounts
     $DM = "../../../$ET1[4]"."/cgi-bin/dt/".$Dummy."/stack-".$Dummy.".pl";
     if (-e $DM)
     {
      open (DATEI,"<$DM"); @ET2 = <DATEI>; close(DATEI);

      foreach $i (@ET2)
      {
       if (length($i) > 5)
       {
        $Dummy = (split("\t", $i))[0];
        if ($Dummy eq "A") {$ActiveTools++;}
        elsif ($Dummy eq "F") {$FinishedTools++;}
       }
      }

     }
    }
   }

   # Tools addiert und einzeln
   $Dummy = $ActiveTools + $FinishedTools;
   $NE .= "$Dummy\t$ActiveTools\t$FinishedTools\t\n";
   push(@Temp1, $NE);

  } # length
 } # for data1

 # Jetzt sortieren gemäß Filter
 my @IDX = (); my $Item = "";

 if ($Aufruf{'MOD'} eq "1")
 {
  for (@Temp1) { $Item = (split("\t", $_))[0]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$a] <=> $IDX[$b]} 0 .. $#IDX];
 }
 elsif ($Aufruf{'MOD'} eq "2")
 {
  for (@Temp1) { $Item = (split("\t", $_))[0]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$b] <=> $IDX[$a]} 0 .. $#IDX];
 }

 elsif ($Aufruf{'MOD'} eq "3")
 {
  for (@Temp1) { $Item = (split("\t", $_))[1]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$a] cmp $IDX[$b]} 0 .. $#IDX];
 }
 elsif ($Aufruf{'MOD'} eq "4")
 {
  for (@Temp1) { $Item = (split("\t", $_))[1]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$b] cmp $IDX[$a]} 0 .. $#IDX];
 }

 elsif ($Aufruf{'MOD'} eq "5")
 {
  for (@Temp1) { $Item = (split("\t", $_))[7]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$a] <=> $IDX[$b]} 0 .. $#IDX];
 }
 elsif ($Aufruf{'MOD'} eq "6")
 {
  for (@Temp1) { $Item = (split("\t", $_))[7]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$b] <=> $IDX[$a]} 0 .. $#IDX];
 }

 elsif ($Aufruf{'MOD'} eq "7")
 {
  for (@Temp1) { $Item = (split("\t", $_))[8]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$a] <=> $IDX[$b]} 0 .. $#IDX];
 }
 elsif ($Aufruf{'MOD'} eq "8")
 {
  for (@Temp1) { $Item = (split("\t", $_))[8]; push (@IDX, lc($Item)); } @Data1 = @Temp1 [ sort {$IDX[$b] <=> $IDX[$a]} 0 .. $#IDX];
 }

 my $Export = "Datum\tName\tID 2\tAccounts\tTools\tAktiv\tBeendet\n"; # für den Export (s.u.)
 for (@Data1)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   $Dummy = &Date_MakeAct_Param($ET1[0]); $Export .= "$Dummy\t$ET1[1]\t$ET1[3]\t$ET1[5]\t$ET1[6]\t$ET1[7]\t$ET1[8]\t\n";
   print "<a href='nwp_main.pl?S=3&EML=$ET1[3]&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'><b>$ET1[1]</b></a>&nbsp;&nbsp;$Dummy<br>";
   print "Dialog Accounts: $ET1[7]&nbsp;&nbsp;Dialog-Tools (gesamt): $ET1[8]&nbsp;&nbsp;Aktiv: $ET1[9]&nbsp;&nbsp;Beendet: $ET1[10]<br><br>\n";

  } # length
 } # for data1

 print "</p>\n\n";

 # Exporter
# print "<p>\n";
# print "<b>Export</b><br>\n";
# print "<textarea cols='70' rows='4' wrap='off'>$Export</textarea>\n";
# print "</p>\n\n";



 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Uebersicht

sub Logbook
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my $NE = "";

 # hier ggf. etwas löschen, falls Param "TG" 1,2 oder 3
 if ($Aufruf{'TG'} eq "1") { $DM = "_log_823.pl"; $Dummy = unlink($DM); } # Hauptlog der Administration löschen
 if ($Aufruf{'TG'} eq "2") { $DM = "../../../cgi-bin/_log_of_changed_dialog_accounts.pl"; $Dummy = unlink($DM); } # Log: Schul-Accounts (editierte Dialog-Accounts) löschen
 if ($Aufruf{'TG'} eq "3") { $DM = "../../../cgi-bin/_log_of_deleted_dialog_accounts.pl"; $Dummy = unlink($DM); } # Log: Schul-Accounts (editierte Dialog-Accounts) löschen

 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # Konsole
 print "</h1>\n\n";

 # Hauptfunktionen - hier keine Funktionen
 print "<ul id='navi-charts'>\n";
  print "<li><a class='links-a-active' id='online-a'>$SPR[43]</a></li>\n";
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";
 # zurück zur Startseite
 print "<a href='nwp_main.pl?LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}' id='tools-a'></a>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 print "<ul class='header-logout-ul'><li><a href='nwp_main.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[146]\n"; # Logbook
 print "</h1>\n\n";

 # alle Logs als Textarea ausgeben

 print "<p>\n";

 # Log: Funktionen der globalen Administration
 $DM = "_log_".$User[1].".pl";
 open (DATEI,"<$DM"); @Data1 = <DATEI>; close(DATEI);
 $NE = "TIME\tNAME\tCUSTOMER\tINFO\tFOLDER\tUSER ID\t\n\n";
 for (@Data1)
 {
  if (length($_) > 4)
  {
   chomp $_;
   @ET1 = split("\t", $_);
   $Dummy = &Date_MakeAct_Param($ET1[0]);
   $NE .= "$Dummy\t$ET1[1]\t$ET1[2]\t$ET1[3]\t$ET1[4]\t$ET1[5]\t$ET1[6]\t\t\n";
  }
 }
 # print "<p><b>$SPR[148]</b></p>\n"; # Log: Funktionen der globalen Administration

 print "<textarea class='scl-content-textarea' wrap='off'>$NE</textarea>\n";

 print "</p>\n";

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Logbook



# Logout
sub Logout
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();

 my @ET1 = (); my @ET2 = ();

 # löschen der Login Check-Datei ....

 $DM = "_tmp/".$Aufruf{'VK'}.".pl";
 $Dummy = unlink $DM;

  # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "&nbsp;\n";
 print "</h1>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (Start, Filter ...) - hier inaktiv anzeigen
 print "<div id='rechts-navi-content'>\n";

 # untere Links (drucken etc) - hier inaktiv anzeigen
 print "<div id='rechts-navi-content-footer'>\n";

 print "</div>\n\n";


 # Logout
 print "<ul class='header-logout-ul'><li><a class='deact'>$SPR[140]</a></li></ul>\n\n";

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[140]\n";
 print "</h1>\n\n";

 # Info Bereich ---------------------------------------------------------------------------------------------------
 print "<p>\n";
 print "$SPR[142]\n";

 print "</p>\n\n"; # Ende Info Bereich -----------------------------------------------------------------------------

 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Logout



sub Ascii_2_Hex ($)
{
 (my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
 return $str;
}

sub Hex_2_Ascii ($)
{
 (my $str = shift) =~ s/([a-fA-F0-9]{2})/chr(hex $1)/eg;
 return $str;
}

sub Glob_Check_If_Is_Email
{
 my $mail = $_[0]; $mail = lc($mail);
 my $retVal = 1;
 my @SP1 = (); my @SP2 = ();

 if ($mail =~ / / || length($mail) < 6) {$retVal = 0;}
 else
 {
   @SP1 = split("\@", $mail);
   if (@SP1 > 2 || length($SP1[0]) < 2 || length($SP1[1]) < 4 || $SP1[1] !~ /\./) {$retVal = 0;}
   else
   {
      $SP1[1] =~ s/\./\t/g; @SP2 = split("\t", $SP1[1]);
      if (length($SP2[-2]) < 2 || length($SP2[-1]) < 2) {$retVal = 0;}
      else
      {
        if ($SP1[0] =~ /[^a-z0-9\._\-]/) {$retVal = 0;}
      }
   }
 }
 return $retVal;
}

# aktuelles Datum als Klartext aufarbeiten, mit Uhrzeit
sub Date_MakeAct_Real
{
 (my $Sek, my $Min, my $Hr, my $Tag, my $Mon, my $Jahr, my $x, my $jt) = localtime(time());
 $Mon++;
 $Jahr = $Jahr + 1900;
 if ($Min < 10) {$Min = "0".$Min;}
 if ($Hr < 10) {$Hr = "0".$Hr;}
 if ($Tag < 10) {$Tag = "0".$Tag;}

 my $retVal = "$Tag.$Mon.$Jahr $Hr:$Min";
 return $retVal;

} # Date_MakeAct_Real

# Datum (als Param) als Klartext aufarbeiten, ohne Uhrzeit
sub Date_MakeAct_Param
{
 (my $Sek, my $Min, my $Hr, my $Tag, my $Mon, my $Jahr, my $x, my $jt) = localtime($_[0]);
 $Mon++;
 $Jahr = $Jahr + 1900;
 if ($Mon < 10) {$Mon = "0".$Mon;}
 if ($Min < 10) {$Min = "0".$Min;}
 if ($Hr < 10) {$Hr = "0".$Hr;}
 if ($Tag < 10) {$Tag = "0".$Tag;}

 my $retVal = "$Tag.$Mon.$Jahr";
 return $retVal;

} # Date_MakeAct_Param