/**@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;
};