//          ________
//          |/\/\/\|
//          | o o  |
//-----oOOO---(_---OOOo---------------------------------------------------------------------------------------
//
// Auteur      : Chanh T.Do [Thoransoft - 2009.01.22]
// Description : fichier contenant les fonctions pour la recherche.
// JScript File
//------------------------------------------------------------------------------------------------------------

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

/** Fonction permettant de setter les label pour qu'ils deviennent cliquable 
    avec leur checkbox respectifs. */
function enableLabelClick()
{
  var eTdList, eInput, eLabel;

  //À partir de l'accordion, on va ajouter des attributs pour les éléments
  //label afin qu'ils deviennent cliquable.
  var tbList = document.getElementsByTagName('dl')[0].getElementsByTagName('table');
  for (var i=0; i<tbList.length; i++)
  {
    //Pour chacune des cellules du tableau, on ajoute un attribut cliquable pour le label
    //Lorsqu'on clique sur le label, le checkbox doit être cliqué. Le checkbox vient en
    //premier et ensuite le label (traitement par groupe de 2)
    eTdList = tbList[i].getElementsByTagName('td');
    for (var j=0; j<eTdList.length; j+=2)
    {
      eInput = eTdList[j].getElementsByTagName('input')[0];
      eInput.setAttribute('id','input_' + i + '_' + j);
      eLabel = eTdList[j+1].getElementsByTagName('label')[0];
      eLabel.setAttribute('id','label_' + i + '_' + j);
      //eLabel.setAttribute('onclick', 'chkMe(this.id)');
      //eLabel.attachEvent('onclick',chkMe);
    }
  }
}


/** Fonction permettant de rendre un checkbox checked lorsqu'il ne l'est pas et de le
    rendre unchecked lorsqu'il est. Prend en paramètre le id du checkbox.
    @param {string} id - id du label */
function chkMe(id)
{
  var cBox = document.getElementById('input' + id.substring(5,id.length));

  if (cBox.checked) { cBox.checked = false; }
  else { cBox.checked = true; }
}


/** fonction permettant de cocher ou décocher toutes les cases d'une section
    @param {string} sectionId - ID de la section (élément table) */
function chkAll(sectionId)
{
  var eTable = document.getElementById(sectionId);
  var inputList = eTable.getElementsByTagName('input');

  //Si la première case est cochée, on coche toutes les autres case.
  //Sinon, on décoche toutes les autres cases.
  var chk = (inputList[0].checked) ? true : false;
  for (var i=1; i<inputList.length; i++) { inputList[i].checked = chk; }
}


/** Fonction permettant d'enlever du texte (hint) dans les textbox
    @param {string} textBoxId - Id du textbox */
function removeMask(textBoxId)
{
  var txtBox = document.getElementById(textBoxId)
  if (txtBox != undefined)
  {
    if (txtBox.value == "Saisissez le nom de l'auteur (ou nom prénom)") { txtBox.value = ""; }
    else if (txtBox.value == "Saisissez un mot ou une suite exacte de mots (sans l'article au début)") { txtBox.value = ""; }
    else if (txtBox.value == ' AUTEUR / TITRE / ISBN') { txtBox.value = ""; }
  }
}


/** Fonction permettant de ramener les paramètres de la recherche (paramètres initiaux) */
function getSearchParams()
{
  var auteur, titre, genre, domaine, discipline, specialites, r_value;

  //Vérifier si on a un objet "input type text" pour le genre si oui, cela veut dire qu'on a déjà
  //changer de page au moins une fois (2e POST server et plus).
  if (document.getElementById('tbox_genre') != undefined)
  {
    //On inscrit les paramètres pour la prochaine recherche
    auteur = document.getElementById('tbox_auteur').value;
    titre = document.getElementById('tbox_titre').value;
    genre = document.getElementById('tbox_genre').value;
    domaine = document.getElementById('tbox_domaine').value;
    discipline = document.getElementById('tbox_discipline').value;
    specialites = document.getElementById('tbox_specialites').value;
    r_value =  auteur + titre + genre + domaine + discipline + specialites;
  }
  else
  {
    //On trouve les paramètres pour l'auteur
    auteur = (document.getElementById('tbox_auteur').value.substr(0,9) == "Saisissez") ? 
             //"auteur=" : "auteur=" + (trimAll(document.getElementById('tbox_auteur').value).replace(/[ ]+/g,'|')).toUpperCase();
             "auteur=" : "auteur=" + trimAll(document.getElementById('tbox_auteur').value).toUpperCase();

    //On trouve les paramètres pour le titre
    titre = (document.getElementById('tbox_titre').value.substr(0,9) == "Saisissez") ?
            //"&titre=" : "&titre=" + (trimAll(document.getElementById('tbox_titre').value).replace(/[ ]+/g,'|')).toUpperCase();
            "&titre=" : "&titre=" + trimAll(document.getElementById('tbox_titre').value).toUpperCase();

    //On ramène tous les autres critères
    //G E N R E
    var eTabGenre = document.getElementById('genre');
    var genreLst = eTabGenre.getElementsByTagName('input');
    genre = '&genre=';
    for (var i=0; i<genreLst.length; i++) { genre += (genreLst[i].checked) ? genreLst[i].value + "|" : ""; }

    //D O M A I N E
    var eTabDomaine = document.getElementById('domaine');
    var domaineLst = eTabDomaine.getElementsByTagName('input');
    domaine = '&domaine=';
    for (i=0; i<domaineLst.length; i++) { domaine += (domaineLst[i].checked) ? domaineLst[i].value + "|" : ""; }

    //D I S C I P L I N E
    var eTabDiscipline = document.getElementById('discipline');
    var disciplineLst = eTabDiscipline.getElementsByTagName('input');
    discipline = '&discipline=';
    for (i=0; i<disciplineLst.length; i++) { discipline += (disciplineLst[i].checked) ? disciplineLst[i].value + "|" : ""; }

    //S P É C I A L I T É S
    var eTabSpecialites = document.getElementById('specialites');
    var specialitesLst = eTabSpecialites.getElementsByTagName('input');
    specialites = '&specialites=';
    for (i=0; i<specialitesLst.length; i++) { specialites += (specialitesLst[i].checked) ? specialitesLst[i].value + "|" : ""; }
    r_value = auteur + titre + genre.substr(0,genre.length-1) + domaine.substr(0,domaine.length-1) +
              discipline.substr(0,discipline.length-1) + specialites.substr(0,specialites.length-1);
  }
  
  return r_value;
}


/** Fonction permettant d'appeler la recherche
    @param {string} type - Type d'item [R=Recherche ou T=Titres]
    @param {int} page_number - Numéro de la page à appeler
    @param {var} function_or_param - Nom de la fonction que l'on doit appeller pour envoyer les paramètres ou pour un titre, l'année de parution */
function getBooks(type, page_number, function_or_param)
{
  //Initialiser le menu pour le mettre à catalogue [Demande de D.Houde - Patch]
  setSubMenu('L020_recherche');

  switch (type)
  {
    case "A": //Recherche Avancée avec touche [ENTER]
         if (window.document.URL.indexOf('includes') == -1) {
           requestSrv_POST('includes/result_fastsearch.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT',function_or_param); }
         else {
           requestSrv_POST('result_fastsearch.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT',function_or_param); }
         break;

    case "R": //Recherche avancée normale [ok]
         //Pour que la recherche fonctionne même lorsqu'on est dans le répertoire includes
         if (window.document.URL.indexOf('includes') == -1) {
           requestSrv_POST('includes/result_recherche.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT', function_or_param()); }
         else {
           requestSrv_POST('result_recherche.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT', function_or_param()); }
         break;
         
    case "T":
         if (window.document.URL.indexOf('includes') == -1) {
           requestSrv('includes/titres.inc.php?page=pagecontent&P=' + page_number + '&annee=' + function_or_param, loadPageContent, 'TEXT'); }
         else {
           requestSrv('titres.inc.php?page=pagecontent&P=' + page_number + '&annee=' + function_or_param, loadPageContent, 'TEXT'); }
         break;

    case "F": //Fast search
         if (window.document.URL.indexOf('includes') == -1) {
           requestSrv_POST('includes/result_fastsearch.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT', function_or_param); }
         else {
           requestSrv_POST('result_fastsearch.inc.php?page=pagecontent&P=' + page_number, loadPageContent, 'TEXT', function_or_param); }
         break;
  }
}


/** Fonction permettant de ramener les paramètres de la recherche (paramètres initiaux)
    @param {array} arguments - Premier argument est pour la recherche avancé. Sinon, aucun argument. */
function getFastSearchParams()
{
  var params;
  var searchId = (arguments.length > 0) ? arguments[0]: 'fastsearch';

  //Vérifier si on a un objet "input type text" pour le genre si oui, cela veut dire qu'on a déjà
  //changer de page au moins une fois (2e POST server et plus).
  if (((document.getElementById(searchId) != undefined) && (document.getElementById(searchId).value != '') && (document.getElementById(searchId).value != ' AUTEUR / TITRE / ISBN')) || (arguments[1] == 'ok'))
  {
    //On trouve les paramètres pour l'auteur
    params = (document.getElementById(searchId).value.substr(0,7) == " AUTEUR") ?
             //"params=" : "params=" + (trimAll(document.getElementById(searchId).value).replace(/[ ]+/g,'|')).toUpperCase();
             "params=" : "params=" + (trimAll(document.getElementById(searchId).value)).toUpperCase();
    document.getElementById(searchId).value = ' AUTEUR / TITRE / ISBN';
  }
  else {params = (document.getElementById('tbox_params')) ? document.getElementById('tbox_params').value : ''; }
  return params;
}
