<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit %>
<%
Dim oConn, SQL, rs, registros, j
Dim Fecha
Fecha = 0
'conexion
' ==== campos ===
'Fecha = 23/04/2010, 24/05/2010, .....
'AnyoMes = 20104, 20105, ....
' ============
SQL ="SELECT Fecha, AnyoMes FROM Calendario WHERE AnyoMes >= "&CInt(Year(Date)) & CInt(Month(Date))&""
set rs = oConn.Execute(SQL)
registros = rs.getrows()
rs.Close
Set rs = Nothing
oConn.Close
Set oConn = Nothing
Dim arreglo()
Redim arreglo(UBound(registros,2))
For j = 0 to UBound(registros,2)
arreglo(j) = registros(Fecha,j)
Next 'j
%>
<html>
<head>
<title>Horarios</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.calFondoCalendario {background-color:#EEEEEE;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
#calFondoMes {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px;font-weight:bold;text-align:center;}
.calFondoDias, .calFondoSemanas, .calFondoNumeroSemanas {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900; }
#calDias, #calFinSemana {font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;}
#calDias a:link, #calDias a:visited {color:#333333;text-decoration:none;}
#calDias a:hover, #calDias a:active {color:#333333;text-decoration:none;}
#calDiasMarcado, #calFinSemanaMarcado {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;}
#calDiasMarcado a:link, #calDiasMarcado a:visited {color:#FFFFFF;text-decoration:none;}
#calDiasMarcado a:hover, #calDiasMarcado a:active {color:#FFFFFF;text-decoration:none;}
#calFinSemanaMarcado a:link, #calFinSemanaMarcado a:visited {color:#FF0000;text-decoration:none;}
#calFinSemanaMarcado a:hover, #calFinSemanaMarcado a:active {color:#FF0000;text-decoration:none;}
#calFinSemana a:link, #calFinSemana a:visited {color:#FF0000;text-decoration:none;}
#calFinSemana a:hover, #calFinSemana a:active {color:#FF0000;text-decoration:none;}
.calDiaVacio {background-color:#FFFFFF;color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;text-align:center;}
#paginador {background-color:#EEEEEE;height:30px;padding-top:7px;}
#paginador a:link, #paginador a:visited{background-color:#A4A4A4;color:#FFFFFF;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
#paginador a:hover, #paginador a:active{background-color:#EEEEEE;color:#333333;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3pxborder: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
</style>
</head>
<body bgcolor="#FFFFFF">
<%
Const URL = "OtraPagina.asp"
Dim Mes, ElMes
Dim Anyo, ElAnyo
Dim FechaInicio, FechaActual, FechaFinal
Dim DiaActual
Dim i, SumarMesQuery, MesAnyo
Dim PrimerDiaMes
Dim Semana, nSemanas01, nSemanas31
Dim DiasMesSiguiente, DiasMesAnterior
Dim Columna, Fila
Dim UltimoDiaMesAnterior
Dim EstamosEnEl, cad
Dim unmesmenos, unmesmas, menos, mas, mesmenos, mesmas, anyomas, anyomenos
' Si viene vacía o no es numerica
If Request.Querystring("mes") = "" or Not IsNumeric(Request.Querystring("mes")) then
Mes = CInt(Month(Date))
Else
Mes = CInt(Request.Querystring("mes"))
End If
If Request.Querystring("anyo") = "" or Not IsNumeric(Request.Querystring("anyo")) then
Anyo = CInt(Year(Date))
Else
Anyo = CInt(Request.Querystring("anyo"))
End If
FechaInicio = CDate("1/" & Month(Date) & "/" & Year(Date))
FechaActual = CDate("1/" & Mes & "/" & Anyo)
FechaFinal = DateAdd("m", 6, FechaInicio)
%>
<div style="background-color:#EEEEEE;padding-top:20px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;">
<!-- Empezamos a montar el Calendario -->
<div id="ContenedorCalendario">
<table border="0" cellspacing="0px" cellpadding="0px" width="85%" align="center">
<tr>
<%
IF FechaActual > FechaFinal then ' Aún no ha progresado un año (empezó 01/03/2010 termina 01/09/2010)
%>
<td id="calFondoMes">No puede hacer una reserva con mas de 6 meses de antelación</td></tr></table>
<div id="paginador" align="center">
<a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=Month(FechaFinal)%>&anyo=<%=Year(FechaFinal)%>">Atrás</a>
</div>
<%
ELSEIF FechaActual < FechaInicio then ' Se ha manipulado las var con una fecha menor a la de inicio (empezó 01/03/2010 quiere imprimir 01/02/2010)
%>
<td id="calFondoMes">No puede hacer una reserva con una fecha ya pasada</td></tr></table>
<div id="paginador" align="center">
<a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=Month(Date)%>&anyo=<%=Year(Date)%>">Atrás</a>
</div>
<%
ELSE
For i = 0 to 2
SumarMesQuery = DateAdd("m", i, DateSerial(Anyo, Mes, 1))
MesAnyo = Split(SumarMesQuery,"/")
ElMes = MesAnyo(1)
ElAnyo = MesAnyo(2)
%>
<td>
<table border="0" cellspacing="1px" cellpadding="3px" width="200px" align="center" class="calFondoCalendario">
<tr align="center">
<td colspan="8">
<div id="calFondoMes">
<%=Nombre_Mes(ElMes)%>, <%=ElAnyo%>
</div>
<%
Call Dias()
DiaActual = 1
PrimerDiaMes = DatePart("w", DateAdd("d", -1, DateSerial(ElAnyo, ElMes, 1)), vbMonday)
Semana = DatePart("ww", CDate("01/" & ElMes & "/" & ElAnyo), vbMonday, vbFirstFourDays) ' Número de la semana del mes actual
nSemanas31 = DatePart("ww", CDate("12/31/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semanas del año
nSemanas01 = DatePart("ww", CDate("01/01/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semana de la primera semana del año siguiente
DiasMesSiguiente = 0
For Fila = 0 to 5
%>
<tr height="20px">
<%
' ============== Número de la Semana ==============
IF Fila = 0 then
If Semana = nSemanas01 then 'La última semana del año anterior comprende algún día del siguiente año
%>
<td class="calFondoNumeroSemanas"><%=Semana%></td>
<%
Else
%>
<td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
<%
End If
ELSE
If Semana >= nSemanas31 then 'Primera semana del año
Semana = 1
Else
Semana = Semana +1
End If
%>
<td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
<%
END IF
' ============== Fin Número de la Semana ==============
For Columna = 0 to 6
IF Fila = 0 and Columna < PrimerDiaMes then ' No hay día
UltimoDiaMesAnterior = UltimoDia((ElMes-1),ElAnyo)
DiasMesAnterior = ((UltimoDiaMesAnterior - (PrimerDiaMes-1)) + Columna)
%>
<td class="calDiaVacio"><%=DiasMesAnterior%></td>
<%
ELSEIF DiaActual > UltimoDia(ElMes, ElAnyo) then ' No hay día
DiasMesSiguiente = DiasMesSiguiente +1
%>
<td class="calDiaVacio"><%=DiasMesSiguiente%></td>
<%
ELSE
EstamosEnEl = CDate(DiaActual & "/" & ElMes & "/" & ElAnyo)
cad = EstamosEnEl & " = " & Join(arreglo, " or " & EstamosEnEl & " = ")
%>
<td bgcolor="#FFFFFF" align="center">
<%
If Columna = 5 or Columna = 6 then ' es fin de semana
if eval(cad) Then ' lo marcamos con reservado
%>
<div id="calFinSemanaMarcado">
<a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
</div>
<%
else
%>
<div id="calFinSemana">
<a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
</div>
<%
end if
Else
if eval(cad) Then ' lo marcamos como reservado
%>
<div id="calDiasMarcado">
<a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
</div>
<%
else
%>
<div id="calDias">
<a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
</div>
<%
end if
End If
%>
</td>
<%
DiaActual = DiaActual +1
END IF
Next ' Columna
%>
</tr>
<%
Next ' Fila
%>
</table></td>
<%
Next 'i
%>
</tr>
</table>
</div>
<!-- Fin Calendario -->
<!-- Paginador -->
<div id="paginador" align="center">
<%
unmesmenos = DateAdd("m", -3, DateSerial(ElAnyo, ElMes, 1))
unmesmas = DateAdd("m", -1, DateSerial(ElAnyo, ElMes, 1))
menos = split(unmesmenos, "/")
mas = split(unmesmas, "/")
mesmenos = menos(1)
anyomenos = menos(2)
mesmas = mas(1)
anyomas = mas(2)
%>
<a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=mesmenos%>&anyo=<%=anyomenos%>">Anterior</a>
<a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=mesmas%>&anyo=<%=anyomas%>">Siguiente</a>
</div>
<%
END IF
%>
</div>
<!-- Fin Paginador -->
</body>
</html>
<%
Sub Dias()
%>
</td>
</tr>
<tr align="center">
<td rows="6"><div class="calFondoSemanas">Sem</div></td>
<td><div class="calFondoDias">Lun</div></td>
<td><div class="calFondoDias">Mar</div></td>
<td><div class="calFondoDias">Mié</div></td>
<td><div class="calFondoDias">Jue</div></td>
<td><div class="calFondoDias">Vie</div></td>
<td><div class="calFondoDias">Sáb</div></td>
<td><div class="calFondoDias">Dom</div></td>
</tr>
<%
' Sub y Funciones
End Sub
Function Nombre_Mes(ElMes)
Select Case ElMes
Case 1
Nombre_Mes = "Enero"
Case 2
Nombre_Mes = "Febrero"
Case 3
Nombre_Mes = "Marzo"
Case 4
Nombre_Mes = "Abril"
Case 5
Nombre_Mes = "Mayo"
Case 6
Nombre_Mes = "Junio"
Case 7
Nombre_Mes = "Julio"
Case 8
Nombre_Mes = "Agosto"
Case 9
Nombre_Mes = "Septiembre"
Case 10
Nombre_Mes = "Octubre"
Case 11
Nombre_Mes = "Noviembre"
Case 12
Nombre_Mes = "Diciembre"
Case Else
Nombre_Mes = "ERROR!"
End Select
End Function
Function UltimoDia(ElMes, ElAnyo)
Select Case ElMes
Case 1, 3, 5, 7, 8, 10, 12
UltimoDia = 31
Case 4, 6, 9, 11
UltimoDia = 30
Case 2
If IsDate(ElAnyo & "-" & ElMes & "-" & "29") Then UltimoDia = 29 Else UltimoDia = 28
Case Else
UltimoDia = 31
End Select
End Function
%>