calendar.js
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:11k
- var gdCtrl = new Object();
- var goSelectTag = new Array();
- var gcGray = "#808080";
- var gcToggle = "#5555aa";
- var gcBG = "#FFFFFF";
- var gcFront = "#000000";
- var previousObject = null;
- var ddArguments=window.dialogArguments;
- var minyear = dialogArguments[1];
- var maxyear = dialogArguments[2];
- var currentvalue = dialogArguments[0];
- var gdCurDate = new Date();
- if(isNaN(parseInt(minyear,10)))
- {
- minyear=gdCurDate.getFullYear()-5;
- }
- else if(parseInt(minyear,10)<150)
- {
- eval("minyear=gdCurDate.getFullYear()+("+minyear+")");
- }
- if(isNaN(parseInt(maxyear,10)))
- {
- maxyear=gdCurDate.getFullYear()+5;
- }
- else if(parseInt(maxyear,10)<150)
- {
- eval("maxyear=gdCurDate.getFullYear()+("+maxyear+")");
- }
- if(currentvalue!="")
- gdCurDate = new Date(currentvalue.substr(0,4),parseInt(currentvalue.substr(5,2),10)-1,currentvalue.substr(8,2));
- if(isNaN(gdCurDate)||currentvalue=="")
- {
- 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,10);
- var iMonth = parseInt(tbSelMonth.value,10);
- aCell.bgColor = gcBG;
- with (aCell.children["cellText"])
- {
- var iDay = parseInt(innerText,10);
- 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(i);
- }
- 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] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
- }
- for (w = 2; w < 7; w++)
- {
- for (d = 0; d < 7; d++)
- {
- aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
- }
- }
- return aMonth;
- }
- 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 height='2' colspan='7'></td>");
- write("</tr>");
- write("<tr>");
- for(i=0; i<7; i++)
- {
- write("<td "+styleTD+" color:#000000'>" + WeekDay[i] + "</td>");
- }
- write("</tr>");
- write("<tr>");
- write("<td height='1' bgcolor='#333333' colspan='7'></td>");
- write("</tr>");
- for (w = 1; w < 7; w++)
- {
- write("<tr>");
- for (d = 0; d < 7; d++)
- {
- write("<td id=calCell "+styleTD+"cursor:hand;' onMouseOver='this.bgColor=gcToggle' onMouseOut='this.bgColor=gcBG' onclick='fSetSelected(this)'>");
- write("<font id=cellText ><b> </b></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)
- {
- color = gcGray;
- innerText = -myMonth[w+1][d];
- }
- else
- {
- // Modified by maxiang for we need
- // Saturday displayed in blue font color.
- //color = ((d==0)||(d==6))?"red":"black";
- if( d == 0 )
- {
- color = "red";
- }
- else if( d == 6 )
- {
- color = "blue";
- }
- else
- {
- color = "black";
- }
- // End of above maxiang
- innerText = myMonth[w+1][d];
- }
- }
- }
- }
- }
- 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)
- {
- iMon = 12;
- iYear--;
- }
- fSetYearMon(iYear, iMon);
- }
- function fNextMonth()
- {
- var iMon = tbSelMonth.value;
- var iYear = tbSelYear.value;
- 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,10);
- var t = parseInt(top,10);
- var r = l+parseInt(width,10);
- var b = t+parseInt(height,10);
- 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;
- }
- // Main: popCtrl is the widget beyond which you want this calendar to appear;
- // dateCtrl is the widget into which you want to put the selected date.
- // i.e.: <input type="text" name="dc" style="text-align:center" readonly><INPUT type="button" value="V" onclick="fPopCalendar(dc,dc);return false">
- 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:2px ridge;width:100%;height:100%;top:0;left:0;z-index:100;overflow:hidden'>");
- write("<table border='0' bgcolor='#FFFFFF' cellspacing='0' cellpadding='0'>");
- write("<TR>");
- write("<td valign='middle' align='center'>");
- write("<table border='0' bgcolor='#000099' cellspacing='0' cellpadding='0' height='28'><tr><td width='40' align='center'><input type='button' name='PrevMonth' value='←' style='height:20;width:20;FONT:bold' onClick='fPrevMonth()'></td>");
- write("<td width='200' align='center'><SELECT name='tbSelYear' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won' class='input'>");
- for(i=minyear;i<=maxyear;i++)
- {
- write("<OPTION value='"+i+"'>"+i+"年</OPTION>");
- }
- write("</SELECT> ");
- write("<select name='tbSelMonth' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won' class='input'>");
- for (i=0; i<12; i++)
- {
- write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
- }
- write("</SELECT>");
- write("</td><td width='40' align='center'><input type='button' name='PrevMonth' value='→' style='height:20;width:20;FONT:bold' onclick='fNextMonth()'></td></tr></table>");
- write("</td>");
- write("</TR><TR>");
- write("<td align='center'>");
- write("<table width='100%' border='0' cellspacing='0' cellpadding='0'>");
- fDrawCal(giYear, giMonth, 8, '12');
- write("</table>");
- write("</td>");
- write("</TR><TR><TD align='center'>");
- write("<TABLE width='100%'><TR><TD align='center'>");
- write("<B ID="CAL_B_BLANK" style='color:"+gcFront+"; visibility:visible; cursor:hand; font-size:12px' onclick='fSetDate(0,0,0)' onMouseOver='this.style.color=gcToggle' onMouseOut='this.style.color=gcFront'>清空</B>");
- write("</td><td algin='center'>");
- write("<B style='color:"+gcFront+";cursor:hand; font-size:12px' onclick='fSetDate(giYear,giMonth,giDay)' onMouseOver='this.style.color=gcToggle' onMouseOut='this.style.color=gcFront'>选择: <font color='#FF0000'>"+giYear+"年"+giMonth+"月"+giDay+"日</font></B>");
- write("</td></tr></table>");
- write("</TD></TR>");
- write("</TABLE></Div>");
- }
- function readCookie(name)
- {
- var cookieValue = "";
- var search = name + "n";
- if(document.cookie.length > 0)
- {
- offset = document.cookie.indexOf(search);
- if (offset != -1)
- {
- offset += search.length;
- end = document.cookie.indexOf("n", offset);
- if (end == -1) end = document.cookie.length;
- cookieValue = unescape(document.cookie.substring(offset, end))
- }
- }
- return cookieValue;
- }