function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return new Array(scrOfX, scrOfY);
}

function clientAreaSize()
{
	var Size = new Array(0,0);
	// Client Area Size
	if( typeof( window.innerWidth ) == 'number' ){
		//Non-IE
		Size[0] = window.innerWidth;
		Size[1] = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		Size[0] = document.documentElement.clientWidth;
		Size[1] = document.documentElement.clientHeight;
	}

	return Size;
}

function moveDarkLayer()
{
	//alert('aqui');
	var darkLayer, dLS, Scroll;
	darkLayer = document.getElementById('darkLayerDiv');
	// if darkLayer dont exists, we create it
	if(darkLayer == null)
	return;

	// Define Dark Layer Style
	dLS = darkLayer.style;

	Scroll = getScrollXY();

	dLS.top  = Scroll[1] + 'px';
	dLS.left = Scroll[0] + 'px';	
}


function resizeDarkLayer()
{
	//alert('aqui');
	var darkLayer, dLS, Size;
	darkLayer = document.getElementById('darkLayerDiv');
	// if darkLayer dont exists, we create it
	if(darkLayer == null)
	return;

	// Define Dark Layer Style
	dLS = darkLayer.style;

	Size = clientAreaSize();

	dLS.width  = Size[0] + 'px';
	dLS.height = Size[1] + 'px';
}

var ventanaActual = null;
function cerrarVentana(idObject)
{
	if((idObject == null) || (typeof(idObject) != 'string'))
	idObject = ventanaActual;

	if(idObject == null)
	return;

	var targetObject = document.getElementById(idObject);

	if(targetObject != null)
	{
		targetObject.style.display = 'none';
		hideDarkLayer();
	}
}

// Hide Dark Layer
function hideDarkLayer()
{
	var darkLayer = document.getElementById('darkLayerDiv');
	if(darkLayer != null)
	darkLayer.style.display = 'none';
}


// align 1-9
//
//  1 - 2 - 3
//  |   |   |
//  4 - 5 - 6
//  |   |   |
//  7 - 8 - 9
//
function abrirVentana(idObject, align_width, _top)
{
	ventanaActual = idObject;
	// Defaults
	var zIndex = 1000; // 1 more than darkLayer ;)
	var targetObject = document.getElementById(idObject);

	if(targetObject != null)
	{
		showDarkLayer();
		targetObject.style.zIndex = zIndex;
		targetObject.style.display = '';

		targetObject.style.position = 'fixed';

		var left = 0, top = 0;

		if(!_top)
		{
			var align = 5;
			if(align_width) var align = align_width;
	
			var ClientSize  = clientAreaSize();
			var VentanaSize = new Array(targetObject.offsetWidth, targetObject.offsetHeight);
			switch(align)
			{
				case 1:	left = 0;
						top  = 0;
						break;
				case 2: left = Math.round((ClientSize[0]-VentanaSize[0])/2);
						top = 0;
						break;
				case 3: left = ClientSize[0]-VentanaSize[0];
						top = 0;
						break;
	
				case 4:	left = 0;
						top  = Math.round((ClientSize[1]-VentanaSize[1])/2);
						break;
				case 5: left = Math.round((ClientSize[0]-VentanaSize[0])/2);
						top  = Math.round((ClientSize[1]-VentanaSize[1])/2);
						break;
				case 6: left = ClientSize[0]-VentanaSize[0];
						top  = Math.round((ClientSize[1]-VentanaSize[1])/2);
						break;
	
				case 7:	left = 0;
						top  = ClientSize[1]-VentanaSize[1];
						break;
				case 8: left = Math.round((ClientSize[0]-VentanaSize[0])/2);
						top  = ClientSize[1]-VentanaSize[1];
						break;
				case 9: left = ClientSize[0]-VentanaSize[0];
						top  = ClientSize[1]-VentanaSize[1];
						break;
	
				default: left = Math.round((ClientSize[0]-VentanaSize[0])/2);
						top  = Math.round((ClientSize[1]-VentanaSize[1])/2);
						break;
	
			}
		}else
		{
			left = align_width;
			top  = _top;
		}
		targetObject.style.top  = top + 'px';
		targetObject.style.left = left + 'px';
	}
}

/////
// Create and Show Dark Layer
function showDarkLayer(color, opacity, zIndex)
{
	var Size, darkLayer, dLSs;

	// Define DAFAULTS
	if(color   == null) color   = '#000000';
	if(opacity == null) opacity = '0.7';
	if(zIndex  == null) zIndex = 99;

	darkLayer = document.getElementById('darkLayerDiv');
	// if darkLayer dont exists, we create it
	if(darkLayer == null)
	{
		if((document.body == null) || (document.createElement == null)) return false;
		if(document.body.appendChild == null) return false;

		darkLayer = document.createElement('div');
		if(darkLayer == null)
		return false;

		darkLayer.style.display = 'none';
		darkLayer.id = 'darkLayerDiv';
		darkLayer.onclick = cerrarVentana;

		// Insert as First Body element
	    document.body.insertBefore(darkLayer, document.body.firstChild);

		// SCROLL
		try
		{
			window.attachEvent('onscroll', moveDarkLayer);
		}catch(e)
		{
			try
			{
				window.addEventListener('scroll', moveDarkLayer, false);
			}catch(msg)
			{
				window.onscroll = moveDarkLayer;
			}
		}

		// CLICK
		try
		{
			window.attachEvent('onresize', resizeDarkLayer);
		}catch(e)
		{
			try
			{
				window.addEventListener('resize', resizeDarkLayer, false);
			}catch(msg)
			{
				window.onresize = resizeDarkLayer;
			}
		}
	}

	// Define Dark Layer Style
	dLS = darkLayer.style;

	// Color
	dLS.backgroundColor = color;

	// Opacity
	dLS.opacity = opacity;
	if(dLS.filter != null)
	dLS.filter = 'alpha(opacity=' + (eval(opacity)*100) + ')';

	// Position
	dLS.position = 'absolute';
	dLS.zIndex   = zIndex;
	dLS.top      = '0px';
	dLS.left     = '0px';

	resizeDarkLayer();
	moveDarkLayer();

	// Show it
	dLS.display = '';

	return true;
}
