﻿//此控件由杨天华先生编写，如调用请注明原作者。
//成功应用于酒店预订网www.dchhhh.com
var mydate='<table id="YangDate" style="visibility:hidden;" width="200" cellspacing="1" cellpadding="1"> <tr class="head">   <td colspan="7"><table width="100%" border="0" cellspacing="0" cellpadding="0">     <tr>       <td id="pyear" title="上一年" onclick="nextYear(-1)">&lt;&lt;</td>       <td id="pmonth" title="上一月" onclick="nextMonth(-1)">&lt;</td>       <td class="newYear">         <select id="newYear" name="newYear" onchange="newDate();"></select>         </td>       <td><select id="newMonth" name="newMonth" onchange="newDate();">         <option value="1">一月</option>         <option value="2">二月</option>         <option value="3">三月</option>         <option value="4">四月</option>         <option value="5">五月</option>         <option value="6">六月</option>         <option value="7">七月</option>         <option value="8">八月</option>         <option value="9">九月</option>         <option value="10">十月</option>         <option value="11">十一月</option>         <option value="12">十二月</option>       </select></td>       <td id="nmonth" title="下一月" onclick="nextMonth(1)">&gt;</td>       <td id="nyear" title="下一年" onclick="nextYear(1)">&gt;&gt;</td>     </tr>   </table></td> </tr> <tr class="wday">   <td width="44">日</td>   <td width="22">一</td>   <td width="22">二</td>   <td width="22">三</td>   <td width="22">四</td>   <td width="39">五</td>   <td width="29">六</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td>   <td>&nbsp;</td> </tr> <tr>   <td colspan="7"><table width="100%" border="0" cellspacing="0" cellpadding="0" id="footTable">     <tr>       <td onclick="showToday()" style="width:50%"><center><div>今天</div></center></td>       <td onclick="displayDate(\'hidden\');"><center><div>关闭</div></center></td>     </tr>   </table></td> </tr></table>'
document.write(mydate);
var i=0;
var lastDay=-1;
var textBox;
var today=new Date();
var myTable=document.getElementById("YangDate");
var ymd="0.0.0".split(".");

Date.prototype.addDate=function(days)
{   
	var date = this.valueOf(); 
	date += days*24*3600*1000; 
	return new Date(date);
}
function openDate(tb,ld)
{
	textBox=tb;
	if(!ld)
	{
		ld=-1;
	}
	lastDay=ld;
	displayDate("visible");
	showThisDate();
	var x = textBox.offsetLeft;
	var y = textBox.offsetTop;
	while(tb.offsetParent)
	{
    	tb=tb.offsetParent;
		x+=tb.offsetLeft;
    	y+=tb.offsetTop;
	}
	myTable.style.left=x+"px";
	myTable.style.top=(y+22)+"px";
}
function displayDate(show)
{
	myTable.style.visibility=show;
}
function hideDate(e)
{
	if(myTable.style.visibility=="hidden")
	{
		return;	
	}
	if(!textBox)
	{
		return;
	}
	if(!e)
	{
		e = window.event;
	} 
	var temp = (typeof e.target != "undefined")?e.target:e.srcElement; 
	if(temp.id)	
	{
		if(temp.id==textBox.id)
		{
			return;	
		}
	}
	while(temp.offsetParent)
	{
		if(temp.id==myTable.id)
		{
			return;	
		}
		temp=temp.offsetParent;
	}
	myTable.style.visibility="hidden";
}
function resizeDate()
{
	if(myTable)
	{
		if(myTable.style.visibility=="visible")
		{
			openDate(textBox);	
		}
	}
}
function beginDate()
{
	today=new Date();
	var sl=document.getElementById("newYear");
	for(i=0;i<5;i++)
	{
		sl.options[i]=new Option((today.getFullYear()+i)+"年",today.getFullYear()+i);
	}
}

function newDate()
{
	showDate(document.getElementById("newYear").value,document.getElementById("newMonth").value);
}

function showDate(y,m)
{
	today=new Date();
	var yestoday=today.addDate(lastDay);
	var date0=new Date(y,m-1,1);
	var date1=new Date(y,m-1,1);
	var date2=new Date(y,m,1);
	var wday=date1.getDay();
	var td;
	i=0;
	myTable.rows[6].style.display="";
	myTable.rows[7].style.display="";
	while(i<42)
	{
		td=myTable.rows[Math.floor(i/7)+2].cells[i%7];
		td.innerHTML="";
		td.className="";
		td.onmouseover="";
		td.onmouseout="";
		td.onclick="";
		i=i+1;
	}
	i=0;
	while(date1<date2)
	{
		td=myTable.rows[Math.floor((i+wday)/7)+2].cells[(i+wday)%7];
		td.innerHTML=date1.getDate();
		if(date1>yestoday)
		{
			td.onmouseover=function()
			{
				this.className="moveOn";
			}
			td.onclick=function()
			{
				textBox.value=y+"-"+m+"-"+this.innerHTML;
				if(textBox.id.indexOf("date1")!=-1)
				{
					var tb2=document.getElementById(textBox.id.replace("date1","date2"));
					if(tb2)
					{
						var tb2v=new Date(y,m-1,parseInt(this.innerHTML)+1);
						tb2.value=tb2v.getFullYear()+"-"+(parseInt(tb2v.getMonth())+1)+"-"+tb2v.getDate();
						//openDate(tb2);
						displayDate("hidden");	
					}
					else
					{
						displayDate("hidden");	
					}
				}
				else
				{
					displayDate("hidden");	
				}
			}
			if(date1<today)
			{
				td.className="today";
				td.onmouseout=function()
				{
					this.className="today";
				}
			}
			else
			{
				td.onmouseout=function()
				{
					this.className="";
				}
			}
		}
		else
		{
			td.className="disable";
		}
		if(ymd.length==3)
		{
			if((ymd[0]==y&&ymd[1]==m&&ymd[2]==date1.getDate())||(ymd[2]==y&&ymd[0]==m&&ymd[1]==date1.getDate()))
			{
				td.className="thisDay";
				td.onmouseout=function()
				{
					this.className="thisDay";
				}
			}
		}
		i++;
		date1=date0.addDate(i);
	}
	
	if(i+wday<29)
	{
		myTable.rows[6].style.display="none";
		myTable.rows[7].style.display="none";
	}
	else
	{
		if(i+wday<36)
		{
			myTable.rows[7].style.display="none";
		}
	}
}
function showToday()
{
	today=new Date();
	textBox.value=today.getFullYear()+"-"+(today.getMonth()+1)+"-"+today.getDate();
	displayDate("hidden");
}
function nextYear(n)
{
	var sl=document.getElementById("newYear");
	var si=sl.selectedIndex+n;
	if(si<0 || si>=sl.length)
	{
		return;
	}
	sl.selectedIndex=si;
	newDate();
}
function nextMonth(n)
{
	var sl=document.getElementById("newMonth");
	var si=sl.selectedIndex+n;
	if(si<0 || si>=sl.length)
	{
		return;
	}
	sl.selectedIndex=si;
	newDate();
}
function showThisDate()
{
	ymd="0.0.0".split(".");
	try{
		today=new Date();
		var thisDate=textBox.value;
		ymd=thisDate.split("-");
		if(ymd.length==3)
		{
			if(ymd[0]>=today.getFullYear()&&ymd[0]<today.getFullYear()+5&&ymd[1]>0&&ymd[1]<13)
			{
				document.getElementById("newYear").value=ymd[0];
				document.getElementById("newMonth").value=ymd[1];
				newDate();
			}
		}
		else
		{
			ymd=thisDate.split("/");
			if(ymd.length==3)
			{
				if(ymd[2]>=today.getFullYear()&&ymd[2]<today.getFullYear()+5&&ymd[0]>0&&ymd[0]<13)
				{
					document.getElementById("newYear").value=ymd[2];
					document.getElementById("newMonth").value=ymd[0];
					newDate();
				}
			}
		}
	}
	catch(e)
	{
		
	}
}
beginDate();
document.getElementById("newMonth").selectedIndex=today.getMonth();
newDate();
document.onmouseup=hideDate;
window.onresize=resizeDate;
