// JavaScript Document

/***************************
    *JCalendar日历控件
    *@author brull
    *@email [email]brull@163.com[/email]
    *@date 2007-4-16
    ***************************/

    /*
    *@param year 年份
    *@param month 月份
    *@param date 日期
    */
    /*如果参数不足三个那么就初始化为当天日期*/
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.fday : 0); //预先定义一段空数组，对应日历里第一周空的位置
	var html_str = new Array();
	var date_index = 0;
	var weekDay = ["日", "一", "二", "三", "四", "五", "六"];
	for (var j = 1; j <= this.dayNum; j++) {//初始化date数组
		date.push(j);
	}
	html_str.push("<table id='calendar' width='100%' cellpadding='0' cellspacing='2'>");
	html_str.push("<caption style='padding:8px 0'><span title='上一月份' onclick=\"JCalendar.update(-1);return false\" style='color:#A82A40;font-size:12px;font-family:宋体;margin-right:12px; cursor:pointer'>&lt;</span><span id='calendar_title'>" + this.year + "年" + this.month + "月</span><span title='下一月份' onclick=\"JCalendar.update(1);return false\" style='color:#A82A40;font-size:12px;font-family:宋体;margin-left:10px; cursor:pointer'>&gt;</span></caption>");
	html_str.push("<thead><tr>");
	for (var i = 0; i < 7; i++) {//填充日历头
		html_str.push("<td align='center' valign='middle'>" + weekDay[i] + "</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 align='center' valign='middle'><div id='c_today' style='background:url(/template/images/calendar_hover.gif);color:#fff;width:27px;height:27px;line-height:27px;font-weight:700;cursor:pointer' onclick='JCalendar.click(this)'>" + JCalendar.cur_date + "</div></td>");
			else if (tmp == "")
				html_str.push("<td align='center' valign='middle'></td>");
			else
				html_str.push("<td align='center' valign='middle'><div style='cursor:pointer;width:27px;height:27px;line-height:27px' onmouseover=\"this.style.background='url(/template/images/calendar_hover.gif)'; this.style.color='#fff';this.style.fontWeight='700'\" onmouseout=\"this.style.background=''; this.style.color='#444';this.style.fontWeight='100'\" onclick='JCalendar.click(this)'>" + tmp + "</div></td>");
		}
		html_str.push("</tr>");
	}
	
	html_str.push("</tbody></table>");
	return html_str.join("");
}
//静态方法
JCalendar.update = function(_month) {
	var date = new Date(JCalendar.cur_year, JCalendar.cur_month - 1 + _month, 1);
	var fday = date.getDay(); //每月第一天的星期数
	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var dayNum = new Date(JCalendar.cur_year, JCalendar.cur_month + _month, 0).getDate(); //每月的天数
	var tds = document.getElementById("calendar").getElementsByTagName("td");
	for (var i = 7; i < tds.length; i++)//清空日历内容
		tds[i].innerHTML = "";
	document.getElementById("calendar_title").innerHTML = year + "年" + month + "月"; //更新显示年月
	//更新当前年月
	JCalendar.cur_year = year;
	JCalendar.cur_month = month;
	for (var j = 1; j <= dayNum; j++) {
		if (j == JCalendar.cur_date)
			tds[6 + fday + j].innerHTML = "<div id='c_today' style='background:url(/template/images/calendar_hover.gif);color:#fff;width:27px;height:27px;line-height:27px'>" + JCalendar.cur_date + "</div>";
		else
			tds[6 + fday + j].innerHTML = "<div style='cursor:pointer;width:27px;height:27px;line-height:27px' onmouseover=\"this.style.background='url(/template/images/calendar_hover.gif)'; this.style.color='#fff'\" onmouseout=\"this.style.background=''; this.style.color='#444'\" onclick='JCalendar.click(this)'>" + j + "</div>";
	}
}

JCalendar.click = function(obj) {
	var tmp = document.getElementById("c_today");
	JCalendar.cur_date = parseInt(obj.innerHTML);
	obj.parentNode.innerHTML = "<div id='c_today' style='background:url(/template/images/calendar_hover.gif);color:#fff;font-weight:700;width:27px;height:27px;line-height:27px'>" + obj.innerHTML + "</div>";
	JCalendar.onclick(JCalendar.cur_year, JCalendar.cur_month, JCalendar.cur_date);
}
