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> |