/*

*/

function calendar(cal,fld,cy,cm,cd) {
	var cal_obj = document.getElementById(cal);
	if (cal_obj.style.visibility != 'visible') {
		cal_main(cal,fld,cy,cm,cd);
	}
}

function cal_main(cal,fld,cy,cm,cd) {
	var today = new Date();
	var curnt = new Date();
	var outpt = '';
	var tod_yer = today.getFullYear();
	var tod_mth = today.getMonth();
	var tod_day = today.getDate();
	cy = (cy == '') ? tod_yer : cy;
	cm = (cm == '') ? tod_mth + 1 : cm;
	cd = (cd == '') ? tod_day : cd;
	var py = (cm == 1) ? cy - 1 : cy;
	var pm = (cm == 1) ? 12 : cm - 1;
	var ny = (cm == 12) ? cy + 1 : cy;
	var nm = (cm == 12) ? 1 : cm + 1;
	var cur_yer = curnt.setFullYear(cy);
	var cur_mth = curnt.setMonth(cm-1);
	var cur_day = curnt.setDate('1');
	var cur_end = cal_dim(cy, cm);
	var cur_beg = curnt.getDay() - 1;
	var prv_end = cal_dim(py, pm);
	var prv_beg = prv_end - cur_beg;
	var count = cur_beg + 1;
	var month = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	outpt += '<table width="100%" border="1" cellpadding="2" cellspacing="0">';
		outpt += '<tr>';
			outpt += '<td width="15%" align="center" class="cal_title_left"><strong><a href="javascript:cal_main(\''+cal+'\',\''+fld+'\','+py+','+pm+',1);">&lt;&lt;</a></strong></td>';
			outpt += '<td width="70%" align="center" class="cal_title_midd" colspan="5"><strong>' + month[cm-1] + ' ' + cy + '</strong></td>';
			outpt += '<td width="15%" align="center" class="cal_title_rite"><strong><a href="javascript:cal_main(\''+cal+'\',\''+fld+'\','+ny+','+nm+',1);">&gt;&gt;</a></strong></td>';
		outpt += '</tr>';
		outpt += '<tr>';
			outpt += '<td width="15%" align="center" class="cal_weeks_color"><strong>S</strong></td>';
			outpt += '<td width="14%" align="center" class="cal_weeks_color"><strong>M</strong></td>';
			outpt += '<td width="14%" align="center" class="cal_weeks_color"><strong>T</strong></td>';
			outpt += '<td width="14%" align="center" class="cal_weeks_color"><strong>W</strong></td>';
			outpt += '<td width="14%" align="center" class="cal_weeks_color"><strong>T</strong></td>';
			outpt += '<td width="14%" align="center" class="cal_weeks_color"><strong>F</strong></td>';
			outpt += '<td width="15%" align="center" class="cal_weeks_color"><strong>S</strong></td>';
		outpt += '</tr>';
		outpt += '<tr>';
			for (p = prv_beg; p < prv_end + 1; p++) {
				outpt += '<td align="center" class="cal_nonc_days"><a href="javascript:cal_set(\''+cal+'\',\''+fld+'\','+py+','+pm+','+p+');">' + p + '</a></td>';
			}
			for (c = 1; c < cur_end + 1; c++) {
				if (cy == tod_yer && cm == (tod_mth + 1) && c == tod_day) {
					outpt += '<td align="center" class="cal_tday_days"><a href="javascript:cal_set(\''+cal+'\',\''+fld+'\','+cy+','+cm+','+c+');">' + c + '</a></td>';
				} else {
					outpt += '<td align="center" class="cal_curr_days"><a href="javascript:cal_set(\''+cal+'\',\''+fld+'\','+cy+','+cm+','+c+');">' + c + '</a></td>';
				}
				outpt += (count > 5) ? '</tr><tr>' : '';
				count = (count > 5) ? 0 : count + 1;
			}
			for (n = 1; n < (8 - count); n++) {
				outpt += '<td align="center" class="cal_nonc_days"><a href="javascript:cal_set(\''+cal+'\',\''+fld+'\','+ny+','+nm+','+n+');">' + n + '</a></td>';
			}
		outpt += '</tr>';
		outpt += '<tr>';
			outpt += '<td colspan="7" align="center" class="cal_title_bott"><a href="javascript:cal_close(\''+cal+'\');">close</a></td>';
		outpt += '</tr>';
	outpt += '</table>';
	var cal_obj = document.getElementById(cal);
	cal_obj.style.visibility = 'visible';
	cal_obj.innerHTML = outpt;
}

function cal_set(cal,fld,cy,cm,cd) {
	var cal_obj = document.getElementById(cal);
	var fld_obj = document.getElementById(fld);
	cal_obj.style.visibility = 'hidden';
	cm = (cm < 10) ? '0'+cm : cm;
	cd = (cd < 10) ? '0'+cd : cd;
	fld_obj.value = cy+'-'+cm+'-'+cd;
}

function cal_close(cal) {
	var cal_obj = document.getElementById(cal);
	cal_obj.style.visibility = 'hidden';
}

function cal_dim(year,month) {
	var m = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (month != 2) return m[month - 1];
	if (year % 4 != 0) return m[1];
	if (year % 100 == 0 && year % 400 != 0) return m[1];
	return m[1] + 1;
}