/**
 * Geometrie.js : fonctions portables permettant d’obtenir des informations 
 *                de géométrie d’une fenêtre et d’un document.
 *
 * Ce module définit des fonctions permettant d’obtenir des informations de
 * géométrie d’une fenêtre et d’un document.
 * 
 * lirePosXFenetre/lirePosYFenetre() : retourne la position de la fenêtre 
 *        sur l’écran.
 * lireLargeurAffichage/lireHauteurAffichage() : retourne la taille de la 
 *        zone d’affichage du navigateur.
 * lireLargeurDocument/lireHauteurDocument() : retourne la taille du document.
 * lireDefilementHorizontal() : retourne la position de la barre de défilement
 *        horizontale.
 * lireDefilementVertical() : retourne la position de la barre de défilement
 *        verticale.
 *
 * Notez qu’il n’existe aucune manière portable d’obtenir la taille globale 
 * de la fenêtre du navigateur. Par conséquent les fonctions
 * lireLargeurFenetre() et lireHauteurFenetre() n’existent pas.
 * 
 * IMPORTANT : ce module doit être inclus dans le corps (<body>) du document
 *             et non dans son en-tête (<head>).
 */
var Geometrie = {};

if (window.screenLeft) { // IE et les autres.
    Geometrie.lirePosXFenetre = function() { return window.screenLeft; };
    Geometrie.lirePosYFenetre = function() { return window.screenTop; };
}
else if (window.screenX) { // Firefox et les autres.
    Geometrie.lirePosXFenetre = function() { return window.screenX; };
    Geometrie.lirePosYFenetre = function() { return window.screenY; };
}

if (window.innerWidth) { // Tous les navigateurs excepté IE.
    Geometrie.lireLargeurAffichage = function() { return window.innerWidth; };
    Geometrie.lireHauteurAffichage = function() { return window.innerHeight; };
    Geometrie.lireDefilementHorizontal = function() {
        return window.pageXOffset; };
    Geometrie.lireDefilementVertical = function() { 
        return window.pageYOffset; };
}
else if (document.documentElement && document.documentElement.clientWidth) {
    // Ces fonctions sont destinées à IE6 lorsqu’il contient une 
    // déclaration DOCTYPE.
    Geometrie.lireLargeurAffichage =
        function() { return document.documentElement.clientWidth; };
    Geometrie.lireHauteurAffichage = 
        function() { return document.documentElement.clientHeight; };
    Geometrie.lireDefilementHorizontal = 
        function() { return document.documentElement.scrollLeft; };
    Geometrie.lireDefilementVertical = 
        function() { return document.documentElement.scrollTop; };
}
else if (document.body.clientWidth) {
    // Celles-ci sont pour IE4, IE5 et IE6 sans déclaration DOCTYPE.
    Geometrie.lireLargeurAffichage =
        function() { return document.body.clientWidth; };
    Geometrie.lireHauteurAffichage =
        function() { return document.body.clientHeight; };
    Geometrie.lireDefilementHorizontal =
        function() { return document.body.scrollLeft; };
    Geometrie.lireDefilementVertical = 
        function() { return document.body.scrollTop; };
}

// Ces fonctions retournent la taille du document. Elles ne concernent pas
// les fenêtres, mais il est utile de les avoir ici.
if (document.documentElement && document.documentElement.scrollWidth) {
    Geometrie.lireLargeurDocument =
        function() { return document.documentElement.scrollWidth; };
    Geometrie.lireHauteurDocument =
        function() { return document.documentElement.scrollHeight; };
}
else if (document.body.scrollWidth) {
    Geometrie.lireLargeurDocument =
        function() { return document.body.scrollWidth; };
    Geometrie.lireHauteurDocument =
        function() { return document.body.scrollHeight; };
}