// Gestion des photos du mois
premier_delai_photo = 2000;
delai_photo = 5000;
delai_fondu = 100;
repertoire_photos = "photos_mois/";
function definir_photos(indice_photo) {
  indice_front = indice_photo;
  indice_back   = (indice_front == indice_max_photos) ? 0 : (indice_front + 1);
  document.getElementById("photo_mois_front").style.backgroundImage = "url('" + repertoire_photos + photos[indice_front] + "')";
  document.getElementById("photo_mois_back").style.backgroundImage  = "url('" + repertoire_photos + photos[indice_back] + "')";
}
function fondu(niveau) {
  element_photo = document.getElementById("photo_mois_front");
  if (document.all) { element_photo.filters.alpha.opacity = niveau; }
  niveau_mozilla = niveau / 100;
  element_photo.style.MozOpacity  = niveau_mozilla;
  element_photo.style.opacity     = niveau_mozilla;
  niveau -= 5;
  if (niveau >= 0) window.setTimeout("fondu(" + niveau + ")", delai_fondu);
}
function montrer_photo(indice_photo) {
  indice_max_photos = photos.length - 1;
  definir_photos(indice_photo);
  fondu(100);
  indice_photo = (indice_photo == indice_max_photos) ?  0 : (indice_photo + 1);
  window.setTimeout("montrer_photo(" + indice_photo + ")", delai_photo);
}
function diaporama() {
  //window.setTimeout("montrer_photo(0)", premier_delai_photo);
  montrer_photo(0);
}
// Prévisualisation
function remplir_champ(champ_source, champ_destination) {
  element_source = window.opener.document.forms["navigation"].elements[champ_source];
  element_destination = document.getElementById(champ_destination);
  element_destination.innerHTML = element_source.value;
}
function previsualiser(champ_1, champ_2, page) {
  if (champ_1 != "") updateRTE(champ_1);
  if (champ_2 != "") updateRTE(champ_2);
  window.open(page, "previsualisation", "width=642,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no");
}
function previsualiser_article() {
  previsualiser("resume", "", "article_previsualiser.php");
}
function previsualiser_randonnee() {
  previsualiser("informations", "acces", "randonnees_previsualiser.php");
}
// Ouverture de la photothèque
function NAV_phototheque(un_identifiant) {
  une_url = "phototheque.php?identifiant=" + un_identifiant;
  window.open(une_url, "phototheque", "width=1024,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no");
}
// NOUVELLE NAVIGATION
function NAV_aller(une_categorie, un_identifiant, une_action, controle) {
  resultat_controle = true;
  if (controle) resultat_controle = NAV_controler();
  if (resultat_controle) {
    document.forms["navigation"].categorie_courante.value = une_categorie;
    document.forms["navigation"].identifiant_courant.value = un_identifiant;
    document.forms["navigation"].action_courante.value = une_action;
    document.forms["navigation"].submit();
  } else {
    document.getElementById("erreur_formulaire").style.display = "block";
  }
}
function NAV_confirmer(un_message, une_categorie, un_identifiant, une_action, controle) {
  if (confirm(un_message)) NAV_aller(une_categorie, un_identifiant, une_action, controle);
}
function NAV_confirmer_photo(un_message, une_categorie, un_identifiant, une_action, identifiant_photo, controle) {
  if (confirm(un_message)) {
    document.forms["navigation"].identifiant_photo.value = identifiant_photo;
    NAV_aller(une_categorie, un_identifiant, une_action, controle);
  }
}
function NAV_filtrer(un_filtre, une_categorie, un_identifiant, une_action, controle) {
  document.forms["navigation"].champ.value = un_filtre;
  NAV_aller(une_categorie, un_identifiant, une_action, controle);
}
function NAV_valider(champ_1, champ_2, une_categorie, un_identifiant, une_action, controle) {
  if (champ_1 != "") updateRTE(champ_1);
  if (champ_2 != "") updateRTE(champ_2);
  NAV_aller(une_categorie, un_identifiant, une_action, controle);
}
function NAV_recommencer() { document.forms["navigation"].reset(); }
function NAV_GEN_colorier(nom_formulaire, nom_champ, resultat) {
  couleur = (resultat) ? "#ffffff" : "#efefef";
  document.forms[nom_formulaire].elements[nom_champ].style.backgroundColor = couleur;
}
function NAV_colorier(nom_champ, resultat) {
  NAV_GEN_colorier("navigation", nom_champ, resultat);
}
function NAV_GEN_controler_champ_obligatoire(nom_formulaire, nom_champ) {
  resultat = (document.forms[nom_formulaire].elements[nom_champ].value != "");
  NAV_GEN_colorier(nom_formulaire, nom_champ, resultat);
  return resultat;
}
function NAV_controler_champ_obligatoire(nom_champ) {
  return NAV_GEN_controler_champ_obligatoire("navigation", nom_champ);
}
function NAV_bisextile(annee) {
  resultat = false;
  reste = annee % 400;
  if (reste == 0) resultat = true;
  else {
    reste_4 = annee % 4;
    reste_100 = annee % 100;
    if ((reste_4 == 0) && (reste_100 != 0)) resultat = true;
  }
  return resultat;
}
function NAV_GEN_controler_champ_date(nom_formulaire, nom_champ, obligatoire) {
  cause = 0;
  valeur_champ = document.forms[nom_formulaire].elements[nom_champ].value;
  if (valeur_champ == "") { if (obligatoire) cause = 1; }
  else {
    regle = new RegExp("[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]");
    controle = regle.test(valeur_champ);
    if (!controle) cause = 2;
    if (controle) {
      tableau = valeur_champ.split("/");
      jour = parseInt(tableau[0], 10);
      mois = parseInt(tableau[1], 10);
      annee = parseInt(tableau[2], 10);
      if ((annee < 1900) || (annee > 2100)) cause = 3;
      else {
        if (jour <= 0) cause = 3;
        else {
          fevrier_max = (NAV_bisextile(annee)) ? 29 : 28;
          switch(mois) {
            case 1 : if (jour > 31) cause = 4; break;
            case 2 : if (jour > fevrier_max) cause = 5; break;
            case 3 : if (jour > 31) cause = 6; break;
            case 4 : if (jour > 30) cause = 7; break;
            case 5 : if (jour > 31) cause = 8; break;
            case 6 : if (jour > 30) cause = 9; break;
            case 7 : if (jour > 31) cause = 10; break;
            case 8 : if (jour > 31) cause = 11; break;
            case 9 : if (jour > 30) cause = 12; break;
            case 10 : if (jour > 31) cause = 13; break;
            case 11 : if (jour > 30) cause = 14; break;
            case 12 : if (jour > 31) cause = 15; break;
            default: cause = 16;  break
          }
        }
      }
    }
  }
  resultat = (cause == 0);
  NAV_GEN_colorier(nom_formulaire, nom_champ, resultat);
  return resultat;
}
function NAV_controler_champ_date(nom_champ, obligatoire) {
  return NAV_GEN_controler_champ_date("navigation", nom_champ, obligatoire);
}
function NAV_GEN_controler_champ_courriel(nom_formulaire, nom_champ, obligatoire) {
  valeur_champ = document.forms[nom_formulaire].elements[nom_champ].value;
  if (valeur_champ == "") resultat = (!obligatoire);
  else if (valeur_champ.indexOf(" ") != -1) resultat = false;
  else {
    controle_at = valeur_champ.split("@");
    if ((controle_at.length != 2) || (controle_at[0].length == 0) || (controle_at[1].length == 0)) resultat = false;
    else {
      domaine = controle_at[1];
      controle_domaine = domaine.split(".");
      if ((controle_domaine.length != 2) || (controle_domaine[0].length == 0) || (controle_domaine[1].length == 0)) resultat = false;
      else resultat = true;
    }
  }
  NAV_GEN_colorier(nom_formulaire, nom_champ, resultat);
  return resultat;
}
function NAV_controler_champ_courriel(nom_champ, obligatoire) {
  return NAV_GEN_controler_champ_courriel("navigation", nom_champ, obligatoire);
}
function NAV_GEN_controler_champ_liste(nom_formulaire, nom_champ) {
  resultat = (document.forms[nom_formulaire].elements[nom_champ].value != "0");
  NAV_GEN_colorier(nom_formulaire, nom_champ, resultat);
  return resultat;
}
function NAV_controler_champ_liste(nom_champ) {
  return NAV_GEN_controler_champ_liste("navigation", nom_champ);
}
function NAV_GEN_controler_champ_lien(nom_formulaire, nom_champ) {
  regle = new RegExp("http.+");
  champ_courant = document.forms[nom_formulaire].elements[nom_champ];
  if (!regle.test(champ_courant.value)) champ_courant.value = "http://" + champ_courant.value;
}
function NAV_controler_champ_lien(nom_champ) {
  return NAV_GEN_controler_champ_lien("navigation", nom_champ);
}
function NAV_localiser(adresse) {
  var fenetre;
  var width = 500;
  var height = 500;
  var topPosition = (screen.height - height) / 2;
  var leftPosition = (screen.width - width) / 2;
  var windowprops = "width=" + width + ",height=" + height + ",top=" + topPosition + ",left=" + leftPosition + ",location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=no,status=no";
  document.forms["navigation"].elements["localisation_courante"].value = adresse;
  fenetre = window.open("localisation.php", "localisation", windowprops);
  fenetre.focus();
}
function NAV_localiser_programme() {
  var fenetre;
  var width = 800;
  var height = 600;
  var topPosition = (screen.height - height) / 2;
  var leftPosition = (screen.width - width) / 2;
  var windowprops = "width=" + width + ",height=" + height + ",top=" + topPosition + ",left=" + leftPosition + ",location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=no,status=no";
  fenetre = window.open("randonnees_localisation.php", "localisation_programme", windowprops);
  fenetre.focus();
}
// Editeur WYSIWYG
function editeurWYSIWYG(nom_champ, valeur_champ) {
  writeRichText(nom_champ, valeur_champ, 510, 200, true, false, true);
}
function editeurWYSIWYG_sansImage(nom_champ, valeur_champ) {
  writeRichText(nom_champ, valeur_champ, 510, 200, true, false, false);
}
initRTE('concept/images/', 'concept', 'style.css', 'FR');
// Météo
function temps_aujourdhui() {
  element = document.getElementById("titre_meteo");
  element.innerHTML = "le temps aujourd'hui";
  element = document.getElementById("meteo");
  element.style.backgroundImage = "url(http://www.my-meteo.fr/meteo+webmaster/carte+france+24h.php)";
  element.style.backgroundPosition = "-30px -273px";
  element = document.getElementById("lien_meteo");
  element.innerHTML = "voir le temps de demain";
  element = document.getElementById("bouton_meteo");
  element.href = "javascript:temps_demain()";
}
function temps_demain() {
  element = document.getElementById("titre_meteo");
  element.innerHTML = "le temps de demain";
  element = document.getElementById("meteo");
  element.style.backgroundImage = "url(http://www.my-meteo.fr/meteo+webmaster/carte+france+48h.php)";
  element.style.backgroundPosition = "-30px -273px";
  element = document.getElementById("lien_meteo");
  element.innerHTML = "voir le temps d'aujourd'hui";
  element = document.getElementById("bouton_meteo");
  element.href = "javascript:temps_aujourdhui()";
}
// Google Map
    var map;    
    var gdir;
    var geocoder = null;
    var addressMarker;
    function charger() {
      if (GBrowserIsCompatible()) {
        element = document.getElementById("directions");
        element.innerHTML = "";
        map = new GMap2(document.getElementById("carte"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());
        gdir = new GDirections(map, document.getElementById("directions"));
        GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);
        setDirections(document.forms["navigation"].depart.value, document.forms["navigation"].arrivee.value, "fr_FR");
      }
    }
    function setDirections(fromAddress, toAddress, locale) {
      gdir.load("from: " + fromAddress + " to: " + toAddress,
               { "locale": locale });
    }
    function handleErrors() {
      
      if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("L'adresse de départ ou d'arrivée n'est pas reconnue. Ceci peut être dû au fait qu'elle est relativement récente ou bien mal saisie.\n Code d'erreur : " + gdir.getStatus().code);
      else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) alert("Une localisation ou le calcul d'un itinéraire a échoué pour des raisons inconnues.\n Code d'erreur : " + gdir.getStatus().code);
      else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) alert("L'adresse de départ ou d'arrivée n'a pas sans dout pas été saisi.\n Code d'erreur : " + gdir.getStatus().code);
      else if (gdir.getStatus().code == G_GEO_BAD_KEY) alert("La clé de recherche fournie est erronée ou ne correspond pas au domaine donné.\n Code d'erreur : " + gdir.getStatus().code);
      else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) alert("Une erreur est intervenue dans l'analyse de la requête.\n Code d'erreur : " + gdir.getStatus().code);
      else alert("Saisissez votre lieu de depart et cliquez sur GO!");
    }     
    function onGDirectionsLoad(){ 
      // Use this function to access information about the latest load() results.
      // e.g.
      // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
      // and yada yada yada...
    }

// Calcul d'un itineraire
function calculer_itineraire(une_randonnee) {
  document.forms["navigation"].randonnee_courante.value = une_randonnee;
  naviguer("itineraire");
}
// Confirmation d'un enregistrement
function confirmer(page, valeur_confirmation) {
  document.forms["navigation"].confirmation.value = valeur_confirmation;
  naviguer(page);
}
// Examen d'une randonnée
function examiner_randonnee(type, identifiant) {
  document.forms["navigation"].randonnee_courante.value = identifiant;
  consulter(type, "randonnees");
}
// rien
function indisponible() { alert("Cette fonction est momentanément indisponible"); }
function rien() { }
// flip/flop randonnée
function basculer_randonnee(identifiant, etat) {
  if (identifiant) {
    document.getElementById("r_" + identifiant).style.display = (etat) ? "none" : "block";
    document.getElementById("d_" + identifiant).style.display = (etat) ? "block" : "none";
  }
}
function montrer_randonnee(identifiant) {
  basculer_randonnee(document.forms["navigation"].randonnee_courante.value, false);
  basculer_randonnee(identifiant, true);
  document.forms["navigation"].randonnee_courante.value = identifiant;  
}
// Adhésion
function imprimer_adhesion() {
  document.forms["adhesion"].submit();
}
// liens
function modifier_lien(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("liens_modifier");
}
function supprimer_lien(type, identifiant, titre) {
  if (confirm("Voulez-vous réellement supprimer le lien" + " \"" + titre + "\" ?")) {
    document.forms["navigation"].identifiant.value = identifiant;
    document.forms["navigation"].page_precedente.value = type + "_liens";
    naviguer("article_supprimer");
  }
}
// Gestion des calques
function positionner() {
  element_tetiere = document.getElementById("tetiere")
  element_menu = document.getElementById("menu");
  element_contenu = document.getElementById("contenu_page");
  element_copyright = document.getElementById("copyright");

  hauteur_tetiere = element_tetiere.offsetHeight;        
  hauteur_menu = element_menu.offsetHeight;
  hauteur_contenu = element_contenu.offsetHeight;

  hauteur_max = (hauteur_menu > hauteur_contenu) ? hauteur_menu : hauteur_contenu;
  hauteur = hauteur_max + "px";
  valeur_ecart = hauteur_tetiere + hauteur_max;
  ecart = valeur_ecart + "px";

  element_menu.style.height = hauteur;
  element_contenu.style.height = hauteur;
  element_copyright.style.top = ecart;
  element_copyright.style.display = "block";        
}
function positionner_accueil() {
  element_menu = document.getElementById("accueil_menu");
  element_contenu = document.getElementById("accueil_contenu_page");
  element_copyright = document.getElementById("copyright");
  element_recherche = document.getElementById("bloc_recherche");

  hauteur_menu = element_menu.offsetHeight + element_menu.offsetTop;
  hauteur_contenu = element_contenu.offsetHeight + element_contenu.offsetTop;
  hauteur_recherche = element_recherche.offsetHeight;

  hauteur_max = (hauteur_menu > hauteur_contenu) ? hauteur_menu : hauteur_contenu;
  hauteur = hauteur_max + "px";
  if (hauteur_menu < hauteur_contenu) {
    // 45 : c'est le padding-top du claque menu (défini dans styles.css)
    valeur_hauteur = hauteur_max - element_menu.offsetTop - 45;
    element_menu.style.height = valeur_hauteur + "px";
  }
  else {
    valeur_hauteur = hauteur_max - element_contenu.offsetTop;
    element_contenu.style.height = valeur_hauteur + "px";
  }
  element_copyright.style.top = hauteur;
  element_copyright.style.display = "block";        

  top_recherche = hauteur_max - hauteur_recherche;
  element_recherche.style.top = top_recherche + "px";
  element_recherche.style.display = "block";
}
// Gestion des menus
function init_menu() {
  indice = 1;
  continuer = true;
  while (continuer) {
    element = document.getElementById("m" + indice);
    if (element) { element.style.display = "none"; indice++; }
    else continuer = false;
  }
}
function ouvrir_menu(indice_menu) {
  indice = 1;
  continuer = true;
  while (continuer) {
    element = document.getElementById("m" + indice);
    if (element) {
      element.style.display = (indice == indice_menu) ? "block" : "none";
      //alert("Menu " + indice + " : " + element.style.display);
      indice++;
    }
    else continuer = false;
  }
}
// Navigation
function naviguer(une_page) {
  document.forms["navigation"].page.value = une_page;
  document.forms["navigation"].submit();
}
function rediriger(une_page) {
  if (une_page == "accueil") document.forms["navigation"].action = "index.php";
  document.forms["navigation"].redirection.value = "vrai";
  document.forms["navigation"].page.value = une_page;
  document.forms["navigation"].submit();
}
function redirection_auto() {
  etat = document.forms["navigation"].redirection.value;
  if (etat == "vrai") document.forms["navigation"].submit(); 
}
function deconnecter() {
  if (confirm("Voulez-vous réellement quitter l\'espace membres ?")) { naviguer("deconnexion"); }
}
// Demarrage
function demarrer() {
  positionner();
  redirection_auto();
  //init_menu();
}
// Supprimer des messages
function supprimer_message(type, titre, identifiant) {
  if (confirm("Voulez-vous réellement supprimer le " + type + " \"" + titre + "\" ?")) {
    document.forms["navigation"].identifiant.value = identifiant;
    document.forms["navigation"].page_precedente.value = "blogs_liste";
    naviguer("article_supprimer");
  }
}

// pour consulter les randonnées ou les messages
function consulter(un_type, une_page) {
  document.forms["navigation"].type.value = un_type;
  naviguer(une_page);
}
// pour consulter les articles
function consulter_article(une_categorie, une_page) {
  document.forms["navigation"].categorie.value = une_categorie;
  naviguer(une_page);
}
function creer_article(une_categorie) {
  document.forms["navigation"].categorie.value = une_categorie;
  naviguer("article_creer");
}
// Accès aux fonctions de liste de randonnées
function supprimer_randonnee(identifiant, etat, titre) {
  document.forms["navigation"].identifiant.value = identifiant;
  document.forms["navigation"].etat.value = etat;
  if (confirm("Voulez-vous réellement supprimer la randonnée \"" + titre + "\" ?")) naviguer("randonnees_supprimer");
}
function modifier_randonnee(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("randonnees_modifier");
}
function accepter_randonnee(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("randonnees_accepter");
}
function proposer_randonnee(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  consulter("duplication", "randonnees_proposer");
}
// Fonctions sur les utilisateurs
function supprimer_utilisateur(identifiant, titre) {
  document.forms["navigation"].identifiant.value = identifiant;
  if (confirm("Voulez-vous réellement supprimer l'utilisateur \"" + titre + "\" ?")) naviguer("utilisateur_supprimer");
}
function modifier_utilisateur(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("utilisateur_modifier");
}
// Accès aux fonctions de liste d'articles
function modifier_article(categorie, identifiant) {
  document.forms["navigation"].categorie.value = categorie;
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("article_modifier");
}
function supprimer(identifiant, titre) {
  document.forms["navigation"].identifiant.value = identifiant;
  if (confirm("Voulez-vous réellement supprimer l'article intitulé \"" + titre + "\" ?")) naviguer("article_supprimer");
}
function modifier(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("article_modifier");
}
function commentaires(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("commentaire_liste");
}
function commenter(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("commentaire_creer");
}
// Accès aux fonctions de liste de catégories
function supprimer_categorie(identifiant, titre) {
  document.forms["navigation"].identifiant.value = identifiant;
  if (confirm("Voulez-vous réellement supprimer la catégorie libellée \"" + titre + "\" ?")) naviguer("categorie_supprimer");
}
function modifier_categorie(identifiant) {
  document.forms["navigation"].identifiant.value = identifiant;
  naviguer("categorie_modifier");
}

// Pour les pages sur lesquelles il faut retourner
function origine(une_page) {
  document.forms["navigation"].page_origine.value = une_page;
}
// Intitulé de la page
function intituler(une_rubrique, un_intitule) {
  ouvrir_menu(une_rubrique);
  document.title = "rando's provence – association de randonneurs gays et lesbiens";
  if (un_intitule != "") document.title += " - " + un_intitule;
  element = document.getElementById("titre_courant");
  element.innerHTML = (un_intitule == "") ? "&agrave; la UNE" : un_intitule;
}
// Jeu de calques
function montrer(calque) {
  element = document.getElementById(calque);
  element.style.visibility = "visible";
}
function cacher(calque) {
  element = document.getElementById(calque);
  element.style.visibility = "hidden";
}
// détailler un article
function ouvrir_fermer(id_article, type_element, ouvrir) {
  element_lien_on = document.getElementById("lien_" + type_element + "_on_" + id_article);
  element_lien_on.style.display = (ouvrir) ? "none" : "block";
  element_lien_off = document.getElementById("lien_" + type_element + "_off_" + id_article);
  element_lien_off.style.display = (ouvrir) ? "block" : "none";
  element_contenu_off = document.getElementById(type_element + "_off_" + id_article);
  element_contenu_off.style.display = (ouvrir) ? "block" : "none";
}
function ouvrir_detail(id_article) {
  ouvrir_fermer(id_article, 'detail', true);
}
function fermer_detail(id_article) {
  ouvrir_fermer(id_article, 'detail', false);
}
function ouvrir_commentaires(id_article) {
  ouvrir_fermer(id_article, 'comment', true);
}
function fermer_commentaires(id_article) {
  ouvrir_fermer(id_article, 'comment', false);
}
// Actions dans la page de randonnées
function plus(annee_max) {
  valeur = document.forms["navigation"].annee.value;
  if (valeur < annee_max) document.forms["navigation"].annee.value = ++valeur;
}
function moins(annee_min) {
  valeur = document.forms["navigation"].annee.value;
  if (valeur > annee_min) document.forms["navigation"].annee.value = --valeur;
}
function filtrer(un_champ) {
  document.forms["navigation"].champ.value = un_champ;
  naviguer('randonnees');
}
