﻿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].cu