// Función para crear objetos en los que definamos los estilos de popup
function estiloPopup(sNombre, iAncho, iAlto)
{
	this.nombre = sNombre;
	this.ancho = iAncho;
	this.alto = iAlto;
	return this;
}

// Creamos los estilos de popup en un array
var arEstilosPopUp = new Array();
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_100X100", 100, 100);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_200X200", 200, 200);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_300X300", 300, 300);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_320X240", 320, 240);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_400X400", 400, 400);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_500X500", 500, 500);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_750X573", 750, 573);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_840X680", 840, 680);
arEstilosPopUp[arEstilosPopUp.length] = new estiloPopup("Popup_MapaCobertura", 650, 530);



// Evalua los estilos que se pasan como parámetro buscando alguno que esté en el array arEstilosPopUp. 
// Devuelve el primero que encuentre, o null si no encuentra ninguno
function buscarEstiloPopup(estilosCSS)
{
	var estilosEnlace = estilosCSS.split(" ");
	for (var iEstilo=0; iEstilo<estilosEnlace.length; iEstilo++)
	{
		var estiloEncontrado = buscarEstiloPopup2(estilosEnlace[iEstilo])
		if(estiloEncontrado)
		{
			return estiloEncontrado;
		}
	}
}

// Busca un estilo en el array de estilos popup. Si no lo encuentra devuelve nulo.
function buscarEstiloPopup2(nombreEstilo)
{
	for (var iEstilo=0; iEstilo<arEstilosPopUp.length; iEstilo++)
		if (arEstilosPopUp[iEstilo].nombre == nombreEstilo) return arEstilosPopUp[iEstilo];
	return null;
}

// Función para obtener el objeto destino de un evento para cada tipo de navegador (DOM/NS/Safari, etc..)
function getTargetEvento(e)
{
	var evento, targ;
	evento = e;
	if (!evento) evento = window.event;
	if (evento.target) 
		targ = evento.target;
	else 
		if (evento.srcElement) targ = evento.srcElement;
	
	// Para Safari
	if (targ.nodeType == 3) 
		targ = targ.parentNode;
		
	return targ;
}

// Se encarga de abrir la url de un enlace como ventana popup.
// Las dimensiones de la ventana se obtienen del objeto 
function abrirPopup(e)
{
	var targ = getTargetEvento(e);
	if (targ)
	{
		var estiloPopup = buscarEstiloPopup(targ.className);
		if (estiloPopup)
		{
			window.open(targ.href, null, "width=" + estiloPopup.ancho + ", height=" + estiloPopup.alto + ", scrollbars,resizable=yes");
			return false;
		}
	}
}

// Registra los enventos de popup para todos los enlaces de la página que tengan asociada una clase CSS adecuada (Popup_AnchoXAlto)
function registrarPopups()
{
	var arEnlaces = document.getElementsByTagName("A");
	
	for (var iEnlace=0; iEnlace<arEnlaces.length; iEnlace++)
	{
		if (buscarEstiloPopup(arEnlaces[iEnlace].className))
		{
			arEnlaces[iEnlace].onclick = abrirPopup
		}
	}
}

// Función para añadir eventos en la carga de página
function addLoadEvent(func) 
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function') window.onload = func;
	else 
	{
		window.onload = function() 
		{
			oldonload();
			func();
		}
	}
}

// Añadimos el evento para inicializar enlaces en la carga de página.
addLoadEvent(registrarPopups);