﻿function JCalendar (year,month,date) {
	var _date = arguments.length == 0 ? new Date() : new Date(year,month-1,date);
	//实例变量
	this.year = _date.getFullYear();
	this.month = _date.getMonth() + 1;
	this.fday = new Date(this.year,this.month-1,1).getDay();//每月第一天的前一天星期数
	this.dayNum = new Date(this.year,this.month,0).getDate();//每月的天数
	//成员变量，当前年月日
	JCalendar.cur_year = this.year;
	JCalendar.cur_month = this.month;
	JCalendar.cur_date = _date.getDate();
}
JCalendar.prototype.show = function(){
	var date = new Array(this.fday > 0 ? this.day : 0);//预先定义一段空数组，对应日历里第一周空的位置
	var html_str = new Array();
	var date_index = 0;
	for(var j = 1; j <= this.dayNum; j++){//初始化date数组
		date.push(j);
	}
	html_str.push("<table id='calendar' border='0' cellspacing='0' cellpadding='0'>");
	html_str.push("<thead><tr>");
	html_str.push("<td colspan='7'>&nbsp;</td>");
	html_str.push("</tr></thead>");
	html_str.push("<tbody>");
	for(var i = 0; i < 6; i++){//填充日期
		html_str.push("<tr>");
		for(var j = 0; j < 7; j++){
			tmp = date[date_index++];
			tmp = tmp ? tmp : "";
			if(JCalendar.cur_date == tmp)
				html_str.push("<td><span id='c_today'>" + JCalendar.cur_date + "</span></td>");
			else if(tmp == "")
				html_str.push("<td></td>");
			else
				html_str.push("<td><div>" + tmp + "</div></td>");
		}
		html_str.push("</tr>");
	}
	html_str.push("</tbody></table>");
	document.write(html_str.join(""));
}
//静态方法
JCalendar.update = function(_month){
	var date = new Date(JCalendar.cur_year,_month-1,1);
	var fday = date.getDay();//每月第一天的星期数
	var year = date.getFullYear();
	var month = date.getMonth()+1;
	var dayNum = new Date(JCalendar.cur_year,_month,0).getDate();//每月的天数
	var tds = document.getElementById("calendar").getElementsByTagName("td");
	for(var i = 1; i < tds.length; i++)//清空日历内容
		tds[i].innerHTML = "";
	JCalendar.cur_year = year;
	JCalendar.cur_month = month;
	for(var j = 1; j <= dayNum; j++){
		if(j == JCalendar.cur_date)
			tds[fday + j].innerHTML = "<span id='c_today'>" + JCalendar.cur_date + "</span>";
		else
			tds[fday + j].innerHTML = "<div>" + j + "</div>";
	}
}

