﻿var idxFrameContent = -1;
var Page_Change_Duration = 800;

//  Noms des zones
var idDivHistoryText = 'NavHistoryText';   //  DIV qui contient le texte de l'historique de nav.
var idTRNavigation = 'NavTRHistory';       //  TR qui contiendra les vignettes de la navigation
var idTRScrolling = 'TRScroll';
var idTDContent = 'TDContent';

var menu_MouseOverId = null;  //  élément sur lequel la souris est actuellement

/*  variables générées par la page maitre
//  Temps pendant lequel on va ajouter les nouvelles icones
var navigationItemsAddSpeed = 750;

//  temps pendant lequel on va supprimer les icônes en trop
var navigationItemsRemoveSpeed = 500;

//  temps min/max d'animation d'UNE icone
var navigationSpeedMax = 300;
var navigationSpeedMin = 100;

//  largeur des éléments du scrolling
var scrollingWidth = 290;

//  temps que met le scrolling à s'actualiser
var scrollDisplayTime = 500;

//  taille des grandes vignettes (historique de navigation)
var navLargeImg_Ht = 55;
var navLargeImg_Lg = 55;

//  taille des petites vignettes (liste des sous-éléments)
var navSmallImg_Ht = 45;
var navSmallImg_Lg = 45;

//  espacement entre chaque vignette
var navEspThumbs_x = 5;

//  Temps minimum entre deux effets, en millisecondes (20 = 50 images/sec)
//  Ce délai n'accélère ou ralentit pas les animations mais défini le nb d'images qu'elles contiendront
var durationEffect = 5;

var scrollTimePicture = 800;      // temps que le scrolling met à passer d'une page à l'autre
var scrollChangeSpeedMin = 200;
var scrollChangeSpeedMax = 500;
*/
var numTimersNav = 0;

/* =============================================================================

            LOGIQUE DU MENU
   
   =============================================================================  */
var mainItem;
var currentItem;

var allMenuItems = new Array();

var menu_History = new Array();
var menu_HistoryIndex = 0;

/*
// "classe" qui contient un élément d'un menu et ses sous-éléments

  id                        Nom unique
  contentPage               Page HTML de contenu
  scrollVisible             Scrolling visible ? (true/false)
  title                     Titre (utilisé pour afficher l'historique  : Accueil / ... / ...)
  showSubItems              Affiche les sous-éléments à la suite dans la barre de navigation (true/false)
  scrollPicture             Image de cet élément dans le scrolling
  navPicture                Image à utiliser dans la barre de navigation (historique)
  navHLPicture              Image dans la barre de navigation, en surbrillance
  navCurrentPicture         Image dans la barre de navigation quand on est sur cet élément
  imageTooltipOnContent     Image qui s'affiche dans la zone de contenu (quand on survolle l'élément dans le scrolling)
*/
function menuItem(id, contentPage, title, scrollVisible, showSubItems)
{
  this.id = id;
  this.contentPage = contentPage;
  this.scrollVisible = scrollVisible;
  this.title = title;
  this.showSubItems = showSubItems;
  this.subItems = new Array();
  this.parentItem = null;
  /*this.scrollPicture = 'Images_Menus/Scrollings/scr_' + id + '.png';
  this.navPicture = 'Images_Menus/vignettes/' + id + '.png';
  this.navHLPicture = 'imagesnavigation/' + id + '_navhl.png';
  this.navCurrentPicture = 'Images_Menus/vignettes/' + id + '.png';
  this.navSubItemPicture = 'Images_Menus/vignettes45/' + id + '_45.png';
  */
  this.scrollTooltipOnContent = null;
  this.currentScrollOpacity = new Array();
  this.currentScrollOpacity[0] = 100;
  this.currentScrollOpacity[1] = 100;
  this.currentScrollOpacity[2] = 100;
  
  allMenuItems.push(this);
}

function createEmptyItem(id, title, scrollVisible, showSubItems)
{
  var item = new menuItem(id, 'pages_CONTENU/' + id + '.html', title, scrollVisible, showSubItems);
  /*item.scrollPicture = "imagesnavigation/_vide_scrolling.jpg";
  item.navPicture = "imagesnavigation/_vide_vign55_alpha50.jpg";
  item.navHLPicture = "imagesnavigation/_vide_navhl.png";
  item.navCurrentPicture = "imagesnavigation/_vide_vign55.jpg";
  item.navSubItemPicture = "imagesnavigation/_vide_vign45.jpg";
  */
  return item;
}

function addSubItem(parent, item)
{
  parent.subItems[parent.subItems.length] = item;
  item.parentItem = parent;
}
  
function getLevel(item)
{
  var p = item.parentItem;
  var l = 0;
  
  while (p != null)
  {
    l++;
    p = parentItem;
  }
  
  return l;
}

// fonction de recherche récursive
function findSubItem(mnu, id)
{
  var s;
  var r, c;

  if (mnu.id == id)
    return mnu;

  s = mnu.subItems.length;
  while (s > 0)
  {
    r = findSubItem(mnu.subItems[s-1], id);
    if (r != null)
      return(r);
    s -= 1;
  }   

  return null;
}

//  parcours de la hierarchie du menu pour trouver un élément en fonction de son ID
function findItem(id)
{
  return (findSubItem(mainItem, id));
}

//  Renvoie les id de l'historique (ACCUEIL/COSMETO/PARFUMS)
function makeHistory(item, checksubitems)
{
  var history = new Array();
  var orderedhistory = new Array();
  var i, start = 0;
  var p = item;
  
  //  on remonte l'arborescence (en incluant l'item actuel)
  while(p != null)
  {
    history[history.length] = p.id;
    p = p.parentItem;
  }

  if (checksubitems == true)
  {
    //if (item.subitems.length == 0)
    //  start = 1;
  }  

  //  Et on "trie" les élément de façon à ce que [0] soit le 1er niveau de la hierarchie       
  for (i=start; i < history.length; i++)
    orderedhistory[history.length-1-i] = history[i];
  
  return orderedhistory;
}

//  Renvoie les id de l'historique (ACCUEIL/COSMETO/PARFUMS)
function makeTextHistory(item)
{
  var history = makeHistory(item, true);
  var i, htxt, p;

  htxt = "";
  for (i=1; i < history.length; i++)
  {
    if (i > 1)
      htxt = htxt + " / ";
    p = findItem(history[i]);
    htxt = htxt + p.title;
  }
  
  /*if (htxt.length == 0)
    htxt = "Cliquez sur le choix de vos rêves";*/
  
  return htxt;
}

/* =============================================================================

            GESTION DE LA NAVIGATION
   
   =============================================================================  */
function AddNavIcon(parent, id, subname, image, timing, duration, sizex, sizey)
{
  numTimersNav++;
  var timer = new timerObject('startaddvignette' + id + subname, 0, 1, 1, timing, true, null,
  null,
  "AddNavIconEx('" + parent + "', '" + id + "', '" + subname + "', '" + image + "', " + duration + ", " + sizex + ", " + sizey + "); numTimersNav--;");
}

function AddNavIconEx(parent, id, subname, image, duration, sizex, sizey)
{
  var tab = getElement(document, parent);
  var td = document.createElement('td');
  var img = document.createElement('img');
  var a = document.createElement('a');

  if (id == mainItem.id)
     sizex = 0;

  a.setAttribute('id', 'navlink' + id + subname);
  a.href = '#';

  img.setAttribute('id', 'imgnv' + id + subname);
  img.setAttribute('src', image);
  img.setAttribute('alt', '');
  img.style.border = 'none';
  img.width = sizex + 'px';
  img.height = sizey + 'px';
  img.style.width = sizex + 'px';
  img.style.height = sizey + 'px';
  setOpacity(img, 0);
  
  img.onmouseover = function() {
    menu_MouseOverId = id;
    setHistoryText(id, 0);
    moveScrollingTo(id, true);
  }
  img.onmouseout = function() {
    menu_MouseOverId = null;
    setHistoryText(null, 0);
  }
  img.onclick = function() {
    navigateTo(id);
  }
  //setOpacity(img, 0);
  
  td.setAttribute('id', 'tdnav' + id + subname);
  td.style.width = sizex + 'px';
  td.style.padding = navEspThumbs_x + 'px';
  td.style.verticalAlign = 'bottom';

  tab.appendChild(td);
  td.appendChild(a);
  a.appendChild(img);

  numTimersNav++;
  var timer = new timerObject('addvignette' + id + subname, 0, 100, duration, 0, true, null,
  "setOpacity(getElement(document, 'imgnv" + id + subname + "'), TimerValue);",
  "setOpacity(getElement(document, 'imgnv" + id + subname + "'), 100); numTimersNav--;");
}

function doRemoveNav(parent, id)
{
  var elem;
  
  elem = getElement(document, 'imgnv' + id);  
  if (elem != null)
    elem.parentNode.removeChild(elem);

  elem = getElement(document, 'navlink' + id);  
  if (elem != null)
    elem.parentNode.removeChild(elem);
  
  elem = getElement(document, 'tdnav' + id);  
  if (elem != null)
    elem.parentNode.removeChild(elem);
  
  /*
  var elem = getElement(document, 'tdnav' + id);
  var elem2 = elem.childNodes[0];  // le lien <a>
  var elem3 = elem2.childNodes[0];  // l'image <img>
  alert('removing elem3 ' + elem3.getAttribute('id'));
  elem2.removeChild(elem3);
  alert('removing elem2 ' + elem2.getAttribute('id'));
  elem.removeChild(elem2);
  alert('removing elem ' + elem.getAttribute('id'));
  tab.removeChild(elem);
  */
}

function RemoveNavIcon(parent, id, subname, timing, duration)
{
  numTimersNav++;
  var timer = new timerObject('delvignette' + id + subname, 100, 0, duration, timing, true, null,
  "if (getElement(document, 'imgnv" + id + subname + "') != null) { setOpacity(getElement(document, 'imgnv" + id + subname + "'), TimerValue); }",
  "doRemoveNav('" + parent + "', '" + id + subname + "'); numTimersNav--;");
/*
  var i, lastd = 1000000, d;
  for (i = 0; i < 99; i++)
  {
    d = (duration * i) / 100;
    if (Math.abs(lastd - d) >= durationEffect)
    {
      setTimeout("setOpacity(getElement(document, 'imgnv' + '" + id + "'), " + (100-i) + ");", timing + d);
      lastd = d;
    }
  }
  setTimeout("doRemoveNav('" + parent + "', '" + id + "');", timing + duration);*/
}

function setHistoryText(id, typetxt)
{
  var p;
  
  if (id == null)
    p = currentItem;
  else
    p = findItem(id);

  if (typetxt == 1)
  {
    element.innerHTML = id;
    return;
  }

  element = getElement(document, idDivHistoryText);
  if (element != null)
    element.innerHTML = makeTextHistory(p);
}

function getTimeOne(value)
{
  return Math.max(Math.min(value, navigationSpeedMax), navigationSpeedMin);
}

function scrollingHide(idparent, duration)
{
  timerStop('showScroll', true);
  timerStop('scrollMove');
  var timer = new timerObject("hideScroll", scrollingWidth-1, 0, duration, 0, true, 
  null,
  "var t = getElement(document, 'TDScroll'); if (t != null) { t.style.width='TimerValuepx'; } " +
  "    t = getElement(document, 'DIVScroll'); if (t != null) { t.style.width='TimerValuepx'; }",
  "var t = getElement(document, '" + idparent + "'); if (t != null) { t.removeChild(getElement(document, 'TDScroll')); }");
}

function scrollingShow(duration)
{
  timerStop('hideScroll', false);
  timerStop('scrollMove');
  var timer = new timerObject("showScroll", 1, scrollingWidth, duration, 0, true, 
  "var t = getElement(document, 'TDScroll'); if (t != null) { t.style.width = '0px';  t.style.visibility='visible'; } " +
  "    t = getElement(document, 'DIVScroll'); if (t != null) { t.style.width='0px'; }",
  "var t = getElement(document, 'TDScroll'); if (t != null) { t.style.width='TimerValuepx'; } " +
  "    t = getElement(document, 'DIVScroll'); if (t != null) { t.style.width='TimerValuepx'; }",
  null);
}

function scrollingAddItem(idparent, id, group, image, duration)
{
  var parent = getElement(document, idparent);
  var img = document.createElement('img');
  var a = document.createElement('a');

  a.href = '#';

  img.setAttribute('id', 'imgscroll' + id + '_' + group);
  img.setAttribute('alt', '');
  img.style.border = 'none';
  img.setAttribute('src', image);
  img.style.width = scrollingWidth + 'px';
  img.style.height = scrollingImgHeight + 'px';
  img.width = scrollingWidth;
  img.height = scrollingImgHeight;
  
  a.appendChild(img);
  parent.appendChild(a);  
}

function scrollingShowPicture(id)
{
  
}

function moveScrollingTo(id, beffects)
{
  var DIVScroll = getElement(document, 'DIVScrollImages');
  var item, parent, element;
  var i, pos, bfound = false, totalh = 0, divh;
  var currentpos, currenth;
  
  if( DIVScroll == null)
    return;
  
  item = findItem(id);
  if (item == null)
    return;
    
  parent = item.parentItem;
  if (parent == null)
    return;

  divh = getHeight(DIVScroll);
  pos = 0;    
  currenth = 100;
  for (i = 0; i < parent.subItems.length; i++)
  {
    element = getElement(document, 'imgscroll' + parent.subItems[i].id + '_0');
    if (element != null)
    {
      //timerStop('scrollfade' + element.id);
      
      if(parent.subItems[i].id == id)
      {
        bfound = true;
        currenth = getHeight(element);
      }
        
      if (element != null)
      {
        if (bfound == false)
          pos += getHeight(element);
        totalh += getHeight(element);
      }
    }
  }
  
  /*
  var c;
  for (c = 0; c < 3; c++)
  {
    for (i = 0; i < parent.subItems.length; i++)
    {
      element = getElement(document, 'imgscroll' + parent.subItems[i].id + '_' + c);
      if(parent.subItems[i].id == id)
      {
        if (parent.subItems[i].currentScrollOpacity[c] != 100)
        {
          var tmr = new timerObject('scrollfade' + element.id, parent.subItems[i].currentScrollOpacity[c], 100, 1000, 0, true, null, 
          "setOpacity(getElement(document, '" + element.id + "'), TimerValue);",
          "setOpacity(getElement(document, '" + element.id + "'), 100);");
          parent.subItems[i].currentScrollOpacity[c] = 100;
        }
      }
      else
      {
        if (parent.subItems[i].currentScrollOpacity[c] != 30)
        {
          var tmr = new timerObject('scrollfade' + element.id, parent.subItems[i].currentScrollOpacity[c], 30, 1000, 0, true, null, 
          "setOpacity(getElement(document, '" + element.id + "'), TimerValue);", 
          "setOpacity(getElement(document, '" + element.id + "'), 30)");
          parent.subItems[i].currentScrollOpacity[c] = 30;
        }
      }
    }
  }
  */
  
  if (bfound == false)
    return;
  
  //  on se positionne toujours au milieu des 3 groupes d'images
  pos += totalh;
  pos -= (divh - currenth) / 2;
  
  //if (pos > totalh - divh)
  //  pos = totalh - divh;

  pos = Math.round(pos);
  currentpos = Math.abs(Math.round(DIVScroll.style.top.replace('px', '')));
  if (currentpos == 0)
    currentpos = totalh;
  
  // totalh > divh && 
  if (currentpos != pos)
  {
    if (beffects == true)
    {
        /*
      if (pos > currentpos && totalh - (pos+currenth) < pos - currentpos)
        pos -= totalh;
      else if (pos < currentpos && totalh - (pos+currenth) > pos - currentpos)
        pos += totalh;
        
      if ((currentpos - pos) > totalh - (pos+currenth))
      {
        if (currentpos >= (totalh * 3) / 2)
          pos -= totalh;
        else
          pos += totalh;
      }*/
      var movechange = Math.round((Math.abs(currentpos - pos) * scrollTimePicture) / divh) + 1;
      timerStop('scrollMove');
      var tmr = new timerObject('scrollMove', currentpos * -1, pos * -1, movechange, 0, true, null, 
      "var t = getElement(document, 'DIVScrollImages'); if (t != null) { t.style.top='TimerValuepx'; }", null);
    }
    else
      DIVScroll.style.top = (pos * -1) + 'px';
  }
}

function isChild(itemparent, itemchild)
{
  if( itemparent.subItems != null )
  {
    var i;
    for(i = 0; i < itemparent.subItems.length; i++)
    {
      if (itemparent.subItems[i].id == itemchild.id)
        return true;
    }
  }
  
  return false;
}

function isSibiling(itema, itemb)
{
  if( itema.parentItem == null || itemb.parentItem == null )
    return false;

  if( itema.parentItem.id != itemb.parentItem.id )
    return false;
  
  return true;
}

function navigateTo(id)
{
  if (id.length > 2)
  {
    if (id.substring(id.length-2, id.length-1) == '@')
    {
      navigateToEx(id.substring(0, id.length-2), id.substring(id.length-1));
      return;
    }
  }

  navigateToEx(id, 'H');
}

function navigateToEx(id, PointDeDepart)
{
  navigateToEx2(id, PointDeDepart, true);
}

function navigateToEx2(id, PointDeDepart, bAddHistory)
{
  var tmpItem;
  var element;
  var i;
  var timing = 0;
  var j = 0;
  var timeone;
  var destItem;
  var img;
  var hstC;
  var hstD;
  var badd = true;
  var pagecontent = null;
  var bchangemenu = true;
  var idorigine = id;

  menu_MouseOverId = null;
  
  if (id.substring(0, 5) == 'http:' || id.substring(0, 7) == 'mailto:')
  {
    window.open(id,'', '');
    return;
  }

  if (id.substring(0, 1) == '!')
  {
    //alert(id.substring(1, id.length-1));
    window.open(id.substring(1, id.length),'', '');
    //window.open('http://' + serverhost + '/redirect.aspx?url=http://' + serverhost + '/' + sitelanguage + '/' + id.substring(1, id.length),'', '');
    return;
  }
  
  if (numTimersNav > 0)
    return;

  i = id.indexOf('=');
  if (i != -1)
  {
    pagecontent = id.substring(i + 1, id.length);
    id = id.substring(0,i);    
  }

  destItem = findItem(id);
  if (destItem == null)
    return;      

  if (destItem.contentPage.substring(0, 5) == 'http:')
  {
    window.open(destItem.contentPage,'', '');
    window.open('http://' + serverhost + '/redirect.aspx?url=' + destItem.contentPage,'', '');
    return;
  }

  else if (destItem.contentPage.substring(0, 7) == 'mailto:')
  {
    window.open(destItem.contentPage,'', '');
    return;
  }

  if (bAddHistory == true)
  {
    menu_HistoryIndex++;
    menu_History[menu_HistoryIndex] = idorigine;
  }

  //  si on va au même endroit, on ne réactualise pas le menu
  if (currentItem != null && currentItem.id == destItem.id)
    bchangemenu = false;

  else
  {
    //  Si l'élément à afficher n'a pas d'enfant (et que les sous-éléments du père sont affichés !)
    if (destItem.subItems.length == 0 && destItem.parentItem != null && destItem.parentItem.showSubItems == true)
    {
      // ça ne peut marcher que pour un élément qui serait déjà affiché en dernier niveau
      if (isChild(currentItem, destItem) || isSibiling(currentItem, destItem))
      {
        var imgToChange;
        var tdToChange;

        //  si l'élément actuellement sélectionné est un des frères, on remet le frère à la taille initiale (45)
        if (currentItem.parentItem != null && currentItem.parentItem.id == destItem.parentItem.id)
        {
          imgToChange = getElement(document, 'imgnv' + currentItem.id + 'small');
          tdToChange = getElement(document, 'tdnav' + currentItem.id + 'small');
          
          imgToChange.width = navSmallImg_Lg + 'px';
          imgToChange.height = navSmallImg_Ht + 'px';
          imgToChange.style.width = navSmallImg_Lg + 'px';
          imgToChange.style.height = navSmallImg_Ht + 'px';
          imgToChange.setAttribute('src', currentItem.navPicture);
          tdToChange.style.width = navSmallImg_Lg + 'px';
        }
        
        //  Et on met l'élément sélectionné en gros
        imgToChange = getElement(document, 'imgnv' + destItem.id + 'small');
        tdToChange = getElement(document, 'tdnav' + destItem.id + 'small');

        imgToChange.setAttribute('src', destItem.navCurrentPicture);
        imgToChange.width = navLargeImg_Lg + 'px';
        imgToChange.height = navLargeImg_Ht + 'px';
        imgToChange.style.height = navLargeImg_Ht + 'px';
        imgToChange.style.width = navLargeImg_Lg + 'px';
        tdToChange.style.width = navLargeImg_Lg + 'px';
        
        bchangemenu = false;
      }
    }  
  }
  
  if (bchangemenu == true)
  {
    //-----------------------------------------  
    //  MAJ de la barre de navigation C=Current, D=Destination
    //----
    //  Parcours des éléments actuels, de gauche à droite
    //  tant que c'est identique à là où on veut aller, on ne touche à rien
    //  dès que ça diffère (ou que là où on veut aller n'a plus d'élément)
    //    on efface ce qu'il y a à droite
    //  et enfin on ajoute de gauche à droite les éléments de là où on veut aller qui suivent
    timing = 0;
    hstD = makeHistory(destItem, false);
    if (currentItem == null)
    {
      hstC = new Array();
      i = 0;
    }

    else
    {
      //  Si on est au dernier niveau d'un menu on doit considérer qu'on est sur le parent et non pas l'élément en cours
      var itemDisplayed = currentItem;
    
      if (currentItem.parentItem != null && currentItem.subItems.length == 0 && currentItem.parentItem.showSubItems == true)
        itemDisplayed = currentItem.parentItem;
        
      hstC = makeHistory(itemDisplayed, false);
      for (i=0; i < hstC.length && i < hstD.length; i++)
      {
        if (hstC[i] != hstD[i])
          break;
      }

      //  Suppression des éléments restants dans l'historique actuel (de droite à gauche)
      j = itemDisplayed.subItems.length;
      if (i < hstC.length)
        j += (hstC.length-i);
        
      if (j > 0)
      {
        timeone = getTimeOne(navigationItemsRemoveSpeed / j);
        for (j = itemDisplayed.subItems.length-1; j >= 0; j--)
        {
          RemoveNavIcon(idTRNavigation, itemDisplayed.subItems[j].id, 'small', (timing*2)/3, timeone);
          timing += timeone + 5;
        }
        for (j = hstC.length-1; j >= i; j--)
        {
          RemoveNavIcon(idTRNavigation, hstC[j], 'large', (timing*2)/3, timeone);
          timing += timeone + 5;
        }
      }
    }
    
    //  Ajout des éléments, de gauche à droite
    j = 0;
    if (destItem.subItems.length > 0 && destItem.showSubItems == true)
      j = destItem.subItems.length;
    j += (hstD.length-i);
    
    timeone = getTimeOne(navigationItemsAddSpeed / j);
    
    var pmax = hstD.length;
    var lastpainteditem;
    
    //  Si le dernier élément n'a pas d'enfant
    if (destItem.subItems != null && destItem.subItems.length == 0 && destItem.parentItem != null && destItem.parentItem.showSubItems == true)
      pmax = pmax - 1;
    
    lastpainteditem = destItem;
    for (j = i; j < pmax; j++)
    {
      tmpItem = findItem(hstD[j]);
      lastpainteditem = tmpItem;
      
      if (j == hstD.length-1)
        img = tmpItem.navCurrentPicture;
      else
        img = tmpItem.navPicture;
      
      AddNavIcon(idTRNavigation, hstD[j], 'large', img, timing, timeone, navLargeImg_Lg, navLargeImg_Ht);
      timing += timeone + 5;
    }
    
    //  Ajout des sous-éléments
    if (lastpainteditem.subItems != null && lastpainteditem.subItems.length > 0 && lastpainteditem.showSubItems == true)
    {
      for (i=0; i < lastpainteditem.subItems.length; i++)
      {
        if (lastpainteditem.subItems[i].id == destItem.id)
        {
          AddNavIcon(idTRNavigation, lastpainteditem.subItems[i].id, 'small', lastpainteditem.subItems[i].navPicture, 
                     timing, timeone, navLargeImg_Lg, navLargeImg_Ht);
        }
        else
        {
          AddNavIcon(idTRNavigation, lastpainteditem.subItems[i].id, 'small', lastpainteditem.subItems[i].navPicture, 
                     timing, timeone, navSmallImg_Lg, navSmallImg_Ht);
        }
        timing += timeone + 5;
      }
    }
  }  
    
  //-----------------------------------------  
  //  MAJ du texte de navigation
  setHistoryText(destItem.id, 0);
  
  //-----------------------------------------  
  //  MAJ du scrolling
  var TRScroll = getElement(document, idTRScrolling);
  var TDContent = getElement(document, idTDContent);
  
  if (TRScroll != null)
  {
    var TDScroll = getElement(document, 'TDScroll');
    var DIVScroll = getElement(document, 'DIVScrollImages');

    // le scrolling était affiché  
    if (TDScroll != null)
    {  
      // mais on ne le veut plus
      if (destItem.scrollVisible == false)
      {
        //  on le cache
        scrollingHide(idTRScrolling, scrollDisplayTime);
      }
      else
      {
        // on le veut toujours. on vide donc son contenu
        while (DIVScroll.childNodes.length > 0)
          DIVScroll.removeChild(DIVScroll.childNodes[DIVScroll.childNodes.length - 1]);
      }
    }
    
    //  non, mais on veut qu'il le soit
    else if(destItem.scrollVisible == true)
    {
      var element2;
      var element3;
      
      // on crée l'élément TD au bon endroit, mais invisible
      element = document.createElement('td');
      element.setAttribute('id', 'TDScroll');
      element.setAttribute('class', 'scrolling');
      element.setAttribute('className', 'scrolling');
      element.style.width = 0 + 'px';
      element.style.visibility='hidden';
      
      // et on crée l'élément DIV pour le scrolling
      element2 = document.createElement('div');
      element2.setAttribute('id', 'DIVScroll');
      element2.setAttribute('class', 'scrolling');
      element2.setAttribute('className', 'scrolling');
      element2.style.padding = 0 + 'px';
      element2.style.width = 0 + 'px';
      
      // et on crée l'élément DIV pour les images du scrolling
      element3 = document.createElement('div');
      element3.setAttribute('id', 'DIVScrollImages');
      element3.style.position = 'absolute';
      element3.style.top = 0 + 'px';
      element3.style.height = '100%';

      element2.appendChild(element3);
      element.appendChild(element2);
      TRScroll.insertBefore(element, TDContent);
    }
  }

  if(destItem.scrollVisible == true && destItem.subItems.length > 0)
  {
    var c;
    //  ajout des éléments, 3 fois (pour pouvoir donner une impression de défilement continu)
    for (c = 0; c < 3; c++)
    {
      for (i = 0; i < destItem.subItems.length; i++)
        scrollingAddItem('DIVScrollImages', destItem.subItems[i].id, c, destItem.subItems[i].scrollPicture, scrollDisplayTime);
    }
    
    //  et s'il n'était pas affiché, on l'affiche..
    if (DIVScroll == null)
    {
      scrollingShow(scrollDisplayTime);
      moveScrollingTo(destItem.subItems[0].id, false);
    }
  }
  
  //-----------------------------------------  
  //  Et maj du contenu
  var FrameContent;
  
  if (idxFrameContent == -1)
  {
    idxFrameContent = 0;
  
    FrameContent = getElement(document, 'frameContent' + idxFrameContent);
    //alert(destItem.contentPage);
    if (pagecontent != null)
      FrameContent.src = pagecontent;
    else
      FrameContent.src = destItem.contentPage;

    FrameContent = getElement(document, 'frameContent' + (1-idxFrameContent));
    FrameContent.style.visibility = 'hidden';
  }
  else
  {
    idxFrameContent = 1 - idxFrameContent;
    FrameContent = getElement(document, 'frameContent' + idxFrameContent);
    if (pagecontent != null)
      FrameContent.src = pagecontent;
    else
      FrameContent.src = destItem.contentPage;
      
    //  animation pour faire apparaitre la nouvelle page

    numTimersNav++;
    
    var valmax = new Array();
    var valcur = 0;
    var sens;
    var posnames = new Array();
    var sizenames = new Array();
       
    if (PointDeDepart == 'D' || PointDeDepart == 'G')
    {
      valmax[0] = 950; valmax[1] = 505;
      posnames[0] = "left"; sizenames[0] = "width";
      posnames[1] = "top"; sizenames[1] = "height";
    }
    else
    {
      valmax[0] = 505; valmax[1] = 950;
      posnames[0] = "top"; sizenames[0] = "height";
      posnames[1] = "left"; sizenames[1] = "width";
    }

    if (PointDeDepart == 'G' || PointDeDepart == 'H')
      sens = 1;
    else
      sens = 0;

    //  repositionnement de la frame à afficher
    var scriptstart = "";
    scriptstart = scriptstart + "var frameToDisplay=getElement(document, 'frameContent" + idxFrameContent + "');";
    scriptstart = scriptstart + "var frameToHide=getElement(document, 'frameContent" + (1 - idxFrameContent) + "');";
    
    //scriptstart = scriptstart + "setOpacity(frameToDisplay, 0);";
    //scriptstart = scriptstart + "setOpacity(frameToHide, 100);";
    scriptstart = scriptstart + "frameToDisplay.style." + posnames[1] + " = '0px';";
    scriptstart = scriptstart + "frameToDisplay.style." + sizenames[1] + " = '" + valmax[1] + "px';";
    scriptstart = scriptstart + "frameToDisplay.style." + sizenames[0] + " = '0px';";
    scriptstart = scriptstart + "frameToDisplay.style." + posnames[0] + " = '" + (valmax[0] * (1-sens)) + "px';";
    scriptstart = scriptstart + "frameToDisplay.style.visibility = 'visible';";
    
    
    //  positionnement final de la frame à afficher
    var scriptend = "";
    scriptend = scriptend + "var frameToDisplay=getElement(document, 'frameContent" + idxFrameContent + "');";
    scriptend = scriptend + "frameToDisplay.style." + posnames[0] + " = '0px';";
    scriptend = scriptend + "frameToDisplay.style." + sizenames[0] + " = '" + valmax[0] + "px';";
    //  et on masque celle à cacher    
    scriptend = scriptend + "var frameToHide=getElement(document, 'frameContent" + (1 - idxFrameContent) + "');";
    scriptend = scriptend + "frameToHide.style.visibility = 'hidden';";
    scriptend = scriptend + "frameToHide.setAttribute('src', 'pages_CONTENU/_vide.aspx');";
    //scriptend = scriptend + "setOpacity(frameToDisplay, 100);";
    //scriptend = scriptend + "setOpacity(frameToHide, 0);";
    
    
    //  animation
    var scriptanim = "";
    
    scriptanim = scriptanim + "var frameToDisplay=getElement(document, 'frameContent" + idxFrameContent + "');";
    scriptanim = scriptanim + "var frameToHide=getElement(document, 'frameContent" + (1 - idxFrameContent) + "');";
    
    scriptanim = scriptanim + "frameToDisplay.style." + sizenames[0] + " = 'TimerValuepx';";
    scriptanim = scriptanim + "frameToHide.style." + sizenames[0] + " = (" + valmax[0] + " - TimerValue) + 'px';";

    if (sens == 1)
    {
      scriptanim = scriptanim + "frameToDisplay.style." + posnames[0] + " = '0px';";
      scriptanim = scriptanim + "frameToHide.style." + posnames[0] + " = 'TimerValuepx';";
    }
    else
    {
      scriptanim = scriptanim + "frameToDisplay.style." + posnames[0] + " = (" + valmax[0] + " - TimerValue) + 'px';";
      scriptanim = scriptanim + "frameToHide.style." + posnames[0] + " = '0px';";
    }
    
    //scriptanim = scriptanim + "setOpacity(frameToDisplay, (TimerValue * 100) / (" + Page_Change_Duration + " / 2));";
    //scriptanim = scriptanim + "setOpacity(frameToHide, 100 - ((TimerValue * 100) / Page_Change_Duration * 2));";

    var timer = new timerObject('timerFrameContent', 0, valmax[0], Page_Change_Duration, 0, true, 
      scriptstart, scriptanim, scriptend + "numTimersNav--;");
  }
  

  //  on s'assure que le tooltip soit bien caché  
  element = getElement(document, 'divTooltip');
  setOpacity(element, 0);
  element.style.visibility = 'hidden';
  
  currentItem = destItem;
}

function navigate_Back()
{
  if (numTimersNav > 0 || menu_HistoryIndex <= 1)
    return;
 
  menu_HistoryIndex--; 
  navigateToEx2(menu_History[menu_HistoryIndex], 'H', false)
}
