<!--Start-->
/*****
// +---------------------------------------------------------------------------------------
// | filename: selectdate.js
// | Copyright (c)  askswin(五月雪)
// | Modify Date: 2004-5-15
// | Note: 日期选择表的javascript 脚本
// |    使用方法:在要调用的页面</haed>前加入(注意路径)：
// |    <script language="javascript" src="js/selectdate.js"></script>
// |    <input type="text" name="Ndate"><input type="button" value="▼" onClick="ShowDate('day')">
// |    注意一个button对应一个文本框！如果一行中在button前有两个文本框，则值默认给第一个！可以用表格分开
// |    一行要有两个日期选框的方法：
// |      <label>
// |        <input type="text" name="textfield">
// |        <input type="button" name="Submit" value="按钮" onClick="ShowDate('day')">
// |      </label> <label>
// |        <input type="text" name="textfield">
// |        <input type="button" name="Submit" value="按钮" onClick="ShowDate('day')">
// |      </label>
// +---------------------------------------------------------------------------------------
*****/


var YearStr,MonthStr,DayStr,NowDayStr;
var WeekStr,week,week_one;
var WeekArr = new Array("日", "<font size=2>一</font>", "<font size=2>二</font>", "<font size=2>三</font>","<font size=2>四</font>", "<font size=2>五</font>", "<font size=2>六</font>");
var dt = new Date();
var showtype;
var caleX = 0;
var caleY = 0;

YearStr  = dt.getYear();
MonthStr = dt.getMonth() + 1;
NowDayStr = DayStr   = dt.getDate();
week     = dt.getDay();
WeekStr  = WeekArr[week];
document.write("<DIV id=idCalendar style='position:absolute;top:100px;left:100px;width:160px;border: #000000 1px solid;background-color: #F7F7F7;display:none;z-index:99'></DIV>");

function initCalendar(){
 var CaleHTML="";
 CaleHTML += "<TABLE border=0 cellspacing=0 cellpadding=1 width='100%'>";
 CaleHTML += "<TR bgcolor=#0599BF><TD><BUTTON onclick='prevMonth()' style='font-size: 10px;height: 16px;width: 16px;border-top: 1px solid #FFCC66;border-right: 1px solid #000000;border-bottom: 1px solid #000000;border-left: 1px solid #FFCC66;color: #FFFFFF;background-color: #FF6600;'><span lang=EN-US >&#9668;</span></BUTTON></TD>";
 CaleHTML += "<TD align=center><SPAN style='font-size: 12px; color:white;'><label id=YY style='cursor:hand' onDblClick='cYY(this)' title='双击可选择年份！'>"+ YearStr +"</label>年<label id=MM style='cursor:hand' onDblClick='cMM(this)' title='双击可选择月份！'> "+ MonthStr +" </label>月</SPAN></TD>"
 CaleHTML += "<TD align=right><BUTTON onclick='nextMonth()' style='font-size: 10px;height: 16px;width: 16px;border-top: 1px solid #FFCC66;border-right: 1px solid #000000;border-bottom: 1px solid #000000;border-left: 1px solid #FFCC66;color: #FFFFFF;background-color: #FF6600;'><span lang=EN-US >&#9658;</span></BUTTON></TD></TR>";
 CaleHTML += "<TR><TD colspan=3>";
 CaleHTML += "<TABLE border=0 cellspacing=0 cellpadding=0 width='100%'><TR>";
 for(var i=0; i<WeekArr.length; i++){
  CaleHTML += "<TD align=center valign=middle style='font-size:12px;' height=22>" + WeekArr[i] + "</TD>";
 }
 CaleHTML += "</TR><TR><TD colspan=7><table width=100% border=0 cellpadding=0 cellspacing=0 ><tr><td bgcolor=#cccccc></td></tr></table></TD></TR>";
 CaleHTML += bodyCalendar();
 CaleHTML += "</TABLE>";
 CaleHTML += "</TD></TR>";
 CaleHTML += "<TR><TD colspan=3 style='cursor:hand;font-size:12px' title='点击可重置为当前系统日期！' onclick='ReSet();'>今天是：<font color=red>"+ dt.getYear() +"-"+ (dt.getMonth() + 1) +"-"+ dt.getDate() +"</font></TD></TR>";
 CaleHTML += "</TABLE>";
 return CaleHTML;
}

function bodyCalendar(){
 var ResultStr = "<TR>";
 var tempStr = "" + MonthStr + "/1/" + YearStr;
 var d = new Date(tempStr);
 week_one = d.getDay();
 for(var i=0;i<week_one;i++){
  ResultStr += "<TD></TD>";
 }
 var bYear = YearStr%4;
 var maxDay;
 switch(MonthStr){
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
   maxDay = 31;
   break;
  case 2:
   if(bYear==0)
    maxDay = 29;
   else
    maxDay = 28;
   break;
  default:
   maxDay = 30;
   break;
 }
 var k;
 var bday;
 for(var i=0;i<maxDay;i++){

  if((i+1) == DayStr)
   bday = "border: #006432 1px solid;";
  //else if((i+1) == NowDayStr)
   //bday = "border: #ff0000 1px solid;";
  else
   bday = "border: #ffffff 1px solid;";

  BRStr = i+week_one+1;
  if(BRStr>=7 && BRStr%7==0){

   ResultStr += "<TD align=center style='font-size=12px;cursor:hand;"+ bday +"' onmouseover='TDMove()' onmouseout='TDOut()' onclick='TDClick()'>"+ (eval(i+1)<10?'0':'')+eval(i+1) +"</TD></TR><TR>";
   k=0;
  }
  else{
   ResultStr += "<TD align=center style='font-size=12px;cursor:hand;"+ bday +"' onmouseover='TDMove()' onmouseout='TDOut()' onclick='TDClick()'>"+ (eval(i+1)<10?'0':'')+eval(i+1) +"</TD>";
   k+=1;
  }
 }
 for(var i=0;i<7-k;i++){
  ResultStr += "<TD></TD>";
 }
 ResultStr += "</TR>";
 return ResultStr;
}
function cYY(Yobj){
	nowYear=Yobj.innerHTML;
	newYear="<select name='NewYearSelect' onchange='savecYY()' style='font-family: Verdana;font-size: 8px;background-color: #FFFFFF;'>;"
	for(i=Number(nowYear)-3;i<=Number(nowYear)+3;i++)
		newYear+="<option value="+i+" "+(i==nowYear?"selected":"")+"  style='background-color: #CCCCCC;'>"+i+"</option>";
	newYear+="</select>";
	Yobj.innerHTML=newYear;
}
function savecYY(){
	YearStr=document.all.NewYearSelect.value;
	document.all.idCalendar.innerHTML = initCalendar();
}
function cMM(Yobj){
	nowMonth=Yobj.innerHTML;
	newMonth="<select name='NewMonthSelect' onchange='savecMM()' style='font-family: Verdana;font-size: 8px;background-color: #FFFFFF;'>;"
	for(i=1;i<=12;i++)
		newMonth+="<option value="+i+" "+(i==nowMonth?"selected":"")+" style='background-color: #CCCCCC;'>"+i+"</option>";
	newMonth+="</select>";
	Yobj.innerHTML=newMonth;

}
function savecMM(){
	MonthStr=document.all.NewMonthSelect.value;
	document.all.idCalendar.innerHTML = initCalendar();
}

function prevMonth(){
 MonthStr = Number(MonthStr)-1;
 if(MonthStr == 0){
  MonthStr = 12;
  YearStr = Number(YearStr)-1;
 }

 idCalendar.innerHTML = initCalendar();
}

function nextMonth(){
 MonthStr = Number(MonthStr)+1;
 if(MonthStr > 12){
  MonthStr = 1;
  YearStr = Number(YearStr)+1;
 }
 idCalendar.innerHTML = initCalendar();
}


function TDMove(){
 var obj = window.event.srcElement;
 obj.style.setAttribute("border", "#005AB5 1px solid");
}

function TDOut(){
 var obj = event.srcElement;
 if(parseInt(obj.innerText) == DayStr)
  obj.style.setAttribute("border","#006432 1px solid");
 else
  obj.style.setAttribute("border","#ffffff 1px solid");
}
var tobj;
function ShowDate(stype){
 showtype = stype;
 var obj  = event.srcElement;
 var pobj = obj.parentElement;
 tobj = pobj.childNodes(0);
 v = tobj.value;
 if(v != ""){
  pos = v.indexOf("-");
  if(pos != -1 && pos == 4){
   YearStr = parseInt(v.substring(0,pos));
   v = v.substring(pos+1,v.length);
  }
  pos = v.indexOf("-");
  if(pos != -1){
   MonthStr = parseInt(v.substring(0,pos));
   v = v.substring(pos+1,v.length);
  }
  if(v.length>0)
   DayStr = parseInt(v);
 }
 var objParent = obj.offsetParent;
 var left      = obj.offsetLeft;
 var top    = obj.offsetTop;
 while(objParent.tagName.toUpperCase() != "BODY"){
  left += objParent.offsetLeft;
  top  += objParent.offsetTop;
  objParent = objParent.offsetParent;
 }
 left += obj.offsetWidth;
 top  += obj.offsetHeight;
 wheight=(screen.height==600)?260:450;
 idCalendar.style.top = (top>wheight)?top-160:top+1;
 idCalendar.style.left = (left-160)<4?6:(left-160);
 caleX = left - 160;
 caleY = top + 1;
 idCalendar.innerHTML = initCalendar();
 idCalendar.style.display="";
 hideElement("SELECT");
}

function TDClick(){
 DayStr = event.srcElement.innerText;
 if(showtype=="day"){
  tobj.value = YearStr + "-" + (MonthStr<10?"0":"") + MonthStr + "-" + DayStr;
 }
 else{
  tobj.value = YearStr + "-" + MonthStr;
 }
 hideCalendar();
}

function getCaleToSec(){
 var dt;
 if(showtype=="day")
  dt = new Date(MonthStr+"/"+DayStr+"/"+YearStr);
 else
  dt = new Date(MonthStr+"/1/"+YearStr);
 var s  = dt.getTime();
 return s/1000;
}

function hideCalendar(){
 idCalendar.style.display = "none";
 showElement("SELECT");
}

function C_MouseUp(){
 if(idCalendar == null)
  return;
 var top  = parseInt(idCalendar.style.top);
 var left = parseInt(idCalendar.style.left);
 var wi   = idCalendar.offsetWidth;
 var he   = idCalendar.offsetHeight;
 var x    = event.clientX;
 var y    = event.clientY;
 var x1 = left + wi;
 var y1 = top + he;

 if(x>x1||x<left||y>y1||y<top){
  hideCalendar();
  showElement("SELECT");
 }
}

function hideElement(elmID){
 for (i = 0; i < document.all.tags(elmID).length; i++){
  obj = document.all.tags(elmID)[i];
  if (! obj || ! obj.offsetParent)
   continue;

  objLeft   = obj.offsetLeft;
  objTop    = obj.offsetTop;
  objParent = obj.offsetParent;
  while (objParent.tagName.toUpperCase() != "BODY")
  {
   objLeft  += objParent.offsetLeft;
   objTop   += objParent.offsetTop;
   objParent = objParent.offsetParent;
  }

  if(caleX > (objLeft + obj.offsetWidth) || objLeft > (caleX + idCalendar.offsetWidth))
   ;
  else if(objTop > (caleY + idCalendar.offsetHeight))
   ;
  else if(caleY > (objTop + obj.offsetHeight))
   ;
  else
   obj.style.visibility = "hidden";
 }
}

function showElement(elmID){
 for (i = 0; i < document.all.tags(elmID).length; i++){
  obj = document.all.tags(elmID)[i];
  if (! obj || ! obj.offsetParent)
   continue;
  obj.style.visibility = "";
 }
}
function ReSet(){
	YearStr  = dt.getYear();
	MonthStr = dt.getMonth() + 1;
	NowDayStr = DayStr   = dt.getDate();
	week     = dt.getDay();
	WeekStr  = WeekArr[week];
	document.all.idCalendar.innerHTML = initCalendar();
}
document.onmouseup = C_MouseUp;
<!--End-->
