/**
  * Palauttaa taulukon, jonka avulla henkilöitä voidaan suodattaa tai
  * suodatuksia poistaa. 
  * 
  * @param Henkilo $omistaja
  * @param type $kohdehenkilo
  * @param type $paluupainike
  * @return type
  */
 public function nayta_suodatinlomake($omistaja, $kohdehenkilot, $paluupainike)
 {
     $maar_array = array();
     // Kun ei määritteitä tarvita.
     //======================================================================
     // Sitten taulukko kasaan, Rivi 1:
     $sisalto = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_otsikko, array(Maarite::colspan(2))), $maar_array);
     // Rivi 2:
     $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_omat_suodattimet, array()) . Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_kohdehenkilo, array()), $maar_array);
     // Suodatinrivit (käyttäjä itse ei ole mukana):
     foreach ($kohdehenkilot as $henkilo) {
         if ($henkilo instanceof Henkilo) {
             // Katsotaan, onko kohde jo suodatettu:
             if ($henkilo->getSuodatus_kohde() == Henkilo::$suodatus_ON) {
                 $valittu = Maarite::checked();
             } else {
                 $valittu = "";
             }
             // Katsotaan, suodattaako kohde jo käyttäjän:
             if ($henkilo->getSuodatus_lahde() == Henkilo::$suodatus_ON) {
                 $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_pun.png"), Maarite::alt("Red circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_punapallo_title)));
             } else {
                 $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_vihr.png"), Maarite::alt("Green circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_viherpallo_title)));
             }
             $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_checkbox(array($valittu, Maarite::id("suodatus" . $henkilo->get_id()), Maarite::onclick("suodata", array($omistaja->get_id(), $henkilo->get_id(), Maarite::js_this_juttu("this.piip"))))), array(Maarite::style("text-align:center"))) . Html::luo_tablesolu(Html::luo_span($henkilo->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $vari, array(Maarite::style("white-space:nowrap"))), array(Maarite::style("text-align:left"))), $maar_array);
         }
     }
     // Lisätään vielä paluupainike:
     $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko($paluupainike, array(Maarite::colspan(2))), $maar_array);
     $taulukkohtml = Html::luo_table($sisalto, array(Maarite::id("suodatuslomake")));
     return $taulukkohtml;
 }
 /**
  * Palauttaa uuden yksittäisen havainnon tietojen syöttöön tarkoitetun
  * lomakkeen.
  * 
  * <p>Riippuvuudet: yhteiset/php_yhteiset.php</p>
  * 
  * @return string
  */
 function nayta_uusi_havaintolomake()
 {
     $ylaluokka_id_lj = $this->parametriolio->ylaluokka_id_lj;
     $kieli_kuv = $this->parametriolio->kieli_kuv;
     $tietokantaolio = $this->parametriolio->get_tietokantaolio();
     // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi.
     $tallennuskommentti = $this->parametriolio->get_tallennuspalaute();
     // Mahdolliset arvot voivat olla epätyhjiä puutteellisen yrityksen
     // jälkeen (ei tartte uudestaan naputella):
     $id_hav = $this->parametriolio->id_hav;
     $lajiluokka_id_hav = $this->parametriolio->lajiluokka_id_hav;
     $paiva_hav = $this->parametriolio->paiva_hav;
     $kk_hav = $this->parametriolio->kk_hav;
     $vuosi_hav = $this->parametriolio->vuosi_hav;
     $paikka_hav = $this->parametriolio->paikka_hav;
     $kommentti_hav = $this->parametriolio->kommentti_hav;
     $maa_hav = $this->parametriolio->maa_hav;
     $varmuus_hav = $this->parametriolio->varmuus_hav;
     //=============================================================
     $poistunappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE)));
     $uusi_laji_nappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$lajiluokkatoiminto), Maarite::value(Bongauspainikkeet::$UUSI_LAJILUOKKA_VALUE)));
     $havaintolomakeohje = Bongaustekstit::$havaintolomake_uusi_ohje;
     $submitnappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_UUSI_HAVAINTO_VALUE)));
     // Lajivalikko (kun vain yksi valittu)
     $otsikko = "";
     $lajivalikko = Lajiluokka::nayta_lajivalikko($lajiluokka_id_hav, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko);
     /*************************************************************************/
     $maavalikkohtml = "";
     try {
         $arvot = Maat::hae_maa_arvot();
         $nimet = Maat::hae_maakuvaukset();
         $name_arvo = Maat::$tietokannan_sarakenimi;
         $oletusvalinta_arvo = $maa_hav;
         $otsikko = Maat::$valikko_otsikko;
         $onchange_metodinimi = "kirjoita_maa";
         $onchange_metodiparametrit_array = array();
         $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
     } catch (Exception $poikkeus) {
         $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")";
     }
     /*************************************************************************/
     $naytettava_valinta = $varmuus_hav;
     $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta);
     // kommentin muotoilu:
     if (!empty($tallennuskommentti)) {
         $tallennuskommentti = $tallennuskommentti . Html::luo_br();
     }
     // Tallennetun näyttö tallennuksen jälkeen. Nyt pitää arvata eli
     // katsoa tietokannasta suurin id ja sillä perusteella asettaa
     // arvoksi sitä yksi isompi.
     $id_hav_uusi = hae_suurin_id($this->tietokantaolio, Tietokannan_taulunimet::$bhavainnot) + 1;
     $url_jatke_nyk = "#havainto" . $id_hav_uusi;
     $url_id = "?id_hav=" . $id_hav_uusi . $url_jatke_nyk;
     // Näin löytyy päivitettävä havainto!
     $maar_array = array();
     // Rivi1: ohjeita
     $rivi1 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . $havaintolomakeohje, $maar_array), array(Maarite::colspan(2))), $maar_array);
     // taulukkorivi
     // Toinen rivi: pvm-painikkeet
     $rivi2 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::onclick("nayta_ed", ""))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::onclick("nayta_seur()", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::onclick("nayta_seur_vko()", ""))), array(Maarite::colspan(2), Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivi3: pvm-kentät
     $rivi3 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("paiva", "*" . Bongaustekstit::$paiva . ":", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("kk", "*" . Bongaustekstit::$kk . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("vuosi", "*" . Bongaustekstit::$vuosi . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size("4"), Maarite::max_length("4"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // painike, josta saadaan näkyviin monta lajia kerralla:
     $rivi4 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("submit"), Maarite::value(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_VALUE), Maarite::title(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_TITLE), Maarite::name(Bongaustoimintonimet::$havaintotoiminto))), array(Maarite::align("left"))), $maar_array);
     // rivi5: Lajivalinta
     $rivi5 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa_myohemmin", "*" . Bongaustekstit::$laji . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_span($lajivalikko, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikko_id))) . Html::luo_span($uusi_laji_nappi, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikkopainike_id))) . Html::luo_span("(" . Bongaustekstit::$havaintolomake_laji_puuttuu_ohje . ")", array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintaohje_id))), array(Maarite::align("left"), Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintarivi_id))), $maar_array);
     // taulukkorivi
     // rivi6: Paikka ja maa:
     $rivi6 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", "*" . Bongaustekstit::$paikka . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav))) . $maavalikkohtml, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi7: Havainnon varmuus:
     $rivi7 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", Varmuus::$valikko_otsikko, ""), array(Maarite::align("left"))) . Html::luo_tablesolu($varmuusvalikko, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi8: Havaintokommentti:
     $rivi8 = Html::luo_tablerivi(Html::luo_tablesolu(Bongaustekstit::$kommentti, array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_textarea($kommentti_hav, array(Maarite::cols(50), Maarite::rows(6), Maarite::name("kommentti_hav"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi9: Painikkeet:
     $rivi9 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu($submitnappi . $poistunappi, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivit taulukon sisään:
     $taulukko = Html::luo_table($rivi1 . $rivi2 . $rivi3 . $rivi4 . $rivi5 . $rivi6 . $rivi7 . $rivi8 . $rivi9, array(Maarite::summary("uudet_tiedot"), Maarite::id(Bongausasetuksia::$havaintolomakkeen_id)));
     // Taulukko lomakkeen sisään:
     $html = Html::luo_form($taulukko, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id)));
     // näytetään js-päivämäärä
     $html .= Html::luo_script_js("nayta_pvm();");
     return $html;
 }