﻿<!-- calendar.js - by Shane Wang - 2003.2 -->

var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

var days = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

var daysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

var eventObj;
var hiddenObj;

//判断是否闰年
function getDays(month, year) {
	if (1 == month)
		return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
	else
		return daysInMonth[month];
}

//得到今天的年月日
function getToday() {
	this.now = new Date();
	this.year = this.now.getFullYear();
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}

var today = new getToday();

//创建日历

function newCalendar() {
	today = new getToday();
	var parseYear = parseInt(document.all.year[document.all.year.selectedIndex].text);
	var newCal = new Date(parseYear,document.all.month.selectedIndex,1);
	var day = -1;
	var startDay = newCal.getDay();
	var daily = 0;
	if ((today.year == newCal.getFullYear()) && (today.month == newCal.getMonth())) {
		day = today.day;
	}
	var tableCal = document.all.calendar.tBodies.dayList;
	var intDaysInMonth = getDays(newCal.getMonth(), newCal.getFullYear());
	for (var intWeek = 0; intWeek < tableCal.rows.length; intWeek++) {
		for (var intDay = 0; intDay < tableCal.rows[intWeek].cells.length; intDay++) {
			var cell = tableCal.rows[intWeek].cells[intDay];
			var cellStyle = ""
			var cellHTML = "";
			if ((intDay == startDay) && (0 == daily)) {
				daily = 1;
			}
			if (day == daily) {
				cellStyle = "color:#333333;font-weight:bold";
			}
			else if (intDay == 6) {
				cellStyle = "color:#009900";
			}
			else if (intDay == 0) {
				cellStyle = "color:#ff0000";
			}
			else {
				cellStyle = "color:#333333";
			}
			if ((daily > 0) && (daily <= intDaysInMonth)) { 
				cellHTML = '<table width="22" border="0" cellspacing="1" cellpadding="1" onMouseOver="mouseOverEx(this)" onMouseOut="mouseOutEx(this)"><tr><td align="center" style="' + cellStyle + '" nowrap>';
				cellHTML += daily;
				cellHTML += '</td></tr></table>';
				cell.innerHTML = cellHTML;
				daily++;
			}
			else {
				cell.innerHTML = "";
			}
		}
	}
}

function findObj(n, d) {
	var p,i,x;
	if (!d) d = document;
	if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
    	d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if (!(x = d[n]) && d.all)
		x = d.all[n];
	for (i = 0; !x&&i<d.forms.length; i++)
		x = d.forms[i][n];
	for (i = 0; !x && d.layers && i<d.layers.length; i++)
		x = findObj(n,d.layers[i].document);
	if (!x && document.getElementById)
		x = document.getElementById(n);
	return x;
}

function showHideLayers() {
	var i,p,v,obj,args = showHideLayers.arguments;
	for (i = 0; i < (args.length-2); i += 3) {
		if ((obj = findObj(args[i])) != null) {
			v = args[i+2];
			if (obj.style) {
				obj = obj.style;
				v = (v == 'show') ? 'visible' : (v = 'hide') ? 'hidden' : v;
			}
			obj.visibility = v;
		}
	}
}

function hideElement(elmID) {
	for (i = 0; i < document.all.tags(elmID).length; i++) {
		obj = document.all.tags(elmID)[i];
		obj.style.display = "none";
	}
	for (f = 0; f < frames.length; f++){
		for (i = 0; i < frames[f].document.all.tags(elmID).length; i++) {
			obj = frames[f].document.all.tags(elmID)[i];
			obj.style.display = "none";
		}
	}
}

function showElement(elmID) {
	for (i = 0; i < document.all.tags(elmID).length; i++) {
		obj = document.all.tags(elmID)[i];
		obj.style.display = "";
	}
	for (f = 0; f < frames.length; f++){
		for (i = 0; i < frames[f].document.all.tags(elmID).length; i++) {
			obj = frames[f].document.all.tags(elmID)[i];
			obj.style.display = "";
		}
	}
}

function hideSelect(aSelect){
	if (aSelect == null)
		return;
	if (aSelect.length == null)
		aSelect.style.visibility = "hidden";
	for (i = 0; i<aSelect.length; i++){
		obj = aSelect[i];
		obj.style.display = "hidden";
	}
}

function showSelect(aSelect){
	if (aSelect == null)
		return;
	if (aSelect.length == null)
		aSelect.style.visibility = "";
	for (i = 0; i<aSelect.length; i++){
		obj = aSelect[i];
		obj.style.display = "";
	}
}

//获取日期
function getDate() {
	var sDate;
	if ("TD" == event.srcElement.tagName) {
		if ("" != event.srcElement.innerText) {
			sDate = document.all.year.value + "-" + formatDate(document.all.month.value) + "-" + formatDate(event.srcElement.innerText) + "";
			//alert(sDate);
			if (eventObj.size < 10) {
				eventObj.value = sDate.substring(0, eventObj.size);
			}
			else {
				eventObj.value = sDate;
			}
			if(window.self.bCheckCalendar){
				doCheckCalendar(eventObj);
			}
			showHideLayers('cl','','hide');
			showSelect(hiddenObj);
			//showElement("SELECT");
		}
	}
}

//显示日历
function showCalendar(obj,aSelect) {
	newCalendar();
	hideCalendar();
	if (document.all.cl.style.visibility == "hidden") {
		eventObj = obj;
		parentObj = obj.offsetParent;
		offsetLeftVal = parentObj.offsetLeft;
		offsetTopVal = parentObj.offsetTop;
		while (parentObj.tagName != "BODY") {
			parentObj = parentObj.offsetParent;
			offsetLeftVal += parentObj.offsetLeft;
			offsetTopVal += parentObj.offsetTop;
		}
		//document.all.cl.style.pixelLeft = event.clientX;
		document.all.cl.style.pixelLeft = offsetLeftVal + eventObj.offsetLeft;
		//document.all.cl.style.pixelTop = event.clientY;
		document.all.cl.style.pixelTop = offsetTopVal + eventObj.offsetTop + eventObj.offsetHeight;
		showHideLayers('cl','','show');
		if (aSelect != null) {
			hiddenObj = aSelect;
			hideSelect(aSelect);
		}
	}
	/*	
	else {
		showHideLayers('cl','','hide');
	}
	*/
}

function hideCalendar() {
	showHideLayers('cl','','hide');
	showSelect(hiddenObj);
	//showElement("SELECT");
}

function formatDate(dateValue) {
	if (dateValue < 10) {
		return "0" + dateValue;
	}
	else {
		return dateValue;
	}
}

function enableCalendar() {
	document.all.year.disabled = false;
	document.all.month.disabled = false;
}

// 以下具体构造菜单
document.write('<div id="cl" style="position:absolute; width:150px; height:150px; z-index:100; visibility: hidden"><table border="0" cellspacing="0" cellpadding="0" style="border: 1px solid #999999"><tr><td><table id="calendar" width="150" border="0" cellspacing="2" cellpadding="0" bgcolor="#f1f1f1"><tr><td colspan="6" align="center">');
document.write('<select id="year" onChange="newCalendar()" style="font-size:12px">');
for (var intLoop = today.year - 100; intLoop < (today.year + 100); intLoop++) {
	document.write("<option value= " + intLoop + " " + (today.year == intLoop ? "selected" : "") + ">" + intLoop);
}
document.write('</select>');
document.write('<select id="month" onChange="newCalendar()" style="font-size:12px">');
for (var intLoop = 0; intLoop < months.length; intLoop++) {
	document.write("<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "selected" : "") + ">" + months[intLoop]);
}
document.write('</select>');
document.write('</td>');
document.write('<td align="right" valign="top"><img src="' + imgCom + 'close.gif" style="cursor:hand" onClick="hideCalendar()"></td>');
document.write('</tr><tr>');
document.write('<td style="width:25px;font-size:12px;color:#ff0000">' + days[0] + '</td>');
for (var intLoop = 1; intLoop < days.length - 1; intLoop++) {
	document.write('<td style="width:25px;font-size:12px;color:#333333">' + days[intLoop] + '</td>');
}
document.write('<td style="width:25px;font-size:12px;color:#009900">' + days[intLoop] + '</td>');
document.write('</tr><tbody border="0" cellspacing="0" cellpadding="0" id="dayList" align="center" onClick="getDate()">');
for (var intWeeks = 0; intWeeks < 6; intWeeks++) {
	document.write("<tr style='cursor:hand'>");
	for (var intDays = 0; intDays < days.length; intDays++) {
		document.write('<td style="font-size:12px"></td>');
	}
	document.write('</tr>');
}
document.write('</tbody></table></td></tr></table></div>');