/**
 * Royalfish Position class.
 * 2008-01-27:	first initial version
 */
	function RFPosition() {}
	RFPosition.getTopX = function(obj) {		
		curleft = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft;
			}
		}
		return curleft;
	}
	
	RFPosition.getTopY = function(obj) {
		curtop = 0;
		if (obj.offsetParent) {
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent) {
				curtop += obj.offsetTop;
			}
		}
		return curtop;
	}
	
	RFPosition.getMouseX = function(e) {
		if(!e) e = window.event;
		var mX = (e.pageX) ? e.pageX : e.clientX;
		if(document.body && document.all) {
			if(document.documentElement && document.documentElement.scrollTop) {
				mX += document.documentElement.scrollLeft;
			}
			else {
				mX += document.body.scrollLeft;
			}
		}
		return mX;
	}
	
	RFPosition.getMouseY = function(e) {
		if(!e) e = window.event;
		var mY = (e.pageY) ? e.pageY : e.clientY;
		if(document.body && document.all) {
			if(document.documentElement && document.documentElement.scrollTop) {
				mY += document.documentElement.scrollTop;
			}
			else {
				mY += document.body.scrollTop;
			}
		}
		return mY;
	}
	
	RFPosition.getScrollX = function() {
		if (self.pageXOffset) { // all except Explorer
			return self.pageXOffset;
		}
		else if (document.documentElement && document.documentElement.scrollLeft) { // Explorer 6 Strict
			return document.documentElement.scrollLeft;
		}
		else if (document.body) { // all other Explorers
			return document.body.scrollLeft;
		}
		return false;
	}
	
	RFPosition.getScrollY = function() {
		if (self.pageYOffset) { // all except Explorer
			return self.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
			return document.documentElement.scrollTop;
		}
		else if (document.body) { // all other Explorers
			return document.body.scrollTop;
		}
		return false;
	}
	
	RFPosition.getViewportWidth = function() {
		if (typeof window.innerWidth != 'undefined') {
			return window.innerWidth;
		}
		else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
			return document.documentElement.clientWidth;
		}
		else {
			return document.getElementsByTagName('body')[0].clientWidth;
		}
	}
	
	RFPosition.getViewportHeight = function() {
		if (typeof window.innerHeight != 'undefined') {
			return window.innerHeight;
		}
		else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
			return document.documentElement.clientHeight;
		}
		else {
			return document.getElementsByTagName('body')[0].clientHeight;
		}
	}
