﻿/**
* Geometry.js: portable funtions for querying window and document geometry
*
* This module defines functions for querying window and document geometry.
*
* getWindowX/Y: return the position of the window on the screen
* getViewportWidth/Height: return the size of the browser viewport area
* getDocumentWidth/Height: return the size of the document
* getHorizontalScroll: return the position of the horizontal scrollbar
* getVerticalScroll: return the position of the vertical scrollbar
*
* Note that there is no portable way to query the overall size of the
* browser window, so there are no getWindowWidth/Height functions.
*
* IMPORTANT: This module must be included in the <body> of a document 
* instead of the <head> of the document.
*/

var Geometry = {};

    if (window.screenLeft) 
    { //IE and others
        Geometry.getWindowX = function() { return window.screenLeft; };
        Geometry.getWindowY = function() { return window.screenTop; };
    }
    else if (window.screenX)
    { //Firefox and others
        Geometry.getWindowX = function() { return window.screenX; };
        Geometry.getWindowY = function() { return window.screenY; };        
    }
    
    if (window.innerWidth)
    { // All browser but IE
        Geometry.getViewportWidth = function() { return window.innerWidth; };
        Geometry.getViewportHeight = function() { return window.innerHeight; };
        Geometry.getHorizontalScroll = function() { return window.pageXOffset; };
        Geometry.getVerticalScroll = function() { return window.pageYOffset; };
    }
    else if (document.documentElement && document.documentElement.clientWidth)
    { // These functions are for IE6 when there is a DOCTYPE
        Geometry.getViewportWidth = function() { return document.documentElement.clientWidth; };
        Geometry.getViewportHeight = function() { return document.documentElement.clientHeight; };
        Geometry.getHorizontalScroll = function() { return document.documentElement.scrollLeft; };
        Geometry.getVerticalScroll = function() { return document.documentElement.scrollTop; };        
    }
    else if (document.body.clientWidth)
    { // These are for IE4, IE5, and IE6 without a DOCTYPE
        Geometry.getViewportWidth = function() { return document.body.clientWidth; };
        Geometry.getViewportHeight = function() { return document.body.clientHeight; };
        Geometry.getHorizontalScroll = function() { return document.body.scrollLeft; };
        Geometry.getVerticalScroll = function() { return document.body.scrollTop; };        
    }
    
    // These functions return the size of the document. They are not window 
    // related, but they are useful to have here anyway.
    if (document.documentElement && document.documentElement.scrollWidth)
    {
        Geometry.getDocumentWidth = function() { return document.documentElement.scrollWidth; };
        Geometry.getDocumentHeight = function() { return document.documentElement.scrollHeight; };
    }
    else if (document.body.scrollWidth)
    {
        Geometry.getDocumentWidth = function() { return document.body.scrollWidth; };
        Geometry.getDocumentHeight = function() { return document.body.scrollHeight; };    
    }
    
    




