function sinkCel() { 
objItem = window.event.srcElement; 
if (objItem.className == "DayU") objItem.className = "DayN"; 
if (objItem.className == "ArrowU") objItem.className = "ArrowN"; 

function mdCel() { 
objTemp = ""; 
sCel = window.event.srcElement; 
if (sCel.className == "DayU") {sCel.className = "DayD"; objTemp = sCel;} 
if (sCel.className == "ArrowU") sCel.className = "ArrowD"; 

function muCel() { 
sCel = window.event.srcElement; 
if (sCel.className == "ArrowD") 

sCel.className = "ArrowU"; 
if (sCel.id == "celBack") 

dDate = dateAdd("m", -1, new Date(selYear.value, selMonth.selectedIndex, 1)); 
displayMonthYear(dDate); 
updateCal(dDate); 

if (sCel.id == "celNext")

dDate = dateAdd("m", 1, new Date(selYear.value, selMonth.selectedIndex, 1)); 
displayMonthYear(dDate); 
updateCal(dDate); 


if (sCel.className == "DayD") setDay(sCel.innerText); 
if (objTemp != "") objTemp.className = "DayN"; 

function updateCal(dDate) { 
iMonth = dDate.getMonth(); 
iYear = dDate.getFullYear(); 
iDay = dDate.getDate(); 
dStart = new Date(iYear, iMonth, 1); 
dEnd = dateAdd("m", 1, dStart); 
iDays = dateDiff("d", dStart, dEnd); 
iStartDay = (dStart.getDay() + 1); 
for (i = 1;  i < 43; i++) { 
sScrap = "d" + i 
objItem = document.all[sScrap]; 
if (objItem.className == "DayD") objItem.className = "DayN"; 
if ((i < iStartDay) || ((i - iStartDay + 1) > iDays)) objItem.innerText = ""; 
else objItem.innerText = (i - iStartDay + 1); 
   } 
if (dCurDate != "") 
if ((dCurDate.getMonth() == dDate.getMonth()) && (dCurDate.getFullYear() == dDate.getFullYear())) 
document.all("d" + (iStartDay - 1 + dCurDate.getDate())).className = "DayD"; 

function dateAdd(sInterval, iNumber, dDate) { 
dTemp = new Date(dDate);
if (dTemp == "NaN") dTemp = new Date(); 
switch (sInterval) { 
case "s" : 
return new Date(Date.parse(dTemp) + (1000 * iNumber)); 
case "n" : 
return new Date(Date.parse(dTemp) + (60000 * iNumber)); 
case "h" : 
return new Date(Date.parse(dTemp) + (3600000 * iNumber)); 
case "d" : 
return new Date(Date.parse(dTemp) + (86400000 * iNumber)); 
case "w" : 
return new Date(Date.parse(dTemp) + ((86400000 * 7) * iNumber)); 
case "m" : 
return new Date(dTemp.getFullYear(), (dTemp.getMonth()) + iNumber, dTemp.getDate()); 
case "y" :
return new Date((dTemp.getFullYear() + iNumber), dTemp.getMonth(), dTemp.getDate()); 


function dateDiff(sInterval, dStart, dEnd) { 
dStart = new Date(dStart); 
if (dStart == "NaN") dStart = new Date(); 
dEnd = new Date(dEnd); 
if (dEnd == "NaN") dEnd = new Date(); 
switch (sInterval) { 
case "s" : 
return parseInt((Date.parse(dEnd) - Date.parse(dStart)) / 1000); 
case "n" : 
return parseInt((Date.parse(dEnd) - Date.parse(dStart)) / 60000); 
case "h" : 
return parseInt((Date.parse(dEnd) - Date.parse(dStart)) / 3600000); 
case "d" : 
iScrap = (Date.parse(dEnd) - Date.parse(dStart)) / 86400000 
iScrap = iScrap + .1 
return parseInt(iScrap); 
case "w" : 
return parseInt((Date.parse(dEnd) - Date.parse(dStart)) / (86400000 * 7)); 
case "m" : 
return (dEnd.getMonth() - dStart.getMonth()); 
case "y" : 
return (dEnd.getFullYear() - dStart.getFullYear()); 


// --></script></p></body></html>