ChengDa_English/SGGL/FineUIPro.Web/Controls/ClientJs/CalendarDlg.htm

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>&nbsp;日&nbsp;&nbsp;&nbsp;</font><font size=2 color=#000000>一&nbsp;&nbsp;&nbsp;二&nbsp;&nbsp;&nbsp;三&nbsp;&nbsp;&nbsp;四&nbsp;&nbsp;&nbsp;五&nbsp;&nbsp;</font><font size=2 color=#ff3333>&nbsp;六&nbsp;</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("&nbsp;&nbsp;<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("&nbsp;&nbsp;<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("&nbsp;&nbsp;<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>