//          ________
//          |/\/\/\|
//          | o o  |
//-----oOOO---(_---OOOo---------------------------------------------------------------------------------------
//
// Auteur      : Chanh T.Do [Thoransoft - 2008.05.08]
// Description : Script utilisé pour animation des transitions d'opacité des images.
// JScript File
//------------------------------------------------------------------------------------------------------------

/**
* @fileOverview
  blendtrans.js [JScript File]: <br>
  Script utilisé pour animation des transitions d'opacité des images.<br>
  @author: Chanh T.Do [www.thoransoft.com - 2008.05.08] <br>
  Version 1.0 */

//----- opacity -----
/** Fonction permettant de modifier l'opacité d'un élément (image ou DIV).
    @param {string} id - ID de l'élément
    @param {int} opacStart - Opacité de départ (en général on met 0)
    @param {int} opacEnd - Opacité de d'arrivé (en général on met 100)
    @param {int} millisec - Durée de l'animation (en milliseconde) */
function opacity(id, opacStart, opacEnd, millisec)
{
  var speed = Math.round(millisec / 100);   //Vitesse des frames
  var timer = 0;                            //Timer commence à 0

  //Déterminer la direction du blend. Si la valeur d'opacité de départ et de d'arrivé est la même,
  //Il ne se passera absolument rien.
  if(opacStart > opacEnd) 
  {
    for(i = opacStart; i >= opacEnd; i--) 
    {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
      timer++;
    }
  } 
  else if(opacStart < opacEnd) 
  {
    for(i = opacStart; i <= opacEnd; i++)
    {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
      timer++;
    }
  }
}


//----- changeOpac -----
/** Fonction permettant de modifier l'opacité pour chacun des browsers (compatibilité).
    @param {int} opacity - Opacité (entre 0 et 100>)
    @param {string} id - ID de l'élément */
function changeOpac(opacity, id) 
{
  var object = document.getElementById(id).style; 
  object.opacity = (opacity / 100);
  object.MozOpacity = (opacity / 100);
  object.KhtmlOpacity = (opacity / 100);
  object.filter = "alpha(opacity=" + opacity + ")";
}


//----- shiftOpacity -----
/** Fonction permettant de d'échanger l'opacité par son contraire. Si l'opacité de l'élément 
    est de 100, on mettra 0 comme opacité et vice versa.
    @param {string} id - ID de l'élément
    @param {int} millisec - Durée de l'animation (1000, 2000, 3000 etc.) */
function shiftOpacity(id, millisec)
{
  //Si un élément est invisible, on le rend visible. Sinon, on le rend invisible
  if(document.getElementById(id).style.opacity == 0) { opacity(id, 0, 100, millisec); } 
  else { opacity(id, 100, 0, millisec);	}
}


//----- blendimage -----
/** Fonction permettant de changer une image sur une autre.<br>
    <b>Note</b>: Cette fonction nécessite un conteneur.
    @param {string} divid - ID du div de l'image (conteneur de l'image)
    @param {string} imageid - ID de la première image
    @param {string} imagefile - Source de la 2e image (nom du fichier avec le chemin)
    @param {int} millisec - Durée en milliseconde */
function blendimage(divid, imageid, imagefile, millisec) 
{
  var speed = Math.round(millisec / 100);
  var timer = 0;
	
  //Mettre l'image courante en background
  document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
  changeOpac(0, imageid);                             //Rendre l'image transparente
  document.getElementById(imageid).src = imagefile;   //Créer une nouvelle instance d'image

  //Effectuer le Fade-in de l'image
  for(i = 0; i <= 100; i++) 
  {
    setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
    timer++;
  }
}


//----- currentOpac -----
/** Fonction permettant de changer l'opacité actuelle d'une image ou d'un élément.
    @param {string} id - ID de l'image ou de l'élément
    @param {int} opacEnd - Opacité final désiré (lors de la fin de l'animation)
    @param {int} millisec - Durée en milliseconde */
function currentOpac(id, opacEnd, millisec) 
{
  //Garder l'opacité courante de l'élément comme valeur de départ (lorsque plus petit que le standard)
  var currentOpac = document.getElementById(id).style.opacity * 100;

  //Changer l'opacité de l'élément
  opacity(id, currentOpac, opacEnd, millisec);
}

