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