// SCRIPT PAR Mike Gleason Jr Couturier (mcouturier@bmgmultimedia.com)
// POUR BMG Multimedia
// http://www.bmgmultimedia.com/

/**********************************************************************************
  Interface
**********************************************************************************/

function menu(leNom, laRacine){
  this.ajouterSection       = ajouterSection;
  this.ajouterSousSection   = ajouterSousSection;
  this.ecrireMenus          = ecrireMenus;
  this.ecrireSousMenus      = ecrireSousMenus;

  this.onMouseOverMenuItem  = onMouseOverMenuItem;
  this.onMouseOutMenuItem   = onMouseOutMenuItem;
  this.onMouseOverSousMenu  = onMouseOverSousMenu;
  this.onMouseOutSousMenu   = onMouseOutSousMenu;
  this.onWindowResize       = onWindowResize;
  this.positionGauche       = positionGauche;

  this.ouvrirMenu           = ouvrirMenu;
  this.fermerMenu           = fermerMenu;
  this.tenterFermerMenu     = tenterFermerMenu;

  this.laRacine             = laRacine;
  this.nom                  = leNom;
  this.sections             = new Array();
  this.menuFontFamily       = 'Verdana, Geneva, Arial, Helvetica, sans-serif';
  this.menuFontFamilyOver   = 'Verdana, Geneva, Arial, Helvetica, sans-serif';
  this.menuFontColor        = '#10416B';
  this.menuFontColorOver    = '#FFFFFF';
  this.menuCellColor        = '';
  this.menuCellColorOver    = '#10416B';
  this.menuFontSize         = '10px';
  this.menuFontSizeOver     = '10px';
  this.menuFontWeight       = 'bold';
  this.menuFontWeightOver   = 'bold';
  this.sousMenuFontFamily   = 'Verdana, Geneva, Arial, Helvetica, sans-serif';
  this.sousMenuFontColor    = '#FFFFFF';
  this.sousMenuFontSize     = '10px';
  this.sousMenuFontWeight   = 'bold';
  this.sousMenuTop          = 132;
  this.sousMenuWidth        = 760;
  this.sousMenuClass        = 'SOUSMENU';
  this.imageSeparateur      = 'images/menu/fil_menu.gif'

  this.timerID              = -1;
  this.curMenu              = -1;
}

function creerMenu(leNom, laRacine){
  eval(leNom + ' = new menu(\'' + leNom + '\', \'' + laRacine + '\');');
  window.onresize = function(){
    eval(leNom + '.onWindowResize();');
  }
}

/**********************************************************************************
  Implémentation
**********************************************************************************/

function ajouterSection(leNom, laLargeur, leLien, lienJS){
  this.sections[this.sections.length] = new objSection(leNom, laLargeur, leLien, lienJS);
}

function objSection(leNom, laLargeur, leLien, lienJS){
  this.nom = leNom;
  this.largeur = laLargeur;
  this.lien = leLien;
  this.JS = lienJS;
  this.sousSections = new Array();
}

function ajouterSousSection(leNom, leLien, lienJS){
  with(this.sections[this.sections.length - 1]){
    sousSections[sousSections.length] = new objSousSection(leNom, leLien, lienJS);
  }
}

function objSousSection(leNom, leLien, lienJS){
  this.nom = leNom;
  this.url = leLien;
  this.JS = lienJS;
}

function ecrireMenus(){
  if(document.layers){
    if(this.sections.length != 0){
      var i, j;
      document.write('<table height="31" border="0" cellpadding="0" cellspacing="0"><tr>');
      for(i = 0; i < this.sections.length; i++){
        document.write('<td width="' + this.sections[i].largeur + '" align="center" height="31"><a class="MENUNETSCAPE" href="' + (this.sections[i].JS != true ? this.laRacine : '') + this.sections[i].lien + '" onMouseOver="javascript:' + this.nom + '.onMouseOverMenuItem(' + i + ');" onMouseOut="javascript:' + this.nom + '.onMouseOutMenuItem(' + i + ');">' + this.sections[i].nom + '</a></td>' + ((i != (this.sections.length - 1)) ? '<td width="1" height="31"><img src="' + this.laRacine + this.imageSeparateur + '" width="1" height="31" border="0"></td>' : ''));
      }
      document.write('</tr></table>');
    }
    return;
  }

  if(this.sections.length != 0){
    var i, j;
    document.write('<table height="31" border="0" cellpadding="0" cellspacing="0"><tr>');
    for(i = 0; i < this.sections.length; i++){
      document.write('<td style="font-family:' + this.menuFontFamily + '; font-size:' + this.menuFontSize + '; font-weight:' + this.menuFontWeight + '; color:' + this.menuFontColor + '" width="' + this.sections[i].largeur + '" align="center" id="menu_' + this.nom + '_' + i + '" height="31"><a onMouseOver="javascript:' + this.nom + '.onMouseOverMenuItem(' + i + ');" onMouseOut="javascript:' + this.nom + '.onMouseOutMenuItem(' + i + ');" style="text-decoration: none; color:' + this.menuFontColor + ';" id="menu_lien_' + this.nom + '_' + i + '" href="' + (this.sections[i].JS != true ? this.laRacine : '') + this.sections[i].lien + '">' + this.sections[i].nom + '</a></td>' + ((i != (this.sections.length - 1)) ? '<td width="1" height="31"><img src="' + this.laRacine + this.imageSeparateur + '" width="1" height="31" border="0"></td>' : ''));
    }
    document.write('</tr></table>');
  }
}

function ecrireSousMenus(){
  if(document.layers){
    var posGauche = this.positionGauche();
    var i, j;
    for(i = 0; i < this.sections.length; i++){
      if(this.sections[i].sousSections){
        document.write('<layer onMouseOver="javascript:' + this.nom + '.onMouseOverSousMenu(' + i + ');" onMouseOut="javascript:' + this.nom + '.onMouseOutSousMenu(' + i + ');" id="sousMenu_' + this.nom + '_' + i + '" left="' + posGauche + '" top="' + eval("this.sousMenuTop - 4") + '" width="' + this.sousMenuWidth + '" height="44" visibility="hide"><div align="center" width="' + this.sousMenuWidth + '">');
        for(j = 0; j < this.sections[i].sousSections.length; j++){
          var txt = replaceChars(this.sections[i].sousSections[j].nom, '-', '&middot;');
          txt = replaceChars(txt, ' ', '&nbsp;');
          document.write('<a class="' + this.sousMenuClass + '" href="' + (this.sections[i].sousSections[j].JS != true ? this.laRacine : '') + this.sections[i].sousSections[j].url + '">' + this.sections[i].sousSections[j].nom + '</a>');
          if((this.sections[i].sousSections.length - 1) != j)
            document.write(' <font color="#FFFFFF">-</font> ');
        }
        document.write('</div></layer>');
      }
    }
    return;
  }

  var posGauche = this.positionGauche();
  for(i = 0; i < this.sections.length; i++){
    if(this.sections[i].sousSections){
      document.write('<div align="center" onMouseOver="javascript:' + this.nom + '.onMouseOverSousMenu(' + i + ');" onMouseOut="javascript:' + this.nom + '.onMouseOutSousMenu(' + i + ');" id="sousMenu_' + this.nom + '_' + i + '" style="position:absolute; left:' + posGauche + 'px; top:' + this.sousMenuTop + 'px; width:' + this.sousMenuWidth + 'px; height:44px; z-index:1; border: 0px solid #000000; visibility: hidden; font-family:' + this.sousMenuFontFamily + '; font-size:' + this.sousMenuFontSize + '; font-weight:' + this.sousMenuFontWeight + '; color:' + this.sousMenuFontColor + ';">');
      for(j = 0; j < this.sections[i].sousSections.length; j++){
        var txt = replaceChars(this.sections[i].sousSections[j].nom, '-', '&middot;');
        txt = replaceChars(txt, ' ', '&nbsp;');
        document.write('<a class="' + this.sousMenuClass + '" href="' + (this.sections[i].sousSections[j].JS != true ? this.laRacine : '') + this.sections[i].sousSections[j].url + '">' + txt + '</a>');
        if((this.sections[i].sousSections.length - 1) != j)
          document.write(' - ');
      }
      document.write('</div>');
    }
  }
  this.onWindowResize();
}

function onMouseOverMenuItem(leMenu){
  if(this.timerID != -1){
    clearTimeout(this.timerID);
    this.fermerMenu(this.curMenu);
  }
  this.ouvrirMenu(leMenu);
}

function onMouseOutMenuItem(leMenu){
  this.tenterFermerMenu(leMenu);
}

function onMouseOverSousMenu(leMenu){
  clearTimeout(this.timerID);
  this.timerID = -1;
}

function onMouseOutSousMenu(leSousMenu){
  this.tenterFermerMenu(leSousMenu);
}

function tenterFermerMenu(leMenu){
  this.timerID = setTimeout(this.nom + '.fermerMenu(' + leMenu + ')', 1500);
}

function fermerMenu(leMenu){
  if(document.layers){
    var smnu = document.layers['sousMenu_' + this.nom + '_' + leMenu];
    if(smnu)
      smnu.visibility = 'hide';
    this.curMenu = -1;
    this.timerID = -1;
    return;
  }

  var mnu = document.getElementById('menu_' + this.nom + '_' + leMenu);
  var smnu = document.getElementById('sousMenu_' + this.nom + '_' + leMenu);
  var lien = document.getElementById('menu_lien_' + this.nom + '_' + leMenu);

  mnu.style.backgroundColor = this.menuCellColor;
  mnu.style.color = this.menuFontColor;
  if(lien){
    lien.style.color = this.menuFontColor;
    lien.style.textDecoration = 'none';
  }
  if(smnu)
    smnu.style.visibility = 'hidden';
  this.curMenu = -1;
  this.timerID = -1;
}

function ouvrirMenu(leMenu){
  if(document.layers){
    var smnu = document.layers['sousMenu_' + this.nom + '_' + leMenu];
    if(smnu)
      smnu.visibility = 'show';
    this.curMenu = leMenu;
    return;
  }

  var mnu = document.getElementById('menu_' + this.nom + '_' + leMenu);
  var smnu = document.getElementById('sousMenu_' + this.nom + '_' + leMenu);
  var lien = document.getElementById('menu_lien_' + this.nom + '_' + leMenu);

  mnu.style.backgroundColor = this.menuCellColorOver;
  mnu.style.color = this.menuFontColorOver;
  if(lien){
    lien.style.color = this.menuFontColorOver;
    lien.style.textDecoration = 'none';
  }
  if(smnu)
    smnu.style.visibility = 'visible';
  this.curMenu = leMenu;
}

function onWindowResize(){
  if(document.layers){
    document.location.reload();
    return;
  }

  var posGauche = this.positionGauche();
  if(navigator.platform.indexOf('Mac') == -1){
    for(var i = 0; i < this.sections.length; i++){
      if(this.sections[i].sousSections)
        document.getElementById('sousMenu_' + this.nom + '_' + i).style.left = posGauche + 'px';
    }
  }
  else{
    //document.location.reload();
  }
}

function positionGauche(){
  var theWidth = 0;
  if (window.innerWidth)
    theWidth = window.innerWidth
  else if (document.documentElement && document.documentElement.clientWidth)
    theWidth = document.documentElement.clientWidth
  else if (document.body)
    theWidth = document.body.clientWidth
  var pos = (theWidth / 2) - (this.sousMenuWidth / 2);
  if(pos < 0)
    pos = 0;
  return pos;
}

function replaceChars(str, searchFor, replaceWith) {
  temp = '' + str;

  while(temp.indexOf(searchFor) > -1){
    pos = temp.indexOf(searchFor);
    temp = '' + (temp.substring(0, pos) + replaceWith + temp.substring((pos + searchFor.length), temp.length));
  }
  return temp;
}

