//------------------------------------------------------------------------------
// Fonctions génériques.
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

function montre(cible)
{
	if (document.getElementById)
	{
		document.getElementById(cible).style.display = 'block';
	}
	else if (document.all)
	{
		document.all[cible].style.display = 'block';
	}
	else if (document.layers)
	{
		document.layers[cible].display = 'block';
	}
}

//------------------------------------------------------------------------------

function cache(cible)
{
	if (document.getElementById)
	{
		document.getElementById(cible).style.display = 'none';
	}
	else if (document.all)
	{
		document.all[cible].style.display = 'none';
	}
	else if (document.layers)
	{
		document.layers[cible].display = 'none';
	}
}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Fonctions propres à la barre de recherche.
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

// Premier clic pour le champ de recherche (input_search).
var premier_clic = true;

function manage_champ_recherche(form, select_type)
{
  var racc_type = 'document.' + form + '.' + select_type;
  var id_selection = eval(racc_type + '.selectedIndex');
  var val_selection = eval(racc_type + '.options')[id_selection].value;
  var tab_champs = new Array ('input_search', 'sel_art_search',
  'sel_aut_search', 'sel_trad_search');
  
  var id_nouv_champ;
  switch (val_selection)
  {
    case 'mot-clef':
      id_nouv_champ = 0;
      break;
    case 'artiste':
      id_nouv_champ = 1;
      break;
    case 'auteur':
      id_nouv_champ = 2;
      break;
    case 'traducteur':
      id_nouv_champ = 3;
      break;
    default:
      id_nouv_champ = -1;
      break;
  }
  if (id_nouv_champ != -1)
  {
    for (var i = 0; i < tab_champs.length; i++)
    {
      var racc_champ = 'document.' + form + '.' + tab_champs[i];
      if (i == id_nouv_champ)
      {
        eval(racc_champ).style.display = 'inline';
        
        if (id_nouv_champ == 0)
        {
          eval('document.' + form + '.input_search').value = 'Mot de pouvoir';
          premier_clic = true;
        }
        else
        {
          eval(racc_champ + '.options')[0].selected = true;
          if (eval(racc_champ).disabled)
            document.getElementsByName('btn_soumission')[0].disabled = true;
          else
            document.getElementsByName('btn_soumission')[0].disabled = false;
        }
      }
      else
        eval(racc_champ).style.display = 'none';
    }
  }
}

//------------------------------------------------------------------------------

function clic_input_search(form)
{
  if (premier_clic)
  {
    eval('document.' + form + '.input_search').value = '';
    premier_clic = false;
  }
  else
  {
    eval('document.' + form + '.input_search').select();
  }
}

//------------------------------------------------------------------------------

function ctrl_contenu_input_search(form)
{
  if (eval('document.' + form + '.input_search').style.display != 'none')
  {
    if (premier_clic || (eval('document.' + form + '.input_search').value == ''))
      return false;
  }
  
  return true;
}

//------------------------------------------------------------------------------

function ajouterEltListe(liste, element, position)
{
  var max = eval(liste).length;
  
  if ((position < 0))
    return;
  if (position > max)
    position = max;
  
  for (var i = (max - 1); i >= position; i--)
  {
    var nouvoption = new Option(liste.options[i].text, liste.options[i].value);
    liste.options[i + 1] = nouvoption;
  }
  liste.options[position] = element;
}

//------------------------------------------------------------------------------

function manage_rub_list(form, select_type, select_rub)
{
  // Création de raccourcis pour manipuler les listes.
  var racc_type = 'document.' + form + '.' + select_type;
  var racc_rub = 'document.' + form + '.' + select_rub;
  
  var i;
  var j;
  var max = eval(racc_rub).length;
  
  // Déclaration d'une variable statique de type tableau.
  if (typeof this.listeCopie == 'undefined')
  {
    this.listeCopie = new Array(max);
    
    for (i = 0; i < max; i++)
    {
      this.listeCopie[i] = new Array(2);
      this.listeCopie[i][0] = eval(racc_rub + '.options')[i].value;
      this.listeCopie[i][1] = eval(racc_rub + '.options')[i].text;
    }
  }
  if (typeof this.maxLC == 'undefined')
    this.maxLC = max;
  
  var id_selection = eval(racc_type + '.selectedIndex');
  var val_selection = eval(racc_type + '.options')[id_selection].value;
  var rub_val;
  
  if ((val_selection == 'auteur') || (val_selection == 'traducteur'))
  {
    for (i = 0; i < max; i++)
    {
      rub_val = eval(racc_rub + '.options')[i].value;
      switch (rub_val)
      {
        case 'romans':
          break;
        case '':
        case 'manuels':
        case 'comics':
          if (val_selection == 'traducteur')
          {
            eval(racc_rub).remove(i);
            i--;
            max = eval(racc_rub).length;
          }
          break;
        default:
          eval(racc_rub).remove(i);
          i--;
          max = eval(racc_rub).length;
          break;
      }
    }
    
    if (val_selection == 'auteur')
    {
      var tab_val_rub = new Array('', 'manuels', 'comics');
      for (var val_id = 0; val_id < tab_val_rub.length; val_id++)
      {
        for (i = 0; i < max; i++)
        {
          rub_val = eval(racc_rub + '.options')[i].value;
          if (rub_val == tab_val_rub[val_id])
            break;
        }
        if (i == max)
        {
          for (j = 0; j < this.maxLC; j++)
          {
            if (this.listeCopie[j][0] == tab_val_rub[val_id])
              break;
          }
          if (j < this.maxLC)
          {
            var nouvoption = new Option(this.listeCopie[j][1], this.listeCopie[j][0]);
            ajouterEltListe(eval(racc_rub), nouvoption, j);
            max = eval(racc_rub).length;
          }
        }
      }
    }
  }
  else
  {
    for (i = 0; i < this.maxLC; i++)
    {
      for (j = 0; j < max; j++)
      {
        rub_val = eval(racc_rub + '.options')[j].value;
        if (rub_val == this.listeCopie[i][0])
          break;
      }
      if (j == max)
      {
        var nouvoption = new Option(this.listeCopie[i][1], this.listeCopie[i][0]);
        ajouterEltListe(eval(racc_rub), nouvoption, i);
        max = eval(racc_rub).length;
      }
    }
  }
  
  eval(racc_rub + '.options')[0].selected = true;
}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Fonctions propres à l'affichage des pages de news.
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

function page_news(num_page)
{
  var page_news = document.getElementById('page_news');
  if (num_page == page_news.value)
    return;
  
  num_page = parseInt(num_page, 10);
  page_news.value = num_page;
  
  var nb_pages_de_news = parseInt(document.getElementById('nb_pages_de_news').value, 10);
  var nb_total_news = parseInt(document.getElementById('nb_total_news').value, 10);
  var nb_news_par_page = parseInt(document.getElementById('nb_news_par_page').value, 10);
  var min = 1 + ((num_page - 1) * nb_news_par_page);
  var max = min + (nb_news_par_page - 1);
  var i;
  var news;
  var sel_haut;
  var sel_bas;
  
  if (num_page == 1)
  {
    document.getElementById('page_news_prec_haut').style.visibility = 'hidden';
    document.getElementById('page_news_prec_bas').style.visibility = 'hidden';
  }
  else
  {
    document.getElementById('page_news_prec_haut').style.visibility = 'visible';
    document.getElementById('page_news_prec_bas').style.visibility = 'visible';
  }
  for (i = 1; i <= nb_pages_de_news; i++)
  {
    sel_haut = document.getElementById('page_news_sel_' + i + '_haut');
    sel_bas = document.getElementById('page_news_sel_' + i + '_bas');
    if (i == num_page)
    {
      sel_haut.style.cursor = 'default';
      sel_haut.style.fontWeight = 'bold';
      
      sel_bas.style.cursor = 'default';
      sel_bas.style.fontWeight = 'bold';
    }
    else
    {
      sel_haut.style.fontWeight = 'normal';
      sel_bas.style.fontWeight = 'normal';
    }
  }
  if (num_page == nb_pages_de_news)
  {
    document.getElementById('page_news_suiv_haut').style.visibility = 'hidden';
    document.getElementById('page_news_suiv_bas').style.visibility = 'hidden';
  }
  else
  {
    document.getElementById('page_news_suiv_haut').style.visibility = 'visible';
    document.getElementById('page_news_suiv_bas').style.visibility = 'visible';
  }
  
  for (i = 1; i <= nb_total_news; i++)
    cache('bloc_news_' + i);
  for (i = 1; i <= nb_total_news; i++)
  {
    if ((i >= min) && (i <= max))
      montre('bloc_news_' + i);
  }
}

function top_page()
{
  window.location.href = '#accueil';
}

//------------------------------------------------------------------------------

function page_news_precedente()
{
  var num = parseInt(document.getElementById('page_news').value, 10);
  page_news(num - 1);
}

//------------------------------------------------------------------------------

function page_news_suivante()
{
  var num = parseInt(document.getElementById('page_news').value, 10);
  page_news(num + 1);
}

//------------------------------------------------------------------------------

function sim_cursor_over(id_elt, num_sel)
{
  var elt = document.getElementById(id_elt);
  var id_page_news = parseInt(document.getElementById('page_news').value, 10);
  num_sel = parseInt(num_sel, 10);
  
  if (num_sel != id_page_news)
    elt.style.cursor = 'pointer';
}

//------------------------------------------------------------------------------

function sim_cursor_out(id_elt, num_sel)
{
  var elt = document.getElementById(id_elt);
  var id_page_news = parseInt(document.getElementById('page_news').value, 10);
  num_sel = parseInt(num_sel, 10);
  
  if (num_sel != id_page_news)
    elt.style.cursor = 'default';
}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Fonction propre à la sélection des images dans une fiche.
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

function select_image(num, max)
{
  var i;
  var elt;
  
  for (i = 1; i <= max; i++)
  {
    elt = 'img' + i + '_artiste';
    if (i == num)
    {
      document.getElementById(elt).style.display = 'block';
    }
    else
    {
      document.getElementById(elt).style.display = 'none';
    }
    
    elt = 'img' + i + '_image';
    if (i == num)
    {
      document.getElementById(elt).style.display = 'block';
    }
    else
    {
      document.getElementById(elt).style.display = 'none';
    }
    
    elt = 'img' + i + '_legende';
    if (i == num)
    {
      document.getElementById(elt).style.display = 'block';
    }
    else
    {
      document.getElementById(elt).style.display = 'none';
    }
    
    elt = 'img' + i + '_selector';
    if (i == num)
    {
      document.getElementById(elt).style.borderColor = "#6BA705";
    }
    else
    {
      document.getElementById(elt).style.borderColor = "#4E7A02";
    }
    
    elt = 'img' + i + '_comm';
    if (i == num)
    {
      document.getElementById(elt).style.display = 'block';
    }
    else
    {
      document.getElementById(elt).style.display = 'none';
    }
    
    elt = 'img' + i + '_liens';
    if (i == num)
    {
      document.getElementById(elt).style.display = 'block';
    }
    else
    {
      document.getElementById(elt).style.display = 'none';
    }
  }
}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Fonctions annexes.
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

// Fonction propre à l'ouverture d'un lien à partir de la valeur d'un champ
// option.

function ouvrir_lien(form, select, target)
{
  var racc_select = 'document.' + form + '.' + select;
  var index;
  var url;
  
  index = eval(racc_select + '.selectedIndex');
  url = eval(racc_select + '.options')[index].value;
  if (target == '_self')
    window.location.href = url;
  else
    window.open(url);
}

//------------------------------------------------------------------------------

// Fonction de contrôle du sélecteur de tailles pour wallpapers avant ouverture
// d'un lien.

function ctrl_sel_tailles_wp(form, select, target)
{
  var racc_select = 'document.' + form + '.' + select;
  var index = eval(racc_select + '.selectedIndex');
  
  if (index == -1)
    return;
  
  ouvrir_lien(form, select, target);
}

//------------------------------------------------------------------------------

// Fonction propre à l'affichage d'un texte "spoiler".
function aff_spoiler(num_spoiler)
{
  var id_elt = 'spoiler_content_' + num_spoiler;
  var elt = document.getElementById(id_elt);
  
  elt.style.visibility = 'visible';
  elt.style.cursor = 'auto';
  
  id_elt = 'spoiler_area_' + num_spoiler;
  elt = document.getElementById(id_elt);
  
  elt.style.backgroundColor = '#F5F2BC';
}

//------------------------------------------------------------------------------
