﻿//          ________
//          |/\/\/\|
//          | 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 'home'; }
  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')
  {
    //Initialiser le menu
    initMenuLnk('zm');
    document.getElementById(id).style.backgroundColor = '#ff9d01';
    loadPage(id);
  }
  else
  {
    var idLst = id.split('_');
    gotoURL(idLst[1] + ".aspx");
  }
}


/** 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 de modifier la source de l'image header
    @param {string} imgId - ID de l'image
    @param {string} path - Chemin de l'image */
function chgSrcImg(imgId, path)
{
  var eImg = document.getElementById(imgId);
  if (eImg != undefined)
  {
    eImg.src = path;
  }
}


/** Fonction permettant de ré-initialiser tous les liens des menus
    @param {string} prefix - Préfix du ID du menu */
function initMenuLnk(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,prefix.length) == prefix) { eList[i].style.backgroundColor = ''; }
  }
}


/** Finction permettant de charger une page en mode assynchrone
    @param {string} id - ID du menu ou sous-menu */
function loadPage(id)
{
  //Charger le pageContent (mode Asynchrone). Le pageContent est défini par le
  //id passé en paramètre. Par exemple: zm_home. home représente
  //le pageContent
  var idLst = id.split('_');
  requestSrv(idLst[1] + '.aspx',loadPageContent,'TEXT');
  
  //Changer les images au besoin
  //chgSrcImg('h_img', 'images/h_' + idLst[1] + '.jpg');
}


/** 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('A',1,getFastSearchParams(arguments[1]));}
        else {getBooks('F',1,getFastSearchParams);}
        return null;

      default:
        return e.keyCode;
    }
  }
  catch (e) {}
}


function Asc(String) { return String.charCodeAt(0); }
function Chr(AsciiNum) { return String.fromCharCode(AsciiNum); }


/** Fonction permettant de changer de langue et de titre de la page */
function chgLng()
{
  var pName = document.getElementById('pageInfo').getAttribute('lngEquiv');
  var lnglnk = (document.URL.indexOf('/fr/') > -1) ? "/en/" + pName + '.aspx' : "/fr/" + pName + '.aspx';
  document.getElementById('chlng').setAttribute('href',lnglnk);
}
