使用javascript生成日历

这绝对是一个经典, 自己可以手工方便设定日历格式,显示内容,等等,只要你熟悉javascript。

这是我在项目中用到的一个例子,其中需要显示的weekno。

 

<!--  STEP ONE: Copy  this  code into a  new  file, save as date - picker.js   -->
<!--  Original:  Kedar R. Bhave (softricks@hotmail.com)  -->
<!--  Web Site:  http: // www.softricks.com -->
<!--  This script and many more are available free online at  -->
<!--  The JavaScript Source !!  http: // javascript.internet.com -->

< script language = " javascript " >
var  cssfile  =   " ../Css/calendar.css " ;
var  weekend  =  [ 0 , 6 ];
var  weekendColor  =   " #efefe0 " ;
var  weekdayColor  =   " #ccddee " ;
var  fontface  =   " Tahoma " ;

var  fontsize  =   2 ;

var  gNow  =   new  Date();
var  ggWinCal;

isNav 
=  (navigator.appName.indexOf( " Netscape " !=   - 1 ?   true  :  false ;
isIE 
=  (navigator.appName.indexOf( " Microsoft " !=   - 1 ?   true  :  false ;

Calendar.Months 
=  [ " January " " February " " March " " April " " May " " June " ,
" July " " August " " September " " October " " November " " December " ];

//  Non-Leap year Month days..
Calendar.DOMonth  =  [ 31 28 31 30 31 30 31 31 30 31 30 31 ];
//  Leap year Month days..
Calendar.lDOMonth  =  [ 31 29 31 30 31 30 31 31 30 31 30 31 ];

function  Calendar(p_item, p_WinCal, p_month, p_year, p_format)  {
    
if ((p_month == null&& (p_year == null))    return;

    
if (p_WinCal == null)
        
this.gWinCal = ggWinCal;
    
else
        
this.gWinCal = p_WinCal;

    
    
if (p_month == null{
        
this.gMonthName = null;
        
this.gMonth = null;
        
this.gYearly = true;
    }
 else {
        
this.gMonthName = Calendar.get_month(p_month);
        
this.gMonth = new Number(p_month);
        
this.gYearly = false;
    }


    
this.gYear = p_year;
    
this.gFormat = p_format;
    
this.gBGColor = "white";
    
this.gFGColor = "black";
    
this.gTextColor = "black";
    
this.gHeaderColor = "black";
    
//this.gReturnItem = p_item;
    this.gReturnItem = p_item;
    
    
//alert(p_item);
}


Calendar.get_month 
=  Calendar_get_month;
Calendar.get_daysofmonth 
=  Calendar_get_daysofmonth;
Calendar.calc_month_year 
=  Calendar_calc_month_year;
Calendar.print 
=  Calendar_print;

function  Calendar_get_month(monthNo)  {
    
return Calendar.Months[monthNo];
}


function  Calendar_get_daysofmonth(monthNo, p_year)  {
    
/* 
    Check for leap year ...
    1.Years evenly divisible by four are normally leap years, except for... 
    2.Years also evenly divisible by 100 are not leap years, except for... 
    3.Years also evenly divisible by 400 are leap years. 
    
*/

    
if ((p_year % 4== 0{
        
if ((p_year % 100== 0 && (p_year % 400!= 0)
            
return Calendar.DOMonth[monthNo];
            
        
return Calendar.lDOMonth[monthNo];
    }
 else
        
return Calendar.DOMonth[monthNo];
}


function  Calendar_calc_month_year(p_Month, p_Year, incr)  {
    
/* 
    Will return an 1-D array with 1st element being the calculated month 
    and second being the calculated year 
    after applying the month increment/decrement as specified by 'incr' parameter.
    'incr' will normally have 1/-1 to navigate thru the months.
    
*/

    
var ret_arr = new Array();
    
    
if (incr == -1{
        
// B A C K W A R D
        if (p_Month == 0{
            ret_arr[
0= 11;
            ret_arr[
1= parseInt(p_Year) - 1;
        }

        
else {
            ret_arr[
0= parseInt(p_Month) - 1;
            ret_arr[
1= parseInt(p_Year);
        }

    }
 else if (incr == 1{
        
// F O R W A R D
        if (p_Month == 11{
            ret_arr[
0= 0;
            ret_arr[
1= parseInt(p_Year) + 1;
        }

        
else {
            ret_arr[
0= parseInt(p_Month) + 1;
            ret_arr[
1= parseInt(p_Year);
        }

    }

    
    
return ret_arr;
}


function  Calendar_print()  {
    ggWinCal.print();
}


function  Calendar_calc_month_year(p_Month, p_Year, incr)  {
    
/* 
    Will return an 1-D array with 1st element being the calculated month 
    and second being the calculated year 
    after applying the month increment/decrement as specified by 'incr' parameter.
    'incr' will normally have 1/-1 to navigate thru the months.
    
*/

    
var ret_arr = new Array();
    
    
if (incr == -1{
        
// B A C K W A R D
        if (p_Month == 0{
            ret_arr[
0= 11;
            ret_arr[
1= parseInt(p_Year) - 1;
        }

        
else {
            ret_arr[
0= parseInt(p_Month) - 1;
            ret_arr[
1= parseInt(p_Year);
        }

    }
 else if (incr == 1{
        
// F O R W A R D
        if (p_Month == 11{
            ret_arr[
0= 0;
            ret_arr[
1= parseInt(p_Year) + 1;
        }

        
else {
            ret_arr[
0= parseInt(p_Month) + 1;
            ret_arr[
1= parseInt(p_Year);
        }

    }

    
    
return ret_arr;
}


//  This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new  Calendar();

Calendar.prototype.getMonthlyCalendarCode 
=   function ()  {
    
var vCode = "";
    
var vHeader_Code = "";
    
var vData_Code = "";
    
    
// Begin Table Drawing code here..
    //modify by bss 20041029 for batch c item 120 : 200 to 220
    vCode = vCode + "<TABLE width='220' border=0 cellpadding=0 cellspacing=0 class=calendarbody >";
    
    vHeader_Code 
= this.cal_header();
    vData_Code 
= this.cal_data();
    vCode 
= vCode + vHeader_Code + vData_Code;
    
    vCode 
= vCode + "</TABLE>";
    
    
return vCode;
}


Calendar.prototype.show 
=   function ()  {
    
var vCode = "";

    
this.gWinCal.document.open();

    
// Setup the page...
    this.wwrite("<html>");
    
this.wwrite("<head><title>Calendar</title>");
    
this.wwrite("<link rel=StyleSheet href=" + cssfile + " type='text/css' media='screen,print'> <!--");
    
this.wwrite("</head>");

    
this.wwrite("<body " + "class=calendar>");

    
// Show navigation buttons
    var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
    
var prevMM = prevMMYYYY[0];
    
var prevYYYY = prevMMYYYY[1];

    
var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
    
var nextMM = nextMMYYYY[0];
    
var nextYYYY = nextMMYYYY[1];
    
//modify by bss 20041029 for batch c item 120 : 200 to 220
    this.wwrite("<TABLE WIDTH='220' CELLSPACING=0 CELLPADDING=0 BORDER=0 CLASS=calendar><TR><TD>")
    
this.wwrite("<TABLE WIDTH='220' border=0 CELLSPACING=0 CELLPADDING=0 CLASS=calendarhead><TR><TD WIDTH='20' HEIGHT='20' ALIGN=center CLASS=calendarhead>");
    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1+ "', '" + this.gFormat + "'" +
        
");" +
        
""><img src="../Image/yl_left_arrow2.gif" border=0></A></TD><TD WIDTH='20' ALIGN=center CLASS=calendarhead>");
    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
""><img src="../Image/lb_left_arrow.gif" border=0></A></TD><TD WIDTH='120' ALIGN=center CLASS=calendarhead>");
    
this.wwrite("<A class=calendarhead HREF="" +
        
"javascript:window.resizeTo(700,540);window.moveTo(40,20);window.opener.Build(" + 
        
"'" + this.gReturnItem + "', null, '" +  prevYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
"">");
    
this.wwriteA(this.gMonthName + "" + this.gYear);
    
this.wwriteA("</a></TD><TD WIDTH='20' ALIGN=center CLASS=calendarhead>");

//    this.wwrite("<A HREF="javascript:window.print();">Print</A></TD><TD ALIGN=center>");

    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
""><img src="../Image/lb_right_arrow.gif" border=0></A></TD><TD WIDTH='20' ALIGN=center CLASS=calendarhead>");
    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1+ "', '" + this.gFormat + "'" +
        
");" +
        
""><img src="../Image/yl_right_arrow2.gif" border=0></A></TD></TR></TABLE>");

    
// Get the complete calendar code for the month..
    vCode = this.getMonthlyCalendarCode();
    
this.wwrite(vCode);

    
this.wwrite("</td></tr></table></body></html>");
    
this.gWinCal.document.close();
}


Calendar.prototype.showY 
=   function ()  {
    
var vCode = "";
    
var i;
    
var vr, vc, vx, vy;        // Row, Column, X-coord, Y-coord
    var vxf = 285;            // X-Factor
    //modify by bss 20041029 for batch c item 120 : 200 to 220
    var vyf = 220;            // Y-Factor
    var vxm = 10;            // X-margin
    var vym;                // Y-margin
    if (isIE)    vym = 75;
    
else if (isNav)    vym = 25;
    
    
this.gWinCal.document.open();

    
this.wwrite("<html>");
    
this.wwrite("<head><title>Calendar</title>");
    
this.wwrite("<link rel=StyleSheet href=" + cssfile + " type='text/css' media='screen,print'> <!--");
    
for (i=0; i<12; i++{
        vc 
= i % 3;
        
if (i>=0 && i<= 2)    vr = 0;
        
if (i>=3 && i<= 5)    vr = 1;
        
if (i>=6 && i<= 8)    vr = 2;
        
if (i>=9 && i<= 11)    vr = 3;
        
        vx 
= parseInt(vxf * vc) + vxm;
        vy 
= parseInt(vyf * vr) + vym;

        
this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
    }

    
this.wwrite("--> </style>");
    
this.wwrite("</head>");

    
this.wwrite("<body class=calendar>");

    
// Show navigation buttons
    var prevYYYY = parseInt(this.gYear) - 1;
    
var nextYYYY = parseInt(this.gYear) + 1;
    
var curYYYY  = new String(gNow.getFullYear().toString());
    
var curMM    = new String(gNow.getMonth());

    
this.wwrite("<TABLE WIDTH='100%' frame=below CELLSPACING=0 CELLPADDING=0 class=calendarbar><TR><TD ALIGN=left>");

    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
"" alt='Prev Year'><img src="../Image/yl_left_arrow2.gif" border=0></A>");

    
this.wwrite("</TD><TD ALIGN=center>");

    
this.wwrite("<A class=calendarbar HREF="" +
        
"javascript:window.moveTo(500,230);window.resizeTo(230,153);window.opener.Build(" + 
        
"'" + this.gReturnItem + "','"+ curMM + "', '" + curYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
"" alt='Switch Calendar'>");

    
this.wwrite(this.gYear + "</A>");

    
this.wwrite("<A HREF="javascript:window.print();"><img src="../Image/printer.gif" border=0></A>");

    
this.wwrite("</TD><TD ALIGN=right>");

    
this.wwrite("<A HREF="" +
        
"javascript:window.opener.Build(" + 
        
"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
        
");" +
        
""><img src="../Image/yl_right_arrow2.gif" border=0></A>");

    
this.wwrite("</TD></TABLE>");

    
// Get the complete calendar code for each month..
    var j;
    
for (i=11; i>=0; i--{
        
if (isIE)
            
this.wwrite("<DIV ID="layer" + i + "" CLASS="lclass" + i + "">");
        
else if (isNav)
            
this.wwrite("<LAYER ID="layer" + i + "" CLASS="lclass" + i + "">");

        
this.gMonth = i;
        
this.gMonthName = Calendar.get_month(this.gMonth);
        vCode 
= this.getMonthlyCalendarCode();
//modify by bss 20041029 for batch c item 120 : 200 to 220
    this.wwrite("<TABLE WIDTH='220' CELLSPACING=0 CELLPADDING=0 BORDER=0 CLASS=calendar><TR><TD align=left>")

        
this.wwrite(this.gMonthName + "</TD></TR><TR>");
        
this.wwrite(vCode);
        
this.wwrite("</TR></table>");

        
if (isIE)
            
this.wwrite("</DIV>");
        
else if (isNav)
            
this.wwrite("</LAYER>");
    }


    
this.wwrite("</body></html>");
    
this.gWinCal.document.close();
}


Calendar.prototype.wwrite 
=   function (wtext)  {
    
this.gWinCal.document.writeln(wtext);
}


Calendar.prototype.wwriteA 
=   function (wtext)  {
    
this.gWinCal.document.write(wtext);
}


Calendar.prototype.cal_header 
=   function ()  {
    
var vCode = "";
    
    vCode 
= vCode + "<TR>";
    
//Modified by bss
    //vCode = vCode + "<TD WIDTH='14%' CLASS=sunday  ALIGN='CENTER'>Sun</TD>";
    //modify by bss 20041029 for batch c item 120
    vCode = vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>WKNo.</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>Mon</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>Tue</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>Wed</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>Thu</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=weekday ALIGN='CENTER'>Fri</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=sunday  ALIGN='CENTER'>Sat</TD>";
    vCode 
= vCode + "<TD WIDTH='12%' CLASS=sunday  ALIGN='CENTER'>Sun</TD>";
    vCode 
= vCode + "</TR>";
    
    
return vCode;
}

Calendar.prototype.getWeekNo 
= function  (iMonth,iDay,iYear)  {
/*
iMonth: 0~~11
Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
iday  : 1~~31
return week number
*/

    
var nowDate= new Date();
    nowDate.setDate(iDay);
    nowDate.setMonth(iMonth);
    nowDate.setFullYear(iYear);

    
var beginYear= new Date();
    beginYear.setDate(
1);
    beginYear.setMonth(
0);
    beginYear.setFullYear(iYear);
    
    
var endYear= new Date();
    endYear.setDate(
31);
    endYear.setMonth(
11);
    endYear.setFullYear(iYear);

    
if ((iMonth==11 && iDay>=29 ) && (nowDate.getDay()==1 || nowDate.getDay()==2 || nowDate.getDay()==3 || nowDate.getDay()==6))
    
{
        
//return (iYear+1)+'01' 
        return '01'
    }

    
else if ((iMonth==0 && iDay<=3 ) && ( nowDate.getDay()==0 || nowDate.getDay()==5 || nowDate.getDay()==6))
    
{
        
return this.getWeekNo(11,28,iYear-1)
    }

    
else
    
{
        
var m=0;
        
var n=0;
        
var weekno=0;

        
switch (beginYear.getDay()){
            
case 0:
                m
=3;
                
//n=-1;
                n=0;
                
break;
            
case 1:
                m
=2;
                n
=0;
                
break;
            
case 2:
                m
=1;
                n
=0;
                
break;
            
case 3:
                m
=0;
                n
=0;
                
break;
            
case 4:
                m
=-1;
                n
=0;
                
break;
            
case 5:
                m
=-2;
                n
=-1;
                
break;
            
case 6:
                m
=-3;
                n
=-1;
                
break;
            
default:
                m
=0;
                n
=0;
        }

        
var i =0;
        
var iDayCount=0;
        
for (i=0; i<iMonth; i++{
            iDayCount 
= iDayCount +  Calendar_get_daysofmonth(i,iYear);
        }

        iDayCount
=iDayCount+iDay;

        weekno 
= parseInt((iDayCount - m + 1/ 7+ 1 + n;

        
//return iYear*100+weekno;
    
        
if (weekno<10)
        
{
            
return '0'+weekno;
        }

        
else 
        
{
             
return weekno;
        }


    }

}

Calendar.prototype.cal_data 
=   function ()  {
    
var vDate = new Date();
    vDate.setDate(
1);
    vDate.setMonth(
this.gMonth);
    vDate.setFullYear(
this.gYear);
    
    
var vWeek=0;
    
var vWeekNo; //add by bss 20041029 for batch c item 120

    
//modify by bss 20041029 for batch c item 120:var vFirstDay=vDate.getDay()-1;
    var vFirstDay=vDate.getDay();
    
    
if (vFirstDay == '0'{
    
//modify by bss 20041029 for batch c item 120:if (vFirstDay == '-1') {
        vFirstDay = 7;//modify by bss 20041029 for batch c item 120:6 -->7
    }

            
    
var vDay=1;//The month first day 
    var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
    
var vOnLastDay=0;
    
var vCode = "";
    
/*
    Get day for the 1st of the requested month/year..
    Place as many blank cells before the 1st day of the month as necessary. 
    
*/


    vCode 
= vCode + "<TR>";
    
//modify by bss 20041029 for batch c item 120:add weekno   varWeekNo

    varWeekNo
=this.getWeekNo(vDate.getMonth(),vDate.getDate(),vDate.getFullYear())

    
/*
    vCode = vCode + "<TD WIDTH='16%' " + "ALIGN='CENTER'>" + 
            "<A " + " HREF='#' " + 
                "onClick="self.opener.document." + this.gReturnItem + ".value='" + 
                varWeekNo + 
                "';window.close();">" + 
                varWeekNo + 
            "</A>" + 
            "</TD>";
    
*/

    vCode 
= vCode + "<TD WIDTH='12%' " + "ALIGN='CENTER'>" + varWeekNo + "</TD>";
            
    
for (i=1; i<vFirstDay; i++{
        vCode 
= vCode + "<TD WIDTH='12%' " + this.write_weekend_string(i) + "></TD>";
    }


    
// Write rest of the 1st week
    for (j=vFirstDay; j<8; j++{
//modify by bss 20041029 for batch c item 120:for (j=vFirstDay; j<7; j++) {
        vClass = this.format_day(vDay);
        vCode 
= vCode + "<TD WIDTH='12%'  " + vClass + "ALIGN='CENTER' >" + 
            
"<A " + this.write_weekend_string(j) + " HREF='#' " +     
                
//"onClick="self.opener.document." + this.gReturnItem + ".value='" + 
                "onClick="self.opener.document.getElementById('"+ this.gReturnItem +"').value='"+
                
this.format_data(vDay) + 
                
"';window.close();">" + 
                vDay 
+ 
            
"</A>" + 
            
"</TD>";
        vDay
=vDay + 1;
    }

    vCode 
= vCode + "</TR>";

    vWeek 
= vWeek + 1;

    
// Write the rest of the weeks
    for (k=2; k<7; k++{
    
//modify by bss 20041029 for batch c item 120:for (k=2; k<8; k++) {
        vCode = vCode + "<TR>";
        vWeek 
= vWeek + 1;
        
var monDay;

        
if (vDate.getDay()==0){monDay=2+7*(k-2)} else {monDay=7*(k-1)+2-vDate.getDay()}    
    
//alert (monDay);
        //modify by bss 20041029 for batch c item 120:add weekno
        varWeekNo=this.getWeekNo(vDate.getMonth(),monDay,vDate.getFullYear())
        vCode 
= vCode + "<TD WIDTH='12%' " + "ALIGN='CENTER'>" + varWeekNo + "</TD>";
        
/*
        vCode = vCode + "<TD WIDTH='12%' " + "ALIGN='CENTER'>" + 
            "<A " + " HREF='#' " + 
                "onClick="self.opener.document." + this.gReturnItem + ".value='" + 
                varWeekNo + 
                "';window.close();">" + 
                varWeekNo + 
            "</A>" + 
            "</TD>";
        
*/

        
for (j=0; j<7; j++{
//modify by bss 20041029 for batch c item 120:for (j=0; j<7; j++) {
            vClass = this.format_day(vDay);

            vCode 
= vCode + "<TD WIDTH='12%' " + vClass + " ALIGN='CENTER'" + ">" + 
                
"<A " + this.write_weekend_string(j+1+ "HREF='#' " + 
                    
//"onClick="self.opener.document." + this.gReturnItem + ".value='" + 
                    "onClick="self.opener.document.getElementById('"+ this.gReturnItem +"').value='"+
                    
this.format_data(vDay) + 
                    
"';window.close();">" + 
                vDay 
+ 
                
"</A>" + 
                
"</TD>";
            vDay
=vDay + 1;

            
if (vDay > vLastDay) {
                vOnLastDay 
= 1;
                
break;
            }

        }


        
if (j == 7{
        
//modify by bss 20041029 for batch c item 120:if (j == 6) {
            vCode = vCode + "</TR>";
        }

        
if (vOnLastDay == 1)
        
//modify by bss 20041029 for batch c item 120:if (vOnLastDay == 1)
            break;
    }

    
    
// Fill up the rest of last week with proper blanks, so that we get proper square blocks
    for (m=1; m<(7-j); m++{
    
//modify by bss 20041029 for batch c item 120:for (m=1; m<(7-j); m++) {
        if (this.gYearly)
            vCode 
= vCode + "<TD WIDTH='12%' CLASS=afterday ALIGN='CENTER'" + this.write_weekend_string(j+m) + 
            
"></TD>";
        
else
            vCode 
= vCode + "<TD WIDTH='12%' CLASS=afterday ALIGN='CENTER'" + this.write_weekend_string(j+m) + 
            
">" + m + "</TD>";
    }

    
if (vWeek <= 6{
        
//modify by bss 20041029 for batch c item 120:if (vWeek <= 5) {
          vCode = vCode + "</TR>";
          
//vCode = vCode + "<TD WIDTH='12%' " + "ALIGN='CENTER'>   </TD>";
        if (this.gYearly){
            vCode 
= vCode + "<TD WIDTH='12%'  CLASS=afterday  ALIGN='CENTER'>   </TD>";
        }

        
else {
        
//alert(varWeekNo);
        //alert(vDate.getMonth() + '   ' +vDate.getFullYear())
            if (vDate.getMonth()==11)
                
if (m>=4)
                    varWeekNo
='02';
                
else
                    varWeekNo
='01';
            
else 
                varWeekNo
=this.getWeekNo(vDate.getMonth()+1,m+1,vDate.getFullYear())
                
            vCode 
= vCode + "<TD WIDTH='12%' CLASS=afterday ALIGN='CENTER'>"+ varWeekNo +"</TD>";
        }

            
        
for (n=m; n<(m+7); n++{
        
//modify by bss 20041029 for batch c item 120: for (n=m; n<(m+7); n++) {
        if (this.gYearly)
            vCode 
= vCode + "<TD WIDTH='12%' CLASS=afterday ALIGN='CENTER'" + this.write_weekend_string(n) + 
            
"></TD>";
        
else
            vCode 
= vCode + "<TD WIDTH='12%' CLASS=afterday ALIGN='CENTER'" + this.write_weekend_string(n) + 
            
">" + n + "</TD>";
        }

    }

    
return vCode;
}


Calendar.prototype.format_day 
=   function (vday)  {
    
var vNowDay = gNow.getDate();
    
var vNowMonth = gNow.getMonth();
    
var vNowYear = gNow.getFullYear();

    
if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
        
return (" class=today ");
    
else
        
return ("");
}


Calendar.prototype.write_weekend_string 
=   function (vday)  {
    
var i;
    
    
//modified by bss
    //04-04-04
    // Return special formatting for the weekend day.
    
    
/*for (i=0; i<weekend.length; i++) {
    
        if (vday == weekend[i])
            return (" class=weekend ");
    }
    
    return (" class=weekday ");
*/

    
    
if (vday>5){
    
//modify by bss 20041029 for batch c item 120: if (vday>=5){
        return (" class=weekend ");
    }

    
else{
        
return (" class=weekday ");
    }

}


Calendar.prototype.format_data 
=   function (p_day)  {
    
var vData;
    
var vMonth = 1 + this.gMonth;
    vMonth 
= (vMonth.toString().length < 2? "0" + vMonth : vMonth;
    
var vMon = Calendar.get_month(this.gMonth).substr(0,1).toUpperCase() + Calendar.get_month(this.gMonth).substr(1,2).toLowerCase();
    
var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
    
var vY4 = new String(this.gYear);
    
var vY2 = new String(this.gYear.substr(2,2));
    
var vDD = (p_day.toString().length < 2? "0" + p_day : p_day;

    
switch (this.gFormat) {
        
case "MM/DD/YYYY" :
            vData 
= vMonth + "/" + vDD + "/" + vY4;
            
break;
        
case "MM/DD/YY" :
            vData 
= vMonth + "/" + vDD + "/" + vY2;
            
break;
        
case "MM-DD-YYYY" :
            vData 
= vMonth + "-" + vDD + "-" + vY4;
            
break;
        
case "MM-DD-YY" :
            vData 
= vMonth + "-" + vDD + "-" + vY2;
            
break;
        
case "DD/MON/YYYY" :
            vData 
= vDD + "/" + vMon + "/" + vY4;
            
break;
        
case "DD/MON/YY" :
            vData 
= vDD + "/" + vMon + "/" + vY2;
            
break;
        
case "DD-MON-YYYY" :
            vData 
= vDD + "-" + vMon + "-" + vY4;
            
break;
        
case "DD-MON-YY" :
            vData 
= vDD + "-" + vMon + "-" + vY2;
            
break;
        
case "DD/MONTH/YYYY" :
            vData 
= vDD + "/" + vFMon + "/" + vY4;
            
break;
        
case "DD/MONTH/YY" :
            vData 
= vDD + "/" + vFMon + "/" + vY2;
            
break;
        
case "DD-MONTH-YYYY" :
            vData 
= vDD + "-" + vFMon + "-" + vY4;
            
break;
        
case "DD-MONTH-YY" :
            vData 
= vDD + "-" + vFMon + "-" + vY2;
            
break;

        
case "DD/MM/YYYY" :
            vData 
= vDD + "/" + vMonth + "/" + vY4;
            
break;
        
case "DD/MM/YY" :
            vData 
= vDD + "/" + vMonth + "/" + vY2;
            
break;
        
case "DD-MM-YYYY" :
            vData 
= vDD + "-" + vMonth + "-" + vY4;
            
break;
        
case "DD-MM-YY" :
            vData 
= vDD + "-" + vMonth + "-" + vY2;
            
break;
            
        
case "YYYY-MM-DD" :
            vData 
= vY4 + "-" + vMonth + "-" + vDD;
            
break;
        
case "yyyy-MM-dd"  :
            vData 
= vY4 + "-" + vMonth + "-" + vDD;
            
break;
            
//defined by zhang zi 2006/12/12
        case "yyyy/MM/dd"  :
            vData 
= vY4 + "/" + vMonth + "/" + vDD;
            
break;
        
default :
            
//vData = vMonth + "/" + vDD + "/" + vY4;
            vData = vY4 + "-" + vMonth + "-" + vDD;
    }


    
return vData;
}


function  Build(p_item, p_month, p_year, p_format)  {
    
var p_WinCal;
    
    
if (ggWinCal !=null)
        p_WinCal 
= ggWinCal;
    
else
    
{
        vWinCal 
= self.open("""Calendar"
            
"width=220,height=123,status=no,resizable=no,top=245,left=500");
        vWinCal.opener 
= self;
        ggWinCal 
= vWinCal;
        p_WinCal 
= ggWinCal;
    }

    
    
    gCal 
= new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

    
// Customize your Calendar here..
    gCal.gBGColor="white";
    gCal.gLinkColor
="black";
    gCal.gTextColor
="black";
    gCal.gHeaderColor
="darkgreen";

    
// Choose appropriate show function
    if (gCal.gYearly)    gCal.showY();
    
else    gCal.show();
}


function  show_calendar(p_item, p_month, p_year, p_format)  {
    
/* 
        p_month : 0-11 for Jan-Dec; 12 for All Months.
        p_year    : 4-digit year
        p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
        p_item    : Return Item.
    
*/


    p_item 
= arguments[0];
    
if (arguments[1== null)
        p_month 
= new String(gNow.getMonth());
    
else
        p_month 
= arguments[1];
    
if (arguments[2== "" || arguments[2== null)
        p_year 
= new String(gNow.getFullYear().toString());
    
else
        p_year 
= arguments[2];
    
if (arguments[3== null)
        p_format 
= "MM/DD/YYYY";
    
else
        p_format 
= arguments[3];

    vWinCal 
= window.open("""Calendar"
        
"width=220,height=123,status=no,resizable=no,top=245,left=500");
    vWinCal.opener 
= self;
    
    ggWinCal 
= vWinCal;

    Build(p_item, p_month, p_year, p_format);
}

/*
Yearly Calendar Code Starts here
*/

function  show_yearly_calendar(p_item, p_year, p_format)  {
    
// Load the defaults..
    if (p_year == null || p_year == "")
        p_year 
= new String(gNow.getFullYear().toString());
    
if (p_format == null || p_format == "")
        p_format 
= "MM/DD/YYYY";

    
var vWinCal = window.open("""Calendar""width=700,height=520,top=20,left=50,resizable=no");

    vWinCal.opener 
= self;
    
    ggWinCal 
= vWinCal;

    Build(p_item, 
null, p_year, p_format);
}


</ script >

css文件:

 

body.calendar
{
margin-left
:0;
margin-top
:0;
margin-right
:0;
margin-bottom
:0;
background-color
:#e4f5fb;
}


a:link 
{ text-decoration: none;}
a:visited 
{ text-decoration: none;}

table.calendar
{
background-color
:white;
font-size
:12;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
border-color
:#336699;
font-weight
:bold;
color
:rgb(20%,20%,20%);
}



table.calendarhead
{
background-color
:#000080;
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:white;
}


td.calendarhead
{
background-color
:#000080;
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:white;
}


a.calendarhead
{
background-color
:#000080;
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:white;
}


table.calendarbody
{
background-color
:white;
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:black;
}


td.weekday
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:#000080;
}


td.sunday
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:red;
}


a.weekend
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:red;
}


a.weekday
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:black;
}


td.afterday
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:rgb(60%,60%,60%);
background-color
:white;
}


td.today
{
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
color
:darkblue;
background-attachment
: fixed;
background-image
: url("../images/today.gif");
background-repeat
: no-repeat;
margin-left
:-4;
}


div.lclass0  
{position:absolute;top:30;left:5;}
div.lclass1  
{position:absolute;top:30;left:235;}
div.lclass2  
{position:absolute;top:30;left:465;}

div.lclass3  
{position:absolute;top:150;left:5;}
div.lclass4  
{position:absolute;top:150;left:235;}
div.lclass5  
{position:absolute;top:150;left:465;}

div.lclass6  
{position:absolute;top:270;left:5;}
div.lclass7  
{position:absolute;top:270;left:235;}
div.lclass8  
{position:absolute;top:270;left:465;}

div.lclass9  
{position:absolute;top:390;left:5;}
div.lclass10 
{position:absolute;top:390;left:235;}
div.lclass11 
{position:absolute;top:390;left:465;}

p.eachmonth
{
font-size
:12;
font-family
:verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:#000080;
}


table.calendarbar
{
background-color
:rgb(90%,90%,90%);
font-size
:11;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:#000080;
}


a.calendarbar
{
font-size
:12;
font-family
:sans-serif, verdana, Arial, Helvetica, Geneva,sans-serif; 
font-weight
:bold;
color
:#000008;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值