
// La fonction suivante permet de modifier dynamiquement un document standard 
// html contenant des h2, h3, ... de façon à ce qu'un clique redirige vers 
// le haut de la page.
// 
// Utilisation :
// 
//   1 - recopier ce fichier dans une sous-répertoire de votre appli web
//   2 - l'inclure dans l'en-tete html du votre page d'accueil
//   3 - créer une étiquette "top" juste après le body (nécessaire car par 
//       défaut safari conserve la position courante
//   4 - ajouter à <body> un appel à la fonction bindJumpToTop()
// 
// Exemple : 
// 
//   1 et 2 - dans le <head> index.html
//       <script type="text/javascript" src="lib/js/bindToTop.js"></script>
//   3 et 4 - modif de la balise body
//       <body onload="bindJumpToTop('')">
//         <a name="xxx_top"> </a>
// 
// Autres exemples : 
//  <body onload="bindJumpToTop()">
//  <body onload="bindJumpToTop('TOC)'>"
//  <body onload="bindJumpToTop('xxx_top', new Array('h2', 'h3'))">
// 
//  
// TODO : 
//    - ajouter parametre optionnel pour le lien 
//    - essayer de ce passer de l'étiquette (comme revenir au début du body
//      sans préciser de "name" dans une ancre
// 
////////////////////////////////////////////////////////////////////////
// Principe de ce script :
// 
//    Au chargement, la fonction bindJumpToTop() remplace les éléments :
//         <h3>Le titre</h3>
//    par 
//         <h3 onclick='jumpToTop()'>Le titre</h3>                // Marcherait
//         <h3 onclick='window.location.href='#top'>Le titre</h3> // Marcherait
//   
//    Mais Attention : 
//       En javascript on ne peut affecter à elem.onclick qu'une référence sur 
//       une fonction (éventuellement anonyme) un non pas un appel à une 
//       fonction ni du code javascript.
//       
//           e.onclick = "window.location.href='#top'" // NE MARCHE PAS !!?
//           e.onclick = jumpToTop(param)              // NE MARCHE PAS !!?
//           e.onclick = jumpToTop()                   // NE MARCHE PAS !!?
//                                                    
//       Il faut faire                                
//           e.onclick = jumpToTop                     // OK !
//           e.onclick = function() {                  // OK !
//               window.location.href='#top'         
//           }
//     
// Remarque pour Safari 3.x:
// 
//   Le comportement de Safari n'est pas tres claire (parfois ça marche) !!
//   Ce qui suit n'est pas toujours vrai
// 
//   - si l'étiquette indiquée n'existe pas, Safari ne modifie pas la vue alors
//     que Firefox redirige vers le haut de page.
//   
//   - Pour Safari l'étiquette name d'une ancre n'est prise en compte que 
//     s'il cette ancre est non vide (au moins un espace)
//         <a name="xxx_top"> </a>
//     et nom pas :
//         <a name="xxx_top"></a>
function bindJumpToTop(name, tags) {
    // var tags = new Array("h3");
    // var tags = new Array("h3");
    if (!name) {
        // On modifie la variable globale cible
        name = "top";
    }
    if (!tags) {
        var tags = new Array("h2", "h3", "h4", "h5", "h6");
    }
    // ATTENTION de ne pas utiliser : for (tag_i in tags) ...
    for (var tag_i = 0; tag_i < tags.length; tag_i++) {
        var tag = tags[tag_i];
        var elems = document.getElementsByTagName(tag);
        for (var e_i = 0; e_i < elems.length; e_i++) {
            var e = elems[e_i];
            // necessaire, sinon plantage invisible !?
            if (!e.firstChild) {
                continue;
            }
            e.onclick = function() {
                // window.location.href='#'
                // window.location.href='#top'
                window.location.href='#' + name
            }
            // e.onmouseover = function() { 
            //     this.style.cursor='n-resize' 
            // }
            
            // Plus simple : 
            e.style.cursor='n-resize'; // FONCTIONNE sous FIREFOX
            // e.firstChild.nodeValue="Nouveau texte de remplacement";
        }
    }
}
//./
