var PositionUtils = {

	findPosX : function(obj) 
	{ 
		var curleft = 0; 
		if (obj.offsetParent) 
		{ 
			while (obj.offsetParent) 
			{
				curleft += obj.offsetLeft 
				obj = obj.offsetParent; 
			} 
		} 
		else if (obj.x) 
			curleft += obj.x; 
	
		return curleft;
	}, 
	
	findPosY : function(obj) 
	{ 
		var curtop = 0; 
		if (obj.offsetParent) 
		{ 
			while (obj.offsetParent) 
			{ 
				curtop += obj.offsetTop 
				obj = obj.offsetParent; 
			} 
		} 
		else if (obj.y) 
			curtop += obj.y; 
	
		return curtop; 
	},
	
	//
	// getPageScroll()
	// Returns array with x,y page scroll values.
	// Core code from - quirksmode.org
	//
	getPageScroll : function()
	{
		var yScroll;
	
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}
	
		var arrayPageScroll = new Array('',yScroll) 
		return arrayPageScroll;
	},
	
	
	
	//
	// getPageSize()
	// Returns array with page width, height and window width, height
	// Core code from - quirksmode.org
	// Edit for Firefox by pHaez
	//
	getPageSize : function()
	{
		var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
	
		var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	},
	
	getViewportHeight : function() 
	{
		var height = 0;
		if( document.documentElement && document.documentElement.clientHeight ) {
			height = document.body.clientHeight;
			//Firefox
		}
		else if( document.body && document.body.clientHeight ) {
			height = document.body.clientHeight;
			//Internet Exploiter
		}
		else if( window.innerHeight ) {
			height = window.innerHeight - 18;
		}
		return height;
	},

	getViewportWidth : function() 
	{
		var width = 0;
		if( document.documentElement && document.documentElement.clientWidth ) {
			width = document.documentElement.clientWidth;
			//Firefox
		}
		else if( document.body && document.body.clientWidth ) {
			width = document.body.clientWidth;
			//Internet Exploiter
		}
		else if( window.innerWidth ) {
			width = window.innerWidth - 18;
			//Not Sure
		}
		return width;
	},
	
	getScrollY : function() 
	{
		var sy = 0;
		if (document.documentElement && document.documentElement.scrollTop)
			sy = document.documentElement.scrollTop;
		else if (document.body && document.body.scrollTop) 
			sy = document.body.scrollTop; 
		else if (window.pageYOffset)
			sy = window.pageYOffset;
		else if (window.scrollY)
			sy = window.scrollY;
		return sy;
	}
}

