You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
3.9 KiB

(function($) {
function calendarWidget(el, params) {
var now = new Date();
var thismonth = now.getMonth();
var thisyear = now.getYear() + 1900;
var today = now.getDate();
var opts = {
month: thismonth,
year: thisyear,
today:today
};
$.extend(opts, params);
var monthNames = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
var dayNames = ['日', '一', '二', '三', '四', '五', '六'];
month = i = parseInt(opts.month);
year = parseInt(opts.year);
today = parseInt(opts.today);
var m = 0;
var table = '';
// next month
if (month == 11) {
var next_month = '<a href="?month=' + 1 + '&amp;year=' + (year + 1) + '" title="' + monthNames[0] + ' ' + (year + 1) + '">' + monthNames[0] + ' ' + (year + 1) + '</a>';
} else {
var next_month = '<a href="?month=' + (month + 2) + '&amp;year=' + (year) + '" title="' + monthNames[month + 1] + ' ' + (year) + '">' + monthNames[month + 1] + ' ' + (year) + '</a>';
}
// previous month
if (month == 0) {
var prev_month = '<a href="?month=' + 12 + '&amp;year=' + (year - 1) + '" title="' + monthNames[11] + ' ' + (year - 1) + '">' + monthNames[11] + ' ' + (year - 1) + '</a>';
} else {
var prev_month = '<a href="?month=' + (month) + '&amp;year=' + (year) + '" title="' + monthNames[month - 1] + ' ' + (year) + '">' + monthNames[month - 1] + ' ' + (year) + '</a>';
}
table += ('<h3 id="current-month">'+monthNames[month]+' '+year+'</h3>');
// uncomment the following lines if you'd like to display calendar month based on 'month' and 'view' paramaters from the URL
//table += ('<div class="nav-prev">'+ prev_month +'</div>');
//table += ('<div class="nav-next">'+ next_month +'</div>');
table += ('<table class="calendar-month " ' +'id="calendar-month'+i+' " cellspacing="0">');
table += '<tr>';
for (d=0; d<7; d++) {
table += '<th class="weekday">' + dayNames[d] + '</th>';
}
table += '</tr>';
var days = getDaysInMonth(month,year);
var firstDayDate=new Date(year,month,1);
var firstDay=firstDayDate.getDay();
var prev_days = getDaysInMonth(month,year);
var firstDayDate=new Date(year,month,1);
var firstDay=firstDayDate.getDay();
var prev_m = month == 0 ? 11 : month-1;
var prev_y = prev_m == 11 ? year - 1 : year;
var prev_days = getDaysInMonth(prev_m, prev_y);
firstDay = (firstDay == 0 && firstDayDate) ? 7 : firstDay;
var i = 0;
for (j=0;j<42;j++){
if ((j<firstDay)){
table += ('<td class="other-month"><span class="day">'+ (prev_days-firstDay+j+1) +'</span></td>');
} else if ((j>=firstDay+getDaysInMonth(month,year))) {
i = i+1;
table += ('<td class="other-month"><span class="day">'+ i +'</span></td>');
}else{
// console.log(opts.signDays);
// console.log($.inArray((j-firstDay+1),opts.signDays))
if($.inArray((j-firstDay+1),opts.signDays)!=-1){
//特定days
table += ('<td class="current-month signed day'+(j-firstDay+1)+'"><span class="day">'+(j-firstDay+1)+'</span></td>');
}else if(today==(j-firstDay+1) && month==thismonth){
//今天
table += ('<td class="current-month today day'+(j-firstDay+1)+'"><span class="day">'+(j-firstDay+1)+'</span></td>');
}else{
table += ('<td class="current-month day'+(j-firstDay+1)+'"><span class="day">'+(j-firstDay+1)+'</span></td>');
}
}
if (j%7==6) table += ('</tr>');
}
table += ('</table>');
el.html(table);
}
function getDaysInMonth(month,year) {
var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];
if ((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){
return 29;
}else{
return daysInMonth[month];
}
}
// jQuery plugin initialisation
$.fn.calendarWidget = function(params) {
calendarWidget(this, params);
return this;
};
})(jQuery);