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

YAHOO.namespace("YAHOO.diaporama");

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

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

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

                oImgForward[i] = YAHOO.util.Dom.getElementsByClassName('imgForward','img',aDiaporama[i])[0];
                oImgReward[i] = YAHOO.util.Dom.getElementsByClassName('imgReward','img',aDiaporama[i])[0];
                aDiaBloc[i] = YAHOO.util.Dom.getElementsByClassName('bloc', 'div', 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    			
                srcNone = oImgForward[i].src;
    			srcRight = srcNone.replace('none', 'next');
    			srcLeft = srcNone.replace('none', 'previous');
    		    
    			YAHOO.diaporama.constructDiaporama(i);
			}
		}
	} catch (ex) {
		alert('load:' + ex);
	}
}


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

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

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

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

YAHOO.diaporama.diaScrollMaj = function(idDiaporama) {
	if (diaNbLeftHiddenBloc[idDiaporama] > 0) {
	    oImgReward[idDiaporama].src = srcLeft;
		oImgReward[idDiaporama].style.cursor = 'pointer';
	} else {
		oImgReward[idDiaporama].src = srcNone;
		oImgReward[idDiaporama].style.cursor = 'default';
	}
	
	if (diaNbRightHiddenBloc[idDiaporama] > 0) {
        oImgForward[idDiaporama].src = srcRight;
		oImgForward[idDiaporama].style.cursor = 'pointer';
	} else {
		oImgForward[idDiaporama].src = srcNone;
		oImgForward[idDiaporama].style.cursor = 'default';
	}
}


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

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