⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weeklycalendar.js

📁 Online flight booking
💻 JS
📖 第 1 页 / 共 2 页
字号:
//************************************************************************************
// weeklycalendar 
// Copyright (C) 2006, Massimo Beatini
//
// This software is provided "as-is", without any express or implied warranty. In 
// no event will the authors be held liable for any damages arising from the use 
// of this software.
//
// Permission is granted to anyone to use this software for any purpose, including 
// commercial applications, and to alter it and redistribute it freely, subject to 
// the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not claim 
//    that you wrote the original software. If you use this software in a product, 
//    an acknowledgment in the product documentation would be appreciated but is 
//    not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be 
//    misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//
//************************************************************************************

// variable declarations
var w_d = new Date()
var w_monthname=new Array("January","February","March","April","May","June","July","August","September","Octber","November","December");
var w_dayname = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var w_StartOfWeek = 1; // Monday

// image title
var prev_month_title = "Previous month";
var next_month_title = "Next month";
var close_title = "Close";


// set the default position
// for the week end days (Staurday,Sunday)
var weekend_pos = new Array(6,0);


var w_min_year = 1960;
var w_max_year = 2060;

var gx = 0;
var gy = 0;

var w_linkedInputText_1;
var w_linkedInputText_2;


var HideWeekCol = false;


//
//
//
function w_funMouseMove(evnt) 
{   
	gx = evnt.pageX;
	gy = evnt.pageY;

	return true;   
}

//
// handle mousemove
//
if ((navigator.appName.indexOf("Netscape") != -1) || (navigator.appName.indexOf("Opera") != -1))
{
    if (document.onmousemove == undefined)
	    document.onmousemove = w_funMouseMove;
}

//
//
//
function w_changeMonth(id)
{
    var box = document.getElementById(id);
    var mm = box.options[box.selectedIndex].value;    
    w_d.setMonth(mm);
    w_renderCalendar(0);
}

//
//
//
function w_changeYear(id)
{
    var box = document.getElementById(id);
    var yy = box.options[box.selectedIndex].value;    
    w_d.setFullYear(yy);
    w_renderCalendar(0);
}

//
//
//
function w_getWeek(year,month,day){
    //Find JulianDay 
    month += 1; //use 1-12
    var a = Math.floor((14-(month))/12);
    var y = year+4800-a;
    var m = (month)+(12*a)-3;

    var jd = day + Math.floor(((153*m)+2)/5) + 
                 (365*y) + Math.floor(y/4) - Math.floor(y/100) + 
                 Math.floor(y/400) - 32045;      // (gregorian calendar)

/*
    var jd = (day+1)+Math.round(((153*m)+2)/5)+(365+y) + 
                     Math.round(y/4)-32083;    // (julian calendar)
*/
    
    //now calc weeknumber according to JD
    var d4 = (jd+31741-(jd%7))%146097%36524%1461;
    var L = Math.floor(d4/1460);
    var d1 = ((d4-L)%365)+L;
    NumberOfWeek = Math.floor(d1/7) + 1;
    return NumberOfWeek;        
}



//
//
//
function w_writeDayNumber(d)
{
	var dd = new Date(d);
	var temp = new Date(d);
	
	// reset data array
	for (i=0;i<6;i++)
	{
 		for (j=0;j<7;j++)
 		{
			document.getElementById("w_c" +i+""+j).innerHTML= "";
			document.getElementById("w_c" +i+""+j).className = "day_out";
 	    }
        document.getElementById("week_" +i).innerHTML = '';
	}
	
	// set to the first day of the month
	dd.setDate(1);
	
	// fill data array
	i = 0;
	j = 0;

    // previous month's days
    j = dd.getDay() - w_StartOfWeek;
    if (j<0)
        j = 7 + j;
    
    if (j > 0)
    {
        temp.setDate(dd.getDate()-1);
        for (k=j-1; k>=0; k--)
        {
			document.getElementById("w_c" +i+""+k).innerHTML= temp.getDate();
		    if ((weekend_pos[0] == k) || (weekend_pos[1] == k))
		        document.getElementById("w_c" +i+""+k).className = "weekends_out";
		    else
			    document.getElementById("w_c" +i+""+k).className = "day_out";

            temp.setDate(temp.getDate()-1);
        }
    }

	var week = -1;
    var iStartWeek = -1;
    var iEndWeek = -1;
    var weekEl;
    var dayval;

	do 
	{
	    // get the position according to
	    // StartOfWeek
	    j = dd.getDay() - w_StartOfWeek;
	    if (j<0)
	        j = 7 + j;
	
	    if (iStartWeek==-1)
	        iStartWeek = j;
        iEndWeek = j;
        	        
		dayval = dd.getDate();



	    // get the week number
	    if (week < 0)
	        week = w_getWeek(w_d.getFullYear(), w_d.getMonth(), dayval);
	        
		document.getElementById("w_c" +i+""+j).innerHTML= dayval;
		
		// set week ends layout
		if ((weekend_pos[0] == j) || (weekend_pos[1] == j))
		    document.getElementById("w_c" +i+""+j).className = "weekends";
		else
		    document.getElementById("w_c" +i+""+j).className = "day";
        {
            // set today layout 
            var today = new Date();
			
			if ((today.getDate() ==  dayval) && (today.getMonth() == w_d.getMonth()) && (today.getFullYear() == w_d.getFullYear()) )
				document.getElementById("w_c" +i+""+j).className = "today";
        }

        ////////
        // dinamically set the onclick event
        // only on the day of the selected month
        ////////

        var object = document.getElementById("w_c" +i+""+j);
        object.rownumber = i;
        object.colnumber = j;

        if(window.addEventListener){ // Mozilla, Netscape, Firefox
	        object.addEventListener('click', w_setDate, false);
        } else { // IE
	        object.attachEvent('onclick', w_setDate);
        }

        ///////
        
        
	    if (week < 0)
	        document.getElementById("week_" +i).innerHTML = '';
	    else if (w_StartOfWeek != 1)
	        document.getElementById("week_" +i).innerHTML = "&lt;";
	    else
	        document.getElementById("week_" +i).innerHTML = week;

        weekEl = document.getElementById("week_" +i);

        // if HideWeekCol change the class
        // hide the week col and its header
        if (HideWeekCol) 
        {
            weekEl.className = "weekhidden";
            document.getElementById("weekHeader").className = "weekhidden";
        }
        else
        {
            document.getElementById("weekHeader").className = "week";
            weekEl.className = "weeksel";
        }
        
		if (j == 6) 
		{
            ////////
            // dinamically set the onclick event
            // on the week number
            ////////
            weekEl.startweek = iStartWeek;
            weekEl.endweek = iEndWeek;
            weekEl.rowweek = i;

            if(window.addEventListener){ // Mozilla, Netscape, Firefox
                weekEl.addEventListener('click', w_SetWeekDate, false);
            } else { // IE
                weekEl.attachEvent('onclick', w_SetWeekDate);
            }
            ///////

		    week = -1;
		    iStartWeek = -1;
		    iEndWeek = -1;
		    i++;
		}
	
		dd.setDate(dd.getDate() + 1);
	
	} while (dd.getDate() != 1);
	
	if ((iStartWeek!=-1) && (iEndWeek!=-1))
	{
        weekEl = document.getElementById("week_" +i);
        
        ////////
        // dinamically set the onclick event
        // on the week number
        ////////
        weekEl.startweek = iStartWeek;
        weekEl.endweek = iEndWeek;
        weekEl.rowweek = i;

        if(window.addEventListener){ // Mozilla, Netscape, Firefox
            weekEl.addEventListener('click', w_SetWeekDate, false);
        } else { // IE
            weekEl.attachEvent('onclick', w_SetWeekDate);
        }
        ///////
    }
    
    // next month's days
    if ((j < 7))
    {
        temp = dd;
        for (k=j+1; k<7; k++)
        {
			document.getElementById("w_c" +i+""+k).innerHTML= temp.getDate();
	        if ((weekend_pos[0] == k) || (weekend_pos[1] == k))
	            document.getElementById("w_c" +i+""+k).className = "weekends_out";
	        else
			    document.getElementById("w_c" +i+""+k).className = "day_out";
            temp.setDate(temp.getDate()+1);
        }
    }


}


// 
// render calendar accordint to the selected
// month (k)
//
function w_renderCalendar(k) 
{
    var monthsel_html='';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -