Simple, Easy and Modifiable Monthly Calendar
This is a simple monthly calendar that allows you to select the month and year then generates the calendar for the year. Because of the way it works and with only a minimal amount of calculations, it makes it very easy to modify or manipulate.
Since the calendar is rendered from a starting date to an ending date, that also simplifies being able to run a query on dates against a database to check for events or schedules.
 Month January Febuary March April May June July August September October Novemeber December Year
 January 2021 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6
Here is the ASP code for this script:
```

<%

TheMonth = Request("TheMonth")

If Len(Trim(TheMonth)) = 0 Then

TheMonth = Month(Date())

End If

TheMonth = Cint(TheMonth)

TheYear = Request("TheYear")

If Len(Trim(TheYear)) <> 4 OR IsNumeric(TheYear) = False Then

TheYear = Year(Date())

End If

TheMonths = ",January,Febuary,March,April,May,June" & _

",July,August,September,October,Novemeber,December"

MonthArr = Split(TheMonths,",")

TheDays = ",Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"

DaysArr = Split(TheDays,",")

NumDays = 0

If TheMonth = 2 Then

NumDays = 28

If TheYear Mod 4 = 0 Then

NumDays = 29

End If

ElseIf TheMonth <= 7 Then

If TheMonth Mod 2 = 1 Then

NumDays = 31

Else

NumDays = 30

End If

Else

If TheMonth Mod 2 = 0 Then

NumDays = 31

Else

NumDays = 30

End If

End If

FirstOfMonth = CDate(TheMonth & "/01/" & TheYear)

FirstDay = Weekday(FirstOfMonth)

FirstDayName = WeekdayName(FirstDay)

EndOfMonth = CDate(TheMonth & "/" & NumDays & "/" & TheYear)

LastDay = Weekday(EndOfMonth)

StartDate = FirstOfMonth - (FirstDay-1)

EndDate = EndOfMonth + (7-LastDay)

%>

<form name="SelMonthYear" method="post" action="Calendar.asp">

<table class="DataTble" cellspacing="0" align="center">

<tr class="bnotes" style="font-weight:bold;">

<td>

&nbsp;

Month

<select name="TheMonth" class="bnotes">

<%

For x = 1 to UBound(MonthArr)

If TheMonth = x Then

Response.Write "<option value=" & chr(34) & x & chr(34) & " selected>" & _

MonthArr(x) & _

"</option>" & chr(13)

Else

Response.Write "<option value=" & chr(34) & x & chr(34) & ">" & _

MonthArr(x) & _

"</option>" & chr(13)

End If

Next

%>

</select>

&nbsp;

</td>

<td>

&nbsp;

Year

<input type="text" name="TheYear" class="bnotes" size="3" value="<%=TheYear%>">

&nbsp;

</td>

<td>

&nbsp;

<input type="submit" value="Go" class="SubButton">

&nbsp;

</td>

</tr>

</table>

</form>

<table class="DataTble" cellspacing="0" align="center">

<tr>

<td class="CalMonth" style="text-align:center;font-size:12pt;" colspan="7">

<%=MonthArr(TheMonth)%> <%=TheYear%>

</td>

</tr>

<tr>

<%

For x = 1 To UBound(DaysArr)

Response.Write "<td class=" & chr(34) & "CalDayName" & chr(34) & ">" & _

DaysArr(x) & _

"</td>" & chr(13)

Next

For x = StartDate to EndDate

If x Mod 7 = 1 Then

Response.Write "<tr class=" & chr(34) & "bnotes" & chr(34) & ">"

End If

If x = Date() Then

TheCellStyle = "IsToday"

ElseIf x < FirstOfMonth OR x > EndOfMonth Then

TheCellStyle = "NotMonthDay"

Else

TheCellStyle = "IsMonthDay"

End If

Response.Write "<td class=" & chr(34) & TheCellStyle & chr(34) & ">" & _

"<b>" & Day(x) & "</b><br>" & _

"</td>"

If x Mod 7 = 0 Then

Response.Write "</tr>"

End If

Next

%>

</tr>

</table>

```
© 1967 - 2021 Soren Winslow