function xBrowser()

{

	if(navigator.appName.indexOf("Netscape") != -1)
	{
		this.getCanvasWidth	= function() {return innerWidth;}
		this.getCanvasHeight	= function() {return innerHeight;}
		this.getWindowWidth 	= function() {return outerWidth;}
		this.getWindowHeight	= function() {return outerHeight;}
		this.getScreenWidth 	= function() {return screen.width;}
		this.getScreenHeight	= function() {return screen.height;}
		this.getMinX		= function() {return(pageXOffset);}
		this.getMinY		= function() {return(pageYOffset);}
		this.getMaxX		= function() {return(pageXOffset+innerWidth);}
		this.getMaxY		= function() {return(pageYOffset+innerHeight);}

	}

	else

	if(document.all)

	{
		this.getScreenWidth	= function() {return screen.width;}
		this.getScreenHeight	= function() {return screen.height;}

                // IE 6 does not populate the values
                // document.body.[clientWidth|clientHeight|scrollLeft|scrollTop]
                // when it is operating in standards mode, but rather the
                // respective values in document.documentElement.

                // The criterion for deciding when to use which member
                // and some background information on the topic were
                // provided by Peter-Paul Koch and Andrew Clover on
                // http://www.evolt.org. Thank you!
                var nameBody = "body";
                if (document.compatMode == "CSS1Compat") {
                    nameBody = "documentElement";
                }
		this.getCanvasWidth	= function() {return document[nameBody].clientWidth;}
		this.getCanvasHeight	= function() {return document[nameBody].clientHeight;}
		this.getMinX		= function() {return(document[nameBody].scrollLeft);}
		this.getMinY		= function() {return(document[nameBody].scrollTop);}
		this.getMaxX		= function() {
			return(document[nameBody].scrollLeft
				+document[nameBody].clientWidth);
		}
		this.getMaxY		= function() {
				return(document[nameBody].scrollTop
					+document[nameBody].clientHeight);
		}
	}

	return(this);

}
