He buscado en internet y he encontrado un calendario que funciona con javascript. en un archivo XML pones la informacion de cada día, y dicha informacion se muestra en el calendario. Si haces clic, se abre una ventana con la información detallada.
Lo que me gustaría a mi sería que la información, en lugar de abrirse en una ventana, se mostrara en una capa.
La estructura de la zona del calendario es esta
Código HTML:
Ver original
Este es el código de la página que contiene el CALENDARIO
Código HTML:
Ver original
El archivo calendario.js contiene este código
Código Javascript:
Ver original
var getCalendario = null; var xmlCalendario = null; var CualMes=0; function Calendari(QueMes){ if (window.XMLHttpRequest){ getCalendario=new XMLHttpRequest() }else if (window.ActiveXObject){ getCalendario=new ActiveXObject("Microsoft.XMLHTTP") } if (getCalendario){ var url="calendario.xml"; getCalendario.onreadystatechange=CambioDeEstado; getCalendario.open("GET",url,true); getCalendario.send(null); CualMes=QueMes; }else{ alert ("El teu explorador no suporta XMLHttpRequest"); } } function CambioDeEstado(){ if (getCalendario.readyState == 4){ xmlCalendario = getCalendario.responseXML; xmlCalendario = xmlCalendario.getElementsByTagName('activitat'); 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 = new Array(12) meses[1] = "Gener" meses[2] = "Febrer" meses[3] = "Març" meses[4] = "Abril" meses[5] = "Maig" meses[6] = "Juny" meses[7] = "Juliol" meses[8] = "Agost" meses[9] = "Setembre" meses[10] = "Octubre" meses[11] = "Novembre" meses[12] = "Desembre" return meses[mes] } 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 + 1, 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" colspan="7">' codigo += getNombreDelMes(Mes) + ' ' + Anio codigo += '</td></tr>' var diasSemana = new Array(7) diasSemana[0] = "<acronym title=\"Diumenge\"> Diumenge </acronym>" diasSemana[1] = "<acronym title=\"Dilluns\"> Dilluns </acronym>" diasSemana[2] = "<acronym title=\"Dimarts\"> Dimarts </acronym>" diasSemana[3] = "<acronym title=\"Dimecres\"> Dimecres </acronym>" diasSemana[4] = "<acronym title=\"Dijous\"> Dijous </acronym>" diasSemana[5] = "<acronym title=\"Divendres\"> Divendres</acronym>" diasSemana[6] = "<acronym title=\"Dissabte\"> Dissabte </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 for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 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; var textoTd = '<td class="celda">' for (i=0;i<xmlCalendario.length;i++){ var fecha = xmlCalendario[i].getAttribute('data'); if (fecha == cDia+ "-" + Mes + "-" + Anio){ var titulo = xmlCalendario[i].getAttribute('event'); var descripcion = xmlCalendario[i].getAttribute('descripcio'); textoCelda = '<a href="#" class="diacita" onclick="alert(\''+descripcion+'\');return false" title="'+titulo+'">' + cDia + '</a>'; // esta funcion quiero sustituirla para que se muestre el contenido DESCRIPCIO en la DIV INFO textoTd = '<td class="celdacita">' } } if (cDia == date && Mes == now.getMonth()+1) { textoTd = '<td class="hoy">' } codigo += textoTd + textoCelda + '</td>' cDia++ } } codigo += '</tr>' } codigo += '</table>' document.getElementById("boxcalendario").innerHTML=codigo; }