/**@file
 *
 *  Fichier contenant les fonctions javascript spécifiques au front des minibases
 */
function Minibase(id, url, base_url) {
    this.id       = id;
    this.url      = url;
    this.base_url = base_url;
};

/** @brief Recharge la page avec le nouveau tri passé en GET
 *  @param champ_tri Le select listant les champs sur lesquels un tri est possible
 *  @param champ_sens Le select définissant le sens du tri
 *  @param num_page L'index de la page actuelle
 *  @param recherche Le paramètre GET indiquant la recherche en cours sur la page
 */
Minibase.prototype.tri = function (champ_tri, champ_sens, num_page, recherche) {
    if (champ_tri.value != '' && champ_sens.value != '') {
        this.go('num_page=' + num_page + recherche + '&tri_front=' + champ_tri.value + '_' + champ_sens.value);
    }
};


/** @brief Recharge la page avec le nouveau nombre d'enregistrements par page passé en GET
 *  @param max_par_page Le nombre maximal d'enregistrements par page
 *  @param num_page L'index de la page actuelle
 *  @param recherche Le paramètre GET indiquant la recherche en cours sur la page
 *  @param tri Le paramètre GET indiquant le tri en cours sur la page
 */
Minibase.prototype.maxParPage = function (max_par_page, num_page, recherche, tri) {
    var nouveau_num_page;
    //L'index de la page actuelle est conservé avec le changement du nombre d'éléments par page
    if (num_page % max_par_page == 0) {
        nouveau_num_page = num_page;
    } else {
        //S'il y a moins d'éléments dans la page actuelle que le nombre maximal choisi
        if (num_page < max_par_page) {
            nouveau_num_page = 0;
        } else if (num_page > max_par_page) {
            var k = Math.floor(num_page / max_par_page) + 1;
            if (num_page < (k * max_par_page)) {
                nouveau_num_page = (k - 1) * max_par_page;
            }
        }
    }
    this.go('num_page=' + nouveau_num_page + recherche + tri + '&max_par_page=' + max_par_page);
};


/** @brief Affiche une grande image lors du clic sur la vignette correspondante
 *  @param id_image L'identifiant de la grande image
 *  @param url_image L'url de l'image à afficher
 *  @param url_grande_image L'url de la grande image à afficher dans la lightbox
 *  @param libelle_image Le libellé de l'image à afficher
 */
Minibase.prototype.imageZoom = function (id_image, url_image, url_grande_image, libelle_image) {
    objet_image = document.getElementById(id_image);
    objet_image.src      = url_image;
    objet_lightbox       = document.getElementById('ancre_' + id_image);
    objet_lightbox.href  = url_grande_image;
    objet_lightbox.title = libelle_image;
};


/** @brief Affiche une grande image lors du clic sur la vignette correspondante
 *  @param id_image L'identifiant de la grande image
 *  @param url_image L'url de l'image à afficher
 *  @param url_grande_image L'url de la grande image à afficher dans la lightbox
 *  @param libelle_image Le libellé de l'image à afficher
 */
Minibase.prototype.go = function (querystring) {
    document.location.href = this.base_url + this.url + (this.url.indexOf('\?') >= 0 ? '&' : '?') + querystring;
};

Minibase.prototype.gorewrite = function (url_rewrite) {
    document.location.href = this.base_url + url_rewrite;
};
