// VARIABLES
var nombres_dias = new Array("Domingo","Lunes","Martes","Mi&eacute;rcoles","Jueves","Viernes","S&aacute;bado");
var nombres_meses = new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var dias_por_mes  = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var hoy = new Date();                                   
var este_dia = hoy.getDate();			// devuelve el día del mes - (1-31)
var este_mes = hoy.getMonth();			// devuelve el número de mes - (0-11)
var superior_tabla = "";
var festivosDia = new Array("1","21","24","1","12","24","15","11","24","1","6","8","25","26");
var festivosMes = new Array("1","3","3","5","5","6","8","9","9","11","12","12","12","12");
var puentesDia = new Array("20","2","23","12");
var puentesMes = new Array("3","5","6","9");
var vacacionesVeranoDia = new Array("4","5","6","7","8","9","10","11","12","13","14","15","16","17");
var vacacionesVeranoMes = new Array("8","8","8","8","8","8","8","8","8","8","8","8","8","8","8","8");
var vacacionesInviernoDia = new Array("24","25","26","27","28","29","30","31");
var vacacionesInviernoMes = new Array("12","12","12","12","12","12","12","12");

// FUNCIONES

function y2K(numero){										// si el año es < 2000 javascript devuelve solo 2 dígitos
	return (numero < 1000) ? numero + 1900 : numero; 
}
 
var este_anyo = y2K(hoy.getYear());

function esRojo(numDia, numMes){
	numMes=numMes+1;
	
	for (j=0; j<festivosDia.length; j++){
		if ( numDia==festivosDia[j] && numMes==festivosMes[j] ){
			return true;
		}
	}
	
	for (k=0; k<vacacionesVeranoDia.length; k++){
		if ( numDia==vacacionesVeranoDia[k] && numMes==vacacionesVeranoMes[k] ){
			return true;
		}
	}
	
	for (l=0; l<vacacionesInviernoDia.length; l++){
		if ( numDia==vacacionesInviernoDia[l] && numMes==vacacionesInviernoMes[l] ){
			return true;
		}
	}
	
	for (m=0; m<puentesDia.length; m++){
		if ( numDia==puentesDia[m] && numMes==puentesMes[m] ){
			return true;
		}
	}
	
	return false;
}

function dibujaCalendario(el_mes, el_anyo){   
	primer_dia_del_mes = new Date(el_anyo, el_mes, 1);		// crea una instancia del objeto fecha para el primer dia del mes
	
    dia_de_la_semana = primer_dia_del_mes.getDay()-1;			// devuelve el día de la semana (-1 a 5)
																// le quitamos 1 para adaptarlo a nuestro calendario (comienzo en Lunes)
																// pero importante: OJO QUE EL DOMINGO CORRESPONDE A -1
	
    if  (((el_anyo % 4 == 0) && (el_anyo % 100 != 0)) || (el_anyo % 400 == 0)){   
		dias_por_mes[1] = 29; 					// Año bisiesto
    }else{
		dias_por_mes[1] = 28;
    }
	
	superior_tabla = "";
	
    superior_tabla += "<table cellspacing='3' cellpadding='3' border='0'>";
    superior_tabla += "<tr><td colspan='7' class='nombre_mes'>" + nombres_meses[el_mes] + "</td></tr>";
    superior_tabla += "<tr>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Lunes'>L</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Martes'>M</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Mi&eacute;rcoles'>M</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Jueves'>J</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Viernes'>V</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='S&aacute;bado'>S</acronym></th>";
    superior_tabla += "<th class='nombres_dias_semana'><acronym title='Domingo'>D</acronym></th>";
    superior_tabla += "</tr>";
    superior_tabla += "<tr>";
	
	document.write(superior_tabla);
	
    var column = 0;
	
	/* Si el dia de la semana es -1, estamos hablando de que empieza el mes en domingo */
	if(dia_de_la_semana == -1){
		for (i=0; i<6; i++){		// saltamos celdas hasta que el primer día del mes se corresponda con su día de la semana
			document.write("<td>&nbsp;</td>");
			column++;
		}
		
	}else{
		for (i=0; i<dia_de_la_semana; i++){		// saltamos celdas hasta que el primer día del mes se corresponda con su día de la semana
			document.write("<td>&nbsp;</td>");
			column++;
		}
	}
	
    for (i=1; i<=dias_por_mes[el_mes]; i++){
		if  ((i == este_dia)  && (el_mes == este_mes) && (el_anyo == este_anyo)){
		   document.write("<td id='hoy'>");							// destacamos la fecha de hoy
		}else{
			document.write("<td class='resto_dias'>");       		// el resto de fechas
        }
		

			var fecha_seleccionada = "";
			if(i < 10){
				fecha_seleccionada += "0";
			} 
			fecha_seleccionada += i + "-" ;
			mes_a_enviar = el_mes+1;
			if(mes_a_enviar < 10){
				fecha_seleccionada += "0";
			} 
			fecha_seleccionada += mes_a_enviar + "-" + el_anyo;
			
		if( (column%5==0 || column%6==0) && column!=0){
			document.write("<div class='fin_de_semana'>");
		}
			 
		//document.write("<a href='javascript:fecha_consultada=\""+fecha_seleccionada+"\"; leerDatos();' class='link_dia'>" + i + "</a>");
		document.write("<a class='link_dia");
		if ( esRojo(i, el_mes) ){
			document.write(" rojo");
		}
		document.write("'>" + i + "</a>");
		if( (column%5==0 || column%6==0) && column!=0){
			document.write("</div");
		}
	
		document.write("</td>");		
        column++;
        
		if  (column == 7){									// empezamos la nueva fila para la siguiente semana
			document.write("</tr><tr>");
            column = 0;
        }
    }
	
    document.write("</tr></table>");						// mes completo - cerramos la tabla
}

function hoyEs(){
	return nombres_dias[hoy.getDay()] + " " + este_dia + " de " + nombres_meses[este_mes] + " de " + este_anyo;
}

/********************************************************************************************/
/* Parte que se ocupa de cargar los datos de una fecha desde el archivo XML correspondiente */

  // Recibe y muestra los datos
  function leerDatos(){

	// Comprobamos que se han recibido los datos
    if (oXML.readyState == 4) {
      // Accedemos al XML recibido
      var xml  = oXML.responseXML.documentElement;
      // Accedemos al DIV
      var miDiv = document.getElementById('info_calendario');
      // Vaciamos el DIV
      miDiv.innerHTML = '';
      // Iteramos cada usuario
      for (i = 0; i < xml.getElementsByTagName('cita').length; i++){
        
		// Accedemos al objeto XML usuario
		var item = xml.getElementsByTagName('cita')[i];
		// Recojemos la fecha
		var fecha = item.getElementsByTagName('fecha')[0].firstChild.data;
				
		if( fecha_consultada == fecha ){
			// Recojemos el título
			var titulo = item.getElementsByTagName('titulo')[0].firstChild.data;	
			// Recojemos la descripcion
			var descripcion = item.getElementsByTagName('descripcion')[0].firstChild.data;
			break;
		}else{
			fecha = fecha_consultada;
			var titulo = "";	
			var descripcion = "No hay nada se&ntilde;alado este d&iacute;a";
		}
      }//for
		// Mostramos los resultados
		miDiv.innerHTML += '<b>'+fecha+'</b><br />';
		miDiv.innerHTML += titulo+'<br />';
		miDiv.innerHTML += descripcion+'<br /><br />';
    }
  } 
 
 
  function crearListaFechas(){

	// Comprobamos que se han recibido los datos
    if (o2XML.readyState == 4) {
      // Accedemos al XML recibido
      var xml  = o2XML.responseXML.documentElement;
      for (i = 0; i < xml.getElementsByTagName('cita').length; i++){
        
		// Accedemos al objeto XML usuario
		var item = xml.getElementsByTagName('cita')[i];
		// Recojemos la fecha
		var fecha = item.getElementsByTagName('fecha')[0].firstChild.data;
		
		listaFechas[listaFechas.length] = fecha;
      }//for
    }
	return listaFechas;
  } 
 
  function fechaConCita(fecha_a_mirar){
	if (oXML.readyState == 4) {
		// Accedemos al XML recibido
		var xml  = oXML.responseXML.documentElement;
	
		for (i = 0; i < xml.getElementsByTagName('cita').length; i++){
			var item = xml.getElementsByTagName('cita')[i];
			var fecha = item.getElementsByTagName('fecha')[0].firstChild.data;
		
			if( fecha == fecha_a_mirar ){
//				return true;
				break;
			}else{
//				return false;
			}
		
			return fecha;
		}//for
	}
  }

  // Crea el objeto AJAX
  function AJAXCrearObjeto(){
	 /* 
    var obj;
    if(window.XMLHttpRequest) { // no es IE
      obj = new XMLHttpRequest();
    } else { // Es IE o no tiene el objeto
      try {
        obj = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) {
        alert('El navegador utilizado no está soportado');
      }
    }
    return obj;
	*/
	var xmlhttp=false;
	try	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch (e){
		try	{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch (E){
			xmlhttp = false;
		}
	}
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined'){
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
  }

  var fecha_consultada = "";
  if(este_dia < 10){
	fecha_consultada += "0";
  } 
  fecha_consultada += este_dia + "-" ;
  if(este_mes < 10){
	fecha_consultada += "0";
  } 
  fecha_consultada += este_mes + "-" + este_anyo;
  
  oXML = AJAXCrearObjeto();
  oXML.open('get', 'calendario_2007.xml');
  oXML.onreadystatechange = leerDatos;
  oXML.send('');
  
	var listaFechas = new Array();  
  o2XML = AJAXCrearObjeto();
  o2XML.open('get', 'calendario_2007.xml');
  o2XML.onreadystatechange = crearListaFechas;
  o2XML.send('');

//alert(listaFechas);
