This is an ASP page, which is supposed to be opened in a new browser window, it automatically resizes to a client's resolution, displaying month view with a possibility to pick a date, which is then inserted into a opener page control (like input type "text" control), whose reference is passed as an argument to this ASP page
code: Can't Copy and Paste this? Click here for a copy-and-paste friendly version of this code!
'************************************** ' Name: ASP Date Picker ' Description:This is an ASP page, which ' is supposed to be opened in a new browse ' r window, it automatically resizes to a ' client's resolution, displaying month vi ' ew with a possibility to pick a date, wh ' ich is then inserted into a opener page ' control (like input type "text" control) ' , whose reference is passed as an argume ' nt to this ASP page ' By: Vadim Maslov ' ' ' Inputs:2 possible input arguments: dat ' e to display month for (if none - today' ' s month is automatic default) + opener p ' age control name: calendar.asp?date=10/1 ' 2/2000&ctl=calendar ' ' Returns:None ' 'Assumes:None ' 'Side Effects:Code probably needs to be ' adjusted if a server's Regional settings ' are not American ' 'Warranty: 'code provided by Planet Source Code(tm) ' (www.Planet-Source-Code.com) 'as is', wi ' thout warranties as to performance, fitn ' ess, merchantability,and any other warra ' nty (whether expressed or implied). 'Terms of Agreement: 'By using this source code, you agree to ' the following terms... ' 1) You may use this source code in per ' sonal projects and may compile it into a ' n .exe/.dll/.ocx and distribute it in bi ' nary format freely and with no charge. ' 2) You MAY NOT redistribute this sourc ' e code (for example to a web site) witho ' ut written permission from the original ' author.Failure to do so is a violation o ' f copyright laws. ' 3) You may link to this code from anot ' her website, provided it is not wrapped ' in a frame. ' 4) The author of this code may have re ' tained certain additional copyright righ ' ts.If so, this is indicated in the autho ' r's description. '**************************************
<%@ Language=VBScript %> <% Option Explicit Const TOP_COORDINATE = 30 Dim curDate Dim daysCount Dim lastDay Dim firstDay Dim i Dim topC Dim leftC Dim tempDate Dim curMonth Dim curYear Dim calHTML Dim pDate Dim curMonthText Dim rowCount Dim nextMonth Dim prevMonth Dim retControl curDate = Request("date") retControl = Request("ctl") If IsDate(curDate) Then pDate = FormatDateTime(curDate, 0) If curDate = "" Then curDate = Now() Else If IsDate(curDate) Then curDate = Month(curDate) & "/" & Day(curDate) & "/" & Year (curDate) End If If IsDate(curDate) Then curMonth = Month(curDate) curMonthText = TextMonth(curMonth) & "-" & Year(curDate) curYear = Year(curDate) firstDay = curMonth & "/" & "01" & "/" & curYear lastDay = DateAdd("d", -1, DateAdd("m", 1, firstDay)) nextMonth = DateAdd("m", 1, firstDay) nextMonth = FormatDateTime(Month(nextMonth) & "/" & Day(curDate) & "/" & Year (nextMonth), 0) & _ "&ctl=" & retControl prevMonth = DateAdd("m", -1, firstDay) prevMonth = FormatDateTime(Month(prevMonth) & "/" & Day(curDate) & "/" & Year (prevMonth), 0) & _ "&ctl=" & retControl daysCount = CInt(Day(lastDay)) For i = 1 To daysCount tempDate = curMonth & "/" & i & "/" & curYear leftC = calcLeft(DatePart("w", tempDate, vbMonday)) topC = calcTop(tempDate) calHTML = calHTML & _ "<DIV style='text-align: center; position: absolute; width: 50px; left: " & leftC & "px; top: " & topC & _ "px; font-family: Tahoma, Arial; cursor: hand; " If FormatDateTime(tempDate, vbShortDate) = FormatDateTime(Now, vbShortDate) Then calHTML = calHTML & "background-color: orange; color: white" Else calHTML = calHTML & "background-color: #faf0e6; color: black" End If If FormatDateTime(tempDate, vbShortDate) = FormatDateTime(pDate, vbShortDate) Then calHTML = calHTML & "; border: solid blue 1px" End If calHTML = calHTML & "' onClick=" & Chr(34) & "onDateSelected('" & _ fNumber(Month(tempDate)) & "/" & fNumber(Day(tempDate)) & "/" & Year (tempDate) & _ "')" & Chr(34) & ">" & Day(tempDate) & "</DIV>" & vbCrLf Next End If Function fNumber(fNum) If Len(Cstr(fNum)) < 2 Then fNumber = "0" & Cstr(fNum) Else fNumber = fNum End If End Function Function calcLeft(wDay) calcLeft = ((wDay - 1) * 50) + 2 End Function Function calcTop(wDate)
Dim mStartDate Dim mStartWeekDay Dim dRow mStartDate = Month(wDate) & "/" & "01/" & Year(wDate) mStartWeekDay = DatePart("w", mStartDate, vbMonday) dRow = ((mStartWeekDay + CInt(DateDiff("d", mStartDate, wDate))) \ 7) + 1 If WeekDay(wDate, vbMonday) = 7 Then dRow = dRow - 1 calcTop = ((dRow - 1) * 20) + 1 + TOP_COORDINATE If dRow > rowCount Then rowCount = dRow End Function Function TextMonth(dMonth) Select Case dMonth Case 1: TextMonth = "January" Case 2: TextMonth = "February" Case 3: TextMonth = "March" Case 4: TextMonth = "April" Case 5: TextMonth = "May" Case 6: TextMonth = "June" Case 7: TextMonth = "July" Case 8: TextMonth = "August" Case 9: TextMonth = "September" Case 10: TextMonth = "October" Case 11: TextMonth = "November" Case 12: TextMonth = "December" End Select End Function %> <HTML> <HEAD> <TITLE>Date picker</TITLE> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <LINK REL="stylesheet" TYPE="text/css" HREF="../site_css.css"> <SCRIPT language="javascript"> Function onDateSelected(lDate) { var cObj = eval("opener.window.document." + hostCtl.value); If (cObj != null) { cObj.value = lDate; cObj.focus(); } self.window.close(); }window.open Function initPos() { curMonth.style.top = (calRows.value * 20) + 30; window.resizeTo(360, parseInt(curMonth.style.top, 10) + parseInt (curMonth.clientHeight, 10) + 50); } </SCRIPT> </HEAD> <BODY topmargin="0" leftmargin="0" onLoad="initPos()"> <INPUT type="hidden" id="calRows" name="calRows" value="<%=rowCount%>"> <INPUT type="hidden" id="hostCtl" name="hostCtl" value="<%=retControl%>"> <DIV style="position: absolute; left: 2px; top: 2px; width: 350px"> <TABLE width="350"> <TR style="background-color: darkblue; color: white"> <TD width="50" align="center"><B>mon</B></TD> <TD width="50" align="center"><B>tue</B></TD> <TD width="50" align="center"><B>wed</B></TD> <TD width="50" align="center"><B>thu</B></TD> <TD width="50" align="center"><B>fri</B></TD> <TD width="50" align="center"><B>sat</B></TD> <TD width="50" align="center"><B>sun</B></TD> </TR> </TABLE> <%=calHTML%> </DIV> <DIV id="curMonth" style="position: absolute; left: 2px; width: 350px; text-align: center;"> <TABLE width="350"> <TR style="background-color: black; color: white"> <TD width="100"><A href="calendar.asp?date=<%=prevMonth%>">Previous</A></TD> <TD align="center" width="150"><B><%=curMonthText%></B></TD> <TD width="100" align="right"><A href="calendar.asp?date=<%=nextMonth% >">Next</A></TD> </TR> </TABLE> </DIV> </BODY> </HTML>
|