/**
 * @author jeremy@eolas.fr
 * Permet de gérer le diaporama avec des images de largeurs différentes
 */

YAHOO.namespace("YAHOO.diaporama");

YAHOO.diaporama.diaSizeBloc = new Array();
YAHOO.diaporama.diaNbLeftHiddenBloc = new Array();
YAHOO.diaporama.diaNbRightHiddenBloc = new Array();
YAHOO.diaporama.oDiaContainer = new Array();
YAHOO.diaporama.oDiaListing = new Array();
YAHOO.diaporama.aDiaBloc = new Array();
YAHOO.diaporama.oImgForward = new Array();
YAHOO.diaporama.oImgReward = new Array();
YAHOO.diaporama.srcForwardNone='';
YAHOO.diaporama.srcRewardNone='';
YAHOO.diaporama.srcNone = '';
YAHOO.diaporama.srcRight = '';
YAHOO.diaporama.srcLeft = '';
//var idInterval = null;

YAHOO.diaporama.load = function() {
	try {		
		if (YAHOO.diaporama.srcForwardNone == '') {
		    
			// initialisations des objects
			var aDiaporama = YAHOO.util.Dom.getElementsByClassName('diaporama');

			for(var i = aDiaporama.length -1; i >= 0; i--) {
                
                YAHOO.diaporama.oDiaContainer[i] = YAHOO.util.Dom.getElementsByClassName('diaporama_container','div',aDiaporama[i])[0];
                YAHOO.diaporama.oDiaListing[i] = YAHOO.util.Dom.getElementsByClassName('diaporama_listing','div',YAHOO.diaporama.oDiaContainer[i])[0];

                YAHOO.diaporama.oImgForward[i] = YAHOO.util.Dom.getElementsByClassName('imgForward','img',aDiaporama[i])[0];
                YAHOO.diaporama.oImgReward[i] = YAHOO.util.Dom.getElementsByClassName('imgReward','img',aDiaporama[i])[0];
                YAHOO.diaporama.aDiaBloc[i] = YAHOO.util.Dom.getElementsByClassName('bloc', 'div', YAHOO.diaporama.oDiaListing[i]);
    			// Mise a jour action
    	
    			var oAForward = YAHOO.util.Dom.getElementsByClassName('aForward','a',aDiaporama[i]);
                var oAReward = YAHOO.util.Dom.getElementsByClassName('aReward','a',aDiaporama[i]);
                
    			// ajout des listener
    			YAHOO.util.Event.addListener(oAForward, 'click', function(event,param) { YAHOO.diaporama.diaForward(param); },i);

    			YAHOO.util.Event.addListener(oAReward, 'click', function(event,param) {YAHOO.diaporama.diaReward(param); },i);
    			
    			// définition des sources pour les images    			
    			YAHOO.diaporama.srcForwardNone = YAHOO.diaporama.oImgForward[i].src;
    			YAHOO.diaporama.srcRewardNone = YAHOO.diaporama.oImgReward[i].src;
    			YAHOO.diaporama.srcRight = YAHOO.diaporama.srcForwardNone.replace('next_none', 'next');
    			YAHOO.diaporama.srcLeft = YAHOO.diaporama.srcRewardNone.replace('previous_none', 'previous');
    			
    		    
    			YAHOO.diaporama.constructDiaporama(i);
			}
		}
	} catch (ex) {
		alert('load:' + ex);
	}
}


 YAHOO.diaporama.resize = function() {
	if (YAHOO.diaporama.srcForwardNone == '') YAHOO.diaporama.load();
	else YAHOO.diaporama.constructDiaporama();
}

 YAHOO.diaporama.constructDiaporama = function(idDiaporama) {
	// Initialisation (pour le resize)
	if(YAHOO.diaporama.oImgForward[idDiaporama]) {
        YAHOO.diaporama.oImgForward[idDiaporama].src = YAHOO.diaporama.srcRight;
        YAHOO.diaporama.oImgForward[idDiaporama].alt = "images suivantes";
        YAHOO.util.Dom.setStyle(YAHOO.diaporama.oImgForward[idDiaporama], 'cursor', 'default');
	}
	if(YAHOO.diaporama.oImgReward[idDiaporama]) {
    	YAHOO.diaporama.oImgReward[idDiaporama].src = YAHOO.diaporama.srcLeft;
    	YAHOO.util.Dom.setStyle(YAHOO.diaporama.oImgReward[idDiaporama], 'cursor', 'default');
	}
	YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama] = 0;
	YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama] = 0;

	if (YAHOO.diaporama.aDiaBloc[idDiaporama]) {	
		cx = YAHOO.diaporama.oDiaContainer[idDiaporama].offsetWidth;
		var diaNbBloc = YAHOO.diaporama.aDiaBloc[idDiaporama].length;
		YAHOO.diaporama.diaSizeBloc[idDiaporama] = (YAHOO.diaporama.aDiaBloc[idDiaporama][0].offsetWidth) + 14;//default : marge 7px * 2 = 14
	  	  
		// Gestion Hauteur des blocs
		blcHeightNorm = YAHOO.diaporama.oDiaContainer[idDiaporama].offsetHeight;
		blcHeightMax = blcHeightNorm;
		
		// Récupération de la hauteur maximum des blocs
	  for (i=0;YAHOO.diaporama.aDiaBloc[idDiaporama][i];i++) if (YAHOO.diaporama.aDiaBloc[idDiaporama][i].offsetHeight > blcHeightMax) blcHeightMax = YAHOO.diaporama.aDiaBloc[idDiaporama][i].offsetHeight;
	  
	  try {
		  // Définition des hauteurs des blocs
		  for (i=0;YAHOO.diaporama.aDiaBloc[idDiaporama][i];i++) {
		  		
          aElm = YAHOO.util.Dom.getElementsByClassName('palette', 'div', YAHOO.diaporama.aDiaBloc[idDiaporama][i])
		  		useHeight = (aElm.length > 0 ? aElm[0].height : 0);
		  	    
				oUls = YAHOO.diaporama.aDiaBloc[idDiaporama][i].getElementsByTagName('ul');
				if (oUls.length > 0) useHeight += oUls[0].offsetHeight;
				
				margin = (blcHeightMax - useHeight - 10) / 2;
				if (margin >= 0) {
					aElm[0].style.marginTop = margin + 'px';
					aElm[0].style.marginBottom = margin + 'px';
				}
				YAHOO.diaporama.aDiaBloc[idDiaporama][i].style.height = (blcHeightMax - 10) + 'px';
			}
		} catch (ex) {
		  alert(ex)
		}
		var nbDisplayBloc = Math.floor(cx / YAHOO.diaporama.diaSizeBloc[idDiaporama]);
	    YAHOO.diaporama.oDiaContainer[idDiaporama].style.width = YAHOO.diaporama.diaSizeBloc[idDiaporama] * nbDisplayBloc + 'px';
		YAHOO.diaporama.oDiaContainer[idDiaporama].style.height = (blcHeightMax) + 'px';
	  	YAHOO.diaporama.oDiaContainer[idDiaporama].style.overflow = 'hidden';
		YAHOO.diaporama.oDiaContainer[idDiaporama].scrollLeft = 0;
	
		// Définition de la largeur du listing
		nb = 0;
		for (i=0;YAHOO.diaporama.aDiaBloc[idDiaporama][i];i++) {
			nb = nb + YAHOO.diaporama.aDiaBloc[idDiaporama][i].offsetWidth + 25;
		}
		YAHOO.diaporama.oDiaListing[idDiaporama].style.width = nb + 'px';

		YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama] = diaNbBloc -  nbDisplayBloc;
		YAHOO.diaporama.diaScrollMaj(idDiaporama);
	}
}

YAHOO.diaporama.diaScrollMaj = function(idDiaporama) {
	if (YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama] > 0) {
	    YAHOO.diaporama.oImgReward[idDiaporama].src = YAHOO.diaporama.srcLeft;
	    YAHOO.diaporama.oImgReward[idDiaporama].alt = "images precedentes";
	    //alert(YAHOO.diaporama.oImgReward[idDiaporama].alt);
	    YAHOO.diaporama.oImgReward[idDiaporama].style.cursor = 'pointer';
	} else {
		YAHOO.diaporama.oImgReward[idDiaporama].src = YAHOO.diaporama.srcRewardNone;
		YAHOO.diaporama.oImgReward[idDiaporama].alt = ''; 
		YAHOO.diaporama.oImgReward[idDiaporama].style.cursor = 'default';
	}
	
	if (YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama] > 0) {
        YAHOO.diaporama.oImgForward[idDiaporama].src = YAHOO.diaporama.srcRight;
        YAHOO.diaporama.oImgForward[idDiaporama].alt = "images suivantes";
        YAHOO.diaporama.oImgForward[idDiaporama].style.cursor = 'pointer';
	} else {
		YAHOO.diaporama.oImgForward[idDiaporama].src = YAHOO.diaporama.srcForwardNone;
		YAHOO.diaporama.oImgForward[idDiaporama].alt = "";
		YAHOO.diaporama.oImgForward[idDiaporama].style.cursor = 'default';
	}
}


YAHOO.diaporama.diaForward = function (idDiaporama) {
  if (YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama] > 0) {
    YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama]--;
    YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama]++;
    YAHOO.diaporama.oDiaContainer[idDiaporama].scrollLeft += YAHOO.diaporama.aDiaBloc[idDiaporama][YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama]-1].offsetWidth + 14;
  }
  YAHOO.diaporama.diaScrollMaj(idDiaporama)
}

YAHOO.diaporama.diaReward = function (idDiaporama) {
  if (YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama] > 0) {
    YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama]--;
    YAHOO.diaporama.diaNbRightHiddenBloc[idDiaporama]++;
    YAHOO.diaporama.oDiaContainer[idDiaporama].scrollLeft -= YAHOO.diaporama.aDiaBloc[idDiaporama][YAHOO.diaporama.diaNbLeftHiddenBloc[idDiaporama]].offsetWidth + 14;
  }
  YAHOO.diaporama.diaScrollMaj(idDiaporama);
}

