Bueno, tengo que decir para empezar que no tengo ni la más remota idea de todo esto, pero estoy casi seguro de que la solución a mi problema será muy fácil.
Mi caso es que me bajé un javascript que para mí es muy útil: se trata de un calendario que realiza también funciones de agenda. Utiliza un ingenioso sistema para poder editar e introducir los datos desde la misma página web donde se encuentra implementada y cualquier visitante puede hacerlo. Realmente es un scrip magnífico, pero le encuentro una pega: una vez que se ha introducido un evento en determinado día, éste no queda destacado del resto de días del mes.
Me explico: a primera vista, resulta imposible distinguir qué días contienen alguna anotación y cuáles no, lo cual resulta bastante engorroso. Lo que me gustaría lograr es que quedasen destacados en distinto color los días en los que se ha realizado alguna anotación, para diferenciarlos fácilmente a simple vista.
Les estaría realmente agradecido si pudieran ayudarme con ésta cuestión. Aprovecho al paso para felicitar al creador de este javascript, que realmente está muy currado.
Espero no cagarla al copiar aquí el script , a ver si sale el código:
<SCRIPT LANGUAGE="JavaScript">
<!-- para ocultar el contenido del guión a los exploradores antiguos
//
// Funciones Cookie
// Escrito por: Bill Dortch, hIdaho Design
// Las funciones siguientes se ceden al dominio público.
function encode (str) {
var dest = "";
var len = str.length;
var index = 0;
var code = null;
for (var i = 0; i < len; i++) {
var ch = str.charAt(i);
if (ch == " ") code = "%20";
else if (ch == "%") code = "%25";
else if (ch == ",") code = "%2C";
else if (ch == ";") code = "%3B";
else if (ch == "") code = "%08";
else if (ch == "") code = "%09";
else if (ch == "") code = "%0A";
else if (ch == "f") code = "%0C";
else if (ch == "") code = "%0D";
if (code != null) {
dest += str.substring(index,i) + code;
index = i + 1;
code = null;
}
}
if (index < len)
dest += str.substring(index, len);
return dest;
}
function decode (str) {
var dest = "";
var len = str.length;
var index = 0;
var code = null;
var i = 0;
while (i < len) {
i = str.indexOf ("%", i);
if (i == -1)
break;
if (index < i)
dest += str.substring(index, i);
code = str.substring (i+1,i+3);
i += 3;
index = i;
if (code == "20") dest += " ";
else if (code == "25") dest += "%";
else if (code == "2C") dest += ",";
else if (code == "3B") dest += ";";
else if (code == "08") dest += "";
else if (code == "09") dest += " ";
else if (code == "0A") dest += "";
else if (code == "0C") dest += "f";
else if (code == "0D") dest += "";
else {
i -= 2;
index -= 3;
}
}
if (index < len)
dest += str.substring(index, len);
return dest;
}
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return decode(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value, expires) {
document.cookie = name + "=" + encode(value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()));
}
//
//Agenda
//Escrito por James Thiele
//[email protected]
//http://www.eskimo.com/~jet/javascript/
function arrayOfDaysInMonths(isLeapYear)
{
this[0] = 31;
this[1] = 28;
if (isLeapYear)
this[1] = 29;
this[2] = 31;
this[3] = 30;
this[4] = 31;
this[5] = 30;
this[6] = 31;
this[7] = 31;
this[8] = 30;
this[9] = 31;
this[10] = 30;
this[11] = 31;
}
function daysInMonth(month, year)
{
var isLeapYear = (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
var monthDays = new arrayOfDaysInMonths(isLeapYear);
return monthDays[month];
}
function calendar()
{
var monthNames = "EneFebMarAbrMayJunJulAgoSepOctNovDic";
var today = new Date();
var day = today.getDate();
var month = today.getMonth();
var year = today.getYear();
var numDays = daysInMonth(month, year);
var firstDay = today;
firstDay.setDate(1);
var startDay = firstDay.getDay();
var column = 0;
document.write("<CENTER>");
document.write("<TABLE BORDER>");
document.write("<TR><TH COLSPAN=7>");
document.write(monthNames.substring(3*month, 3*(month + 1)) + " " + year);
document.write("<TR><TH>Dom<TH>Lun<TH>Mar<TH>Mié<T H>Jue<TH>Vie<TH>Sab");
document.write("<TR>");
for (i = 0; i < startDay; i++)
{
document.write("<TD>");
column++;
}
for (i=1; i <= numDays; i++)
{
var s = "" + i;
if ((GetCookie("d"+i) != null))
s = s.fontcolor("#FF0000");
s = s.link("javascript:dayClick(" + i + ")")
document.write("<TD>" + s);
if (++column == 7)
{
document.write("<TR>");
column = 0;
}
}
document.write("</TABLE>");
document.writeln("</CENTER>");
}
function dayClick(day)
{
var expdate = new Date ();
expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000));
var prefix = "d";
var theCookieName = prefix + day;
var theDayclickedReminder = GetCookie(theCookieName);
if (theDayclickedReminder != null) {
alert("La cita del día " + day + " es:" + theDayclickedReminder);
}
if (confirm("¿Desea escribir una cita para el día " + day + " de este mes?"))
{
x = prompt("Escriba una cita para el día "+ day + " de este mes", theDayclickedReminder);
SetCookie (theCookieName, x, expdate);
} // end if
}
// --> <!-- deja de ocultar el contenido para los exploradores antiguos -->
</SCRIPT>
<TITLE>Calendario de citas de James Thiele
</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-- para ocultar el contenido del guión para los exploradores antiguos
calendar();
document.write("<HR>");
// --> <!-- deja de ocultar el contenido para los exploradores antiguos -->
</SCRIPT>