duration = 3;
images=src.length;
ads=[];
currentTimeout=0;
slideStarted=0;

// Maximum dimentions of image calculated acording to window inner dimentions
function maxDimentions()
{
  //opera Netscape 6 Netscape 4x Mozilla
  if (window.innerWidth || window.innerHeight)
  {
    docwidth = window.innerWidth;
    docheight = window.innerHeight;
  }
  //IE Mozilla
  if (document.body)
  {
    docwidth = document.body.clientWidth;
    docheight = document.body.clientHeight;
  }
  imgwidthmax=Math.max(240,docwidth-24);
  imgheightmax=Math.max(240,docheight-103);
}

//resize image named currentImage to dimentions max w and h and conserving aspect ratio
function resizeImage(w, h)
{
  ratio=Math.min(1, imgwidthmax/w, imgheightmax/h);
  document["currentImage"].width = w*ratio;
  document["currentImage"].height = h*ratio;
}

function resizeWindow()
{
  maxDimentions();
  if(ct>=0) { resizeImage(ws[ct],hs[ct]); }
}

// preload and show next image
function nextImage(inc)
{
  clearTimeout(currentTimeout);
  n=imageRange(ct+inc);
  if (ads[n] && (ads[n].complete || ads[n].complete==null))
  {
    fade("currentImage", 100, 0, 300)
    setTimeout("nextImage2()", 325);
  }
  else
  {
    currentTimeout=setTimeout("nextImage("+inc+")",333)
  }
  ads[n=imageRange(ct+inc)] = new Image;
  ads[n].src = src[n];
}
function nextImage2()
{
    document["currentImage"].src = ads[ct=n].src;
    resizeImage(ws[n], hs[n]);
    fade("currentImage", 0, 100, 500)
    document.getElementById("currentTitre").innerHTML = titre;
    showCurrentMenu();
    if(slideStarted) currentTimeout=setTimeout("nextImage(1)",duration*1000);
}
function imageRange(i)
{
  if((i+1)>images) return i-images;
  else if(i<0) return i+images;
  else return i;
}

function auDebut()
{
  ct=0;
  nextImage(0);
}

function showCurrentMenu()
{
  menu="";
  if(images>1)
  {
    menu=menu+(ct+1)+"/"+images;
    menu=menu+"&nbsp;&nbsp; <A HREF='Javascript: auDebut();'><IMG SRC='icons/fst.gif' BORDER=0 onmouseover=\"this.src='icons/fsth.gif';\" onmouseout=\"this.src='icons/fst.gif';\" ALT='Au d&eacute;but' TITLE='Au d&eacute;but'></A>&nbsp;&nbsp;";
    if(slideStarted)
    {
      if(duration<9) menu=menu+" <A HREF='Javascript: slower();'><IMG SRC='icons/dwn.gif' BORDER=0 onmouseover=\"this.src='icons/dwnh.gif';\" onmouseout=\"this.src='icons/dwn.gif';\" ALT='Plus lentement' TITLE='Plus lentement'></A>&nbsp;&nbsp;";
    }
    menu=menu+" <A HREF='Javascript: nextImage(-1);'><IMG SRC='icons/lft.gif' BORDER=0 onmouseover=\"this.src='icons/lfth.gif';\" onmouseout=\"this.src='icons/lft.gif';\" ALT='Pr&eacute;c&eacute;dente' TITLE='Pr&eacute;c&eacute;dente'></A>&nbsp;&nbsp;";
    if(slideStarted)
    {
      menu=menu+" <A HREF='Javascript: switchSlide();'><IMG SRC='icons/pse.gif' BORDER=0 onmouseover=\"this.src='icons/pseh.gif';\" onmouseout=\"this.src='icons/pse.gif';\" ALT='Pauser le diaporama' TITLE='Pauser le diaporama'></A>&nbsp;&nbsp;";
    }
    else
    {
      menu=menu+" <A HREF='Javascript: switchSlide();'><IMG SRC='icons/fwd.gif' BORDER=0 onmouseover=\"this.src='icons/fwdh.gif';\" onmouseout=\"this.src='icons/fwd.gif';\" ALT='D&eacute;marrer le diaporama' TITLE='D&eacute;marrer le diaporama'></A>&nbsp;&nbsp;";
    }

    menu=menu+" <A HREF='Javascript: nextImage(1);'><IMG SRC='icons/rgh.gif' BORDER=0 onmouseover=\"this.src='icons/rghh.gif';\" onmouseout=\"this.src='icons/rgh.gif';\" ALT='Suivante' TITLE='Suivante'></A>&nbsp;&nbsp;";
    if(slideStarted)
    {
      if(duration>3) menu=menu+" <A HREF='Javascript: faster();'><IMG SRC='icons/up.gif' BORDER=0 onmouseover=\"this.src='icons/uph.gif';\" onmouseout=\"this.src='icons/up.gif';\" ALT='Plus rapidement' TITLE='Plus rapidement'></A>&nbsp;&nbsp;";
    }
    menu=menu+" ";
  }
  menu=menu+"<A HREF=\"Javascript: hBack();\"><IMG SRC='icons/bck.gif' BORDER=0 onmouseover=\"this.src='icons/bckh.gif';\" onmouseout=\"this.src='icons/bck.gif';\" ALT='Retour' TITLE='Retour'></A>";
  document.getElementById("currentMenu").innerHTML = menu;
  showCurrentTitre();
}

function showCurrentTitre()
{
  if(ct>=0 && tts[ct])  document.getElementById("currentTitre").innerHTML = titre0+tts[ct];
}

function switchSlide()
{
  if(slideStarted)
  {
    clearTimeout(currentTimeout);
    slideStarted=0;
  }
  else
  {
    slideStarted=1;
    currentTimeout=setTimeout("nextImage(1)",duration*1000);
  }
  showCurrentMenu();
}

function faster()
{
  duration=duration-3;
  if(duration<3) duration=3;
  showCurrentMenu();
}
function slower()
{
  duration=duration+3;
  if(duration>9) duration=9;
  showCurrentMenu();
}
function loaded()
{
 resizeWindow();
 showCurrentMenu();
}

function hBack()
{
  //if(!history.back())
  //{
    window.location.href=bck;
  //}
}
function setOpacity(eID, opacityLevel)
{
  var eStyle = document.getElementById(eID).style;
  eStyle.opacity = opacityLevel / 100;
  eStyle.filter = 'alpha(opacity='+opacityLevel+')';
}

function fade(eID, startOpacity, stopOpacity, duration)
{
  var speed = Math.round(duration / 100);
  var timer = 0;
  if (startOpacity < stopOpacity)
  { // fade in
    for (var i=startOpacity; i<=stopOpacity; i++)
    {
      setTimeout("setOpacity('"+eID+"',"+i+")", timer * speed);
      timer++;
    }
    return;
  }
  for (var i=startOpacity; i>=stopOpacity; i--)
  { // fade out
    setTimeout("setOpacity('"+eID+"',"+i+")", timer * speed);
    timer++;
  }
}

function getElm(eID)
{
  return document.getElementById(eID);
}

function show(eID)
{
  getElm(eID).style.display='inline';
}

function hide(eID)
{
  getElm(eID).style.display='none';
}

function fadeIn(eID)
{
  setOpacity(eID, 0); show(eID); var timer = 0;
  for (var i=1; i<=100; i++)
  {
    setTimeout("setOpacity('"+eID+"',"+i+")", timer * 5);
    timer++;
  }
}

function fadeOut(eID)
{
  var timer = 0;
  for (var i=100; i>=1; i--)
  {
    setTimeout("setOpacity('"+eID+"',"+i+")", timer * 3);
    timer++;
  }
  setTimeout("hide('"+eID+"')", 310);
}

maxDimentions();
window.onresize=resizeWindow;
window.onload=loaded;
