/**
	Calendar dialog class.
	example:
		<SCRIPT LANGUAGE=javascript>
		<!--
		calendar = new zCalendar('calendar');
		//-->
		</SCRIPT>
		<INPUT TYPE=text ID=sell_date NAME=sell_date ONCLICK="calendar.showDatePanel('search_form.sell_date')">
*/

function zCalendar(instanceName){
	//check the browers type
	this.isIE = (document.all ? true : false);
	this.instanceName = instanceName;

	//initialization
	this.months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
	this.daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	this.displayMonth = new Date().getMonth();
	this.displayYear = new Date().getFullYear();
	this.displayDivName = "";
	this.displayElement = "";

	//member function
	this.hideElement = hideElement;
	this.getDays = getDays;
	this.newCalendar = newCalendar;
	this.incMonth = incMonth;
	this.incYear = incYear;
	this.makeDaysGrid = makeDaysGrid;
	this.setDay = setDay;
	this.showDatePanel = showDatePanel;

	this.floatMsg = new floatMsg();
}

function hideElement() { 
	//this.getXBrowserRef(eltname).visibility = 'hidden'; 
	this.floatMsg.floatHidden();
}

function getDays(month, year) {
	//测试选择的年份是否是润年？
	if (1 == month)
		return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
	else
		return this.daysInMonth[month];
}

function getToday() {
	// 得到今天的日期
	this.now = new Date();
	this.year = this.now.getFullYear();
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}

// 并显示今天这个月份的日历
function newCalendar() {
	today = new getToday();
	var parseYear = parseInt(this.displayYear + '');
	var newCal = new Date(parseYear,this.displayMonth,1);
	var day = -1;
	var startDayOfWeek = newCal.getDay();
	if ((today.year == newCal.getFullYear()) && (today.month == newCal.getMonth()))
	{
		day = today.day;
	}
	var intDaysInMonth = this.getDays(newCal.getMonth(), newCal.getFullYear());
	var daysGrid = this.makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal)

	this.floatMsg.floatShow(daysGrid);
 }

function incMonth(delta) {
	this.displayMonth += delta;
	if (this.displayMonth >= 12) {
		this.displayMonth = 0;
		this.incYear(1);
	} else if (this.displayMonth <= -1) {
		this.displayMonth = 11;
		this.incYear(-1);
	} else {
		this.newCalendar();
	}
}

function incYear(delta) {
	this.displayYear = parseInt(this.displayYear + '') + delta;
	this.newCalendar();
}

function makeDaysGrid(startDay,day,intDaysInMonth,newCal) {
	//alert(this.id);
	var daysGrid;
	var month = newCal.getMonth();
	var year = newCal.getFullYear();
	var isThisYear = (year == new Date().getFullYear());
	var isThisMonth = (day > -1)
	daysGrid = '<table border=0 cellspacing=0 cellpadding=2 bgcolor=#FFFFBF><tr><td bgcolor=#88C4FF nowrap ALIGN=center>';
	daysGrid += '<font face="courier new, courier" size=2>';
	//daysGrid += '<a href="javascript:this.floatMsg.floatHidden()">x</a>';
	//daysGrid += '&nbsp;&nbsp;';
	daysGrid += '<a href="javascript:' + this.instanceName + '.incMonth(-1)">&laquo;</a> ';

	daysGrid += '<b>';
	if (isThisMonth) { daysGrid += '<font color=red>' + this.months[month] + '</font>'; }
	else { daysGrid += this.months[month]; }
	daysGrid += '</b>';

	daysGrid += ' <a href="javascript:' + this.instanceName + '.incMonth(1)">&raquo;</a>';
	daysGrid += '&nbsp;&nbsp;&nbsp;';
	daysGrid += '<a href="javascript:' + this.instanceName + '.incYear(-1)">&laquo;</a> ';

	daysGrid += '<b>';
	if (isThisYear) { daysGrid += '<font color=red>' + year + '</font>'; }
	else { daysGrid += ''+year; }
	daysGrid += '</b>';

	daysGrid += ' <a href="javascript:' + this.instanceName + '.incYear(1)">&raquo;</a>';
	daysGrid += '</td><tr><td NOWRAP>';
	daysGrid += '<font face="courier new, courier" size=2>&nbsp;日 一 二 三 四 五 六&nbsp;<br>&nbsp;';
	var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	for (var intWeek = 0; intWeek < 6; intWeek++) {
		var dayOfMonth;
		for (var intDay = 0; intDay < 7; intDay++) {
			dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
			if (dayOfMonth <= 0) {
				daysGrid += "&nbsp;&nbsp; ";
			} else if (dayOfMonth <= intDaysInMonth) {
				var color = "blue";
				if (day > 0 && day == dayOfMonth) color="red";
				daysGrid += '<a href="javascript:' + this.instanceName + '.setDay(';
				daysGrid += dayOfMonth + ')" '
				daysGrid += 'style="color:' + color + '">';
				var dayString = dayOfMonth + "</a> ";
				if (dayString.length == 6) dayString = '0' + dayString;
				daysGrid += dayString;
			}
		}
		if (dayOfMonth < intDaysInMonth) daysGrid += "<br>&nbsp;";
	}
	return daysGrid + "</td></tr></table>";
}

function setDay(day) {
	this.displayElement.value = this.displayYear + "-" + (this.displayMonth + 1) + "-" + day;
	this.hideElement();
}

function showDatePanel(formElt) {
	//if("" == eltName || "undefined" == eltName || null == eltName) eltName = this.floatMsg.
	if("[object]" == formElt){
		this.displayElement = formElt;
	}else{
		var x = formElt.indexOf('.');
		var formName = formElt.substring(0,x);
		var formEltName = formElt.substring(x+1);
		this.displayElement = document.forms[formName].elements[formEltName];
	}
	this.newCalendar();
	//this.toggleVisible(eltName);
}