Hola
Smurffi.
Revisé tu código y em dí cuenta de algunas partes que iban contra el crossbrowsing.
1. las partes donde decian
Código PHP:
colum_name = eval( "d"+i+"r"+j );
no devuleven nada para un navegador distinto a IExplorer y por supuesto si lo que quieres es acceder a este elemento es mejor que cambies por lo siguiente si quieres que te devuela el elementos que en este caso son las celdas del calendario:
Código PHP:
colum_name = document.getElementById( "d"+i+"r"+j );
2. Cambiar todo lo que diga
innerText por
innerHTML. innerText es una propiedad que no es soportada.
3. Después de cambiar lo anterior mustra los días pero no apropiadamente. Para esto cambia en la función
set_cal las lineas:
Código PHP:
begin_day = new Date (show_date.getYear(),show_date.getMonth(),1);
y
end_day = new Date (show_date.getYear(),show_date.getMonth()+1,1);
Por:
Código PHP:
begin_day = new Date (show_date.getFullYear(),show_date.getMonth(),1);
y
end_day = new Date (show_date.getFullYear(),show_date.getMonth()+1,1);
La diferencia es que
getYear() devulve el año en 2, 3 o 4 digitos dependiendo del navegador mientras que
getFullYear() siempre devuelve 4 dígitos.
Un saludo.