/* ---------------------------------------------------------------------------------------------------------------------- */
/*	WebFau.js - www.webfau.com.ar                                                                                         */
/*	Copyright (c) 2009 Facultad de Arquitectura y Urbanismo, Universidad Nacional de Tucumán, Argentina                   */
/*	Programado por Roberto Gómez López y Soledad Juliá sobre "MooTools JS Framework, Copyright (c) 2006 Valerio Proietti" */
/*  con partes del código basado en funciones de Peter-Paul Koch - www.quirksmode.org    	  	                 		  */
/*  --------------------------------------------------------------------------------------------------------------------- */

// Enlace a Index 
window.onload = inicializarIndex;	
var DEFAULT_FONT_HEIGHT, DEFAULT_BODY_WIDTH; 	// Constantes

// Variables globales
var glb = new Object();				

// Inicialización del Index 
function inicializarIndex() {

	// Redimensionar en base al tamaño de pantalla (estilo CSS en Body y asigno tamaño texto)
	if (screen.width < 1024) {
		DEFAULT_FONT_HEIGHT = "8px";
	} else if (screen.width < 1280) {
		DEFAULT_FONT_HEIGHT = "9px";
	} else if (screen.width < 1440) {
		DEFAULT_FONT_HEIGHT = "10px";
	} else {		
		DEFAULT_FONT_HEIGHT = "11px";
	} 

	// Inicializar menú ppl
	inicializarNavegacion();

	// Inicializar ventanas arrastrables
	var ventanas = document.getElements('div[class^=ventana]');
	glb.ventanas = new Array();
	ventanas.each( function (i) { 
				glb.ventanas[i.getProperty('id')] = dragObj.initElement(i); 
	});

	// Registrar control de estilos
	document.getElementById("cambiaColor").onclick = cambiarColores;

} // inicializarIndex

/* Registra las funciones necesarias para administrar navegación */
function inicializarNavegacion() {	

	// Inicializar Menu Principal
	glb.opcionActiva = null;
	glb.subOpcionActiva = document.getElementById("submenu_inicio");

	var mnuItems = $("menuPrincipal").getElements('a');	
	mnuItems.each( function(a) {
		if (a.getProperty('target') == "menu") {
			// Registrar evento click en enlaces
			a.addEvent('click',
				// Función del click 										 
				function() {
						// Nuevo boton activo
						if (glb.opcionActiva) glb.opcionActiva.className = "";
						glb.opcionActiva = this;
						this.className = "opcionSeleccionada";
						// Nuevo submenu activo
						if (glb.subOpcionActiva) glb.subOpcionActiva.className = "submenu";
						glb.subOpcionActiva = document.getElementById("submenu_" + this.id);
						glb.subOpcionActiva.className = "submenuExpandido";
						return false;
				} // function
			);	// Add event 
		} else {
			// Registrar evento click en enlaces
			a.addEvent('click',
			// Función del click 										 
				function() { 
					$("datos").setStyle("display", "block" );
					if ( $("datos").hasClass('atracada') ) 
						$("datos").removeClass('atracada');
				}
			);
		}
		
	} ); // function & each
						

} // inicializarMenu




/* Función cambio de esquema de colores */
function cambiarColores() {
	var estiloActual = document.body.getProperty('class').split('_');
	var estilo = (estiloActual[1].toInt() + 1) & 7;
	document.body.setProperty('class', "estilo_" + estilo);
	// createCookie("wfEstilo", document.getElement('body').getProperty('class'));		
	return false;
} // cambiarColores


/* Objeto para ventana arrastrable */
dragObj = {
	initialMouseX: undefined,
	initialMouseY: undefined,
	startX: undefined,
	startY: undefined,
	vdx: undefined,
	vdy: undefined,
	w: undefined,
	h: undefined,
	draggedObject: undefined,
	// Inicializar objeto
	initElement: function (element) {
		if (typeof element == 'string')
			element = document.getElementById(element);
		var links = element.getElementsByTagName('a');
		links[0].onmousedown = dragObj.startDragMouse;  
		links[1].onclick = dragObj.maxminVentana;		
		links[links.length - 1].onmousedown = dragObj.iniciarEstirarVentana;
		return this;
	},
	startDragMouse: function (e) {
		var ventana = dragObj.obtenerVentana( $(this));
		if (!ventana || ventana.hasClass('atracada')) return false;		
		var evt = e || window.event;
		dragObj.draggedObject = ventana;
		dragObj.startX = dragObj.draggedObject.offsetLeft;
		dragObj.startY = dragObj.draggedObject.offsetTop;
		dragObj.initialMouseX = evt.clientX;
		dragObj.initialMouseY = evt.clientY;
		dragObj.draggedObject.addClass('flotando');		
		addEventSimple(document,'mousemove',dragObj.dragMouse);
		addEventSimple(document,'mouseup',dragObj.releaseElement);
		return false;
	},
	dragMouse: function (e) {
		var evt = e || window.event;
		dragObj.draggedObject.style.left = dragObj.startX + evt.clientX - dragObj.initialMouseX + 'px';
		dragObj.draggedObject.style.top = dragObj.startY + evt.clientY - dragObj.initialMouseY + 'px';
		return false;
	},
	releaseElement: function() {
		removeEventSimple(document,'mousemove',dragObj.dragMouse);
		removeEventSimple(document,'mouseup',dragObj.releaseElement);
		dragObj.draggedObject.removeClass('flotando');
		// dragObj.salvarEstado();
		dragObj.draggedObject = null;
	},
	iniciarEstirarVentana: function (e) {
		dragObj.draggedObject = dragObj.obtenerVentana( $(this));
		var evt = e || window.event;
		dragObj.vdx = dragObj.draggedObject.offsetWidth - evt.clientX;
		dragObj.vdy = dragObj.draggedObject.offsetHeight - evt.clientY;
		// Cambiar estado a flotando
		dragObj.draggedObject.addClass('flotando');
		addEventSimple(document,'mousemove',dragObj.estirandoVentana);
		addEventSimple(document,'mouseup',dragObj.terminarEstirarVentana);
		return false;
	},
	estirandoVentana: function (evt) {
		var evt = evt || window.event;
		dragObj.draggedObject.setStyle("width",  (evt.clientX + dragObj.vdx) + "px");
		dragObj.draggedObject.setStyle("height", (evt.clientY + dragObj.vdy) + "px");
		return false;
	},
	terminarEstirarVentana: function () {
		removeEventSimple(document,'mousemove',dragObj.estirandoVentana);
		removeEventSimple(document,'mouseup',dragObj.terminarEstirarVentana);
		dragObj.draggedObject.removeClass('flotando');
		// dragObj.salvarEstado();
		dragObj.draggedObject = null;
	},
	maxminVentana: function () {
		dragObj.draggedObject = dragObj.obtenerVentana( $(this));
		if (dragObj.draggedObject.hasClass('atracada')) {
			// maximizar
			dragObj.draggedObject.removeClass('atracada'); 
		} else {
			// minimizar
			dragObj.draggedObject.addClass('atracada');	
			dragObj.draggedObject.removeProperty('style');
		};
		// dragObj.salvarEstado();
		dragObj.draggedObject = null;
		return false;
	}, 
	obtenerVentana: function (obj) {
		if (obj.nodeName == "BODY") return null;
		if (obj.hasClass("ventana")) return obj;
		return dragObj.obtenerVentana( obj.getParent());
	},
	salvarEstado: function() {
		dragObj.draggedObject.getProperty('id');
		createCookie("wf" + dragObj.draggedObject.getProperty('id'), 
							dragObj.draggedObject.offsetLeft + "-" + dragObj.draggedObject.offsetTop + "-" + 
							dragObj.draggedObject.offsetWidth + "-" + dragObj.draggedObject.offsetHeight + "-" +
							dragObj.draggedObject.getProperty('class')
					); // createCookie
	} // function
} // dragObj


/* Registrar eventos */
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

/* Remover eventos */
function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}
/* Crear cookies */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
/* Leer cokies */
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
/* Borrar cokies */
function eraseCookie(name) {
	createCookie(name,"",-1);
}

