// JavaScript Document
/**
 * Geometry.js: portable functions 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 = {};
window.onload = function () {
	
	if (typeof(window.screenLeft) == 'number') { // IE and others
		Geometry.getWindowX 			= function() { return window.screenLeft; };
		Geometry.getWindowY 			= function() { return window.screenTop; };
	}
	else if (typeof(window.screenX) == 'number') { // Firefox and others
		Geometry.getWindowX 			= function() { return window.screenX; };
		Geometry.getWindowY 			= function() { return window.screenY; };
	}
	
	if (typeof(window.innerWidth) == 'number') { // All browsers 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 (typeof(document.body.clientWidth) == 'number') {
		// 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 && typeof(document.documentElement.scrollWidth) == 'number') {
		Geometry.getDocumentWidth 		= function() { return document.documentElement.scrollWidth; };
		Geometry.getDocumentHeight 		= function() { return document.documentElement.scrollHeight; };
	}
	else
	{
		Geometry.getDocumentWidth 		= function() { return document.body.scrollWidth; };
		Geometry.getDocumentHeight 		= function() { return document.body.scrollHeight; };
	}
}