/**
  * Palauttaa palauteolion, joka sisältää kuvalomakkeen html:n
  * @return type 
  */
 public function toteuta_nayta_kuvalomake_havaintoihin()
 {
     $valitut = $this->valittujen_idt;
     $omaid = $this->get_parametriolio()->omaid;
     $palauteolio = $this->get_palauteolio();
     //======================== SECURITY ====================================
     // Ne muokattavat, jotka täyttävät valtuusehdot:
     /* @var $muokattavat array */
     $muokattavat = $this->poimi_valituista_mahdolliset($valitut);
     //======================================================================
     if (empty($valitut)) {
         $palauteolio->set_ilmoitus(Bongaustekstit::$ilm_ei_valintoja);
         $palauteolio->set_operaatio_onnistui(true);
         $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto());
     } else {
         if (empty($muokattavat)) {
             $palauteolio->set_ilmoitus(Bongaustekstit::$ilm_ei_kelvollisia_valintoja);
             $palauteolio->set_operaatio_onnistui(true);
             $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto());
         } else {
             $this->get_parametriolio()->kokoelmanimi = Kuva::$KUVAT_BONGAUS;
             // Haetaan ekan havainnon tiedot kuvaa varten:
             $hav = $muokattavat[0];
             if ($hav instanceof Havainto) {
                 $this->get_parametriolio()->id_hav = $hav->get_id();
                 $this->get_parametriolio()->kuvaotsikko_kuva = Lajiluokka::hae_lajiluokan_nimi($hav->get_lajiluokka_id(), $this->tietokantaolio(), $this->get_parametriolio()->kieli_id);
                 $this->get_parametriolio()->kuvaselitys_kuva = $hav->get_paikka() . ": " . $hav->get_kommentti();
                 $this->get_parametriolio()->vuosi_kuva = $hav->get_vuosi();
                 $this->get_parametriolio()->kk_kuva = $hav->get_kk();
                 $this->get_parametriolio()->paiva_kuva = $hav->get_paiva();
             }
             $havaintonakymat = new Havaintonakymat($this->get_tietokantaolio(), $this->get_parametriolio());
             $palauteolio->set_sisalto($havaintonakymat->luo_kuvalomake($muokattavat));
         }
     }
     return $palauteolio;
 }
/**
 * Palauttaa html:n albumin katselua varten, jossa näkyy kaikki albumin
 * kuvat pikkukuvina (1-8 rinnakkain).Kuvaa klikkaamalla saa sen näkyviin isona.
 *
 * Painike, josta palataan takaisin havaintolistaan.
 *
 * @param <type> $omaid
 * @param <type> $id_lj
 * @param <type> $tietokantaolio
 * @param <type> $valtuudet
 * @param <type> $kuvia_rinnakkain rivillä olevien kuvien lukumäärä
 * (mitä pienempi sitä isommat kuvat)
 * @param <type> $ikkunan_leveys
 * @param <type> $kuvahakumoodi Miten kuvat haetaan: pikkukuvat tietokannasta,
 * pikkukuvat tiedostosta vaiko isot kuvat tiedostosta (vanha tapa)
 * @return <type> Palauttaa albumihtml:n
 */
function bongaus_nayta_albumin_esikatselu($omaid, $id_lj, $tietokantaolio, $valtuudet, $kuvia_rinnakkain, $ikkunan_leveys, $kuvahakumoodi)
{
    // Tarkistetaan kuvamäärän parametrin sopivuus:
    if (!isset($kuvia_rinnakkain) || !is_numeric($kuvia_rinnakkain) || $kuvia_rinnakkain < 1 || $kuvia_rinnakkain > Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX) {
        $kuvia_rinnakkain = 4;
    }
    // Pakotetaan nopein. Oli vähän ongelmaa muuten.
    $kuvahakumoodi = Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto;
    // Tämä muuttuja kertoo, onko kyseessä lajin vai yläluokan id_lj. Myöhemmin
    // tarkistetaan asia.
    $on_ylaluokka = true;
    // Lasketaan ensin kuvien koot.
    $kuvateksti = false;
    // kuvatekstiä ei näytetä.
    // Bongauksessa on kolme palstaa, joten pitää leveyttä
    // säätää, jotta kuvat mahtuvat olemaan:
    $on_kaksipalsta = false;
    $MAX_LEV_KUVA = laske_kuvan_maksimileveys($kuvia_rinnakkain, $ikkunan_leveys, $kuvateksti, $on_kaksipalsta);
    $MAX_KORK_KUVA = laske_kuvan_maksimikorkeus($MAX_LEV_KUVA);
    $mj = "";
    //Metodin palauttama merkkijono.
    // Tätä tarvitaan, jotta koon muutos ikkunan kokoa muutettaessa löytää
    // oikean albumin ($id_alb ei päivity, jos albumi tuodaan ajaxin kautta).
    $piilo_id = "<span id ='piilo_id'>" . $id_lj . "</span>";
    $kuvan_lisaysnappi = "";
    // painike, josta saa näkyviin albumit:
    $onsubmit_funktionimi = "bongaus_nayta_albumit";
    $onsubmit_parametrit = array();
    $form_maaritteet = array("method" => "post", "class" => "rinnakkain", "action" => "../bongaus/index.php");
    $input_maaritteet = array("name" => Bongaustoimintonimet::$kuvatoiminto, "value" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_VALUE, "title" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_TITLE);
    $albuminaytto = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    // Nämä painikkeet tulevat aina näkyviin:
    $takaisin_nappi = "<form method='post' id='takaisin_nappi' " . "action='../bongaus/index.php'>" . "<input type='submit' name='" . Bongaustoimintonimet::$havaintotoiminto . "' value='" . Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE . "'/>" . "</form>";
    // Nämä painikkeet tulevat aina näkyviin:
    $diaesitysnappi = "<button type='button' title='" . Painikkeet::$NAYTA_DIAESITYS_TITLE . "' onClick=" . "'kaynnista_diaesitys(" . $id_lj . ", 1, " . bongaus_hae_albumin_kuvien_lkm($id_lj, $tietokantaolio, $omaid) . ",\"" . Kuva::$KUVAT_BONGAUS . "\")'>" . Painikkeet::$NAYTA_DIAESITYS_VALUE . "</button>";
    // Tämä sisältää pikkukuvien kokohallinnan:
    $esikatselukoko = " Koon s&auml;&auml;t&ouml;: " . "<input type='button' class='button_alas'" . "onclick=\"pienenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$PIENEMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>" . " Kuvia rivill&auml;: <span id='kuvia_rinnakkain'>" . $kuvia_rinnakkain . "</span> " . "<input type='button' class='button_alas'" . "onclick=\"suurenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$SUUREMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>";
    // Selvitetään ensin, onko lajiluokka laji vai yläluokka. Tämä ratkaisee
    // ainakin sen, voiko lisätä uusia kuvia:
    $lajiluokkaolio = "";
    if (isset($id_lj) && $id_lj != "") {
        $taulunimi = "blajiluokat";
        $sarakenimi = "id";
        $hakuarvo = $id_lj;
        $lajiluokkaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
        // Lajilla on aina nollaa suurempi ylaluokka-tunniste:
        if ($lajiluokkaolio->ylaluokka_id > -1) {
            $on_ylaluokka = false;
        } else {
            $on_ylaluokka = true;
        }
    } else {
        // Muuten lopetetaan tykkänään tähän:
        return 'Albumia ei m&auml;&auml;ritelty!';
        exit;
    }
    // Haetaan lajiluokan nimi (suomeksi vain tällä hetkellä):
    $kielen_nro = Kielet::$SUOMI;
    $nimi = Lajiluokka::hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kielen_nro);
    // Kuvia voi lisätä vain lajiin, ei yläluokkaan, jotta laji
    // saadaan muistiin.
    if (!$on_ylaluokka) {
        $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_bong' " . "action='../bongaus/index.php?id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$UUSI_KUVA_VALUE . "'/>" . "</form>";
    }
    $kuva_alt = "";
    // Html-img-elementin alt-määritteen arvo.
    $aika = "";
    // Kuvan ottoaika
    // Haetaan kaikki albumin kuvat (sopivalla where-ehdolla):
    $where_ehto = "blajiluokat.id = {$id_lj}";
    if ($on_ylaluokka) {
        $where_ehto = "blajiluokat.ylaluokka_id = {$id_lj}";
    }
    // Haetaan albumin kuvien tiedot:
    $hakulause = "SELECT DISTINCT kuvat.id AS kuva_id, tiedostonimi, tiedostokoko,\n                    leveys, korkeus, src, kuvaotsikko, kuvaselitys\n                    FROM kuvat\n                    JOIN bkuvalinkit AS linkit\n                    ON kuvat.id = linkit.kuva_id\n                    JOIN blajiluokat\n                    ON blajiluokat.id = linkit.lajiluokka_id\n                    WHERE {$where_ehto}\n                    AND (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n                        OR kuvat.henkilo_id = " . $omaid . ")\n                    ORDER BY linkit.jarjestysluku DESC";
    $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    $lkm = sizeof($osumat);
    $kuvamj = "<table id='esikatselukuvat'><tr>";
    if ($lkm > 0) {
        $laskuri = 0;
        // Laskee kuvien määrän.
        foreach ($osumat as $kuvatiedot) {
            $laskuri++;
            $kuva_alt = $kuvatiedot->tiedostonimi . " (" . round($kuvatiedot->tiedostokoko / 1000) . " kt)";
            // Muokataan kuvan koko sopivaksi eli pienennetään, jos leveys on yli
            // $MAX_LEV_KUVA. Leveyden ja korkeuden suhde säilytetään.
            $lev = $kuvatiedot->leveys;
            $kork = $kuvatiedot->korkeus;
            $nayttolev = $kuvatiedot->leveys;
            $nayttokork = $kuvatiedot->korkeus;
            // Kuvan suurin mitta tulee siis samaksi. Leveä kuva on yhtä leveä
            // kuin korkea kuva on korkea.
            if ($kork != 0 && $lev != 0) {
                $suhde = $kork / $lev;
                // Vaakasuora kuva:
                if ($suhde < 1 && $lev > $MAX_LEV_KUVA) {
                    $nayttolev = $MAX_LEV_KUVA;
                    $nayttokork = round($MAX_LEV_KUVA * $suhde);
                }
                // Pystysuora kuva:
                if ($suhde >= 1 && $kork > $MAX_KORK_KUVA) {
                    $nayttokork = $MAX_KORK_KUVA;
                    $nayttolev = round($MAX_KORK_KUVA / $suhde);
                }
            }
            // Otetaan pienin mahdollinen kuva tietokannasta tai ellei
            // siellä ole tarpeeksi isoa, niin tiedostosta sitten:
            $kuva_id = $kuvatiedot->kuva_id;
            $maxmitta = max(array($nayttokork, $nayttolev));
            // Haku tietokannasta:
            if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tietokanta) {
                if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) {
                    $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=pieni'";
                } else {
                    if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) {
                        $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=iso'";
                    } else {
                        $src = "'" . $kuvatiedot->src . "'";
                    }
                }
            } else {
                if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto) {
                    if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) {
                        $osoite_mini1 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva1_nimen_osa . $kuvatiedot->tiedostonimi;
                        $src = "'" . $osoite_mini1 . "'";
                    } else {
                        if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) {
                            $osoite_mini2 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva2_nimen_osa . $kuvatiedot->tiedostonimi;
                            $src = "'" . $osoite_mini2 . "'";
                        } else {
                            if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO2_MITTA) {
                                $osoite_mini3 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva3_nimen_osa . $kuvatiedot->tiedostonimi;
                                $src = "'" . $osoite_mini3 . "'";
                            } else {
                                $src = "'" . $kuvatiedot->src . "'";
                            }
                        }
                    }
                } else {
                    $src = "'" . $kuvatiedot->src . "'";
                }
            }
            // Kuvaa klikkaamalla saadaan se isoksi:
            $klikkaus = "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','" . $kuva_id . "','" . Kuva::$KUVAT_BONGAUS . "')\"";
            $kuvamj .= "<td class='kuva'>" . "<img src=" . $src . " " . $klikkaus . "width='" . $nayttolev . "' height='" . $nayttokork . "' " . "alt='" . $kuva_alt . "' title='" . $kuvatiedot->kuvaotsikko . " " . $kuvatiedot->kuvaselitys . "'/>" . "</td>";
            // Rivinvaihto aina sopivaan paikkaan:
            if ($laskuri % $kuvia_rinnakkain == 0) {
                $kuvamj .= "</tr><tr>";
            }
        }
        $kuvamj .= "</tr></table>";
    } else {
        $kuvamj = "<h3/>Kansiossa ei ole kuvia!</h3>";
    }
    $mj = "<div id='albumi'>" . "<h2>Bongauskuvia: " . $nimi . " (" . $piilo_id . $lkm . " kuvaa)</h2>";
    $mj .= "<div id='nappirivi'>" . $albuminaytto . $takaisin_nappi . $kuvan_lisaysnappi . $esikatselukoko . $diaesitysnappi . "</div>";
    $mj .= "<div id='kuvaruutu'>" . $kuvamj . "</div>";
    $mj .= "</div>";
    //Albumin loppu.
    return $mj;
}