/*---------------------------------------------------------*/
/* Auteur      : Chanh T.Do [ThoranSoft - 2006.02.21]      */
/* Description : Module de SlideShow                       */
/*---------------------------------------------------------*/

//Variables utilisées dans le SlideShow
var slideImg=new Array();   //Contient les objets images
var slideImgPath=new Array();  //Contient les chemins des images
var slideLnk=new Array();    //Contient les liens des images


// Fonction permettant de resizer l'image de fonction proportionnelle.
// Permet aux utilisateurs d'entrer les images originales dans le slideshow
// Sans se soucier de la taille du slideshow du site.
function resizeImg(imgName, slideWidth, slideHeight)
  {//Déterminer la largeur et hauteur d'une image
   rWidth  = document.images[imgName].width;
   rHeight = document.images[imgName].height;


   //On veut juste réduire l'image seulement si elle est plus grande que la grandeur permise
   if (rWidth <= slideWidth && rHeight <= slideHeight)
      {pixHTML = 'width="' + rWidth + '" height="' + rHeight + '"';}
   else
      {
       //Déterminer le pourcentage de réduction ou d'agrandissement
       if (rWidth > rHeight)
          {pct = slideWidth / rWidth;}
       else
          {pct = slideHeight / rHeight;}

       //Calcul de la nouvelle proportion de l'image
       newWidth = Math.round(rWidth * pct);
       newHeight= Math.round(rHeight * pct);

       //Parfois, même après avoir redimesionnée, certaines images restent encore trop grosse.
       //Par exemple : Si la largeur est plus grande que la hauteur, on prend la largeur comme
       //point de référence pour le pourcentage d'agrandissement ou de réduction. Cependant, il se
       //peut qu'après réduction, la largeur est parfaitement correcte, mais la hauteur est plus
       //grande que la grosseur permise, il faut dans ce cas redimensionner une autre fois la hauteur
       //par rapport avec la largeur. Et vice versa.
       if (newHeight > slideHeight)
          {pct = slideHeight / newHeight;
           newWidth = Math.round(newWidth * pct);
           newHeight= Math.round(newHeight * pct);
          }

       if (newWidth > slideWidth)
          {pct = slideWidth / newWidth;
           newWidth = Math.round(newWidth * pct);
           newHeight= Math.round(newHeight * pct);
          }

       //Retourner une string que l'on pourra placer dans une balise <img>
       pixHTML = 'width="' + newWidth + '" height="' + newHeight + '"';
      }
   return pixHTML;
  }

// Fonction permettant de charger les images pour le SlideShow
function slideShowImg()
  {for (i=0;i<slideShowImg.arguments.length;i++)
       {slideImg[i]=new Image()
        slideImg[i].src=slideShowImg.arguments[i];
        slideImgPath[i]=slideShowImg.arguments[i];
       }
  }


// Fonction permettant de définir les liens des images
function slideShowLnk()
  {for (i=0;i<slideShowLnk.arguments.length;i++)
        slideLnk[i]=slideShowLnk.arguments[i];
  }


// Fonction permettant d'aller au lien de l'image
function gotoLnk()
  {if (!window.winslide||winslide.closed)
      {winslide=window.open(slideLnk[whichLnk]);}
   else
      {winslide.location=slideLnk[whichLnk];
       winslide.focus();
      }
  }


// Fonction permettant d'exécuter le SlideShow
// NOTE: aConteneur est équivalent au ID de la balise <a> des images du SlideShow.
//       C'est avec cette variable que l'on va aller modifier DOM afin de resizer l'image.
//       imgID est équivalent à l'identifiant de la balise <img> du SlideShow.
//       sWidth contient la largeur du SlideShow (pour le resize des images originaux)
//       sHeight contient la hauteur du SlideShow (pour le resize des images originaux)
function slideIt(aConteneur, imgID, sWidth, sHeight)
  {if (!document.images)
      {return;}

   //Modifié par Chanh T.Do [ThoranSoft - 2007.11.05]
   //On évalue un nombre aléatoire entre 1 et slideImg.length pour afficher les images du slideshow
   whichImg = Math.floor(Math.random() * slideImg.length );

   //Affecter la nouvelle image;
   document.images.slide.src=slideImg[whichImg].src;

   //Enlever les notions de width et de height à l'image pour pouvoir effectuer un resize
   newHTML = '<img src="' + slideImgPath[whichImg] + '" alt="" border="0" id="slide"';
   newHTML = newHTML + ' class="slideimg">';
   document.getElementById(aConteneur).innerHTML = newHTML;

   //Resizer l'image pour l'affichage
   pixHTML = resizeImg(imgID, sWidth, sHeight);

   //Une fois l'image redimensionnée, on l'affiche.
   newHTML = '<img src="' + slideImgPath[whichImg] + '" alt="" border="0" id="slide" ' + pixHTML;
   newHTML = newHTML + ' class="slideimg">';
   document.getElementById(aConteneur).innerHTML = newHTML;
   opacity('slide', 15, 100, 1000);

   //Affecter le lien et incrémenter le tableau des images s'il y a lieu
   /* Modifié par : Chanh T.Do [ThoranSoft - 2007.11.05]
      On utilise plus l'incrémentation des images, car on effectue toujours un randomize des images.
   whichLnk=whichImg;
   if (whichImg<slideImg.length-1)
      {whichImg++;}
   else
      {whichImg=0;}
   */

   setTimeout('slideIt("'+ aConteneur +'", "' + imgID + '", ' + sWidth + ', ' + sHeight + ')', slideShowSpeed);
  }


// Fonction permettant d'effectuer un chargement des images
function preloadImages()
  {var d=document; if(d.images){ if(!d.p) d.p=new Array();
   var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
  }