Código Javascript:
Ver original
// Variables globales var meses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); var hoy = new Date(); /*******************************************************************************/ /* Funcion que genera el calendario de un mes y año concreto -- Extraido del */ /* ejercicio 13. Si mes="hoy" y anio="hoy" entonces se genera el calendario */ /* de el mes en curso */ /*******************************************************************************/ function generaCalendario(mes,anio) { //Definición de arrays con meses y días de la semana var dias = new Array("L", "M", "X", "J", "V", "S", "D"); //Si los parametros mes y anio vienen con el valor "hoy" obtenemos el mes y el año de hoy (declarada globalmente) if (mes == "hoy" && anio == "hoy") { mes = hoy.getMonth(); anio = hoy.getFullYear(); } //Obtenemos la fecha actual en base al año, mes y el primer día del mes var fechaDeHoy = new Date(anio,mes,1); inicio=fechaDeHoy.getDay(); //Obtenemos el dia de la semana del primero de mes //Obtenemos el numero de dias en funcion del mes if (mes==0 || mes==2 || mes==4 || mes==6 || mes==7 || mes==9 || mes==11) { numDias=31; } else if (mes==1) { //febrero //comprobamos si es bisiesto if ( (anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0)) ) { numDias=29; } else { numDias=28; } } else numDias=30; //Generación del calendario en una variable output que devolveremos con return output = "<div id='base'>"; output = output + "<div id='cabecera_calendario'>"; output = output + "<div class=\"navegador\"><button class='cambio' title=\"mes anterior\" onClick=\"cambia("+(mes-1)+","+anio+");return false;\"><</button></div>"; output = output + "<div colspan=\"5\" class=\"cabeceraMes\">"+meses[mes]+" "+anio+"</div>"; output = output + "<div class='navegador' id='dr'><button class='cambio' title=\"mes siguiente\" onClick=\"cambia("+(mes+1)+","+anio+");return false;\">></a></div>"; output = output + "</div>"; //Generación de la primera fila con los días de la semana L-D output = output + "<div>"; for (var d=0;d<dias.length;d++) { output = output + "<div class='cabeceraDia'>"+dias[d]+"</div>"; } output = output + "</div>"; //Si es domingo (0) le ponemos un 7 para que se pinte al final if (inicio==0) { inicio=7; } //Con la variable booleana primera diferenciamos la primera semana del resto //puesto que no tiene porque empezar en la primera columna primera = true; for (var i=1;i<=numDias;i++) { output = output + "<div id='dias'>"; for (var j=1;j<=7;j++) { //Primera semana if (primera) { //Si es sábado o domingo ponemos una clase especial al td output = output + "<div"; if (j==6 || j==7) { output = output + " class=\"festivo\" "; } output = output + ">"; //No pintamos el número hasta que comienza el mes con la variable inicio if (j>=inicio) { output = output + i++; } output = output + "</div>"; } else { //Resto de semanas //Si es sábado o domingo ponemos una clase especial al td output = output + "<div"; if (j==6 || j==7) { output = output + " class=\"festivo\" "; } output = output + ">"; //Solo pintamos los números que son menores del último día del mes if (i<=numDias) { output = output + i++; } output = output + "</div>"; } } primera=false; //Decrementamos el contador de días para corregir la pérdida de un día al final de la semana i--; output = output + "</div>"; } output = output + "</div>"; return output; }
Gracias por adelanto. Espero vuestras tempranas respuestas.