isIE = (document.all ? true : false);
var pElement;
function getIEPosX(elt)
{ 
	return getIEPos(elt,"Left");
}
function getIEPosY(elt)
{ 
	return getIEPos(elt,"Top");
}
function getIEPos(elt,which)
{
	iPos = 0
 	while (elt!=pElement)
	{
 		iPos += elt["offset" + which] 		
	 	elt = elt.offsetParent
	}
 	return iPos
}
function getXBrowserRef(eltname)
{
 	return (isIE ? document.all[eltname].style : document.layers[eltname]);
}
function hideElement(eltname)
{ 
	getXBrowserRef(eltname).visibility = 'hidden';	
}
function toggleVisible(eltname)
{
 	elt = getXBrowserRef(eltname);
 	
 	if (elt.visibility == 'visible' || elt.visibility == 'show')
	{
   		elt.visibility = 'hidden';
	}
	else
	{
   		fixPosition(eltname);
   		elt.visibility = 'visible';
 	}
}
function setPosition(elt)
{
 	
	var scrollBarX=document.all.divDTPicker.ScrollBarX;
	var table=document.all.tablePicker;
	if (isIE)
	{
		var t=getIEPosX(displayElement);
		var temp;
		if(t+2-pElement.scrollLeft+table.offsetWidth>pElement.offsetWidth-scrollBarX)
		{
			temp=pElement.offsetWidth-table.offsetWidth+pElement.scrollLeft-scrollBarX-4;
			if(temp>0)
				elt.left=temp;
			else
				elt.left = 0;
		}
		else
		{
			elt.left = getIEPosX(displayElement)+2;
		}		
		t=getIEPosY(displayElement);
		if(t+displayElement.offsetHeight+2-pElement.scrollTop+table.offsetHeight>pElement.offsetHeight)
		{
			temp=t-table.offsetHeight+2;
			if(temp>0)
				elt.top=temp;
			else
				elt.top=t+displayElement.offsetHeight+2;
		}
		else
		{
			elt.top=t+displayElement.offsetHeight+2;
		}
	}
}
// 判断浏览器
isIE = (document.all ? true : false);
// 初始月份及各月份天数数组
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月","八月", "九月", "十月", "十一月", "十二月");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31);
var displayMonth;
var displayYear;
var displayDivName;
var displayElement;
function getDays(month, year)
{
    //测试选择的年份是否是润年？
    	if (1 == month)
		return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
     else
          return daysInMonth[month];
}
function getToday()
{
	// 得到今天的日期
	this.now = new Date();
     	this.year = this.now.getFullYear();
     	this.month = this.now.getMonth();
     	this.day = this.now.getDate();
}
// 并显示今天这个月份的日历
today = new getToday();
function newCalendar(eltName,attachedElement)
{
	if (attachedElement)
	{
		if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
	     	displayElement = attachedElement;
	}
	displayDivName = eltName;
     	today = new getToday();
     	var parseYear = parseInt(displayYear + '');
     	var newCal = new Date(parseYear,displayMonth,1);
     	var day = -1;
     	var startDayOfWeek = newCal.getDay();
     	if ((today.year == newCal.getFullYear()) && (today.month == newCal.getMonth()))day = today.day;
     	var intDaysInMonth = getDays(newCal.getMonth(), newCal.getFullYear());
     	var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
    	if (isIE)
  	{
		var elt = document.all[eltName];
	     	elt.innerHTML = daysGrid;
	}
	else
	{
	     	var elt = document.layers[eltName].document;
	     	elt.open();
	     	elt.write(daysGrid);
	     	elt.close();
	}
	window.setTimeout('document.all.tablePicker.focus();',1);
}
function incMonth(delta,eltName)
{
	displayMonth += delta;
	if (displayMonth >= 12)
	{
		displayMonth = 0;
	     	incYear(1,eltName);
	}
	else if (displayMonth <= -1)
	{
	     displayMonth = 11;
	     incYear(-1,eltName);
	}
	else
	{
	     newCalendar(eltName);
	}
}
function incYear(delta,eltName)
{
	displayYear = parseInt(displayYear + '') + delta;
	newCalendar(eltName);
}
function hidePicker()
{
	var e=document.activeElement;
	if(e.tagName=='A')e=e.parentElement;		
	if(e.tagName=='TD')
	{
		e=e.parentElement.parentElement.parentElement;
		if(e.id=='tablePicker')
		{		
			e.focus();
			return;
		}
	}	
	document.all.tablePicker.parentElement.style.visibility = 'hidden';
}
function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName)
{
	var daysGrid;
	var month = newCal.getMonth();
	var year = newCal.getFullYear();
	var isThisYear = (year == new Date().getFullYear());
	var isThisMonth = (day > -1)
	daysGrid = "<table id=tablePicker onfocus='return true;' onblur='hidePicker()' Width=270 Height=156 bordrColor='#f6f6f6' cellSpacing='0' borderColorDark='#006699' cellPadding='0' borderColorLight='#006699' border='1' bgcolor=#ffffff style=FONT-SIZE:9pt;FONT-FAMILY:宋体,serif>";
	daysGrid += "<tr borderColor=#000080 bgColor=#000080 Height=20 Align=center><td colSpan=7>";
	daysGrid += '<a href="javascript:incYear(-1,\'' + eltName + '\')"><font color=white>&lt;&lt;</font></a>&nbsp';
	if (isThisYear)
		daysGrid += '<font color=lightgreen>' + year + '年</font>';
	else
		daysGrid += '<font color=white>' + year + '年</font>';
	daysGrid += '&nbsp<a href="javascript:incYear(1,\'' + eltName + '\')"><font color=white>&gt;&gt</font></a>';
	daysGrid += '&nbsp;&nbsp;&nbsp;';
	daysGrid += '<a href="javascript:incMonth(-1,\'' + eltName + '\')"><font color=white>&lt;&lt;</font></a>&nbsp';
	if (isThisMonth)
		daysGrid += '<font color=lightgreen>' + months[month] + '</font>';
	else
		daysGrid += '<font color=white>' + months[month] + '</font>';
	daysGrid += '&nbsp<a href="javascript:incMonth(1,\'' + eltName + '\')"><font color=white>&gt;&gt</font></a>';	
	daysGrid += "</td></tr>"
	daysGrid += "<tr Height=20 Align=center><td style=BORDER-LEFT-STYLE:none;BORDER-RIGHT-STYLE:none>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td</tr>"
	var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	for (var intWeek = 0; intWeek < 6; intWeek++)
	{
		daysGrid += "<tr Align=center Height=18>"
		var dayOfMonth;
	     	for (var intDay = 0; intDay < 7; intDay++)
		{
	     		dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
		 	if (dayOfMonth <= 0)
			{
	          	daysGrid += "<td borderColor=#ffffff>&nbsp</td>"
			}
			else if(dayOfMonth <= intDaysInMonth)
			{
		   		daysGrid += '<td borderColor=#ffffff onclick="setDay(' + dayOfMonth + ',\'' + eltName + '\')" ';
				var color = "black";
		   		if (day > 0 && day == dayOfMonth) color="mediumseagreen";
		   		daysGrid += 'style="cursor:hand;color:' + color + '">';
		   		daysGrid += dayOfMonth;
		   		daysGrid += "</td>"
			}
		}
		daysGrid += "</tr>"
	}
	return daysGrid + "</table>";
}
function setDay(day,eltName)
{
	var disMonth=(displayMonth + 1).toString();
	var disDay=day.toString();
	disMonth=disMonth.length<2?("0"+disMonth):disMonth;
	disDay=disDay.length<2?("0"+disDay):disDay;
	displayElement.value = displayYear + "-" + disMonth + "-" + disDay;
	displayElement.focus();
}
// fixPosition() 这个函数和前面所讲的那个函数一样
function fixPosition(eltname)
{
	elt = getXBrowserRef(eltname);
	positionerImgName = eltname + 'Pos';
	// hint: try setting isPlacedUnder to false
	isPlacedUnder = false;
	if (isPlacedUnder)
		setPosition(elt,positionerImgName,true);
	else
		setPosition(elt,positionerImgName)
}
function toggleDatePicker(formElt,pElt)
{
	if(!pElt)
		pElement=document.body;
	else
		pElement=pElt;
  	if(!document.all.divDTPicker)
	{
		var div=document.createElement("<DIV id='divDTPicker' style='left:0;top:0;Width:1000;Height:1000;overflow:scroll;POSITION:absolute;visibility:hidden'></DIV>");
		pElement.appendChild(div);
		div.innerHTML='<TABLE id=tempTable border=1 width=100% height=100%><TR><TD>A</TD></TR><TABLE>';
		div.ScrollBarX=div.offsetWidth-document.all.tempTable.offsetWidth;
		div.style.width='';
		div.style.height='';
		div.style.overflow='';
	}
	var time;
	var dateValue=formElt.value;
	if(dateValue!='')
	{
		var re=new RegExp("-","g"); 
		dateValue=dateValue.replace(re,'/');
		time=new Date(dateValue);
	}
	if(!time || time=='NaN')time=new Date();
	displayMonth = time.getMonth();
	displayYear = time.getFullYear();
	
	newCalendar("divDTPicker",formElt);
  	toggleVisible("divDTPicker");
}
