// WebFau - Index.js 

// GLOBAL ------------------------------------------------------------------------------------------

window.onload = inicializarIndex;				// Enlace con index
var indexVars = new Object();					// variables globales generales
var menuVars = new Object();					// variables globales Menu Lateral
var ventanasVars = new Object();				// variables globales Ventanas
var DEFAULT_FONT_HEIGHT, DEFAULT_BODY_WIDTH; 	// Constantes

// INICIALIZACION ----------------------------------------------------------------------------------

// Inicialización general
function inicializarIndex() {				 

	var i;

	// Colores
	indexVars.estilosColores = ["verde", "azul", "negro" , "rojo", "verdeSeco", "beige", "verdeAzulado"];
	document.getElementById("cambiaColor").onclick = cambiarColores;		// Botón para cambio de colores personalizado
	indexVars.estiloActual = parseInt((Math.random() * 7));					// Seleccionar esquema de colores aleatorio
	cambiarColores();														// Ejcutar cambio de colores
	
	// Redimensionar en base al tamaño de pantalla (estilo CSS en Body y asigno tamaño texto)
	
	if (screen.width < 1024) {
		document.body.className = "w1024";
		DEFAULT_FONT_HEIGHT = "9px";
	} else if (screen.width < 1280) {
		document.body.className = "w1024";
		DEFAULT_FONT_HEIGHT = "9px";
	} else if (screen.width < 1440) {
		document.body.className = "w1280";
		DEFAULT_FONT_HEIGHT = "10px";
	} else {		
		document.body.className = "w1280";
		DEFAULT_FONT_HEIGHT = "12px";
	} 

	// Ocultar mensaje Inicial (mal llamado mensaje inicial es un velo que tapa le pantalla durante la carga) 
	indexVars.iniMsg = document.getElementById("iniMsg");
	indexVars.iniMsg.className = "oculto";

	// Enlazar variables de navegadores 
	indexVars.navegadorArquitectos = document.getElementById("navegadorArquitectos");
	indexVars.navegadorGrafico = document.getElementById("navegadorGrafico");
	indexVars.navegadorImagenes = document.getElementById("navegadorImagenes");
	indexVars.navegadorAcademico = document.getElementById("navegadorAcademico");	

	// Inicializar Menu Principal (Set opción activa ...)
	inicializarMenuLateral("menuPpl");

	// Inicializar Ventanas
	inicializarVentanas();
	indexVars.ventanaPpl = document.getElementById("ventana_iframeDatos");
	indexVars.ventanaNews = document.getElementById("ventana_iframeNews");
	
	// Enlazar animación de innicio 
	indexVars.animacionInicio = document.getElementById("animacionInicio");

	// Insertar controles intermediarios en enlaces
	var enlaces = document.getElementsByTagName("A");
	for (i = 0; i < enlaces.length; i++) enlaces[i].onclick = controlPrincipal;

	// Iniciar animacion ppl
//	indexVars.navegadorArquitectos.className = "animacionInicial";
	
	// Navegador Activo
	indexVars.navegadorActivo = null;
	
	// Inicializacion terminada	
	indexVars.inicializado = true;
	indexVars.velo = document.getElementById("velo");


}

// CONTROL LOGICO -----------------------------------------------------------------------------------------

/* Control Central de enlaces */
function controlPrincipal(e) {

	// Evento y target
	var evt = e || window.event;
	var target = evt.target || evt.srcElement;

	// Enlace con destino 
	switch (target.target) {

		// Derivar al menú ppl
		case "menu":
			controlMenuLateral(target);
			return false;
		break;
		
		// Pagina en ventana nueva
		case "_blank": 
		break;
		
		// Ventana ppl
		case "iframeDatos":
			mostrarVentana(target.target);
		break;

		// Ventana Navegador
		case "iframeNavegador":
			mostrarVentana(target.target);
		break;

		// Controles
		case "controles":
			switch (target.id) {
				case "cambiaColor":
					cambiarColores();
					return false;
				break;
			}
		break;
	}
}




// FUNCIONES -----------------------------------------------------------------------------------------

/* Función cambio de esquema de colores */
function cambiarColores() {
	document.body.id = indexVars.estilosColores[++indexVars.estiloActual];
	if ( indexVars.estiloActual == 6 ) indexVars.estiloActual = -1;
}

/* Función para iniciar el iframe seleccionado */
function mostrarVentana(nombreIframe) {
	// Inicia proceso de cargar ventana
	var ventana = document.getElementById("ventana_" + nombreIframe);
	ventana.className = "visible";	
}

/* Función para mostrar el iframe seleccionado */
function loadIframe() {

	return;	
	
	// El codigo HTML ya tiene registrado en el "iframeDatos" el onload="loadIframe()"
	// Previene la ejecución inicial del onload del iframe (se dispara antes del onload gral)
	if (!indexVars.inicializado) return;

	// Si animacion inicial se está ejecutando ...
	if (indexVars.navegadorArquitectos.className == "animacionInicial")  {
		// Si hay navegador activo, ocultar arquitecs
		if (indexVars.navegadorActivo)
			indexVars.navegadorArquitectos.className = "navegadorOculto";
		else {
			// Atracar arquts.
			indexVars.navegadorArquitectos.className = "navegadorAtracado";	
			indexVars.navegadorActivo = indexVars.navegadorArquitectos;
		} 			
	}
	// Si ventana de datos está oculta
	if (indexVars.ventanaPpl.currentStyle.display == "none") 
		indexVars.ventanaPpl.style.display = "block";
}

// VENTANAS -----------------------------------------------------------------------------------------

function inicializarVentanas() {
	
	// Iniciar velo de movimiento de ventanas
	ventanasVars.velo = document.getElementById("velo");	
}

// Se asume que el código HTML incluye un disparador de la forma:
// 			onMouseDown = iniciarArrastreVentana(event);
// que dispara el arrastre
function iniciarArrastreVentana(evt) {
	
	// Evento y target
	var e = evt || window.event;
	var target = e.target || e.srcElement;
	
	// Determinar identidad ventana 
	var ventana = obtenerVentana(target);
	
	if (ventana) {
		var ventanaPosicion = posicionElemento(ventana);
		var cursorPosicion = posicionMouse(e);		
		ventanasVars.dx = cursorPosicion[0] - ventanaPosicion[0];
		ventanasVars.dy = cursorPosicion[1] - ventanaPosicion[1];
		ventanasVars.ventanaActiva = ventana;
		ventana.className = "flotando";
		ventanasVars.velo.className = "activo";
		ventanasVars.arrastrando = true;
		addEventSimple(document,'mousemove',arrastrarVentana);
		addEventSimple(document,'mouseup',terminarArrastreVentana);
//		addEventSimple(document,'onselectstart', anular);
//		addEventSimple(document,'onmousedown', anular);
		
	}
}

function arrastrarVentana(evt) {

	// Ignorar si no hay ventana arrastrandose 
	if (!ventanasVars.arrastrando) return;

	// Evento, target y posición 
	var e = evt || window.event;
	var cursorPosicion = posicionMouse(e);
	ventanasVars.ventanaActiva.style.left = cursorPosicion[0] - ventanasVars.dx + "px";
	ventanasVars.ventanaActiva.style.top = cursorPosicion[1] - ventanasVars.dy + "px";
	return false;

}

function terminarArrastreVentana() {
	if (ventanasVars.arrastrando) {
		ventanasVars.arrastrando = false;
		ventanasVars.ventanaActiva.className = "visible";
		ventanasVars.velo.className = "";
		ventanasVars.ventanaActiva = null;
		removeEventSimple(document,'mousemove',arrastrarVentana);
		removeEventSimple(document,'mouseup',terminarArrastreVentana);
	}
}

function anular() {
	return false;
}

function ventanaCerrar(evt) {
	
	// Evento y target
	var e = evt || window.event;
	var target = e.target || e.srcElement;
	
	// Determinar identidad ventana 
	var ventana = obtenerVentana(target);
	ventana.className = "oculto";
}

// Obtiene la ventana 
function obtenerVentana( obj) {
	if (obj.nodeName == "BODY") return null;
	if (obj.className == "ventana") return obj.parentNode;
	return obtenerVentana( obj.parentNode);
}


function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}




function iniciarEstirarVentana(evt) {
	
	// Evento y target
	var e = evt || window.event;
	var target = e.target || e.srcElement;

	// Determinar identidad ventana 
	var ventana = obtenerVentana(target);

	if (ventana) {
		
		var ventanaTamanio = tamanioElemento(ventana);
		var ventanaPosicion = posicionElemento(ventana);
		var cursorPosicion = posicionMouse(e);		
		ventanasVars.dx = ventanaTamanio[0] - cursorPosicion[0];
		ventanasVars.dy = ventanaTamanio[1] - cursorPosicion[1];

/*
		ventana.xMin = ventanaPosicion[0] + 30;
		ventana.yMin = ventanaPosicion[1] + 50;

		switch (target.className) {
			case "bordeDerecho":
				ventanasVars.dx = ventanaTamanio[0] - cursorPosicion[0];
				ventanasVars.dy = 0;
				ventana.yMin = 3000;				
			break;

			case "pie":
				ventanasVars.dy = ventanaTamanio[1] - cursorPosicion[1];
				ventana.xMin = 3000;				
			break;

			case "estirar":
				ventanasVars.dx = ventanaTamanio[0] - cursorPosicion[0];
				ventanasVars.dy = ventanaTamanio[1] - cursorPosicion[1];
			break;
		}
*/
		ventanasVars.ventanaActiva = ventana;
		ventana.className = "flotando";
		ventanasVars.velo.className = "activo";
		ventanasVars.estirando = true;
		addEventSimple(document,'mousemove',estirarVentana);
		addEventSimple(document,'mouseup',terminarEstirarVentana);
	}
}

function tamanioElemento(obj) {
	return [obj.offsetWidth, obj.offsetHeight]
}

function estirarVentana(evt) {

	// Ignorar si no hay ventana arrastrandose 
	if (!ventanasVars.estirando) return;

	// Evento, target y posición 
	var e = evt || window.event;
	var cursorPosicion = posicionMouse(e);

//	if (cursorPosicion[0] > ventana.xMin)
		ventanasVars.ventanaActiva.style.width  = (cursorPosicion[0] + ventanasVars.dx)+ "px";
//	if (cursorPosicion[1] > ventana.yMin)	
		ventanasVars.ventanaActiva.style.height = (cursorPosicion[1] + ventanasVars.dy) + "px";
	return false;

}

function terminarEstirarVentana() {
	if (ventanasVars.estirando) {
		ventanasVars.estirando = false;
		ventanasVars.ventanaActiva.className = "visible";
		ventanasVars.velo.className = "";
		ventanasVars.ventanaActiva = null;
		removeEventSimple(document,'mousemove',estirarVentana);
		removeEventSimple(document,'mouseup',terminarEstirarVentana);
//		removeEventSimple(document,'onselectstart',anular);
//		removeEventSimple(document,'onmousedown',anular);
	}
}



function popUpcontenido(evt) {
	
	// Evento y target
	var e = evt || window.event;
	var target = e.target || e.srcElement;
	
	// Determinar identidad ventana 
	var ventana = obtenerVentana(target);

	var tme = new Date();
	var nombre = 'webFau'+tme.getMilliseconds( );
	var ifrName = ventana.id.substring(8, ventana.id.length);
	var urlStr = frames[ifrName].location.href;
	var ventanaTamanio = tamanioElemento(ventana);
	window.open(urlStr, nombre, 'width=400,height=650,scrollbars=yes,resizable=yes,menubar=yes, title=WebFau');

}
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------




// -------------------------- Tamaño de Fuente ----------------------------------------------
// Inicializa tamaño de fuente segun tamaño screen
function initFontSize() {
	fontHeight = (self.screen.width > 1024)? 11: (self.screen.width > 800)? 9: 8;
	maxFontHeight = fontHeight + 2;
	minFontHeight = fontHeight - 2;
	setBodyFontSize();
}

// Cambia el tamaño de fuentes 
function setFontSize() {
	fontHeight = (this.id == "txtMas")? fontHeight = Math.min(maxFontHeight, fontHeight + 1):
										fontHeight = Math.max(minFontHeight, fontHeight - 1);
	setBodyFontSize();
}

// Cambia la definicion de tamaño de fuente
function setBodyFontSize() {
	if (fontHeight) {
		document.body.style.fontSize = fontHeight + "px";
		frames["ifr"].document.body.style.fontSize = fontHeight + "px";
	}
}



// -------------------------- Transciciones ---------------------------------------------
// Transicion entre paginas de datos 
function iniDataTransf() {
	document.getElementById("logIni").style.display = "none";	
	try { 
		col3.filters[0].apply(); 
		trasnformacionEnCurso = true;
	} catch (e) { }
}

function iframeLoaded() {
	setBodyFontSize();
	try { 
		if (trasnformacionEnCurso) col3.filters[0].play(); 
		trasnformacionEnCurso = false;
	} catch (e) { }	
}

// Ejecutar la transformacion del wipe
function doTrans() {
	try { col2.filters[0].apply(); } catch (e) {}
	nWipe = nWipe + 1;
	if (nWipe == 29) nWipe = 1;
	document.getElementById("imgWipe").src = "imagenes/fnd" + nWipe + ".jpg";
	try { col2.filters[0].play(); } catch (e) {}
}

// Para redimensionart el tamaño del frame
function redimFrame() {
	var w = document.body.offsetWidth;
	var h = document.clientHeight;
	var mk = document.getElementById("mrk");
	if (mk.style.toString() == "[object]")
		mk.style.left = w - 1;
	else 	
		mk.setAttribute("style", "left:" + (w - 2) + "px;");
}
function newWin() {
	if (! window.focus) return true;
	var href = this.href;
	window.open(href, "test", 'width=460,height=420,scrollbars=yes');
	return false;	
}

// MODULO MENU LATERAL /////////////////////////////////////////////////////////////////////////////////

// Inicializa el Menu Ppl
function inicializarMenuLateral(menuId) {
	
	menuVars.menuId = menuId;
	
	// Inicializar Menu Principal
	menuVars.opcionActiva = null;
	menuVars.subOpcionActiva = document.getElementById("submenu_inicio");
	return false;

}

// Centro de control menú Ppl
function controlMenuLateral(target) {
	
	// Nuevo boton activo
	if (menuVars.opcionActiva) menuVars.opcionActiva.className = "";
	menuVars.opcionActiva = target;
	menuVars.opcionActiva.className = "opcionSeleccionada";
	
	// Nuevo submenu activo
	if (menuVars.subOpcionActiva) menuVars.subOpcionActiva.className = "submenu";
	menuVars.subOpcionActiva = document.getElementById("submenu_" + target.id);
	menuVars.subOpcionActiva.className = "submenuExpandido";
}

// MODULO DE VENTANAS ///////////////////////////////////////////////////////////////////////////////////











////////////////////////////////////////////////////////////////////////////////////////













// MODULO DE UTILIDADES /////////////////////////////////////////////////////////////////////////////////

/* ----------------------------- Utilidades ---------------------------------------- */

	    

// Retorna la posicion del elemento
function posicionElemento(obj) {
	var x = 0;
	var y = 0;
	if (obj.offsetParent) {
		do {
			x += obj.offsetLeft;
			y += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [x, y];
}

// Retorna la posición del mouse
function posicionMouse(evt) {
	var x = 0;
	var y = 0;
	var e = evt || window.event;
	
	if (e.pageX || e.pageY) 	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		y = e.clientY + document.body.scrollTop  + document.documentElement.scrollTop;
	}
	return [x, y];
}


