/*--------------------------------------------------------------------------------------------------------
 *  Calendario de eventos AJAX, version 1.2
 *  (c) 2010 Jose Augusto Gregori 29/05/2010
 *
 *  Desde la página HTML hay que definir las siguientes variables javascript:
 *    MesSeleccionado : Desplazamiento del mes que se muestra inicialmente respecto al actual
 *    urlEventos : pagina XML que contiene la lista de eventos
 *    MensajeNoSoporte : Mensaje que se muestra si el navegador no soporta carga de XML
 *    cmes : Lista de nombres de los meses separados por comas
 *    cdia : Lista de nombres de los dias de la semana y de su letra de abreviatura separados por comas
 *    tituloVarios: Alt que se muestra en los dias con varios eventos programados
 *
 *   Para crearlo hay añadir la siguiente linea en el HTML:
 *     <div id="boxcalendario"><script type="text/javascript">CrearCalendario(MesSeleccionado);</script></div>
 *
 *   El formato XML de la lista de eventos debe ser el siguiente:
 *
 *
 *--------------------------------------------------------------------------------------------------------*/

var getCalendario = null;
var xmlCalendario = null;
var CualMes=0;
var CapaActual='';

String.prototype.capitalize = function(){
    return this.charAt(0).toUpperCase() + this.substring(1);  //.toLowerCase()
  };
  
function muestraCapa (a) {
    document.getElementById(a).style.display = 'block';
    document.getElementById(a).style.display = 'block';
}

function ocultaCapa (a) {
	if (a!='') { document.getElementById(a).style.display = 'none'; CapaActual='';}
}

function min (a, b) {
	if (a<b) { return a } else { return b }
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}


function CrearCalendario(QueMes){


//getCalendario=GetXmlHttpObject();
//if (getCalendario==null)
//  {
//  alert ("Your browser does not support AJAX!");
//  return;
//  }
//var url="getcustomer_xml.asp";
//url=urlEventos+"&sid="+Math.random();
//xmlhttp.onreadystatechange=CambioDeEstado;
//xmlhttp.open("GET",url,true);
//xmlhttp.send(null);

    if (window.XMLHttpRequest){
        getCalendario=new XMLHttpRequest()
    }else if (window.ActiveXObject){
        getCalendario=new ActiveXObject("Microsoft.XMLHTTP")
    }
    if (getCalendario){
        CualMes=QueMes;
        getCalendario.open("GET","../calendario.asp",false);  //urlEventos
        //getCalendario.onreadystatechange=CambioDeEstado;
        getCalendario.send(null);





		xmlCalendario = getCalendario.responseXML;
		xmlCalendario = xmlCalendario.getElementsByTagName('cita');
	    setCal(CualMes);


    }else{
        alert (MensajeNoSoporte);
    }
}

function CambioDeEstado(){
	if (getCalendario.readyState == 4){
		xmlCalendario = getCalendario.responseXML;
		xmlCalendario = xmlCalendario.getElementsByTagName('cita');
		setCal(CualMes);
	} 
} 

function bisiesto(Anio) {
	if (Anio % 4 == 0)
	return true
	return false
}

function diasPorMes(mes, Anio) {
var meses = new Array(12)
meses[1] = 31; // Enero
meses[2] = (((Anio % 4 == 0) && (Anio % 100 != 0)) || (Anio % 400 == 0)) ? 29 : 28
meses[3] = 31 // Marzo
meses[4] = 30 // Abril
meses[5] = 31 // Mayo
meses[6] = 30 // Junio
meses[7] = 31 // Julio
meses[8] = 31 // Agosto
meses[9] = 30 // Septiembre
meses[10] = 31 // Octubre
meses[11] = 30 // Noviembre
meses[12] = 31 // Diciembre
return meses[mes]
}

function getNombreDelMes(mes) {
  var meses = cmes.split(",")
  return meses[mes-1]
}

function setCal(QueMes) {
	var now = new Date()
	var anio = now.getYear()
	if (anio < 1000) {anio+=1900}
	var mes = now.getMonth()+QueMes
	if (now.getMonth()+QueMes > 11) {mes-=12;anio++}
	if (now.getMonth()+QueMes < 0) {mes+=12;anio--}
	var fecha = now.getDate()
	var primerDia = new Date(anio, mes, 1)
	var primerDia2 = primerDia.getDay()
	primerDia = null
	var dias = diasPorMes(mes+1, anio)
	drawCal(primerDia2, dias, fecha, mes+1, anio)
}

function drawCal(firstDay, lastDate, date, Mes, Anio) {
  var now = new Date()
  var codigo = ""
  codigo += '<table class="tabla">'
  codigo += '<tr><td class="encabezado" align="center">'
  codigo += '<a href="javascript:CrearCalendario(--MesSeleccionado);" />&lt;</a>&nbsp;'
  codigo += '</td><td class="encabezado" colspan="5" align="center">'
  codigo += '<a href="javascript:MesSeleccionado=0;CrearCalendario(MesSeleccionado);" />' + getNombreDelMes(Mes) + ' ' + Anio + '</a>'
  codigo += '</td><td class="encabezado" align="center">'
  codigo += '&nbsp;<a href="javascript:CrearCalendario(++MesSeleccionado);" />&gt;</a>'
  codigo += '</td></tr>'
  var codigocapa = ""
  codigocapa += '<div class="btncerrarcapa">'
  codigocapa += '<img src="imagenes/cerrar_capa.gif" id="imgcerrar" name="imgcerrar" border="0" onclick="ocultaCapa(CapaActual);" />'
  codigocapa += '</div><div class="textoenlacecapa">'

  var diasSemana = new Array(7)
  var cdiaSem = cdia.split(",")
  for (var i=0; i<7; ++i) {
    diasSemana[i] = '<acronym title=\"' + cdiaSem[i*2] + '\">' + cdiaSem[(i*2)+1] + '</acronym>'
  }

  codigo += '<tr>'

  for (var dayNum = 0; dayNum < 7; ++dayNum) {
	codigo += '<td class="celdaDiaSemana">' + diasSemana[dayNum] + '</td>' 
  }
  codigo += '</tr>'

  var cDia = 1
  var curCell = 1
  var textoCapa = ''
  var numeventos = 0
  var tamCapa = 0
  var coloranterior = ''

  if (firstDay==0) {firstDay=7} //Modificacion para desplazar los domingos a la ultima columna

  for (var row = 1; row <= Math.ceil((lastDate + firstDay) / 7); ++row) {
	codigo += '<tr>'
	for (var col = 1; col <= 7; ++col) {
	  if (cDia > lastDate)
	  break
	  if (curCell < firstDay) {
		codigo += '<td></td>';
		curCell++
	  } else {
		var textoCelda = cDia;
		if (col==7) {
		  var textoTd = '<td class="celdaDom">' 
		} else {
		  var textoTd = '<td class="celda">'
		}

		if (cDia == date && Mes == now.getMonth()+1) {
		  if (col==7) {
			textoTd = '<td class="hoyDom">' 
		  } else {
			textoTd = '<td class="hoy">'
		  }
		}

		for (i=0;i<xmlCalendario.length;i++){
		  var fecha1 = new Date(xmlCalendario[i].getAttribute('fecha'));
		  var fecha2 = new Date(Anio + "/" + Mes + "/" + cDia);
		  if (fecha1.getTime() - fecha2.getTime()==0){
			var titulo = xmlCalendario[i].getAttribute('titulo');
			var color = xmlCalendario[i].getAttribute('color');
			var noticia = xmlCalendario[i].getAttribute('noticia');
			if (cDia == date && Mes == now.getMonth()+1) {
				if (col==7) {
					var sufijoTd = 'HoyDom'
				} else {
					var sufijoTd = 'Hoy'
				}
			} else {
				if (col==7) {
					var sufijoTd = 'Dom'
				} else {
					var sufijoTd = ''
				}
			}
			if (numeventos>0) { 
				textoCelda = '<a href="#" class="diacita'+sufijoTd+'" onclick="ocultaCapa(CapaActual);CapaActual='+Anio + Mes + cDia+';muestraCapa(CapaActual)";return false" title="'+tituloVarios+'">' + cDia + '</a>';
				coloranterior = color;
				color = min(coloranterior, color);
			} else {
				textoCelda = '<a href="#" class="diacita'+sufijoTd+'" onclick="ocultaCapa(CapaActual);CapaActual='+Anio + Mes + cDia+';muestraCapa(CapaActual)";return false" title="'+titulo.capitalize()+'">' + cDia + '</a>';
				coloranterior = color
			}
			textoTd = '<td class="celdacita'+sufijoTd+'" style="background: ' + color + '">'
			textoCapa = textoCapa + '<a href="page.asp?Id=' + noticia + '">- '+ titulo.capitalize() +'</a><br>'
			numeventos++
		  }
		}

		tamCapa = 40 + (numeventos*20)
		if(navegador=='MSIE'){
		  codigo += '<div id="'+Anio + Mes + cDia+'" class="capa" style="height:'+tamCapa+';">' + codigocapa + textoCapa + '</div>' + textoTd + textoCelda + '</div></td>'
		} else {
		  codigo += textoTd + textoCelda + '<div id="'+Anio + Mes + cDia+'" class="capa" style="height:'+tamCapa+';	display: none;">' + codigocapa + textoCapa + '</div>' + '</div></td>'
		}
		textoCapa = ''
		numeventos = 0
		cDia++
	  }
	}
	codigo += '</tr>'
  }

  codigo += '</table>'
  document.getElementById("boxcalendario").innerHTML=codigo;
}