function kreu_gxin()
 {
     $this->metu_enkondukon();
     $this->metu_la_liston();
     $this->pdf->Output($GLOBALS['prafix'] . "/dosieroj_generitaj/adresaro.pdf");
     echo "<br/><br/>";
     hazard_ligu("dosieroj_generitaj/adresaro.pdf", "els^uti la adresaron (PDF).");
 }
 rajtligu("partrezultoj.php?faru=programmesagxoj", "--> sendu au^tomatajn mesag^ojn al programrespondeculoj ktp.", "", "retumi");
 echo "<br />\n";
 rajtligu("partrezultoj.php?faru=2konfirmi", "--> produkti 2an konfirmilon", "", "administri", "jes");
 rajtligu("partrezultoj.php?faru=2konfirm_papere", "(paperpos^te sendita)", "", "administri", "jes");
 if ($faru == "2konfirmi") {
     hazard_ligu("dosieroj_generitaj/konfirmilo.pdf", "(els^uti g^in)");
     rajtligu("partrezultoj.php?faru=2konfirmelsendo", "--> elsendi 2an konfirmilon", "", "administri", "jes");
 }
 echo "<BR>\n";
 ligu("partrezultoj.php?faru=kvitancu", "––> kreu kvitancon");
 if ($_REQUEST['faru'] == 'kvitancu') {
     require_once $prafix . "/iloj/kreu_kvitancon.php";
     $kvit = new Kvitanco();
     $kvit->kaju($_SESSION['partoprenanto']->datoj['ID'], $_SESSION['partopreno']->datoj['ID']);
     $kvit->sendu();
     hazard_ligu("./dosieroj_generitaj/kvitancoj.pdf", "els^utu g^in");
 }
 if (!$_SESSION["partoprenanto"]->datoj['lando']) {
     erareldono("Mankas la lando, pro tio la kotizokalkulo estas iom necerta!");
 }
 // nova kotizokalkulilo
 $kotkal = new Kotizokalkulilo($_SESSION["partoprenanto"], $_SESSION["partopreno"], $partopreno_renkontigxo, new Kotizosistemo($partopreno_renkontigxo->datoj['kotizosistemo']));
 eoecho("<p>Restas pagenda: " . $kotkal->tuta_sumo . " " . CXEFA_VALUTO . "</p>\n");
 echo "<div>";
 //    echo "<table><tr><td>";
 //    echo "</td><td>";
 //    echo "</td><td>";
 //    echo "</td>\n</tr>\n<tr>\n<td>";
 rajtligu("pago-detaloj.php?klaso=pago", "==> entajpi pagon", "", "mono", "jes");
 tabelu_pseuxdopagojn_por("pago", $_SESSION['partopreno']->datoj['ID'], 'mono');
 //    echo "</td>\n<td>";
//   KONFIRMILOJ
if ($kio == 'k') {
    require_once 'iloj/kreu_konfirmilon.php';
    $nombroperpagxo = 1;
    $numero = $numero * $nombroperpagxo;
    //  $demando = "select p.ID,pn.ID,nomo, personanomo from partoprenantoj as p, partoprenoj as pn where pn.partoprenantoID=p.ID and retakonfirmilo!='J' and 2akonfirmilosendata='0000-00-00' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' and kontrolata='J' and alvenstato='v'  limit 0,$numero";
    $demando = datumbazdemando(array("p.ID", "pn.ID", "nomo", "personanomo"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("pn.partoprenantoID = p.ID", "retakonfirmilo!='J'", "2akonfirmilosendata='0000-00-00'", "kontrolata='J'", "alvenstato = 'v'"), "renkontigxoID", array("order" => "personanomo, nomo", "limit" => "0, {$numero}"));
    eoecho("<B><BR><BR>Elpremu la konfirmilon por:</B><BR>");
    $kon = new Konfirmilo();
    $rezulto = sql_faru($demando);
    while ($row = mysql_fetch_array($rezulto, MYSQL_BOTH)) {
        eoecho($row[personanomo] . " " . $row[nomo] . "<BR>");
        $kon->kreu_konfirmilon($row[1], $row[0], $savu);
    }
    $kon->sendu();
    hazard_ligu("dosieroj_generitaj/konfirmilo.pdf", "els^uti la konfirmilojn.", "_top", "jes");
}
if ($kio == 'sendu') {
    //  $demando = "select p.ID,pn.ID,nomo, personanomo,retposxto,agxo from partoprenantoj as p, partoprenoj as pn where pn.partoprenantoID=p.ID and retakonfirmilo='J' and 2akonfirmilosendata='0000-00-00' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' and alvenstato='v' limit 0,$numero";
    $demando = datumbazdemando(array("p.ID", "pn.ID", "nomo", "personanomo", "retposxto", "pn.agxo", "germanakonfirmilo" => "germane"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("pn.partoprenantoID = p.ID", "retakonfirmilo = 'J'", "2akonfirmilosendata = '0000-00-00'", "alvenstato = 'v'"), "renkontigxoID", array("limit" => "0, {$numero}"));
    eoecho("<B><BR><BR>Elsendu la konfirmilon por:</B><BR>");
    $rezulto = sql_faru($demando);
    while ($row = mysql_fetch_array($rezulto, MYSQL_BOTH)) {
        eoecho($row[personanomo] . " " . $row[nomo] . "");
        // TODO:? Kial ne rekte al la partoprenantoj?
        // [respondo de Martin:] Reine Sicherheitsmaßnahme. Das ist eine Funktion die mehrere Hundert eMails verschickt. Die hab ich totgelegt, damit da nicht versehentlich jemand draufdrückt.
        // -> vielleicht mit Passwortschutz versehen, oder noch eine Sicherheitsabfrage.
        $to_name = funkciulo("admin");
        $to_address = funkciuladreso("admin");
        if ($eksendu == 'J') {
            echo "Das wärs geworden!! Wenn Du diese Funktion benutzen willst, dann bitte im Quellcode anschalten";
$rezulto = sql_faru($demando);
$koloro = 0;
while ($row = mysql_fetch_array($rezulto, MYSQL_BOTH)) {
    eoecho($row[personanomo] . " " . $row[2] . "<BR>");
    if ($bunta == "JES") {
        switch ($koloro % 4) {
            case 0:
                $pdf->SetTextColor(200, 0, 0);
                break;
            case 1:
                $pdf->SetTextColor(0, 0, 255);
                break;
            case 2:
                $pdf->SetTextColor(0, 150, 0);
                break;
            default:
                $pdf->SetTextColor(0, 0, 0);
                break;
        }
        $koloro++;
    }
    $pdf->write($linlargxo, uni($row[personanomo] . " " . $row[2] . "; " . $row[adresaldonajxo] . " " . $row[strato] . "; " . $row[posxtkodo] . "; " . $row[urbo] . "; " . $row[4] . "; " . $row[telefono] . "; " . $row[telefakso] . "; " . $row[retposxto]));
    $pdf->ln($interlinspaco);
    fputs($fp, utf8_decode("'" . $row[personanomo] . "';'" . $row[2] . "';'" . $row[adresaldonajxo] . "';'" . $row[strato] . "';'" . $row[posxtkodo] . "';'" . $row[urbo] . "';'" . $row[4] . "';'" . $row[telefono] . "';'" . $row[telefakso] . "';'" . $row[retposxto]) . "'\n");
}
$pdf->Output("dosieroj_generitaj/adresaro.pdf");
fclose($fp);
echo "<BR><BR>";
hazard_ligu("dosieroj_generitaj/adresaro.pdf", "els^uti la adresaron (PDF).", "_top", "jes");
hazard_ligu("dosieroj_generitaj/adresaro.csv", "els^uti la adresaron (CSV).", "_top", "jes");
/**
 * kreas PDF-dokumenton kun duaj informiloj por tiuj, kiuj petis
 * paperan duan informilon.
 *
 * @param  int   $nombro kiom da ni kreu nun?
 * @param string $savu  "J" = memoru, ke ni kreis/printis/sendis,
 *                        alikaze "NE" (ekzemple por kontroli,
 *                        ĉu aspektas bone)
 */
function printu_duajn_konfirmilojn($nombro, $savu)
{
    require_once 'tradukendaj_iloj/kreu_konfirmilon.php';
    // paperaj konfirmiloj
    //  $demando = "select p.ID,pn.ID,nomo, personanomo from partoprenantoj as p, partoprenoj as pn where pn.partoprenantoID=p.ID and retakonfirmilo!='J' and 2akonfirmilosendata='0000-00-00' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' and kontrolata='J' and alvenstato='v'  limit 0,$nombro";
    $demando = datumbazdemando(array("p.ID", "pn.ID", "nomo", "personanomo"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("pn.partoprenantoID = p.ID", "retakonfirmilo!='J' or p.retposxto=''", "2akonfirmilosendata='0000-00-00'", "kontrolata='J'", "alvenstato = 'v'"), "renkontigxoID", array("order" => "personanomo, nomo", "limit" => "0, {$nombro}"));
    eoecho("<B><BR><BR>Kreas la konfirmilon por:</B><BR>");
    $kon = new Konfirmilo("unikode");
    $rezulto = sql_faru($demando);
    while ($row = mysql_fetch_array($rezulto, MYSQL_BOTH)) {
        eoecho($row['personanomo'] . " " . $row['nomo'] . "<BR>");
        $kon->kreu_konfirmilon($row[1], $row[0], $savu);
    }
    $kon->sendu();
    hazard_ligu("dosieroj_generitaj/konfirmilo.pdf", "els^uti la konfirmilojn.");
}
{
    // TODO: Esploru, cxu la GROUP BY vere necesas.
    $row = mysql_fetch_array(sql_faru(datumbazdemando(array($speco, "count(*)" => "c"), array("partoprenoj" => "p"), array("{$speco} = '{$valoro}'", "alvenstato = 'a'"), "renkontigxoID", array("group" => "{$speco}"))), MYSQL_BOTH);
    return $row["c"];
}
//nombro de vegetaranoj:
//// "Select vegetare, count(*) as c from partoprenoj as p where vegetare='J'  and alvenstato='a' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by vegetare"
$pdf->setXY(110, 40);
$pdf->write(9, 'vegetaranoj: ' . kalkulu_partoprenantojn("vegetare", "J"));
//  $row=mysql_fetch_array(sql_faru("Select partoprentipo, count(*) as c from partoprenoj as p where partoprentipo='p'  and  alvenstato='a' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by partoprentipo"),MYSQL_NUM);
$pdf->setXY(110, 45);
$pdf->write(9, 'partpartoprenantoj:' . kalkulu_partoprenantojn("partoprentipo", "p"));
//  $row=mysql_fetch_array(sql_faru("Select komencanto, count(*) as c from partoprenoj as p where komencanto='J'  and  alvenstato='a' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by komencanto"),MYSQL_NUM);
$pdf->setXY(110, 50);
$pdf->write(9, 'komencantoj:' . kalkulu_partoprenantojn("komencanto", "J"));
// //  $row=mysql_fetch_array(sql_faru("Select invitletero, count(*) as c from partoprenoj as p where invitletero='J' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by invitletero"),MYSQL_NUM);
//   $pdf->setXY(110,55);
//   $pdf->write(9,'invitleteroj:'. kalkulu_partoprenantojn("invitletero", "J"));
// TODO: Kial GROUP BY ?
//  $row=mysql_fetch_array(sql_faru("Select invitilosendata, count(*) as c from partoprenoj as p where invitilosendata<>'0000-00-00' and  alvenstato='a' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by renkontigxoID"),MYSQL_NUM);
$row = mysql_fetch_array(sql_faru(datumbazdemando(array("invitilosendata", "count(*)" => "c"), array("partoprenoj" => "p"), array("invitilosendata <> '0000-00-00'", "alvenstato = 'a'"), "renkontigxoID", array("group" => "renkontigxoID"))), MYSQL_BOTH);
$pdf->setXY(110, 60);
$pdf->write(9, '(elsendata:' . $row["c"] . ')');
//  $row=mysql_fetch_array(sql_faru("Select retakonfirmilo, count(*) as c from partoprenoj as p where retakonfirmilo='J'  and alvenstato='a' and renkontigxoID='".$_SESSION["renkontigxo"]->datoj[ID]."' group by retakonfirmilo"),MYSQL_NUM);
$pdf->setXY(110, 65);
$pdf->write(9, 'retakonfirmilo:' . kalkulu_partoprenantojn("retakonfirmilo", "J"));
//la aligx/antauxpagtempo diagramo
//gesamt Kotizo -> nein, lieber woanders anzeigen
$pdf->Output("dosieroj_generitaj/statistikoj.pdf");
hazard_ligu("dosieroj_generitaj/statistikoj.pdf", "els^uti la statistikojn.", "_top", "jes");
 /**
  * La cxefa funkcio por krei la PDF-dosieron.
  */
 function kreu_pdf($dosiernomo)
 {
     $this->pdf->Open();
     $this->pdf->AddPage();
     $this->pdf->SetFont($this->font . 'D', '', 20);
     $this->pdf->Write(10, eo("Finkalkulo de kotizoj: " . $_SESSION["renkontigxo"]->datoj[nomo] . " en " . $_SESSION["renkontigxo"]->datoj[loko] . "\n"));
     $this->pdf->SetFontSize(12);
     $this->pdf->Write(10, "Dato: " . date('Y-m-d') . "\n");
     $this->klarigoj();
     //	$this->pdf->setY(40);
     $rezulto = sql_faru(datumbazdemando(array("p.ID" => 'antoid', "pn.ID" => 'enoid'), array("partoprenantoj" => "p", "partoprenoj" => "pn"), "p.ID = pn.partoprenantoID", "renkontigxoID", array("order" => "alvenstato, personanomo, nomo")));
     $this->kaplinio();
     while ($row = mysql_fetch_assoc($rezulto)) {
         $partoprenanto = new Partoprenanto($row['antoid']);
         $partopreno = new Partopreno($row['enoid']);
         $this->tabellinio($partoprenanto, $partopreno);
         if ($this->pdf->getY() > 250) {
             $this->pagxsumo();
             $this->kaplinio();
             $this->pdf->AddPage();
             $this->kaplinio();
         }
     }
     $this->pagxsumo();
     $this->fina_sumo();
     $this->kaplinio();
     $this->pdf->Output($dosiernomo);
     hazard_ligu($dosiernomo, "els^uti la kalkul-rezulton.", "_top", "jes");
 }
     } else {
         ligu("partrezultoj.php?montru_invitpeton=jes", "Montru invitpeto-detalojn");
     }
     rajtligu("invitpeto.php", "redaktu invitpeto-datojn", "", "inviti");
 } else {
     rajtligu("invitpeto.php", "aldonu invitpeto-datojn", "", "inviti");
 }
 echo "<br />\n";
 rajtligu("partrezultoj.php?faru=ekzporti", "--> sendu sekurkopion retpos^te", "", "retumi");
 echo "<br />\n";
 rajtligu("partrezultoj.php?faru=programmesagxoj", "--> sendu au^tomatajn mesag^ojn al programrespondeculoj ktp.", "", "retumi");
 echo "<br />\n";
 rajtligu("partrezultoj.php?faru=2konfirmi", "--> produkti 2an konfirmilon", "", "administri", "jes");
 rajtligu("partrezultoj.php?faru=2konfirm_papere", "(paperpos^te sendita)", "", "administri", "jes");
 if ($faru == "2konfirmi") {
     hazard_ligu("dosieroj_generitaj/konfirmilo.pdf", "(els^uti g^in)");
     rajtligu("partrezultoj.php?faru=2konfirmelsendo", "--> elsendi 2an konfirmilon", "", "administri", "jes");
 }
 echo "<BR>\n";
 /*if ($_SESSION["partoprenanto"]->datoj[retposxto])
   {
     ligu ("partrezultoj.php?faru=sendukonfirmo","--> sendi 1an konfirmilon");
     echo "<BR>\n";
   }*/
 /*    if ($partopreno->datoj[antauxpago] != 0)
     {
       rajtligu ("antauxpago.php","--> s^ang^i la antau^pago","","mono");
     }
     else
     {*/
 // }
/**
 * Kreas adresaron en PDFa formo, kaj paralele en CSVa formo.
 * La dosieroj estos metataj en 'dosieroj_generitaj', kaj ni fine
 * montros ligon al tiuj. Dum la kreado montras liston de nomoj
 * prilaborataj.
 * 
 * @param string $granda se <samp>"JES"</samp>, la adresaro estos farita
 *           en pli granda versio por korektlegi.
 * @param string $bunta se <samp>"JES"</samp>, la linioj de la adresaroj
 *                sxangxos inter kvar koloroj - tiel estas pli facile distingi
 *                la unuopajn adresojn, se kelkaj estas plurliniaj.
 */
function kreu_adresaron($granda, $bunta)
{
    echo "<p>\n";
    $fp = fopen($GLOBALS['prafix'] . "/dosieroj_generitaj/adresaro.csv", "w");
    //por la .csv versio
    $font = 'freesans';
    $pdf = new TCPDF();
    $pdf->AddFont($font, '', $font . '.php');
    $pdf->AddFont($font, 'B', $font . 'b.php');
    $pdf->SetFont($font, '', 15);
    $pdf->SetPrintHeader(false);
    $pdf->SetPrintFooter(false);
    $pdf->Open();
    $pdf->AddPage();
    $pdf->write(7, uni("Listo de Partoprenantoj\n" . $_SESSION["renkontigxo"]->datoj["nomo"] . " en " . $_SESSION["renkontigxo"]->datoj["loko"] . " (" . $_SESSION["renkontigxo"]->datoj["de"] . " g^is " . $_SESSION["renkontigxo"]->datoj["gxis"] . ")\n"));
    if ('JES' == $granda) {
        $pdf->SetFont($font, '', 12);
        $pdf->write(8, uni("Bonvolu kontroli (kaj eble korekti) vian" . " adreson en la adresaro, por ke en" . " la fina versio estu g^ustaj datumoj."));
        $pdf->ln(12);
        $linlargxo = 7;
        $interlinspaco = 13;
    } else {
        $pdf->SetFont($font, 'B', 9);
        // TODO: metu tiun tekston en la datumbazon.
        $pdf->write(3.7, uni("Vi rajtas uzi tiun adresaron nur por" . " personaj celoj. Vi ne rajtas" . " uzi g^in por amasaj leteroj au^" . " retmesag^oj (ankau^ ne por informi" . " pri via Esperanto-renkontig^o), kaj" . " ne rajtas pludoni g^in (ec^ ne parte). "));
        $pdf->SetFont('', '');
        $pdf->write(3.7, uni(" Se amiko de vi (kiu partoprenis la " . $_SESSION['renkontigxo']->datoj['mallongigo'] . ") ne ricevis la adresaron," . " li povas mendi propran c^e " . $_SESSION['renkontigxo']->datoj['adminretadreso'] . ". La sama validas por vi, se vi perdos " . " g^in.\n" . "Atentu, la g^usta sinsekvo de la" . " adres-partoj sur leteroj - depende de" . " la lando -" . " ofte ne estas la sama kiel tiu en tiu" . " c^i listo. Informig^u antau^ eksendado" . " de letero (ekzemple per retpos^to al la" . " ricevonto)."));
        $pdf->ln(7);
        $linlargxo = 3.0;
        $interlinspaco = 4.05;
    }
    $kampoj = array("p.ID", "pn.ID", "p.nomo" => "famnomo", "personanomo", "sxildnomo", "l.nomo" => "landonomo", "retposxto", "posxtkodo", "urbo", "lando", "telefono");
    $kampolisto = "nomo;  retpos^to; pos^tkodo; urbo; lando; telefono;";
    if (KAMPOELEKTO_IJK) {
        $kampolisto .= "adreso; tujmesag^iloj; ";
        $kampoj[] = "adreso";
        $kampoj[] = "tujmesagxiloj";
    } else {
        $kampolisto .= " adresaldonaj^o; strato; telefakso; ";
        $kampoj[] = "adresaldonajxo";
        $kampoj[] = "strato";
        $kampoj[] = "telefakso";
    }
    $pdf->write($linlargxo * 1.7, uni($kampolisto));
    $pdf->ln($interlinspaco);
    $pdf->ln($interlinspaco);
    $demando = datumbazdemando($kampoj, array("partoprenantoj" => "p", "partoprenoj" => "pn", "landoj" => "l"), array("pn.partoprenantoID = p.ID", "l.ID = lando", "pn.intolisto = 'J'", "alvenstato = 'a'"), "renkontigxoID", array("order" => "personanomo, famnomo"));
    echo "<BR><BR>";
    $rezulto = sql_faru($demando);
    $koloro = 0;
    while ($row = mysql_fetch_assoc($rezulto)) {
        if ($row['sxildnomo']) {
            $tutanomo = $row['personanomo'] . ' (' . $row['sxildnomo'] . ') ' . $row['famnomo'];
        } else {
            $tutanomo = $row['personanomo'] . ' ' . $row['famnomo'];
        }
        eoecho($tutanomo . "<br/>");
        if ($bunta == "JES") {
            switch ($koloro % 4) {
                case 0:
                    $pdf->SetTextColor(200, 0, 0);
                    break;
                case 1:
                    $pdf->SetTextColor(0, 0, 255);
                    break;
                case 2:
                    $pdf->SetTextColor(0, 150, 0);
                    break;
                default:
                    $pdf->SetTextColor(0, 0, 0);
                    break;
            }
            $koloro++;
        }
        $datumoj = array($tutanomo, $row['retposxto'], $row['posxtkodo'], $row['urbo'], $row['lando'], $row['telefono']);
        if (KAMPOELEKTO_IJK) {
            // TODO: pripensu, kiel trakti plurlinian adreson.
            array_push($datumoj, $row['adreso'], $row['tujmesagxiloj']);
        } else {
            array_push($datumoj, $row['adresaldonajxo'], $row['strato'], $row['telefakso']);
        }
        $csv_teksto = "'" . implode("';'", $datumoj) . "'";
        $pdf_teksto = implode("; ", $datumoj);
        $pdf->write($linlargxo, uni($pdf_teksto));
        $pdf->ln($interlinspaco);
        // TODO: pripensu, ĉu ni ne ankaŭ por la CSV-versio restu ĉe UTF-8
        fputs($fp, utf8_decode($csv_teksto . "\n"));
    }
    $pdf->Output($GLOBALS['prafix'] . "/dosieroj_generitaj/adresaro.pdf");
    fclose($fp);
    echo "<br/><br/>";
    hazard_ligu("dosieroj_generitaj/adresaro.pdf", "els^uti la adresaron (PDF).");
    hazard_ligu("dosieroj_generitaj/adresaro.csv", "els^uti la adresaron (CSV).");
    echo "</p>";
}