 calendar = new Date();
 day = calendar.getDay();
 month = calendar.getMonth();
 date = calendar.getDate();
 year = calendar.getYear();
 if (year < 1000)
 year+=1900
 cent = parseInt(year/100);
 g = year % 19;
 k = parseInt((cent - 17)/25);
 i = (cent - parseInt(cent/4) - parseInt((cent - k)/3) + 19*g + 15) % 30;
 i = i - parseInt(i/28)*(1 - parseInt(i/28)*parseInt(29/(i+1))*parseInt((21-g)/11));
 j = (year + parseInt(year/4) + i + 2 - cent + parseInt(cent/4)) % 7;
 l = i - j;
 emonth = 3 + parseInt((l + 40)/44);
 edate = l + 28 - 31*parseInt((emonth/4));
 emonth--;
 friemonth = 3 + parseInt((l + 40)/44);
 friedate = l + 26 - 31*parseInt((friemonth/4));
 friemonth--;
 monemonth = 3 + parseInt((l + 40)/44);
 monedate = l + 29 - 31*parseInt((monemonth/4));
 monemonth--;
 var dayname = new Array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
 var monthname = 
 new Array ("January","February","March","April","May","June","July","August","September","October","November","December" );
  document.write(dayname[day] + ", ");
 if (date< 10) document.write("0" + date + " ");
         else document.write(date + " ");
 document.write(monthname[month] + " ");
 document.write(year + "<p style=\"color:#f00;font-weight:bold\">");
 // Easter
 if ((month == emonth) && (date == edate)) document.write("&nbsp;..::&nbsp;Easter Sunday&nbsp;::..");
 if ((month == friemonth) && (date == friedate)) document.write("&nbsp;..::&nbsp;Good Friday&nbsp;::..");
 if ((month == monemonth) && (date == monedate)) document.write("&nbsp;..::&nbsp;Family Day (South Africa)&nbsp;::..");
 // January
 if ((month == 0) && (date == 1)) document.write("&nbsp;..::&nbsp;New Year's Day&nbsp;::..");
 if ((month == 0) && (date == 26)) document.write("&nbsp;..::&nbsp;Australia Day&nbsp;::..");
 // February
 if((month == 1) && (date == 14)) document.write("&nbsp;..::&nbsp;St. Valentine's Day&nbsp;::..");
  // March
  if ((month == 2) && (date == 17)) document.write("&nbsp;..::&nbsp;St. Patrick's Day&nbsp;::..");
 if ((month == 2) && (date == 21)) document.write("&nbsp;..::&nbsp;Human Rights Day (South Africa)&nbsp;::..");
 // April
 if ((month == 3) && (date == 1)) document.write("&nbsp;..::&nbsp;April Fools' Day&nbsp;::..");
 if ((month == 3) && (date == 22)) document.write("&nbsp;..::&nbsp;Earth Day&nbsp;::..");
 if ((month == 3) && (date == 25)) document.write("&nbsp;..::&nbsp;Anzac Day (Australia)&nbsp;::..");
 if ((month == 3) && (date == 27)) document.write("&nbsp;..::&nbsp;Freedom Day (South Africa)&nbsp;::..");
 // May
 if ((month == 4) && (date == 1)) document.write("&nbsp;..::&nbsp;Worker's Day (South Africa)&nbsp;::..");
 if ((month == 4) && (day == 0) && (date > 7) && (date< 16)) document.write("&nbsp;..::&nbsp;Mother's Day&nbsp;::..");
 // June
 if ((month == 5) && (date == 6)) document.write("&nbsp;..::&nbsp;D-Day&nbsp;::..");
 if ((month == 5) && (date == 8)) document.write("&nbsp;..::&nbsp;World Ocean Day&nbsp;::..");
 if ((month == 5) && (date == 16)) document.write("&nbsp;..::&nbsp;Youth Day (South Africa)&nbsp;::..");
 if ((month == 5) && (day == 0) && (date > 15) && (date< 24)) document.write("&nbsp;..::&nbsp;Father's Day&nbsp;::..");
 // July
 if ((month == 6) && (date == 1)) document.write("&nbsp;..::&nbsp;Canada Day&nbsp;::..");
 if ((month == 6) && (date == 4)) document.write("&nbsp;..::&nbsp;Independence Day (USA)&nbsp;::..");
 if ((month == 6) && (date == 14)) document.write("&nbsp;..::&nbsp;Bastille Day (France)&nbsp;::..");
 // August
 if ((month == 7) && (date == 9)) document.write("&nbsp;..::&nbsp;National Woman's Day (South Africa)&nbsp;::..");
 // September
 if ((month == 8) && (date == 24)) document.write("&nbsp;..::&nbsp;Heritage Day (South Africa)&nbsp;::..");
 if ((month == 8) && (day== 1)&& (date > 0) && (date< 8)) document.write("&nbsp;..::&nbsp;Labor Day (USA)&nbsp;::..");
 // October
 if ((month == 9) && (date == 3)) document.write("&nbsp;..::&nbsp;German Unity Day (since 1990)&nbsp;::..");
 if ((month == 9) && (day == 1) && (date > 7) && (date< 16)) document.write("&nbsp;..::&nbsp;Columbus Day (USA)&nbsp;::..");
 if ((month == 9) && (date == 24)) document.write("&nbsp;..::&nbsp;United Nations Day&nbsp;::..");
 if ((month == 9) && (date == 31)) document.write("&nbsp;..::&nbsp;Halloween&nbsp;::..");
 // November
 if ((month == 10) && (date == 1)) document.write("&nbsp;..::&nbsp;All Saints Day&nbsp;::..");
 if ((month == 10) && (date == 2)) document.write("&nbsp;..::&nbsp;All Souls Day&nbsp;::..");
 if ((month == 10) && (date == 11)) document.write("&nbsp;..::&nbsp;Veteran's Day (USA)&nbsp;::..");
  if ((month == 10) && (day == 4) && (date > 23) && (date< 30)) document.write("&nbsp;..::&nbsp;Thanksgiving (USA)&nbsp;::..");
 if ((month == 10) && (date == 30) && (day == 4)) document.write("&nbsp;..::&nbsp;Thanksgiving (USA)&nbsp;::..");
 // December
 if ((month == 11) && (date == 1)) document.write("&nbsp;..::&nbsp;World Aids Day&nbsp;::..");
 if ((month == 11) && (date == 10)) document.write("&nbsp;..::&nbsp;Human Rights Day&nbsp;::..");
 if ((month == 11) && (date == 16)) document.write("&nbsp;..::&nbsp;Day of Reconciliation (South Africa)&nbsp;::..");
 if ((month == 11) && (date == 24)) document.write("&nbsp;..::&nbsp;Christmas Eve&nbsp;::..");
 if ((month == 11) && (date == 25)) document.write("&nbsp;..::&nbsp;Christmas Day&nbsp;::..");
 if ((month == 11) && (date == 26)) document.write("&nbsp;..::&nbsp;Boxing Day, Day of Goodwill (South Africa)&nbsp;::..");
 if ((month == 11) && (date == 31)) document.write("&nbsp;..::&nbsp;New Year's Eve&nbsp;::..");
 document.write("</p>");
 // TIME
function tS(){ x=new Date(); x.setTime(x.getTime()); return x; } 
function lZ(x){ return (x>9)?x:'0'+x; } 
function tH(x){ if(x==0){ x=12; } return (x>12)?x-=12:x; } 
function dT(){ if(fr==0){ fr=1; document.write('<span id="tP">'+eval(oT)+'</span>'); } document.getElementById('tP').innerHTML=eval(oT); setTimeout('dT()',1000); } 
function aP(x){ return (x>11)?'PM':'AM'; } 
var fr=0,oT="lZ(tH(tS().getHours()))+':'+lZ(tS().getMinutes())+':'+lZ(tS().getSeconds())+' '+aP(tS().getHours())";