The "javascript" code for the Calendar
Many authors will use the javascripts "as is", or make minor changes.
With the use of javascripts, web pages have a "programming" feature.

<script language=JavaScript type=text/javascript>

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
monthnames = new Array(
"January","Februrary","March","April","May","June","July","August",
"September","October","November","December");

var linkcount=0;

function addlink(month, day, href) {
var entry = new Array(3); entry[0] = month; entry[1] = day;
entry[2] = href; this[linkcount++] = entry;
}
Array.prototype.addlink = addlink;
linkdays = new Array();
monthdays = new Array(12);
monthdays[0]=31; monthdays[1]=28; monthdays[2]=31; monthdays[3]=30;
monthdays[4]=31; monthdays[5]=30; monthdays[6]=31; monthdays[7]=31;
monthdays[8]=30;monthdays[9]=31; monthdays[10]=30; monthdays[11]=31;

// ---- get current date
// ---- set nextmonth=1 for next month's calender
nextmonth=0;
todayDate=new Date();
thisday=todayDate.getDay();
thismonth=todayDate.getMonth();
//
thismonth=thismonth+nextmonth;
thisdate=todayDate.getDate();
thisyear=todayDate.getYear();

// ---adjust for December
if (thismonth == 12) {thisyear = thisyear+1; thismonth = 0; };

// --- defines days in the month
thisyear = thisyear % 100;
thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
if (((thisyear % 4 == 0) && !(thisyear % 100 == 0))
||(thisyear % 400 == 0)) monthdays[1]++;

// --- determine start day of the week
startspaces=thisdate;
// --- need to define algorithm for starting day for next month

while (startspaces > 7) startspaces-=7;
startspaces = thisday - startspaces + 1;
if (startspaces < 0) startspaces+=7;
document.write("<table border=1 bgcolor=gold cellpadding=1 cellspacing=0");
document.write("bordercolor=black><font color=black face='ms sans serif' size=1>");
document.write("<tr><td colspan=7><center><font color=black face='ms sans serif' size=1><strong>"
+ monthnames[thismonth] + " " + thisyear
+ "<\/strong><\/center><\/font><\/td><\/tr>");

// ---display heading row
document.write("<tr>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>Su<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>M<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>Tu<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>W<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>Th<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>F<\/td>");
document.write("<td align=center><font color=black face='ms sans serif' size=1><B>Sa<\/td>");
document.write("<\/tr>");
// --- write each week
document.write("<tr>");
for (s=0;s<startspaces;s++) { document.write("<td> <\/td>");
}
count=1;
while (count <= monthdays[thismonth]) {
for (b = startspaces;b<7;b++) {
linktrue=false;
document.write("<td align=right><font color=black face='ms sans serif' size=1><B>");
for (c=0;c<linkdays.length;c++) {
if (linkdays[c] != null) {
if ((linkdays[c][0]==thismonth + 1) && (linkdays[c][1]==count)) {
document.write("<a href=\"" + linkdays[c][2] + "\">");
linktrue=true;
}
}
}
if (count==thisdate) {
document.write("<font color='FF0000'><strong>");
}
if (count <= monthdays[thismonth]) {
document.write(count);
}
else {
document.write(" ");
}
if (count==thisdate) {
document.write("<\/strong><\/font>");
}
if (linktrue)
document.write("<\/a>");
document.write("<\/td>");
count++;
}
document.write("<\/tr>");
document.write("<tr>");
startspaces=0;
}
document.write("<\/table>");
// --- end of month
// End -->
</SCRIPT>