
function Overlay()
{
	this.shown = false;
	this.element = false;
	this.added = false;
	
	this.init = function()
	{
		if (this.element)
		{
			return true;
		}
		
		this.element = document.createElement('div');
		this.element.setAttribute('id', 'overlay');
		this.element.style.display = 'none';
		this.element.style.backgroundColor = '#000';
		this.element.style.opacity = 0.7;
		this.element.style.filter = 'alpha(opacity = 50)';
		this.element.style.position = 'absolute';
		
		this.element.style.top = '0';
		this.element.style.left = '0';
		

		this.element.appendChild(document.createTextNode("&nbsp;"));
		
	}
	
	this.addElement = function()
	{
		if (this.added)
			return true;
		
		document.body.appendChild(this.element);
		this.added = true;
		
		return true;
	}

	this.show = function()
	{
		if (this.shown)
		{
			return true;
		}
		
		this.addElement();
		
		var d = getDocumentDimensions();
		this.element.style.width = d.w + 'px';
		this.element.style.height = d.h + 'px';
		this.element.style.display = 'block';
		
		this.shown = true;
	}

	this.hide = function()
	{
		if (!this.shown)
		{
			return true;
		}
		this.element.style.display = 'none';
		this.shown = false;
	}
	
	this.addBlurFunction = function(f)
	{
		addListener(this.element, 'click', f);
	}

	this.init();
}


function getWindowDimensions() 
{
	var d = new Object();
	d.w = 0, d.h = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) 
	{
		d.w = window.innerWidth;
		d.h = window.innerHeight;
	} 
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
		d.w = document.documentElement.clientWidth;
		d.h = document.documentElement.clientHeight;
	} 
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
	{
		d.w = document.body.clientWidth;
		d.h = document.body.clientHeight;
	}
	return d;
}

function getDocumentDimensions() {
	var d = new Object();
	d.w = 0, d.h = 0;	
	
	d.w = Math.max(document.body.offsetWidth, document.body.scrollWidth, document.documentElement.clientWidth);
	d.h = Math.max(document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight);
	
	if (isNaN(d.w) || d.w==0) {
		d.w = zero(self.innerWidth);
	}
	if (isNaN(d.h) || d.h==0) {
		d.h = zero(self.innerHeight);
	}
	
	return d;
};

function defined(o) {
	return (typeof(o)!="undefined");
};

function zero(n) {
	return (!defined(n) || isNaN(n))?0:n;
};

  
function getScrollPosition() {
	var p = new Object();
	p.x = 0, p.y= 0;
	if(typeof(window.pageYOffset) == 'number' ) {
		p.x = window.pageXOffset;
		p.y = window.pageYOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		p.x = document.body.scrollLeft;
		p.y = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		p.x = document.documentElement.scrollLeft;
		p.y = document.documentElement.scrollTop;
	}
	return p;
}

function getViewPortDimensions()
{
	var d = new Object();
	d.w = 0, d.h = 0;
	if (typeof(window.innerWidth) == 'number')
	{
		d.w = window.innerWidth;
  		d.h = window.innerHeight;
	}
	else if (typeof document.documentElement != 'undefined'
		&& typeof document.documentElement.clientWidth != 'undefined' 
		&& document.documentElement.clientWidth != 0)
	{
		d.w = document.documentElement.clientWidth;
		d.h = document.documentElement.clientHeight;
	}
	else
	{
		d.w = document.getElementsByTagName('body')[0].clientWidth;
		d.h = document.getElementsByTagName('body')[0].clientHeight
	}
	return d;
}
