/*
TimothyHumphrey.WebControls
Copyright (c) 2003 - 2004 Timothy Humphrey

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

//-------------------- Public members --------------------\\
Browser = new Object();

Browser.GetCanvas = function() {
	if(Browser.ClientElement.clientWidth * Browser.ClientElement.clientHeight >
		Browser.ClientElement.scrollWidth * Browser.ClientElement.scrollHeight
		)
		return new Rect(0, 0, Browser.ClientElement.clientWidth, Browser.ClientElement.clientHeight);
	else
		return new Rect(0, 0, Browser.ClientElement.scrollWidth, Browser.ClientElement.scrollHeight);
}

Browser.GetCursor = function() {
	return Browser.Cursor;
}

Browser.GetDimensions = function(element) {
	var left = 0;
	var top = 0;
	var width = element.offsetWidth;
	var height = element.offsetHeight;

	var oelement=element;

	while(element) {
		left += element.offsetLeft;
		top += element.offsetTop;
		element = element.offsetParent;
	}

	return new Rect(left, top, width, height);
}

Browser.GetElement = function(id) {
	return id ? document.getElementById(id) : null;
}

Browser.GetViewPort = function() {
	return new Rect(
		Browser.ClientElement.scrollLeft
		,Browser.ClientElement.scrollTop
		,Browser.ClientElement.clientWidth
		,Browser.ClientElement.clientHeight
		);
}

Browser.Move = function(element, arg1, arg2) {
	var elemRect;
	var x, y;

	element.style.left = element.style.top = "0";
	elemRect = Browser.GetDimensions(element);

	//Move element to desired position
	switch(arguments.length) {
	case 2:
		x = arg1.X - elemRect.Left;
		y = arg1.Y - elemRect.Top;
		break;
	case 3:
		x = arg1 - elemRect.Left;
		y = arg2 - elemRect.Top;
		break;
	default:
		return;
	}

	element.style.left = x + "px";
	element.style.top = y + "px";
}

//-------------------- Private members --------------------\\
Browser.ClientElement = document.documentElement.clientWidth * document.documentElement.clientHeight >=
	document.body.clientWidth * document.body.clientHeight
	? document.documentElement
	: document.body;
Browser.Cursor = new Rect(0, 0, 0, 0);

Browser.MouseMove = function(e) {
	Browser.Cursor.Left = e.clientX;
	Browser.Cursor.Top = e.clientY;
}

Delegate.Add(Browser.ClientElement, "mousemove", Browser, Browser.MouseMove);

