calendar.js
上传用户:tiancihang
上传日期:2014-03-12
资源大小:21387k
文件大小:9k
- var gdCtrl = new Object();
- var goSelectTag = new Array();
- var gcGray = "#808080";
- var gcToggle = "#ffffff";
- var gcToggle1="#FF8080";
- var gcBG = "#def4ff";
- 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 = "#000000";
- }else if( d == 6 ){
- color = "#000000";
- }else{
- color = "#000000";
- }
- // 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==1900){
- 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:0;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:#7ddeff;color:#ffffff' onClick='fPrevMonth()'>");
- write(" <SELECT name='tbSelYear' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>");
- for(i=1900;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:#7ddeff;color:#ffffff' onclick='fNextMonth()'>");
- write("</td>");
- write("</TR><TR>");
- write("<td align='center'>");
- write("<DIV style='background-color:#7ddeff'><table width='100%'border='0'>");
- fDrawCal(giYear, giMonth, 8, '40');
- 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>");
- }