While doing a recent web site redesign, I was looking for an easy to use ASP calendar. I found lots of examples, many used Java Script which I prefer to stay away from.
Many of the examples I found seemed to work "most of the time" but for some reason many seemed to have a problem with any month that started on a Saturday. Those that did pass my extensive checking work were just too plain. So, I decided to undertake the task of creating my own vbscript calendar. What I wanted was something simple and elegant.
So, after many painstaking hours, I came up with the following all VBScript solution.
This calendar will be dynamic, it will update the month and highlight the current day. I hope you can use it.
Just save the below code to an ASP file and pop it into your web server. The code below can be used in an INC file for easy adding to web pages.
If you find this FAQ useful, please rate it at the bottom of your screen.
CODE
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Document Title</TITLE>
</HEAD>
<body bgcolor="#FFFFD8">
<center><h1>MarkDMac's ASP Calendar Example</h1>
<%
'ASP Calendar by Mark D. MacLachlan, The Spider's Parlor
'URL http://www.thespidersparlor.com
'Creation Date 4/5/2004
'Copywrite (c)2004 All Rights Reserved
Dim DefaultCalendarBorderColor
Dim i,x
Dim iDayToDisplay
Dim weekstogo
Dim borderSize
Dim borderColor
' Store the month names into an array. Set element 0 to garbage so I don't have to do math later
Dim monthName
ReDim monthName(13)
monthName(0) = "Space"
monthName(1) = "January"
monthName(2) = "February"
monthName(3) = "March"
monthName(4) = "April"
monthName(5) = "May"
monthName(6) = "June"
monthName(7) = "July"
monthName(8) = "August"
monthName(9) = "September"
monthName(10) = "October"
monthName(11) = "November"
monthName(12) = "December"
'specify the background colors for the cells if month starts on Saturday
'Dim monthStartbgcolor
'If (thisday = 1) Then
' monthStartbgcolor="8FBACB"
'Else
' monthStartbgcolor="FFFFFF"
'End If
'calculate Number of days this month
If iThisMonth <> 12 Then
iDaysThisMonth = DateDiff("d",MyStartofMonth,((iThisMonth+1) & "/1/" & iThisYear))
Else
iDaysThisMonth = DateDiff("d",MyStartofMonth,("1/1/" & (iThisYear+1)))
End If
%>
<table cellpadding="4" cellspacing="1" border="0" bgcolor="#ffffff">
<tr><td colspan="7"align="center" bgcolor=<%Response.Write(Chr(34) & highlightcolor & Chr(34))%>><b>
<%Response.Write (monthName(iThisMonth) & " " & iThisYear) %></b></td></tr>
<% 'Write the row of weekday initials...%>
<tr>
<td align="center" bgcolor="#A1C6D1">S</td>
<td align="center" bgcolor="#A1C6D1">M</td>
<td align="center" bgcolor="#A1C6D1">T</td>
<td align="center" bgcolor="#A1C6D1">W</td>
<td align="center" bgcolor="#A1C6D1">T</td>
<td align="center" bgcolor="#A1C6D1">F</td>
<td align="center" bgcolor="#A1C6D1">S</td>
</tr>
<tr>
<%
'Now write the first row
For i= 1 to 7
if i=iThisMonthStartsThisDay Then
' // start with the numeral 1.
iDayToDisplay=1
elseif i>iThisMonthStartsThisDay Then
' // increment the date
iDayToDisplay = iDayToDisplay + 1
else
' // not first day yet? a non-breaking space
iDayToDisplay=" "
end if
if iDayToDisplay = thisDay Then
Response.Write ("<td align=center bgcolor="& highlightcolor & "><b>" & iDayToDisplay & "</b></td>")
else
Response.Write ("<td align=center>" & iDayToDisplay & "</td>")
end If
Next
%>
</tr>
<%
' Now, display the rest of the month.
' First figure out how many weeks are left to write
If decweekstogo > 4 Then
weekstogo = 5
ElseIf decweekstogo > 3 and decweekstogo <= 4 Then
weekstogo = 4
Else
weekstogo = 3
End if
'Now write the rows and populate the data
For x = 1 To weekstogo
Response.Write ("<tr>")
For i=1 To 7
If iDayToDisplay<iDaysThisMonth then
iDayToDisplay=iDayToDisplay + 1
else
iDayToDisplay=" "
End If
if iDayToDisplay = thisDay then
Response.Write ("<td align=center bgcolor=" & Chr(34)& highlightcolor & Chr(34) &"><b>" & iDayToDisplay & "</b></td>")
else
Response.Write ("<td align=center>" & iDayToDisplay & "</td>")
end If
Next
Response.Write ("</tr>")