﻿function leapYear(year){
	if(year%4==0) days=29;
	else days=28;
	return days;
}

function getDays(month, year) { //每月天数
	var daysLength	=	[31,leapYear(year),31,30,31,30,31,31,30,31,30,31];
	return daysLength[month];
}

function getMonthName(month) { //月份英文名
	var monthName	=	new Array("January","February","March","April","May","June","July","August","September","October","November","December")
	return monthName[month]
}

function getWeekName(day){ //周名
	var weekName	=	new Array("SUN","MON","TUE","WED","THR","FRI","SAT")
	return weekName[day]
}

function setCal(showObj,adjTime){
    if (typeof adjTime=="undefined"){
		var nowdate	=	new Date();
		var year	=	nowdate.getFullYear();
		var month	=	nowdate.getMonth();
		nowdate		=	null;
	}
	else{
		var adjArray=	adjTime.split("/");
		var year	=	adjArray[0]-0;
		var month	=	adjArray[1]-1;
		adjArray	=	null;
	}

	var firstDay=	new Date(year, month,1);
	var dayone	=	firstDay.getDay();
	firstDay	=	null;

	drawCalendar(year,month,dayone,showObj)
}

function drawCalendar(year,month,dayone,showObj){
	var cols	=	7;
	var rows	=	Math.ceil((dayone+getDays(month,year))/cols)
	var days	=	getDays(month,year)
	var oDay	=	1

	var curday	=	new Date();
	var curyear	=	curday.getFullYear();
	var curmonth=	curday.getMonth();
	var curdate	=	curday.getDate();
	curday		=	null;

	if (month==11) nextTime=(year+1)+'/1';
	else nextTime=year+'/'+(month+2);
	if (month==0) lastTime=(year-1)+'/12';
	else lastTime=year+'/'+(month);

    nextYear=year+1+'/'+(month+1);
    lastYear=year-1+'/'+(month+1);

	var html=""
	html+='<table cellspacing="1" border="0" id="calBody">';
	html+='<tr><td colspan="'+cols+'" id="calHead" style="text-align:right;">';
	html+=getMonthName(month)+'&nbsp;&nbsp;'+year;
	html+='<img src="../images/icon_close.gif" height="10" width="10" align="absmiddle" style="margin-left:50px;cursor:pointer;" onclick="closeCal(\''+showObj+'\')" alt="关闭窗口"></td></tr>'

	html+='<tr>';
	for (i=0;i<cols;i++) html+='<td class="weekName">'+getWeekName(i)+'</td>'
	html+='</tr>'
	for (i=0;i<rows;i++){
		html+='<tr>';
		for (j=0;j<cols;j++){
			if (j<dayone && i==0) html+='<td class="blankCell">&nbsp;</td>'
			else {
				if (oDay<=days){
                    if(j==0 || j==(cols-1)) cssName=" leaveDay";
                    else if(curyear==year && curmonth==month && curdate==oDay) cssName=" cur";
                    else cssName=""
                    html+='<td class="dayCell'+cssName+'" onclick="showDate('+year+','+month+','+oDay+',\''+showObj+'\')">'+oDay+'</td>';
					oDay++;
                }
				else html+='<td class="blankCell">&nbsp;</td>';
			}
		}
		html+='</tr>'
	}
    if(rows!=6) html+='<tr><td colspan="'+cols+'" class="blankCell">&nbsp;</td></tr>'
    html+='<tr><td colspan="'+cols+'" nowrap="nowrap">'
    html+=selDate(curyear,month,year,showObj)
	html+='<input type="button" value="&lt;&lt;" onclick="setCal(\''+showObj+'\',\''+lastYear+'\')" class="chgDate" title="Prev Year" /> ';
	html+='<input type="button" value="&lt;" onclick="setCal(\''+showObj+'\',\''+lastTime+'\')" class="chgDate" title="Prev Month" /> ';
	html+='<input type="button" value=" " onclick="setCal(\''+showObj+'\')" class="chgDate" title="Today" /> ';
	html+='<input type="button" value="&gt;" onclick="setCal(\''+showObj+'\',\''+nextTime+'\')" class="chgDate" title="Next Month" /> '
	html+='<input type="button" value="&gt;&gt;" onclick="setCal(\''+showObj+'\',\''+nextYear+'\')" class="chgDate" title="Next Year" />'
    html+='</td></tr>'
    html+='</table>'
	document.getElementById("sub"+showObj).innerHTML=html
}

function showDate(y,m,d,showObj){//获取单元格内日期(yyyy-mm-dd)
    var o=document.getElementById("sub"+showObj);

    m++;
    if(m<10) m="0"+m;
    if(d<10) d="0"+d;
    document.getElementById(showObj).value=y+"-"+m+"-"+d;
    o.style.display="none";
    shunDown(true)
}

function selDate(y,curm,cury,showObj){//生成下拉年月
    var html='';var cur=""
    html+='<select name="selY" id="selY" onchange="turnDate(\''+showObj+'\')">'
    for(i=y;i>1939;i--){
        if(i==cury) cur=" selected";
        else cur="";
        html+='<option value="'+i+'"'+cur+'>'+i+'</option>';
    }
    html+='</select> ';

    html+='<select name="selM" id="selM" onchange="turnDate(\''+showObj+'\')">';
    for(i=1;i<=12;i++){
        if(i==(curm+1)) cur=" selected";
        else cur="";
        html+='<option value="'+i+'"'+cur+'>'+i+'</option>';
    }
    html+='</select> ';
    return html;
}

function turnDate(showObj){//选择下拉年月
    var oYear=document.getElementById("selY");
    var oMonth=document.getElementById("selM");
    datestr=oYear.value+"/"+oMonth.value;
    setCal(showObj,datestr)
}

function showCal(showObj){//在指定OBJ里显示月历
    var o=document.getElementById("sub"+showObj);
    o.className="posCal"

    if(o.style.display=="none"){
        o.style.display="";
        shunDown(false)
    }
    else {
        o.style.display="none";
        shunDown(true);
    }
}

function shunDown(ifon){//显示日历时SELECT控件回避
    var e=document.forms[0].elements;
    if(document.forms[0]){
        for(i=0;i<e.length;i++){
            if(e[i].tagName=="SELECT" && e[i].name!="selY" && e[i].name!="selM"){
                if(ifon==true) e[i].style.visibility="visible";
                if(ifon==false) e[i].style.visibility="hidden";
            }
        }
    }
}

function closeCal(o){
    obj=document.getElementById("sub"+o)
    obj.style.display="none";
    shunDown(true);
}
