358 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			358 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!-- saved from url=(0022)http://internet.e-mail --> | |||
|  | <html> | |||
|  | <head> | |||
|  | <title> | |||
|  | 日期选择 | |||
|  | </title> | |||
|  | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | |||
|  | </head> | |||
|  | <body onload="fload()" bgcolor="#CCCCCC"> | |||
|  | <script> | |||
|  |     var gdCtrl = new Object(); | |||
|  |     var goSelectTag = new Array(); | |||
|  |     var gcGray = "#808080"; | |||
|  |     var gcToggle = "#C1E3CC"; | |||
|  |     var gcToggle1 = "#FF8080"; | |||
|  |     var gcBG = "#FFF9AE"; | |||
|  |     var gcBG1 = "#0066CC"; | |||
|  |     var previousObject = null; | |||
|  | 
 | |||
|  | 
 | |||
|  |     var gdCurDate = new Date(); | |||
|  |     var giYear = gdCurDate.getFullYear(); | |||
|  |     var giMonth = gdCurDate.getMonth() + 1; | |||
|  |     var giDay = gdCurDate.getDate(); | |||
|  | 
 | |||
|  |     var gCalMode = ""; | |||
|  |     var gCalDefDate = ""; | |||
|  | 
 | |||
|  |     var CAL_MODE_NOBLANK = "2"; | |||
|  | 
 | |||
|  |     function fSetDate(iYear, iMonth, iDay) { | |||
|  |         //VicPopCal.style.visibility = "hidden"; | |||
|  |         if ((iYear == 0) && (iMonth == 0) && (iDay == 0)) { | |||
|  |             gdCtrl.value = ""; | |||
|  |         } else { | |||
|  |             iMonth = iMonth + 100 + ""; | |||
|  |             iMonth = iMonth.substring(1); | |||
|  |             iDay = iDay + 100 + ""; | |||
|  |             iDay = iDay.substring(1); | |||
|  |             gdCtrl.value = iYear + "-" + iMonth + "-" + iDay; | |||
|  |         } | |||
|  | 
 | |||
|  |         for (i in goSelectTag) | |||
|  |             goSelectTag[i].style.visibility = "visible"; | |||
|  |         goSelectTag.length = 0; | |||
|  | 
 | |||
|  |         window.returnValue = gdCtrl.value; | |||
|  |         window.close(); | |||
|  |     } | |||
|  | 
 | |||
|  |     function HiddenDiv() { | |||
|  |         var i; | |||
|  |         VicPopCal.style.visibility = "hidden"; | |||
|  |         for (i in goSelectTag) | |||
|  |             goSelectTag[i].style.visibility = "visible"; | |||
|  |         goSelectTag.length = 0; | |||
|  | 
 | |||
|  |     } | |||
|  |     function fSetSelected(aCell) { | |||
|  |         var iOffset = 0; | |||
|  |         var iYear = parseInt(tbSelYear.value); | |||
|  |         var iMonth = parseInt(tbSelMonth.value); | |||
|  | 
 | |||
|  |         aCell.bgColor = gcBG; | |||
|  |         with (aCell.children["cellText"]) { | |||
|  |             var iDay = parseInt(innerText); | |||
|  |             if (color == gcGray) | |||
|  |                 iOffset = (Victor < 10) ? -1 : 1; | |||
|  | 
 | |||
|  |             /*** below temp patch by maxiang ***/ | |||
|  |             if (color == gcGray) { | |||
|  |                 iOffset = (iDay < 15) ? 1 : -1; | |||
|  |             } | |||
|  |             /*** above temp patch by maxiang ***/ | |||
|  | 
 | |||
|  |             iMonth += iOffset; | |||
|  |             if (iMonth < 1) { | |||
|  |                 iYear--; | |||
|  |                 iMonth = 12; | |||
|  |             } else if (iMonth > 12) { | |||
|  |                 iYear++; | |||
|  |                 iMonth = 1; | |||
|  |             } | |||
|  |         } | |||
|  |         fSetDate(iYear, iMonth, iDay); | |||
|  |     } | |||
|  | 
 | |||
|  |     function Point(iX, iY) { | |||
|  |         this.x = iX; | |||
|  |         this.y = iY; | |||
|  |     } | |||
|  | 
 | |||
|  |     function fBuildCal(iYear, iMonth) { | |||
|  | 
 | |||
|  |         var aMonth = new Array(); | |||
|  |         for (i = 1; i < 7; i++) | |||
|  |             aMonth[i] = new Array(7); | |||
|  | 
 | |||
|  |         for (i = 1; i < 7; i++) { | |||
|  |             for (j = 0; j < 7; j++) { | |||
|  |                 aMonth[i][j] = new Array(2); | |||
|  |                 aMonth[i][j][0] = 0; | |||
|  |                 aMonth[i][j][1] = 1; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         var dCalDate = new Date(iYear, iMonth - 1, 1); | |||
|  | 
 | |||
|  |         var iDayOfFirst = dCalDate.getDay(); | |||
|  | 
 | |||
|  |         var iDaysInMonth = new Date(iYear, iMonth, 0).getDate(); | |||
|  | 
 | |||
|  |         var iOffsetLast = new Date(iYear, iMonth - 1, 0).getDate() - iDayOfFirst + 1; | |||
|  | 
 | |||
|  |         var iDate = 1; | |||
|  |         var iNext = 1; | |||
|  | 
 | |||
|  |         for (d = 0; d < 7; d++) { | |||
|  |             aMonth[1][d][0] = (d < iDayOfFirst) ? -(iOffsetLast + d) : iDate++; | |||
|  |             if (isToday(iYear, iMonth, iDate - 1)) { | |||
|  |                 aMonth[1][d][1] = 0; | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  |         for (w = 2; w < 7; w++) { | |||
|  |             for (d = 0; d < 7; d++) { | |||
|  |                 aMonth[w][d][0] = (iDate <= iDaysInMonth) ? iDate++ : -(iNext++); | |||
|  | 
 | |||
|  |                 if (isToday(iYear, iMonth, iDate - 1)) { | |||
|  |                     aMonth[w][d][1] = 0; | |||
|  | 
 | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |         return aMonth; | |||
|  |     } | |||
|  | 
 | |||
|  |     function isToday(iYear, iMonth, iDate) { | |||
|  |         var gdCurDate1 = new Date(); | |||
|  |         var giYear1 = gdCurDate.getFullYear(); | |||
|  |         var giMonth1 = gdCurDate.getMonth() + 1; | |||
|  |         var giDay1 = gdCurDate.getDate(); | |||
|  |         if (iYear == giYear1 && iMonth == giMonth1 && giDay1 == iDate) { | |||
|  |             return true; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize) { | |||
|  |         var WeekDay = new Array("日", "一", "二", "三", "四", "五", "六"); | |||
|  |         var styleTD = " bgcolor='" + gcBG + "' bordercolor='" + gcBG + "' valign='middle' align='center' height='" + iCellHeight + "' style='font-size:12px; "; | |||
|  |         with (document) { | |||
|  |             write("<tr>"); | |||
|  |             write("<td colspan=7 align=center><font color=#ff3333 size=2> 日   </font><font size=2 color=#000000>一   二   三   四   五  </font><font size=2 color=#ff3333> 六 </font></td>"); | |||
|  |             write("</tr>"); | |||
|  | 
 | |||
|  |             for (w = 1; w < 7; w++) { | |||
|  |                 write("<tr>"); | |||
|  |                 for (d = 0; d < 7; d++) { | |||
|  | 
 | |||
|  |                     write("<td " + styleTD + "cursor:hand;' onMouseOver='this.bgColor=gcToggle' onMouseOut='this.bgColor=gcBG' onclick='fSetSelected(this)' id=cellTd>"); | |||
|  |                     write("<font id=cellText ></font>"); | |||
|  |                     write("</td>") | |||
|  |                 } | |||
|  |                 write("</tr>"); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     function fUpdateCal(iYear, iMonth) { | |||
|  |         myMonth = fBuildCal(iYear, iMonth); | |||
|  |         var i = 0; | |||
|  |         for (w = 0; w < 6; w++) { | |||
|  |             for (d = 0; d < 7; d++) { | |||
|  |                 with (cellText[(7 * w) + d]) { | |||
|  |                     Victor = i++; | |||
|  |                     if (myMonth[w + 1][d][0] < 0) { | |||
|  |                         color = gcGray; | |||
|  |                         innerText = -myMonth[w + 1][d][0]; | |||
|  |                     } else { | |||
|  |                         if (d == 0) { | |||
|  |                             color = "#996633"; | |||
|  |                         } else if (d == 6) { | |||
|  |                             color = "#996633"; | |||
|  |                         } else { | |||
|  |                             color = "#996633"; | |||
|  |                         } | |||
|  |                         // End of above maxiang | |||
|  |                         innerText = myMonth[w + 1][d][0]; | |||
|  |                     } | |||
|  |                     if (myMonth[w + 1][d][1] == 0 && myMonth[w + 1][d][0] > 0) { | |||
|  |                         color = "red"; | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |     } | |||
|  | 
 | |||
|  |     function fSetYearMon(iYear, iMon) { | |||
|  |         tbSelMonth.options[iMon - 1].selected = true; | |||
|  |         for (i = 0; i < tbSelYear.length; i++) | |||
|  |             if (tbSelYear.options[i].value == iYear) | |||
|  |             tbSelYear.options[i].selected = true; | |||
|  |         fUpdateCal(iYear, iMon); | |||
|  |     } | |||
|  | 
 | |||
|  |     function fPrevMonth() { | |||
|  |         var iMon = tbSelMonth.value; | |||
|  |         var iYear = tbSelYear.value; | |||
|  |         if (iMon == 1 && iYear == 1990) { | |||
|  |             return; | |||
|  |         } | |||
|  |         if (--iMon < 1) { | |||
|  |             iMon = 12; | |||
|  |             iYear--; | |||
|  |         } | |||
|  | 
 | |||
|  |         fSetYearMon(iYear, iMon); | |||
|  |     } | |||
|  | 
 | |||
|  |     function fNextMonth() { | |||
|  |         var iMon = tbSelMonth.value; | |||
|  |         var iYear = tbSelYear.value; | |||
|  |         if (iMon == 12 && iYear == 2049) { | |||
|  |             return; | |||
|  |         } | |||
|  |         if (++iMon > 12) { | |||
|  |             iMon = 1; | |||
|  |             iYear++; | |||
|  |         } | |||
|  | 
 | |||
|  |         fSetYearMon(iYear, iMon); | |||
|  |     } | |||
|  | 
 | |||
|  |     function fToggleTags() { | |||
|  |         with (document.all.tags("SELECT")) { | |||
|  |             for (i = 0; i < length; i++) | |||
|  |                 if ((item(i).Victor != "Won") && fTagInBound(item(i))) { | |||
|  |                 item(i).style.visibility = "hidden"; | |||
|  |                 goSelectTag[goSelectTag.length] = item(i); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     function fTagInBound(aTag) { | |||
|  |         with (VicPopCal.style) { | |||
|  |             var l = parseInt(left); | |||
|  |             var t = parseInt(top); | |||
|  |             var r = l + parseInt(width); | |||
|  |             var b = t + parseInt(height); | |||
|  |             var ptLT = fGetXY(aTag); | |||
|  |             return !((ptLT.x > r) || (ptLT.x + aTag.offsetWidth < l) || (ptLT.y > b) || (ptLT.y + aTag.offsetHeight < t)); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     function fGetXY(aTag) { | |||
|  |         var oTmp = aTag; | |||
|  |         var pt = new Point(0, 0); | |||
|  |         do { | |||
|  |             pt.x += oTmp.offsetLeft; | |||
|  |             pt.y += oTmp.offsetTop; | |||
|  |             oTmp = oTmp.offsetParent; | |||
|  |         } while (oTmp.tagName != "BODY"); | |||
|  |         return pt; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     function fPopCalendar(popCtrl, dateCtrl, mode, defDate) { | |||
|  | 
 | |||
|  |         gCalMode = mode; | |||
|  |         gCalDefDate = defDate; | |||
|  | 
 | |||
|  |         if (popCtrl == previousObject) { | |||
|  |             if (VicPopCal.style.visibility == "visible") { | |||
|  |                 //HiddenDiv(); | |||
|  |                 return true; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  |         previousObject = popCtrl; | |||
|  |         gdCtrl = dateCtrl; | |||
|  |         fSetYearMon(giYear, giMonth); | |||
|  |         var point = fGetXY(popCtrl); | |||
|  | 
 | |||
|  |         if (gCalMode == CAL_MODE_NOBLANK) { | |||
|  |             document.all.CAL_B_BLANK.style.visibility = "hidden"; | |||
|  |         } else { | |||
|  |             document.all.CAL_B_BLANK.style.visibility = "visible"; | |||
|  |         } | |||
|  | 
 | |||
|  |         with (VicPopCal.style) { | |||
|  |             left = point.x; | |||
|  |             top = point.y + popCtrl.offsetHeight; | |||
|  |             width = VicPopCal.offsetWidth; | |||
|  |             height = VicPopCal.offsetHeight; | |||
|  |             fToggleTags(point); | |||
|  |             visibility = 'visible'; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     var gMonths = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"); | |||
|  | 
 | |||
|  |     with (document) { | |||
|  |         write("<Div id='VicPopCal' style='OVERFLOW:hidden;POSITION:absolute;VISIBILITY:hidden;border:0px ridge;width:100%;height:100%;top:0;left:5px;z-index:100;overflow:hidden'>"); | |||
|  |         write("<table border='0'>"); | |||
|  |         write("<TR>"); | |||
|  |         write("<td valign='middle' align='center'><input type='button' name='PrevMonth' value='<' style='height:20;width:20;FONT:bold;background-color:#83B899;color:#ffffff' onClick='fPrevMonth()'>"); | |||
|  |         write("  <SELECT name='tbSelYear' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>"); | |||
|  |         for (i = 1990; i < 2050; i++) | |||
|  |             write("<OPTION value='" + i + "'>" + i + "年</OPTION>"); | |||
|  |         write("</SELECT>"); | |||
|  |         write("  <select name='tbSelMonth' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>"); | |||
|  |         for (i = 0; i < 12; i++) | |||
|  |             write("<option value='" + (i + 1) + "'>" + gMonths[i] + "</option>"); | |||
|  |         write("</SELECT>"); | |||
|  |         write("  <input type='button' name='PrevMonth' value='>' style='height:20;width:20;FONT:bold;background-color:#83B899;color:#ffffff' onclick='fNextMonth()'>"); | |||
|  |         write("</td>"); | |||
|  |         write("</TR><TR>"); | |||
|  |         write("<td align='center'>"); | |||
|  |         write("<DIV style='background-color:#83B899'><table width='100%'border='0'>"); | |||
|  |         fDrawCal(giYear, giMonth, 20, '50'); | |||
|  |         write("</table></DIV>"); | |||
|  |         write("</td>"); | |||
|  |         write("</TR><TR><TD align='center'>"); | |||
|  |         write("<TABLE width='100%'><TR><TD align='center' width=50%>"); | |||
|  |         write("<B ID=\"CAL_B_BLANK\" style='color:" + gcBG1 + "; visibility:visible; cursor:hand; font-size:12px' onclick='fSetDate(0,0,0)' onMouseOver='this.style.color=gcToggle1' onMouseOut='this.style.color=gcBG1'>[清空]</B>"); | |||
|  |         write("</td><td algin='center' width=50%>"); | |||
|  |         write("<B style='color:" + gcBG1 + ";cursor:hand; font-size:12px' onclick='fSetDate(giYear,giMonth,giDay)' onMouseOver='this.style.color=gcToggle1' onMouseOut='this.style.color=gcBG1'>[" + giYear + "-" + giMonth + "-" + giDay + "]</B>"); | |||
|  |         write("</td></tr></table>"); | |||
|  |         write("</TD></TR>"); | |||
|  |         write("</TABLE></Div>"); | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <script> | |||
|  | function fload() { | |||
|  |     fPopCalendar(document.getElementById("txt1"), document.getElementById("txt1"));  | |||
|  | } | |||
|  | 
 | |||
|  | function fkeydown() | |||
|  | { | |||
|  | 	if(event.keyCode==27){ | |||
|  | 		event.returnValue = null; | |||
|  | 		window.returnValue = null; | |||
|  | 		window.close(); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | document.onkeydown=fkeydown; | |||
|  | </script> | |||
|  | 
 | |||
|  | <input type=text id="txt1" runat="server" style="display:none"> | |||
|  | </body> | |||
|  | </html> |