/**
 * Montras ĝeneralan serĉo-kampon en tabellinio.
 *
 * En la kondiĉo-parto de la tabellinio aperas entajpejo, kaj apude
 * elekteblecoj por diversaj serĉmodusoj.
 *
 * @param eostring $priskribo la nomo de kampo (por serĉantoj),
 *           t.e. titolo en la serĉ-tabelo.
 * @param string   $tabelo   nomo de datumbaztabelo.
 * @param string   $nomo    la (datumbaza) nomo de la kampo.
 * @param array    $valoroj la ĝenerala serĉ-detaloj-strukturo.
 * @param string   $alias   kiel ni renomu la kampon dum la serĉo?
 *                            (necesa se samnoma kampo aperas en
 *                             diversaj tabeloj.)
 * @param string   $ligo    ŝablono por krei ligon. Se donita, la enhavo
 *                          de la kampo estas samtempe ligo, kaj la
 *                          ligo-celo estos kreita per enmetado de la valoro
 *                          en $ligo je la loko de XXXXX.
 * @param eostring $titolo se donita, ni uzas tion kiel nomo de la 
 *                         rezulto-tabelo. Se ne, ni uzas $priskribo.
 */
function sercxtabellinio($priskribo, $tabelo, $nomo, $valoroj, $alias = "", $ligo = '', $titolo = "")
{
    $tipnomo = "sercxo_{$tabelo}__{$nomo}_tipo";
    $valoronomo = "sercxo_{$tabelo}__{$nomo}_valoro";
    $montrunomo = "sercxo_{$tabelo}__{$nomo}_montru";
    $uzunomo = "sercxo_{$tabelo}__{$nomo}_estasKriterio";
    $enhavo = $valoroj[$valoronomo];
    $tipo = $valoroj[$tipnomo];
    $montru = $valoroj[$montrunomo];
    $uzu = $valoroj[$uzunomo];
    //  $skripto = "kolorSxangxoDekstre('$tabelo', '$nomo')";
    eoecho("<tr id='{$tabelo}-{$nomo}-tabellinio'><th>{$priskribo}</th><td>");
    if ($alias) {
        tenukasxe("sercxo_{$tabelo}__{$nomo}_alias", $alias);
    }
    if ($ligo) {
        tenukasxe("sercxo_{$tabelo}__{$nomo}_ligo", $ligo);
    }
    if ($titolo) {
        tenukasxe("sercxo_{$tabelo}__{$nomo}_titolo", $titolo);
    } else {
        tenukasxe("sercxo_{$tabelo}__{$nomo}_titolo", $priskribo);
    }
    jes_ne_bokso($montrunomo, $montru, "kolorSxangxoMaldekstre('{$tabelo}', '{$nomo}')");
    //  entajpbokso( $priskribo , $montrunomo, $montru, "JES", "JES");
    echo "</td><td>";
    jes_ne_bokso($uzunomo, $uzu, "kolorSxangxoDekstre('{$tabelo}', '{$nomo}')");
    echo "</td><td><span id='{$tabelo}-{$nomo}-kriterioj'>";
    echo "<input type='text' name='{$valoronomo}' value='{$enhavo}' size='20'/>";
    //   simpla_entajpbutono($tipnomo, $tipo, "malatentu", "kutima", $skripto);
    //   eoecho (" <em>ne uzu</em> |\n");
    simpla_entajpbutono($tipnomo, $tipo, "sama", "kutima");
    eoecho(" = |\n");
    simpla_entajpbutono($tipnomo, $tipo, "malpli");
    eoecho(" &lt; |\n");
    simpla_entajpbutono($tipnomo, $tipo, "pli");
    eoecho(" > |\n");
    simpla_entajpbutono($tipnomo, $tipo, "inter");
    eoecho(" >/&lt; |\n");
    simpla_entajpbutono($tipnomo, $tipo, "LIKE");
    eoecho(" % _ |\n");
    simpla_entajpbutono($tipnomo, $tipo, "REGEXP");
    eoecho(" RE |\n");
    simpla_entajpbutono($tipnomo, $tipo, "plena");
    eoecho(" plena |\n");
    simpla_entajpbutono($tipnomo, $tipo, "parto");
    eoecho(" parto\n");
    echo "</span></td></tr>\n";
}
/**
 * kreas elektoliston (per radiaj butonoj) el la renkontigxo-konfiguroj,
 * en tabellinio.
 * <pre>
 * |--------+---------------|
 * | titolo | ( ) elekto 1  |
 * |        | (*) elekto 2  |
 * |        | ( ) elekto 3  |
 * |--------+---------------|
 * </pre>
 * @param eostring    $titolo
 * @param string      $nomo (la interna nomo)
 * @param asciistring $tipo la konfiguro-tipo, t.e.
 *                          sekcio de la konfiguro-tabelo.
 * @param asciistring $valoro la antauxelektota valoro.
 * @param Renkontigxo|int $renkontigxo
 *
 * @uses simpla_entajpbutono()
 * @uses datumbazdemando()
 */
function tabela_elektolisto_el_konfiguroj($titolo, $nomo, $tipo, $valoro, $renkontigxo = 0)
{
    debug_echo("<!-- tabela_elektolisto_el_konfiguroj(" . $titolo . ", " . $nomo . ", " . $tipo . ", " . $valoro . ", " . var_export($renkontigxo, true) . ")\n -->");
    if (is_object($renkontigxo)) {
        $renkontigxo = $renkontigxo->datoj['ID'];
    }
    if (!$renkontigxo or !is_int($renkontigxo)) {
        $renkontigxo = $_SESSION['renkontigxo']->datoj['ID'];
    }
    eoecho("<tr>\n   <th>" . $titolo . "</th>\n   <td>\n");
    $sql = datumbazdemando(array('interna', 'grupo', 'teksto', 'aldona_komento'), 'renkontigxaj_konfiguroj', array('renkontigxoID' => $renkontigxo, 'tipo' => $tipo), "", array('order' => "grupo ASC"));
    $rez = sql_faru($sql);
    $antauxa_grupo = '#';
    while ($linio = mysql_fetch_assoc($rez)) {
        debug_echo("<!-- " . var_export($linio, true) . "-->");
        if ($linio['grupo'] != $antauxa_grupo) {
            if ($antauxa_grupo != '#') {
                echo "<br/>\n<br/>";
            }
            $antauxa_grupo = $linio['grupo'];
        } else {
            echo "<br />\n";
        }
        //        echo $linio['interna'] . " ";
        simpla_entajpbutono($nomo, $valoro, $linio['interna']);
        eoecho(" " . $linio['teksto'] . "\n");
        if ($linio['aldona_komento']) {
            eoecho("<br/>\n<span class='aldona_komento'>" . $linio['aldona_komento'] . "</span>\n");
        }
    }
    echo "      </p>\n";
    echo "  </td>\n</tr>\n";
}
/**
 * Kreas unu tabellinion.
 * @param array $datoj unu datumbaz-respondo-linio.
 */
function metu_tejomembro_tabellinion($datoj)
{
    echo "  <tr>\n";
    $id = $datoj['ID'];
    $antoID = $datoj['partoprenantoID'];
    echo "<td>" . donu_ligon("partrezultoj.php?partoprenidento=" . $id, $id) . "</td><td>";
    if ($GLOBALS['rajtas_sxangxi']) {
        tenukasxe('malnovaUEAkodo[' . $antoID . ']', $datoj['ueakodo']);
        simpla_entajpejo("", 'novaUEAkodo[' . $antoID . ']', $datoj['ueakodo'], 7);
    } else {
        echo $datoj['ueakodo'];
    }
    eoecho("</td><td>" . $datoj['personanomo'] . "</td><td>" . $datoj['nomo'] . "</td><td>" . $datoj['urbo'] . "</td><td>" . $datoj['landonomo'] . "</td><td>");
    // TODO: formatado diversa, alikaze nur jes_ne(...).
    if (jesne_al_boolean($datoj['tejo_membro_laudire'])) {
        echo "jes";
    } else {
        echo "ne";
    }
    echo "</td><td>";
    if ($GLOBALS['rajtas_sxangxi']) {
        tenukasxe("malnovaKontrolita[" . $id . "]", $datoj['tejo_membro_kontrolita']);
        simpla_entajpbutono('novaKontrolita[' . $id . ']', $datoj['tejo_membro_kontrolita'], 'j');
        eoecho("<abbr title='estas membro'>jes</abbr>");
        echo "</td><td>";
        simpla_entajpbutono('novaKontrolita[' . $id . ']', $datoj['tejo_membro_kontrolita'], '?');
        eoecho("<abbr title='ne kontrolita'>?</abbr>");
        echo "</td><td>";
        simpla_entajpbutono('novaKontrolita[' . $id . ']', $datoj['tejo_membro_kontrolita'], 'n');
        eoecho("<abbr title='ne estas membro'>ne</abbr>");
        echo "</td><td>";
        simpla_entajpbutono('novaKontrolita[' . $id . ']', $datoj['tejo_membro_kontrolita'], 'i');
        eoecho("<abbr title='ig^as surloke (nur metu tion dum akceptado!'>ig^as</abbr>");
    } else {
        switch ($datoj['tejo_membro_kontrolita']) {
            case 'j':
                echo "jam antau^e";
                break;
            case 'n':
                echo "ne membras";
                break;
            case 'i':
                echo "ig^as surloke";
                break;
            case '?':
                echo "ne kontrolita";
                break;
        }
    }
    echo "</td>\n";
    echo "  </tr>\n";
}
//entajpbutono("",cxambrotipo,$partopreno->datoj[cxambrotipo][0],"n","negravas","ne gravas<BR>",kutima);
if ($domotipo == "M" and $_SESSION["partopreno"]->datoj[cxambrotipo] == "u") {
    erareldono("<BR>Ne haveblas unuseksan c^ambrojn memzorge ");
}
echo "<BR>";
entajpejo("Mi s^atus log^i kun", "kunKiu", $_SESSION["partopreno"]->datoj['kunKiu'], 25);
//  entajpboksokajejo(kunekun,$kunekun,"JES","JES","Mi s^atus log^i kune kun:","",kunkiu,
//         $_SESSION["partopreno"]->datoj[kunkiu],25,"Kun kiun vi s^atus log^i kune?");
eoecho("<p>Litoj:");
// if (!CXAMBROELEKTO_IJK) {
simpla_entajpbutono("dulita", $_SESSION["partopreno"]->datoj['dulita'], 'N', "kutima");
eoecho("plurlita c^ambro &nbsp; ");
// }
simpla_entajpbutono("dulita", $_SESSION["partopreno"]->datoj['dulita'], 'J');
eoecho("dulita c^ambro  &nbsp; ");
simpla_entajpbutono("dulita", $_SESSION["partopreno"]->datoj['dulita'], 'U');
eoecho("unulita c^ambro  &nbsp; <br/>\n");
if ($domotipo == "M" and $_SESSION["partopreno"]->datoj[dulita] == "J") {
    erareldono("<BR>Ne haveblas dulitaj c^ambroj memzorge");
}
echo "</p></blockquote>\n";
echo "<hr/>\n";
if (mangxotraktado == "ligita") {
    debug_echo("<!-- kunmangxas: " . $_SESSION['partopreno']->datoj['kunmangxas'] . "-->");
    $kunmangxas = $_SESSION['partopreno']->datoj['kunmangxas'];
    if ($kunmangxas == 'J' and $_SESSION['partopreno']->datoj['domotipo'] == 'J') {
        $kunmangxas = '?';
    }
    if ($kunmangxas == 'N' and $_SESSION['partopreno']->datoj['domotipo'] == 'M') {
        $kunmangxas = '?';
    }
 /**
  * varianto de la funkcio por gxeneralaj kategoriosistemoj,
  * kun redaktilo por la landokategorioj (en versio "redaktebla").
  */
 function listu_kategoriojn($versio)
 {
     parent::listu_kategoriojn($versio);
     if ($versio != 'redaktebla') {
         return;
     }
     // en la redaktebla versio: aldone listo de la landoj
     $katlisto = array();
     $landolisto = array();
     $sql = datumbazdemando(array('ID', 'nomo'), 'landokategorioj', array("sistemoID" => $this->datoj['ID']));
     $rez = sql_faru($sql);
     while ($linio = mysql_fetch_assoc($rez)) {
         $katlisto[] = $linio;
     }
     eoecho("<h3>Kategorioj de landoj</h3>");
     eoecho("<table class='kategorioj_de_landoj'>\n" . "<tr><th>landonomo</th>" . "<th>kodo</th>");
     foreach ($katlisto as $katLinio) {
         eoecho("<th>" . $katLinio['nomo'] . "</th>");
     }
     echo "</tr>\n";
     $sql = datumbazdemando(array('kategorioID', 'ID', 'nomo', 'kodo'), array('kategorioj_de_landoj', 'landoj'), array('ID = landoID', "sistemoID = '" . $this->datoj['ID'] . "'"), "", array('order' => 'kodo ASC'));
     $rez = sql_faru($sql);
     while ($landLinio = mysql_fetch_assoc($rez)) {
         $landolisto[$landLinio['ID']] = true;
         eoecho("<tr><td>" . $landLinio['nomo'] . "</td><td>" . $landLinio['kodo'] . "</td>");
         foreach ($katlisto as $katLinio) {
             echo "<td>";
             simpla_entajpbutono('landokategorio[' . $landLinio['ID'] . ']', $landLinio['kategorioID'], $katLinio['ID']);
             echo "</td>";
         }
         echo "</tr>\n";
     }
     $sql = datumbazdemando(array('ID', 'nomo', 'kodo'), 'landoj', "", "", array('order' => 'kodo ASC'));
     $rez = sql_faru($sql);
     if (mysql_num_rows($rez) > count($landolisto)) {
         if (DEBUG) {
             echo "<!-- " . var_export($landolisto, true) . "-->";
         }
         $len = 2 + count($katlisto);
         eoecho("<tr><th class='titolo-sen-kat' colspan='" . $len . "'> Landoj sen kategorio:</th></tr>\n");
         while ($landLinio = mysql_fetch_assoc($rez)) {
             if (!array_key_exists($landLinio['ID'], $landolisto)) {
                 eoecho("<tr><td>" . $landLinio['nomo'] . "</td><td>" . $landLinio['kodo'] . "</td>");
                 foreach ($katlisto as $katLinio) {
                     echo "<td>";
                     simpla_entajpbutono('landokategorio[' . $landLinio['ID'] . ']', false, $katLinio['ID']);
                     echo "</td>";
                 }
                 echo "</tr>\n";
             } else {
                 debug_echo("<!-- ekzistas: " . $landLinio['ID'] . "-->");
             }
         }
     }
     echo "</table>\n<p>(";
     rajtligu("landoj.php", "Redaktu landoliston", "", "administri");
     echo ")</p>";
 }
/**
 * Elektilo kun titolo, en du apudaj tabelcxeloj.
 *
 * @param string $nomo
 * @param u8string|array $titoloj la titolo de la elektilo.
 * @param array $elektoj  en formo
 *                          array(interna => teksto)
 * @param string $defauxlto
 * @param string|int $indekso por tabindex=...
 * @param string $aldonajxoj aldona teksto dekstre apud la montrilo.
 */
function aliĝilo_tabelelektilo_radie($nomo, $titoloj, $elektoj, $defauxlto = "", $kolumnoj = 1, $bezonata = false, $finu = true)
{
    echo "<th><label for='{$nomo}'>" . $titoloj . "</label></th>\n";
    $kromhtml = "";
    $klasoj = array();
    if ($bezonata) {
        $klasoj[] = "nepra";
    }
    if (is_array($GLOBALS['mankas']) and in_array($nomo, $GLOBALS['mankas'])) {
        $klasoj[] = "mankas";
    }
    if (count($klasoj)) {
        $kromhtml .= " class='" . implode(" ", $klasoj) . "'";
    }
    if ($kolumnoj > 1) {
        $kromhtml .= " colspan='" . $kolumnoj . "'";
    }
    echo "<td" . $kromhtml . ">\n";
    foreach ($elektoj as $interna => $teksto) {
        echo " <span class='elekteblo'>";
        simpla_entajpbutono($nomo, $_REQUEST[$nomo], $interna, $defauxlto == $interna ? "kutima" : "");
        eoecho($teksto);
        echo "</span> \n";
    }
    if ($finu) {
        echo "</td>\n";
    }
}