Yo uso este calendario (no es mío, ya que solo he traducido los nombres de las variables, y he añadido algunas cosas, aunque no me acuerdo de qué). Os hacen falta 2 gif´s para moveros de un mes a otro, aunque podeis cambiar eso por las típicas << >>:
Código:
<%
Session.LCID = 1034
fecha=FormatDateTime(now,vbshortdate)
Dim dia,mes,anio,mesespanol,diaprimero,primerdia,mes2,anio2,diano,ultimodia,x,dia1
dia = request.querystring("dia")
if dia = "" then dia = day(fecha)
mes = request.querystring("mes")
if mes = "" then mes = month(fecha)
anio = request.querystring("anio")
if anio = "" then anio = year(fecha)
if mes = 12 then
mes2 = 1
anio2 = anio + 1
else
mes2 = mes + 1
anio2 = anio
end if
diaprimero = Cdate("1" & "/" & Cstr(mes) & "/" & Cstr(anio))
diano = Cdate("1" & "/" & Cstr(mes2) & "/" & Cstr(anio2)) - 1
primerdia = Weekday(Cdate("1" & "/" & Cstr(mes) & "/" & Cstr(anio))) - 1
ultimodia = Weekday(diano) - 1
if ultimodia = 0 then ultimodia = 7
if primerdia = 0 then primerdia = 7
Select Case mes
case 1
mesespanol = "Enero"
case 2
mesespanol = "Febrero"
case 3
mesespanol = "Marzo"
case 4
mesespanol = "Abril"
case 5
mesespanol = "Mayo"
case 6
mesespanol = "Junio"
case 7
mesespanol = "Julio"
case 8
mesespanol = "Agosto"
case 9
mesespanol = "Septiembre"
case 10
mesespanol = "Octubre"
case 11
mesespanol = "Noviembre"
case 12
mesespanol = "Diciembre"
end Select
x=1
%>
<table class="color" width="145" cellspacing="1" cellpadding="0">
<tr><td colspan="7">
<table width="100%" height="17" border="0" cellspacing="0" cellpadding="0">
<tr class="color"><td>
<a href="destino.asp?mes=<%if mes > 1 then response.write mes-1 else response.write 12 end if%>&anio=<%if mes > 1 then response.write anio else response.write anio-1 end if%>" onMouseOver="window.status='Ver el calendario del mes anterior';return true;" onMouseOut="window.status='';return;"><img src="img/atras2.gif" alt="Mes anterior" border="0" width="13" height="11"></a>
</td>
<td align="center">
<strong><%=mesespanol%> <%=anio%></strong>
</td>
<td align="right">
<a href="destino.asp?mes=<%if mes < 12 then response.write mes+1 else response.write 1 end if%>&anio=<%if mes < 12 then response.write anio else response.write anio+1 end if%>" onMouseOver="window.status='Ver el calendario del mes siguiente';return true;" onMouseOut="window.status='';return;"><img src="img/siguiente2.gif" alt="Mes siguiente" border="0" width="11" height="11"></a>
</td></tr>
</table>
</td></tr>
<tr bgcolor="#E4BB79" align="center"><td width="14%">
<strong>L</strong>
</td>
<td width="14%">
<strong>M</strong>
</td>
<td width="14%">
<strong>M</strong>
</td>
<td width="14%">
<strong>J</strong>
</td>
<td width="14%">
<strong>V</strong>
</td>
<td width="15%">
<strong>S</strong>
</td>
<td width="15%">
<strong>D</strong>
</td></tr>
<tr class="colorin"><%dia1 = (diaprimero - primerdia + x)
do while dia1 <= (diano + 7 - ultimodia)
%>
<td<%if day(diaprimero - primerdia + x) = day(fecha) and month(diaprimero - primerdia + x) = month(fecha) then response.write " bgcolor=""#FAEED4""" end if%> align="center">
<font color ="<%if dia1 >= diaprimero and dia1 <= diano then
response.write "#856B41"
else
response.write "#B89256"
end if%>">
<%if dia1 >= diaprimero and dia1 <= diano then%>
<%=day(diaprimero-primerdia+x)%>
<%else%>
<%=day(diaprimero-primerdia+x)%>
<%end if%>
</font>
</td>
<%if weekday(diaprimero - primerdia + x - 1) = 7 then
if dia1 < (diano + 7 - ultimodia) then
response.write "</tr><tr class=""colorin"">"
end if
end if%>
<%
dia1 = dia1 + 1
x= x + 1
loop%>
</tr>
</table>
%>
Fijaros que hay una página llamada destino.asp que se carga cuando pinchas en una fecha determinada. En esa página y dependiendo del valor del querystring, podeis poner el evento de que se trate.