var NI = ('undefined' == typeof(NI)) ? {} : NI;

NI.ViewportGeometry = {

	getX : function () {
		if (window.pageXOffset) {
			return window.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollLeft) {
			return document.documentElement.scrollLeft;
		} else {
			return document.body.scrollLeft;
		}
	},
	
	getY : function () {
		if (window.pageYOffset) {
			return window.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			return document.documentElement.scrollTop;
		} else {
			return document.body.scrollTop;
		}
	},
	
	getWidth : function () {
		if (window.innerWidth) {
			return window.innerWidth;
		} else if (document.documentElement && document.documentElement.clientWidth) {
			return document.documentElement.clientWidth;
		} else if (document.body.clientWidth) {
			return document.body.clientWidth;
		} else {
			// shouldn't reach here:
			return null;
		}
	},
	
	getHeight : function () {
		if (window.innerHeight) {
			return window.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			return document.documentElement.clientHeight;
		} else if (document.body.clientHeight) {
			return document.body.clientHeight;
		} else {
			// shouldn't reach here:
			return null;
		}
	}

};