/* fichier lanceur.js * -> détecte le chemin relatif depuis la page vers le rep de stockage des objets (general_objets) => variable rep_objets * -> inclu le fichiers automat.js qui prend en charge la suite du bizness de script * . est appelé par lien dans toutes les pages * . fct principale = lanceur(rep_base) est lancée par dans toute les pages avec comme arguments: * rep_base = nom du répertoire de base du site * par ex si votre site est dans http://protosvt.free.fr/intranet1/g1/site01 * => rep_base sera "site01" * si votre site est dans http://intranet => rep_base sera "intranet" */ /* A CONFIGURER OBLIGATOIREMENT: * REP_OBJETS est le nom du répertoire de stockage des objets pour tout le site (= general_objets par ex), * !! il doit être situé à la racine du site !! (c'est à dire dans rep_base) */ rep_objets = "general_objets"; /* fct LANCEUR() démarre les fcts successives du bizness de scripts */ function lanceur(rep_base) { chem_base = (genere_chemin(rep_base)[0]); // chem_base est le chemin relatif du répertoire du site chem_obj = (genere_chemin(rep_base)[1]); // chem_obj est le chemin relatif du rep_objet test_DOM (); // empèche le lancement de automat.js pour éviter les erreurs si le navigateur est trop vieux pour supporter cette version de JavaScript integre_script("tete_pied.js"); integre_script("automat.js"); /* OPTION A CONFIGURER SI VOUS VOULEZ INTEGRER D'AUTRES FICHIERS .JS * la ligne suivante vous permet d'intégrer un fichier de script supplémentaire * ce fichier DOIT être stocké dans le répertoire défini + haut comme rep_objets (general_objets par ex) * vous pouvez intégrer de cette manière autant de fichiers .js centralisés que vous le souhaitez */ integre_script("taille_fenetre.js"); integre_script("acces_rapide.js"); } /* fct GENERE_CHEMIN(rep_base) défini la variable globale chem_obj = le chemin relatif du répertoire des objets */ function genere_chemin(rep_base) { chem = document.location.pathname.toLowerCase(); //à partir URL de la page décompte de tous les niveaux depuis la racine (document.location.protocol=="file:") && (navigator.appName.indexOf("Microsoft") != -1) ? separ="\\" : separ="/"; // choix du séparateur / ou \ en fct du protocole file ou http chem_obj = rep_objets.toLowerCase(); // par défaut chem_obj est le nom du rep_objet => cas ou la page appelante est à la racine du site chem = document.location.pathname.toLowerCase(); //à partir URL de la page extraction sous-chaine depuis rep_base jusqu'a fin (document.location.protocol=="file:") && (navigator.appName.indexOf("Microsoft") != -1) ? separ="\\" : separ="/"; // choix du séparateur / ou \ en fct du protocole file ou http pos_char = chem.indexOf(separ + rep_base + separ); chem = chem.substring(pos_char + 1); // chem sans le / initial nbe_separ = ""; nbe_separ = (chem.split(separ).length)-1; // nbe de séparateur = nbe de morceaux du split - 1 prefix = ""; for (i= 1; i < nbe_separ ; i++) { prefix = "../" + prefix; // ajoute un ../ par niveau de ss-rep détecté jusqu'a rep_base } chem_base = prefix; // chem_obj = prefix + chem_obj + "/"; // compose le chemin avec en + un séparateur final return [chem_base, chem_obj]; } /* fct INTEGRE_SCRIPT(nom_script , id_script) intègre le script nom_script !!doit comprendre chem_obj si script dans rep_objets!! */ function integre_script(nom_fich_script) { // nom_script = nom du fichier de script !!avec son extension et le chemin!! à intégrer a_integrer = document.createElement("script"); a_integrer.setAttribute("langage", "JavaScript"); a_integrer.setAttribute("src", chem_obj + nom_fich_script); document.body.insertBefore(a_integrer, document.body.firstChild); } /* fct TEST_DOM() teste si le navigateur supporte suffisament de DOM pour être compatible avec automat.js */ function test_DOM () { if (document.createElement) { return; } else { alert("votre navigateur est trop ancien pour assurer un fonctionnement correct des éléments automatiques de cette page, veuillez le mettre à jour"); } }