//          ________
//          |/\/\/\|
//          | o o  |
//-----oOOO---(_---OOOo---------------------------------------------------------------------------------------
//
// Auteur      : Chanh T.Do [Thoransoft - 2008.04.08]
// Description : fichier contenant les fonctions globales du site.
// JScript File
//------------------------------------------------------------------------------------------------------------

/**
* @fileOverview
  globalfunc.js [JScript File]: <br>
  Scripts de fonctions globales utilisées dans le site<br>
  @author: Chanh T.Do [www.thoransoft.com - 2008.04.08] <br>
  Version 1.0 */

//Variable pour DynamicPage
IS_DYNAMIC_PAGE = 'yes';

//----- hideElementById -----
/** Fonction permettant de rendre invisible les DropDownlists (patch pour le Bug D'IE6)
    <b>Note</b>: Les DDL sont toujours visibles par dessus tout élément DIV !<br>
    Fonctionne aussi pour rendre invisible tous les éléments ID.
    @param {string} id - ID de l'élément que l'on veut rendre invisible */
function hideElementById(id)
{ var d = document.getElementById(id);
  if (d != undefined) { d.style.display = 'none'; }
}


//----- unhideElementById -----
/** Fonction permettant de rendre visible les éléments ID.
    @param {string} id - ID de l'élément que l'on veut rendre visible */
function unhideElementById(id)
{ var d = document.getElementById(id);
  if (d != undefined) { d.style.display = 'block'; }
}


/** Fonction permettant de swapper le style d'affichage (block devient none et vice-versa) <br>
    @param {string} id - ID de l'élement à swapper */
function swapDisplay(id)
{
  var e = document.getElementById(id);
  if (e != undefined)
  {
    if (e.style.display == 'block') { e.style.display = 'none'; }
    else { e.style.display = 'block'; }
  }
}


/** Fonction pour rediriger vers une page html
    @param {string} strURL - Contient l'adresse URL */
function gotoURL(strURL)
{
  var location=(strURL);
  this.location.href = location;
}


/** Fonction permettant de retourner le nom de la page sans le point et l'URL au complet
    @return {string} Contient le nom de la page courante */
function getCurrentPage()
{
  currentPage = document.URL.substring(document.URL.lastIndexOf('/')+1, document.URL.lastIndexOf('.'));
  if ((currentPage.substr(0,4) == 'http') || (currentPage.substr(0,1) == '.')) { return 'presentation'; }
  else { return currentPage; }
}


/** Fonction permettant de setter le menu et de loader le contenu de droite du site
    @return {string} id - Contient le ID du menu ou sous-menu */
function dynamicPage(id)
{
  if (IS_DYNAMIC_PAGE == 'yes')
  {
    //Si le premier caractère du ID est S, c'est un sous-menu, sinon, c'est un menu
    (id.substr(0,1) == 'S') ? setSubMenuLnk(id) : setSubMenu(id);
    loadPage(id);
  }
  else
  {
    var idLst = id.split('_');
    var currentPage = "";
    switch (idLst[1])
    {
      case "titres2009":
      case "titres2008":
      case "titres2007":
           currentPage = "titres.php?annee=" + idLst[1].substr(6,4);
           break;

      default:
           currentPage = idLst[1] + ".php";
    }
    gotoURL(currentPage);
  }
}


/** Fonction permettant de charger un script externe
    @param {string} url - Adresse du script */
function dhtmlLoadScript(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}


/** Fonction permettant d'afficher un sous-menu
    @param {string} id - id du menu */
function setSubMenu(id)
{ initSubMenuDiv('site_smenu');     //Réinit le DIV du sous-menu
  initSubMenu('S');                 //Réinit le sous-menu

  //Afficher l'élément sous-menu ainsi que le lien du sous-menu en noir
  var e = document.getElementById('site_smenu_' + id.substr(0,4));
  if (e != undefined)
  {
    e.style.display = 'block';
    var smenu = document.getElementById('S' + id);
    if (smenu != undefined) { smenu.style.color = '#333333'; }
  }

  //Reset des couleurs du menu avant de mettre l'item passé en paramètre en blanc
  var eM = document.getElementById('site_menu');
  var eMList = eM.getElementsByTagName('a');
  for (i=0; i<eMList.length; i++) { eMList[i].style.color = ''; }

  if (id.substr(id.length -4, 3) == '200') { document.getElementById('L020_recherche').style.color = '#999999'; }
  else
  {
    //Patch pour les menus Crédits et Plan du site
    if ((id == 'L060_credits') || (id == 'L050_plan')) { document.getElementById(id).style.color = '#000000'; }
    else { document.getElementById(id).style.color = '#999999'; }
  }

}


/** Fonction permettant de setter les liens des sous-menu
    @param {string} id - id du lien du sous-menu */
function setSubMenuLnk(id)
{
  initSubMenu('S');
  document.getElementById(id).style.color = '#333333';
}


/** Fonction permettant de modifier la source de l'image header
    @param {string} path - Chemin de l'image */
function chgSrcImg(path)
{
  if (path.indexOf('swf') > -1)
  {
    hideAllImg();
    unhideElementById('head_swf');
  }
  else
  {
    hideAllImg()
    hideElementById('head_swf');
    if (path.indexOf('credits') > -1 ) { unhideElementById('credits'); }
    if (path.indexOf('manuscrits') > -1 || path.indexOf('plan') > -1) { unhideElementById('manuscrits_plan'); }
    if (path.indexOf('equipe') > -1 ) { unhideElementById('equipe'); }
    if (path.indexOf('liens') > -1 ) { unhideElementById('liens'); }
    if (path.indexOf('politique') > -1 || path.indexOf('presentation') > -1) { unhideElementById('politique_presentation'); }
  }
}


/** Permet de cacher toutes les images du header */
function hideAllImg()
{
  hideElementById('credits');
  hideElementById('manuscrits_plan');
  hideElementById('equipe');
  hideElementById('liens');
  hideElementById('politique_presentation');
}


/** Fonction permettant de ré-initialiser tous les liens des sous-menu
    @param {string} prefix - Préfix du ID du sous-menu */
function initSubMenu(prefix)
{
  //Ré-initaliser la couleur des liens des sous-menu en gris.
  var eList = document.getElementsByTagName('a');
  for (i=0; i<eList.length; i++)
  {
    if (eList[i].id.substr(0,1) == prefix) { eList[i].style.color = ''; }
  }
}


/** Fonction permettant de ré-initilaliser les div du sousmenu
    @param {string} sMenuDivId - ID de l'élément div du sous-menu */
function initSubMenuDiv(sMenuDivId)
{
  //Cacher tous les éléments sous-menu
  var eDiv = document.getElementById(sMenuDivId);
  var sMnuList = eDiv.getElementsByTagName('div');
  for (var i=0; i< sMnuList.length; i++) { sMnuList[i].style.display = 'none'; }
}


/** Finction permettant de charger une page en mode assynchrone
    @param {string} id - ID du menu ou sous-menu */
function loadPage(id)
{
  //Afficher le search box pour toutes les pages
  unhideElementById('search_box');

  //Charger le pageContent (mode Asynchrone). Le pageContent est défini par le
  //id passé en paramètre. Par exemple: L010_presentation. presentation représente
  //le pageContent
  var idLst = id.split('_');
  switch (idLst[1])
  {
    case "titres2008":
    case "titres2007":
    case "titres2009":
         requestSrv('includes/titres.inc.php?page=pagecontent&annee=' + idLst[1].substr(6,4),loadPageContent,'TEXT');
         idLst[1] += '.swf';
         break;

    case "recherche":
         //Lorsque c'est la recherche avancée, on cache le search box
         document.getElementById('SL020_recherche').style.color = '#333333';
         //hideElementById('search_box');
         initSubMenuDiv('site_smenu');
         unhideElementById('site_smenu_L020');
         requestSrv('includes/' + idLst[1] + '.inc.php?page=pagecontent',loadPageContent,'TEXT');
         idLst[1] += '.swf';
         break;

    case "credits":
         hideElementById('search_box');
         requestSrv('includes/' + idLst[1] + '.inc.php?page=pagecontent',loadPageContent,'TEXT');
         idLst[1] += '.jpg';
         break;

    default:
         //Non utilisé parce qu'il n'y a pas de XSLT Processeur sur le serveur.
         //requestSrv('phplib/loadxml.php?page=' + idLst[1] + '&transf=pagecontent',loadPageContent,'TEXT');
         requestSrv('includes/' + idLst[1] + '.inc.php?page=pagecontent',loadPageContent,'TEXT');
         idLst[1] += '.jpg';
  }

  //A modifier plus tard pour remplacer par des flash
  chgSrcImg('images/h_' + idLst[1]);
}


/** Fonction permettant d'effectuer un Trim (Left and Right) pour enlever les espaces blanc
 *  au début et à la fin d'un string
 *  @param {string} sString - Contient le string
 *  @retrun {string} - Contient la chaîne de caractère modifiée */
function trimAll(sString)
{
  while (sString.substring(0,1) == ' ') { sString = sString.substring(1, sString.length); }
  while (sString.substring(sString.length-1, sString.length) == ' ') { sString = sString.substring(0,sString.length-1); }
  return sString;
}


/** Fonction permettant de trapper l'événement on keypress
    @param {event} e - Event (onkeypress) */
function keyPressEvent(e)
{
  try
  {
    switch (e.keyCode)
    {
      case 13:
        var pId = document.getElementById('fastsearch').value.substr(1, document.getElementById('fastsearch').value.length - 2);
        unhideElementById(pId);

        if (arguments.length > 1) { getBooks('R',1,getSearchParams); }
        else { getBooks('F',1,getFastSearchParams('fastsearch','ok')); }
        return null;

      default:
        return e.keyCode;
    }
  }
  catch (e) {}
}


function Asc(String) { return String.charCodeAt(0); }
function Chr(AsciiNum) { return String.fromCharCode(AsciiNum); }
