function montru_elekto_liston($teksto_id, $pago_tipo, $butono_nomo, $kutima_teksto = '')
{
    $antauxpaguloj = donu_tekston($teksto_id);
    $antauxpaguloj = explode("\r\n", $antauxpaguloj);
    echo "<BR><BLOCKQUOTE><p>";
    $uloj = array();
    foreach ($antauxpaguloj as $linio) {
        // echo "hallo:".$ulo."||";
        if ($linio[0] == '#') {
            continue;
        }
        if ($linio[0] == '-') {
            echo "</p>\n<p>";
            continue;
        }
        list($ulo, $teksto) = explode("|", $linio);
        $uloj[] = $ulo;
        if (!isset($teksto)) {
            $teksto = $kutima_teksto . $ulo;
        }
        entajpbutono("", $butono_nomo, $pago_tipo, $ulo, $ulo, $teksto . "<br />\n");
    }
    if ($pago_tipo and !in_array($pago_tipo, $uloj)) {
        entajpbutono("<br/>", tipo, $pago_tipo, $pago_tipo, $pago_tipo, "<b>malnova:</b> " . $pago_tipo . "<br />\n");
    }
    echo "</p></BLOCKQUOTE>";
}
/**
 * $kodigo - aux 'x-metodo' aux 'utf-8'.
 */
function kreu_unuan_konfirmilan_tekston($partoprenanto, $partopreno, $renkontigxo, $kodigo = 'utf-8')
{
    // TODO: ebligu nacilingvan varianton
    $speciala = array();
    $speciala['landonomo'] = eltrovu_landon($partoprenanto->datoj['lando']);
    $speciala['tejojaro'] = TEJO_MEMBRO_JARO;
    $speciala['tejorabato'] = TEJO_RABATO;
    $speciala['asekuro'] = $partopreno->datoj['havas_asekuron'] == 'J' ? "Vi havas asekuron pri malsano kaj kunportos la necesajn paperojn." : "Vi ne havas tauxgan asekuron pri malsano.";
    $speciala['partopreno'] = $partopreno->datoj['partoprentipo'] == 't' ? "tuttempe" : "parttempe";
    switch ($partopreno->datoj['vegetare']) {
        case 'J':
            $speciala['mangxmaniero'] = "vegetarano";
            break;
        case 'N':
            $speciala['mangxmaniero'] = "viandmang^anto";
            break;
        case 'A':
            $speciala['mangxmaniero'] = "vegano";
            break;
        default:
            $speciala['mangxmaniero'] = "nekonata mang^anto";
    }
    if ($partopreno->datoj['domotipo'] == 'M') {
        $speciala['domotipo'] = "log^os en la amaslog^ejo kaj mang^os memzorge";
        $speciala['cxambro'] = "";
    } else {
        $speciala['domotipo'] = "log^os kaj mang^os en la junulargastejo";
        switch ($partopreno->datoj['cxambrotipo']) {
            case 'u':
                $cxambrosekso = "unuseksan c^ambron";
            case 'g':
                $cxambrosekso = "gean c^ambron";
            default:
                $cxambrosekso = "(strang-seksan: '{$partopreno->datoj['cxambrotipo']}')" . " c^ambron";
        }
        $speciala['cxambro'] = "\n Vi mendis " . ($partopreno->datoj['dulita'] == "J" ? "dulitan " : "") . $cxambrosekso . ($partopreno->datoj['kunkiu'] ? " kun (eble) " . $partopreno->datoj['kunkiu'] : "");
    }
    // TODO: kunmangxas
    $kotizo = new Kotizo($partopreno, $partoprenanto, $renkontigxo);
    $speciala['antauxpago'] = $kotizo->minimuma_antauxpago();
    $speciala['pageblecoj'] = pageblecoj_retpagxo;
    $invitpeto = $partopreno->sercxu_invitpeton();
    if ($invitpeto) {
        $speciala['invitpeto'] = "\n Detaloj por la Invitilo" . "\n-------------------------" . "\n" . $invitpeto->konfirmilaj_detaloj() . "\n\n" . donu_tekston('konf1-invitilo', $renkontigxo);
    } else {
        // ne petis invitleteron, do ne necesas ion pri tio skribi
        $speciala['invitpeto'] = "";
    }
    // TODO - aldonu kiel teksto, cxu ne?
    $speciala['dissendolisto'] = "";
    $speciala['subskribo'] = $renkontigxo->funkciulo('admin') . ", en la nomo de " . organizantoj_nomo . ", la organiza teamo.";
    $datumoj = array('anto' => $partoprenanto->datoj, 'eno' => $partopreno->datoj, 'igxo' => $renkontigxo->datoj, 'speciala' => $speciala);
    $sxablono = file_get_contents($GLOBALS['prafix'] . '/sxablonoj/unua_konfirmilo_eo.txt');
    return eotransformado(transformu_tekston($sxablono, $datumoj), $kodigo);
}
/**
 * serĉas informojn uzatajn en ŝablona teksto el la tekstoj-tabelo
 * de la datumbazo.
 *
 * @param string $sxablono    ĉi tie ni serĉas.
 * @param string $sxablona_prefikso 
 * @param string $teksto_prefikso
 *
 * @return array de la formo $id => valoro, kun ĉiuj aperantaj
 *            tekstoj.
 */
function trovu_necesajn_tekstojn($sxablono, $sxablona_prefikso, $teksto_prefikso)
{
    $sxablono = "_" . $sxablono;
    $listo = array();
    $pos = 0;
    $sercxprefikso = "{{" . $sxablona_prefikso;
    $preflen = strlen($sercxprefikso);
    while ($pos = strpos($sxablono, $sercxprefikso, $pos)) {
        $finpos = strpos($sxablono, "}}", $pos);
        $id = substr($sxablono, $pos + $preflen, $finpos - $pos - $preflen);
        if (!isset($listo[$id])) {
            $listo[$id] = donu_tekston($teksto_prefikso . $id);
        }
        $pos = $finpos + 2;
    }
    return $listo;
}
function kreu_duan_konfirmilan_tekston($partoprenanto, $partopreno, $renkontigxo, $kodigo = 'utf-8')
{
    $eo_teksto = kreu_duan_konfirmilan_tekston_unulingve('eo', $partoprenanto, $partopreno, $renkontigxo, $kodigo);
    $ambaux_teksto = donu_tekston("konf2_dua-informilo-teksto");
    if ($partopreno->datoj['germanakonfirmilo'] == 'J') {
        $de_teksto = kreu_duan_konfirmilan_tekston_unulingve('de', $partoprenanto, $partopreno, $renkontigxo, $kodigo);
        return donu_tekston('konf1-germane-sube', $renkontigxo) . "\n" . $eo_teksto . "\n\n" . donu_tekston('konf1-jen-germana-teksto', $renkontigxo) . "\n" . $de_teksto . "\n\n" . $ambaux_teksto;
    } else {
        return $eo_teksto . "\n\n" . $ambaux_teksto;
    }
}
 /**
  * Aldonas unuopan akceptofolion por la menciita partoprenanto/partopreno
  * al la dosiero.
  * @param int $partoprenantoID identigilo de {@link Partoprenanto} (aŭ 0
  *                             por malplena folio)
  * @param int $partoprenoID identigilo de {@link Partopreno} (aŭ 0
  *                             por malplena folio)
  */
 function kreu_kvitancon($partoprenantoID, $partoprenoID)
 {
     $partopreno = new Partopreno($partoprenoID);
     $partoprenanto = new Partoprenanto($partoprenantoID);
     $ko = new Kotizokalkulilo($partoprenanto, $partopreno, $_SESSION["renkontigxo"], new Kotizosistemo($_SESSION["renkontigxo"]->datoj['kotizosistemo']));
     echo "<!-- ";
     var_export($partopreno);
     var_export($partoprenanto);
     echo "-->";
     $this->pdf->setFontSize(10);
     $this->pdf->text(27, 20, 'Persona nomo:');
     $this->pdf->text(27, 25, 'Familia nomo:');
     $this->pdf->text(130, 20, "Kvitanconumero:");
     $this->pdf->setFontSize(15);
     if ($partoprenanto->datoj['sxildnomo'] != '') {
         $kajo = " (" . $partoprenanto->datoj['sxildnomo'] . ")";
     } else {
         $kajo = "";
     }
     $this->pdf->text(53, 20, uni($partoprenanto->datoj['personanomo'] . $kajo));
     $this->pdf->text(53, 25, uni($partoprenanto->datoj['nomo']));
     $prefikso = implode("", explode(" ", $_SESSION['renkontigxo']->datoj['mallongigo']));
     $this->pdf->text(160, 20, $prefikso . "#" . $partoprenoID);
     $this->pdf->SetFont('', 'B', 20);
     $this->pdf->setY(38);
     $this->pdf->Cell(0, 10, "Kvitanco", 0, 1, 'C');
     $this->pdf->ln();
     $this->pdf->setFont('', '', 10);
     $datumoj = array("igxo" => $_SESSION['renkontigxo'], "anto" => $partoprenanto, "eno" => $partopreno, "pagoj" => array("sumo" => $ko->donu_informon('pagoSumo'), "valuto" => CXEFA_VALUTO));
     $sxablono = donu_tekston("kvitanco-enkonduko");
     $teksto = transformu_tekston($sxablono, $datumoj);
     $this->pdf->write(5, uni($teksto));
     $this->pdf->ln();
     $this->pdf->ln();
     // $this->metu_titolon("Kotizokalkulo");
     $ko->tabelu_kotizon(new PDFKotizoFormatilo($this->pdf, $this->lingvo, true, true));
     // TODO: stampo
     $this->pdf->setFontSize(10);
     $teksto2 = donu_tekston("kvitanco-elkonduko");
     $this->pdf->ln(8);
     $this->pdf->ln();
     $this->pdf->write(4.5, uni($teksto2));
     // TODO: eble tamen enmetu la informon, ke ni fajfis pri la resto?
     /*
     
     $this->pdf->setFontSize(12);
     $this->pdf->setY(257);
     // TODO: metu tuj antaŭ la kestojn
     
     $informoj = $ko->restas_pagenda_en_valutoj();
     
     if ($informoj['traktenda']) {
     	 if ($informoj['repagenda']) {
     	   $this->pdf->write(5, uni("Ni repagas al vi"));
     	 }
     	 else {
     	   $this->pdf->write(5, uni("Vi devos ankorau^ pagi al ni"));
     	 }
     	 foreach($informoj['listo'] AS $listero) {
     	   $this->pdf->write(5, uni(" au^ "));
     	   $this->pdf->setFont('', 'B');
     	   $this->pdf->write(5, uni(number_format($listero['vere_pagenda'], 2, ".", "") . " " . $listero['valuto']));
     	   $this->pdf->setFont('', '');
     	 }
     	 $this->pdf->write(5, ".");
     } else if ($informoj['ni_fajfas']) {
     	 $this->pdf->write(5, uni("La restanta mono estas tiom malmulte, ke ni " .
     							  "fajfas pri tio. Vi neniom plu devos pagi."));
     } else {
     	 $this->pdf->write(5, uni("Vi neniom plu devos pagi."));
     }
     */
 }
/**
 * TODO: dokumentado por faru_1ankonfirmilon
 *
 * ### uzata de partrezultoj.php, AligxiloDankon.php,
 *     kaj sendu_konfirmilon(). ###
 */
function faru_1akonfirmilon($partoprenanto, $partopreno, $renkontigxo)
{
    //$partoprenanto = new Partoprenanto($antoID);
    //$partopreno = new Partopreno($enoID);
    //$kotizo = new Kotizo($partopreno,$partoprenanto,$renkontigxo);
    $ek = "";
    if ($partopreno->datoj["germanakonfirmilo"] == "J") {
        $ek .= utf8_encode("[ Deutsche Übersetzung am Ende. ]\n\n");
    }
    $ek .= "Saluton kara " . eotransformado($partoprenanto->datoj[personanomo] . " " . $partoprenanto->datoj[nomo], "x-metodo");
    $ek .= "\nni jxus ricevis vian aligxilon por la\n" . eotransformado($renkontigxo->datoj[nomo], "x-metodo") . " en " . eotransformado($renkontigxo->datoj[loko], "x-metodo") . ".\n";
    if ($partopreno->datoj[retakonfirmilo] == "J") {
        $ek .= "\nVi indikis, ke vi deziras retan konfirmilon, do vi\n ricevas la jenan mesagxon kiel 1a konfirmilo. \nLa 2a konfirmilo sekvos en novembro.\n";
    }
    $ek .= "\n";
    //$ek .= "De ".$partoprenanto->datoj[retposxto]." venis la sekva aligxilo\n";
    $ek .= "Aligxdato: " . $partopreno->datoj[aligxdato] . "\n";
    $ek .= "\n";
    $ek .= "---- Personaj datoj ----\n";
    $ek .= "Personanomo: " . $partoprenanto->datoj[personanomo] . "\n";
    $ek .= "Familianomo: " . $partoprenanto->datoj[nomo] . "\n";
    $ek .= "Sekso: " . $partoprenanto->datoj[sekso] . "\n";
    $ek .= "Naskigxdato: " . $partoprenanto->datoj[naskigxdato] . "\n";
    //  $ek .= "okupigxo: ".okupigxtipo($partoprenanto->datoj[okupigxo])." ".$partoprenanto->datoj[okupigxteksto]."\n";
    if ($partoprenanto->datoj[lando] == '16') {
        $ek .= "Gejmembro: " . $partopreno->datoj[GEJmembro] . "\n";
    }
    $ek .= "\n";
    $ek .= "---- Adreso ----\n";
    if ($partoprenanto->datoj[adresaldonajxo]) {
        $ek .= "adresaldonajxo:" . $partoprenanto->datoj[adresaldonajxo] . "\n";
    }
    $ek .= "strato: " . $partoprenanto->datoj[strato] . "\n";
    $ek .= "posxtkodo: " . $partoprenanto->datoj[posxtkodo] . "\n";
    $ek .= "urbo: " . $partoprenanto->datoj[urbo] . "\n";
    $ek .= "lando: " . eltrovu_landon($partoprenanto->datoj[lando]) . "\n";
    $ek .= "\n---- Komunikado ----\n";
    $ek .= "telefono: " . $partoprenanto->datoj[telefono] . "\n";
    $ek .= "telefakso: " . $partoprenanto->datoj[telefakso] . "\n";
    $ek .= "retposxtadreso: " . $partoprenanto->datoj[retposxto] . "\n";
    $ek .= "\n---- Partoprendatumoj ----\n";
    if ($partoprenanto->datoj['ueakodo']) {
        $ek .= "Via UEA-kodo estas " . $partoprenanto->datoj['ueakodo'] . ".\n";
    }
    if ($partopreno->datoj['tejo_membro_laudire'] == 'j') {
        $ek .= "Vi indikis, ke vi en " . substr($renkontigxo->datoj['gxis'], 0, 4) . " estos individua membro de TEJO.\n" . "(Ni kontrolos tion - prefere sendu vian TEJO/UEA-kotizon\n" . " jam antaux la renkontigxo al UEA.)\n";
    }
    if ($partopreno->datoj[komencanto][0] == "J") {
        $ek .= "Vi estas novulo / komencanto.\n";
    }
    if ($partopreno->datoj[invitletero][0] == "J") {
        $ek .= "Vi deziras invitlereron por pasportnumero: " . $partopreno->datoj[pasportnumero] . ".\n";
    }
    if ($partopreno->datoj["havas_asekuron"][0] == "J") {
        $ek .= "Vi havas asekuron pri malsano kaj kunportos la necesajn paperojn.\n";
    } else {
        $ek .= "Vi ne havas tauxgan asekuron pri malsano.\n";
    }
    if ($partopreno->datoj[partoprentipo][0] == "t") {
        $ek .= "Vi partoprenos tuttempe (de: " . $partopreno->datoj[de] . " gxis: " . $partopreno->datoj[gxis] . ")" . "\n";
    } elseif ($partopreno->datoj[partoprentipo][0] == "p") {
        $ek .= "Vi partoprenos partatempe (de: " . $partopreno->datoj[de] . " gxis: " . $partopreno->datoj[gxis] . ")" . "\n";
    } else {
        $ek .= "mankas partoprentipo?? io eraro okazis - bonvolu kontaktu nin" . "\n";
        //TODO: MAcht das skript dann automatisch :))
    }
    if ($partopreno->datoj[vegetare][0] == "J") {
        $ek .= "Vi aligxis kiel vegetarano kaj ";
    } else {
        if ($partopreno->datoj['vegetare'][0] == "N") {
            $ek .= "Vi aligxis kiel viandmangxanto kaj ";
        } else {
            if ($partopreno->datoj['vegetare'][0] == "A") {
                $ek .= "Vi aligxis kiel vegano kaj ";
            } else {
                $ek .= "Vi aligxis (pri mangxado) en nekonata formo\n" . "(" . $partopreno->datoj['vegetare'] . ")";
            }
        }
    }
    if ($partopreno->datoj[domotipo][0] == "M") {
        $vosto .= "memzorgas ";
        if ($partopreno->datoj[kunmangxas][0] == "J") {
            $vosto .= "sed kunmangxas ";
        }
    } else {
        if ($partopreno->datoj[domotipo][0] == "J") {
            $vosto .= "junulargastejumas \n en (eble) ";
            if ($partopreno->datoj[dulita][0] == "J") {
                $vosto .= "dulita ";
            }
            if ($partopreno->datoj[cxambrotipo][0] == "u") {
                $vosto .= "unuseksa ";
            }
            if ($partopreno->datoj[cxambrotipo][0] == "g") {
                $vosto .= "gea " . "";
            }
            if ($partopreno->datoj[cxambrotipo][0] == "n") {
                $vosto .= "negrava " . "";
            }
            $vosto .= "cxambro ";
            if ($partopreno->datoj[kunkiu] != "") {
                $vosto .= "(eble) kun " . $partopreno->datoj[kunkiu] . "\n";
            }
        }
    }
    $ek .= $vosto;
    if ($partopreno->datoj[tema]) {
        $ek .= "\n[X] kontribuos al la tema programo per: " . $partopreno->datoj[tema] . "";
    }
    if ($partopreno->datoj[distra]) {
        $ek .= "\n[X] kontribuos al la distra programo per: " . $partopreno->datoj[distra] . "";
    }
    if ($partopreno->datoj[vespera]) {
        $ek .= "\n[X] kontribuos al la vespera programo per: " . $partopreno->datoj[vespera] . "";
    }
    if ($partopreno->datoj[muzika]) {
        $ek .= "\n[X] kontribuas al la muzika vespero: " . $partopreno->datoj[muzika] . "";
    }
    /* if ($partopreno->datoj[rabato]!=0.00)
      {
        $ek .= "\n[X] deziras rabato de: ".$partopreno->datoj[rabato]." Euro, cxar \"".$partopreno->datoj[kialo]." \"";
      }*/
    if ($partopreno->datoj[rimarkoj]) {
        $ek .= "\nkaj havas la jenajn rimarkojn:\n\n[" . $partopreno->datoj[rimarkoj] . "]\n";
    }
    // Sonderregelung Deutsche Ü 27
    if ($renkontigxo->datoj["mallongigo"] == "IS 2005" and $partoprenanto->datoj["lando"] == HEJMLANDO and strcmp($partoprenanto->datoj["naskigxdato"], "1978-12-27") < 0) {
        $ek .= "\nVi (je la komenco de IS) agxos 27 jarojn aux pli. Tial vi" . "\n nur povos partopreni, se vi kontribuos al la programo." . "\n Bonvolu sendi proponojn al la programrespondeculoj." . "\n Vidu  http://www.esperanto.de/is/de/2005/adresoj#programo." . "\n";
    }
    // TODO: generaligu antauxpagon (prenu el datumbazo?)
    $landkat = eltrovu_landokategorion($partoprenanto->datoj[lando]);
    switch ($landkat) {
        case "A":
            $antauxpago = "30";
            break;
        case "B":
            $antauxpago = "10";
            break;
    }
    if ($landkat != "C") {
        $ek .= "\n\nNe forgesu, ke via aligxo nur ekvalidas post alveno de\n minimuma antauxpago de {$antauxpago} euxroj cxe ni.\n";
        $ek .= "Pri pageblecoj rigardu http://www.esperanto.de/is/eo/2006/kontoj\n\n";
    }
    if ($partopreno->datoj[invitletero][0] == 'J') {
        $ek .= "\n" . donu_tekston("konf1-invitilo", $renkontigxo) . "\n";
    }
    $ek .= "\nPor priparoli la ISon jam antaux la IS, plani kunveturadon, ktp." . "\nnun ekzistas aparta jahugrupo:  is-en-germanio." . "\n" . "\nPor aligxi uzu" . "\n       http://groups.yahoo.com/group/is-en-germanio/" . "\naux sendu retmesagxon al" . "\n       is-en-germanio-subscribe@yahoogroups.com" . "\n";
    $ek .= "\nNi atendos vin en la IS.\n\nJulia Noe en la nomo de la organiza teamo de la IS.";
    //$kotizo->montru_kotizon(1,$partopreno,$partoprenanto,$renkontigxo);
    //$ek .= $kotizo->mesagxo;
    if ($partopreno->datoj["germanakonfirmilo"] == "J") {
        $ek .= utf8_encode("\n\n ------- Deutsche Übersetzung ---------\n\n") . faru_1an_konfirmilon_germane($partoprenanto, $partopreno, $renkontigxo);
    }
    return $ek;
}