/* permet de charger la description d'une photo au passage de la souris */
function loadDescription(msg,num){
	$('numdescription').addClassName('fondbleu');
	$('numdescription').update(num);
	$('zonedescription').update(msg);
}
/* permet de supprimer la zone de description une fois la souris en dehors de photo */
function hideDescription(){
	if($("zoomimg_zone").style.display=='none'){
		$('numdescription').update('');
		$('numdescription').removeClassName('fondbleu');
		$('zonedescription').update('');
	}
}
function initCursorPhotos(total){
	var sizeAsc = 316; //taille de l'ascenseur

	if(total > 12){
		//calcul des pages
		var nbpages = Math.floor(total/12);
		if(total%12 == 0) nbpages = nbpages - 1;
	
		//reglage de la taille du curseur
		var cursorSize = Math.floor(sizeAsc / (nbpages + 1));
		var erreurRound = sizeAsc - (cursorSize * nbpages); //permet de gérer les erreurs d'imprécision du à l'arrondi
		$("cursorAscenseur").style.height = cursorSize + 'px';
	
		//reglage taille zone cliquable bas
		var zoneBasSize = sizeAsc - cursorSize;
		$("zoneCliquableAscenseurD").style.height = zoneBasSize +'px'; ;
	}
}
/* charge les photos demandés au clique sur l'ascenseur et gère egalement le defilement de celui ci */
function getNextPhotos(offset,rubrique,total,action){
	var sizeAsc = 316; //taille de l'ascenseur

	if(offset >= 0 && offset < total){
		//calcul des pages
		var nbpages = Math.floor(total/12);
		if(total%12 == 0) nbpages = nbpages - 1;
		var page = Math.floor(offset / 12);
		
		//reglage de la taille du curseur
		var cursorSize = Math.floor(sizeAsc / (nbpages+1));
		var erreurRound = sizeAsc - (cursorSize * nbpages); //permet de gérer les erreurs d'imprécision du à l'arrondi
		$("cursorAscenseur").style.height = cursorSize + 'px';
		
		//réglage du placement du curseur
		var paddingMax = sizeAsc - cursorSize;
		var onepage_padding = paddingMax / nbpages;
		var paddingtocurs =   onepage_padding * page;
		if(paddingtocurs >= (sizeAsc - cursorSize)) paddingtocurs = paddingMax; //gestion des erreurs
		//$('cursorAscenseur').up('div').style.paddingTop=paddingtocurs;
		
		//réglage des tailles des zones cliquable bas et haut
		var zoneHautSize = paddingtocurs;
		$("zoneCliquableAscenseurM").style.height = zoneHautSize +'px';
		//$("zoneCliquableAscenseurM").style.marginTop = -zoneHautSize +'px';
		var zoneBasSize = sizeAsc - (paddingtocurs + cursorSize);
		$("zoneCliquableAscenseurD").style.height = zoneBasSize +'px';
		//alert($("zoneCliquableAscenseurM").style.height + 'p:' + $("zoneCliquableAscenseurM").style.padding + 'm:' + $("zoneCliquableAscenseurM").style.margin);
		
		/*var onepage_padding = 291 / nbpages;
		var paddingtocurs =   onepage_padding * page;
		$('cursorAscenseur').up('div').style.paddingTop=paddingtocurs;*/
		

		//blocage des actions pr eviter les bugs
		$('ascenseurD').onclick = function(){};
		$('ascenseurM').onclick = function(){};
		
		//chargement des images
		$('galerie').update('<tr><td align="center" valign="center" height="384"><img alt="chargement..." src="../images/load2.gif" /></td></tr>'); //image de préchargement
		
		param = "&offset=" + offset;
		param += "&rubrique=" + rubrique;
		url = 'ajax.php?action=getPhotos';
		new Ajax.Updater('galerie',url,
						 {method : 'post',
						  parameters : param,
						  evalScripts : true,
						  asynchronous : true,
						  onComplete : function(t){
						  		//changement des futurs actions
						  		offsetM = offset - 12;
						  		offsetD = offset + 12;
								$('ascenseurD').onclick = function(){ getNextPhotos(offsetD, rubrique, total); };
								$('zoneCliquableAscenseurD').onclick = function(){ getNextPhotos(offsetD, rubrique, total); };
								$('ascenseurM').onclick = function(){ getNextPhotos(offsetM, rubrique, total); };	
								$('zoneCliquableAscenseurM').onclick = function(){ getNextPhotos(offsetM, rubrique, total); };
						  }});
	}
	
}
/* permet d'afficher ou non l'ascenseur sur les pages de textes */
function getAscenseur(){
	var zone_height = $('liste_pf_int').getHeight();
	if(zone_height > 335) $("ascenseur_div").show();
}
/* permet d'initialiser l'ascenseur sur les pages de textes */
function initCursorText(){
	var pas = 50; //pas de defilement (px)
	var sizeAsc = 316; //hauteur de l'ascenseur
	
	var zul = $('liste_pf_int');//zone de contenu
	var zul_height = zul.getHeight();//hauteur de la zone de contenu
	
	if(zul_height > 335){
		//var zul_top = zul.style.top; //positionnement actuel de la zone de contenu
	
		var nbDefilement = Math.ceil((zul_height-335) / pas ); //nombre de defilements
	
		//calcul de la hauteur du curseur
		var cursorSize = Math.floor(sizeAsc / nbDefilement);
		//alert(cursorSize);
		$('cursorAscenseur').style.height = cursorSize + "px";
		
		//hauteur de la zone cliquable du bas
		var zoneBasHeight = sizeAsc - cursorSize;
		//$('zoneCliquableAscenseurM').style.height = 0;
		$('zoneCliquableAscenseurD').style.height = zoneBasHeight;
		
		getAscenseur(); //bug de internet explorer
	}
}
/* permet de gérer l'ascenseur des pages de texte*/
function defile(sens){
	var pas = 50; //pas de defilement (px)
	var sizeAsc = 316; //hauteur de l'ascenseur
	
	var zul = $('liste_pf_int');//zone de contenu
	var zul_height = zul.getHeight();//hauteur de la zone de contenu
	
	var zul_top = zul.style.top; //positionnement actuel de la zone de contenu
	
	var nbDefilement = Math.ceil((zul_height-335) / pas ); //nombre de defilements
	
	//calcul de la hauteur du curseur
	var cursorSize = Math.floor(sizeAsc / nbDefilement);
	$('cursorAscenseur').style.height = cursorSize;
	
	
	var paddingByDef = (sizeAsc-cursorSize)/nbDefilement; //calcul du padding a incrémenter

	//var paddTop = $('cursorAscenseur').up('div').style.paddingTop; //recuperation du padding actuel
	var paddTop = $('zoneCliquableAscenseurM').style.height; //on utilise pas les padding a cause de internet explorer qui les gère mal
	
	if(sens == 'down'){ //si le sens est descendre
		if(zul_top != ""){
			if((parseInt(zul_top) - 335) >= -zul_height){
				nzul_top = parseInt(zul_top) - pas;
				var newPaddingTop = parseInt(paddTop) + paddingByDef;
				if(newPaddingTop > ((sizeAsc-cursorSize)-paddingByDef)) newPaddingTop = (sizeAsc-cursorSize); //permet de rectifier les erreurs d'imprécision
			}
		}
		else{
			nzul_top = -pas;
			var newPaddingTop = paddingByDef;
		}
	}
	else if(sens == 'up'){ //sinon si on monte
		if(parseInt(zul_top) < -pas && zul_top != ""){
			nzul_top = parseInt(zul_top) + pas;
			var newPaddingTop = parseInt(paddTop) - paddingByDef;
		}
		else{
			nzul_top = 0;
			var newPaddingTop = 0;
		}
		
	}
	//calcul des nouvelles hauteur des zones cliquables
	var zoneBasHeight = sizeAsc - (cursorSize + newPaddingTop);
	var zoneHautHeight = newPaddingTop;
	$('zoneCliquableAscenseurD').style.height = zoneBasHeight  + "px";
	$('zoneCliquableAscenseurM').style.height = newPaddingTop + "px";
	//$('zoneCliquableAscenseurM').style.marginTop = -newPaddingTop  + "px";
	
	//déplacement du curseur (changement de padding)
	//$('cursorAscenseur').up('div').style.paddingTop = newPaddingTop + "px";
	zul.style.top = nzul_top + "px";
}
/* Redimensionne une image
 * retourne un tableau [0] : image; [1] : width; [2] : height;
 */
 function redimImage(inImg, inMW, inMH)
{
  // Cette function recoit 3 parametres
  // inImg : Chemin relatif de l'image
  // inMW  : Largeur maximale
  // inMH   : Hauteur maximale
  var maxWidth = inMW;
  var maxHeight = inMH;
  // Declarations des variables "Nouvelle Taille"
  var dW = 0;
  var dH = 0;
  // Declaration d'un objet Image
  var oImg = new Image();
  // Affectation du chemin de l'image a l'objet
  oImg.src = inImg;
  // On recupere les tailles reelles
  var h = dH = oImg.height;
  var w = dW = oImg.width;
  // Si la largeur ou la hauteur depasse la taille maximale
  if ((h >= maxHeight) || (w >= maxWidth)) {
    // Si la largeur et la hauteur depasse la taille maximale
    if ((h >= maxHeight) && (w >= maxWidth)) {
      // On cherche la plus grande valeur
      if (h > w) {
        dH = maxHeight;
        // On recalcule la taille proportionnellement
        dW = parseInt((w * dH) / h, 10);
      } else {
        dW = maxWidth;
        // On recalcule la taille proportionnellement
        dH = parseInt((h * dW) / w, 10);
      }
    } else if ((h > maxHeight) && (w < maxWidth)) {
      // Si la hauteur depasse la taille maximale
      dH = maxHeight;
        // On recalcule la taille proportionnellement
      dW = parseInt((w * dH) / h, 10);
    } else if ((h < maxHeight) && (w > maxWidth)) {
      // Si la largeur depasse la taille maximale
      dW = maxWidth;
        // On recalcule la taille proportionnellement
      dH = parseInt((h * dW) / w, 10);
    }
  }
  // On retourne l'image
  var imgRedim = "<img src=\"" + inImg + "\" width=\"" + dW + "\" height=\"" + dH + "\" border=\"0\">";
  var infoImg = new Array(imgRedim,dW,dH);
  return infoImg;

}
/*
 * Affiche un zoom d'une image dont le chemin est passé en paramètre
 */
 function getImg(image,desc,num){
	var maxW = 506;
	var maxH = 346;
	
	//redimensionnement de l'image
	var imgRedim = redimImage(image,maxW,maxH);	
	$("zoomimg").update(imgRedim[0]);
	
	//application des bons paddings
	var padTop = Math.floor((maxH - imgRedim[2]) / 2);
	var padLeft = Math.floor((maxW - imgRedim[1]) / 2);
	$("zoomimg").style.paddingTop = padTop ;
	$("zoomimg").style.paddingLeft = padLeft ;
	
	$("zoomimg_zone").show();
	loadDescription(desc,num);
}
/*
 * Ferme la zone de zoom d'une image
 */
function closeImg(){
	$("zoomimg_zone").hide();
	hideDescription();
}



