/* ***************************************** */
/* Grupo Xenon, C.A. 
/* Desarrollado por: Jonathan Jaimes
/* Fecha de Creación: 05/05/2008
/* ***************************************** */

var oldLink = null;

// Permite cambiar la hoja de estilo activa
function setActiveStyleSheet(link, title) {
	var i, a, main;
  
	for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			
			if (a.getAttribute("title") == title) 
				a.disabled = false;
    	}
  	}
  
	if (oldLink) 
		oldLink.style.fontWeight = 'normal';
		
	oldLink = link;
	link.style.fontWeight = 'bold';
	return false;
}

// Función invocada cuando el usuario hace clic sobre una fecha
function selected(cal, date) {
	cal.sel.value = date; 	// Actualiza la fecha en el campo correspondiente
  
	if (cal.dateClicked && (cal.sel.id == "sel1" || cal.sel.id == "sel3"))
		// Si añadimos esta llamada el calendario se cierra con un clic
		// Para ejemplificar ambos casos, se están utilizando solo el primer y tercer campo
		// mientras que el segundo y cuarto requieren doble clic
		cal.callCloseHandler();
}

// Invocada cuando el usuario hace clic sobre la fecha seleccionada o el botón de cerrar
// esconde el calendario sin destruirlo
function closeHandler(cal) {
	cal.hide();		// Esconde el calendario
	//cal.destroy();
	_dynarch_popupCalendar = null;
}

// Muestra el calendario bajo el elemento identificado con el id
function showCalendar(id, format, showsTime, showsOtherMonths) {
	var el = document.getElementById(id);
	
	if (_dynarch_popupCalendar != null) {
		// Ya se tiene un calendario creado
		_dynarch_popupCalendar.hide();	// Inicialmente se esconde el calendario
	
	} else {
    	// Primera invocación, se crea el calendario
		var cal = new Calendar(1, null, selected, closeHandler);
		
		// Descomentar la siguiente línea para esconder los números de las semanas
		// cal.weekNumbers = false;
		
		if (typeof showsTime == "string") {
			cal.showsTime = true;
			cal.time24 = (showsTime == "24");
		}
		
		if (showsOtherMonths) {
			cal.showsOtherMonths = true;
		}
		
		_dynarch_popupCalendar = cal;	// Registrarlo en la variable global
		cal.setRange(1900, 2100);		// Mínimo y máximo de años permitidos
		cal.create();
	}
  
	_dynarch_popupCalendar.setDateFormat(format);    // Establece el formato de fecha especificado
	_dynarch_popupCalendar.parseDate(el.value);      // Parsear el texto en el campo correspondiente
	_dynarch_popupCalendar.sel = el;                 // Informar cual campo estamos utilizando

	// El elemento de referencia que pasamos a showAtElement es el botón que desencadena el calendario.
	// En este ejemplo alineamos el calendario al fondo a la derecha del botón.
	_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br");        // Muestra el calendario

	return false;
}

var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;

// Si este manejador retorna true entonces se deshabilita la fecha dada como parámetro
// En este ejemplo se permiten únicamente días dentro del rango de 10 días desde el día actual.
// Podemos utilizar la función date.getFullYear() que retorna el año como un número de 4 dígitos,
// date.getMonth() retorna el mes de 0..11 y date.getDate() retorna el día del mes como 1..31
// para realizar aquí cálculos más complejos. Sin embargo, estar atento ya que esta función debe
// ser muy rápida, ya que es invocada por cada día de un mes cuando el calendario es reconstruido.
function isDisabled(date) {
	var today = new Date();
	return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
}

function flatSelected(cal, date) {
	var el = document.getElementById("preview");
	el.innerHTML = date;
}

function showFlatCalendar() {
	var parent = document.getElementById("display");

	// Construye el calendario únicamente con el manejador "selected"
	var cal = new Calendar(0, null, flatSelected);

	// Esconde los números de las semanas
	cal.weekNumbers = false;

	// Si queremos que algunas fechas sean deshabilitadas, utilicemos la función isDisabled
	cal.setDisabledHandler(isDisabled);
	cal.setDateFormat("%A, %B %e");

	// Esta llamada debe ser la última y utilizará toda la data inicializada anteriormente,
	// si especificamos un padre, como opuesto a la función "showCalendar" entonces se creará
	// un calendario plano y no de tipo popup. 
	cal.create(parent);

	// Motrar el calendario
	cal.show();
}
