/*********************************************************
 * 	使用方法
 * 		控件调用onclick="vodcms_date(event,this,this)"
 * 	如下，给控件设置为readonly
 * 	<input type="text" style="border:1px solid #cccccc;" 
 * 		size="15" onclick="vodcms_date(event,this,this)" 
 * 		onfocus="this.select()" readonly="readonly" />
 * 	
 * 	如果页面乱码，把下面包含汉字的定义项放到页面中即可
********************************************************/
var gMonths=new Array("01","02","03","03","05","06","07","08","09","10","11","12");
var WeekDay=new Array("日","一","二","三","四","五","六");
var strToday="Today";
var strYear="";
var strMonth="";
var strDay="";
var splitChar="-";
var startYear=2000;
var endYear=2040;
var dayTdHeight=12;
var dayTdTextSize=12;
var gcNotCurMonth="#F5F5F5";
var gcRestDay="#FF6600";
var gcWorkDay="#444444";
var gcWeekDay="#000000";
var gcMouseOver="#FFE4AD";
var gcMouseOut="#F4F4F4";
var gcToday="#444444";
var gcTodayMouseOver="#FF6D12";
var gcTodayMouseOut="#FFCC66";
var gdCtrl=new Object();
var goSelectTag=new Array();
var gdCurDate=new Date();
var giYear=curYear=gdCurDate.getFullYear();
var giMonth=curMonth=gdCurDate.getMonth()+1;
var giDay=curDay=gdCurDate.getDate();
function $wwl()
{
	var elements=new Array();
	for(var i=0;i<arguments.length;i++) 
	{
		var element=arguments[i];
		if(typeof(arguments[i])=='string')
		{
			element=document.getElementById(arguments[i]);
		}
		if(arguments.length==1)
		{
			return element;
		}
		elements.Push(element);
	}
	return elements;
}
Array.prototype.Push=function()
{
	var startLength=this.length;
	for(var i=0;i<arguments.length;i++)
	{
		this[startLength+i]=arguments[i];
	}
	return this.length;
}
String.prototype.HexToDec=function()
{
	return parseInt(this,16);
}
String.prototype.cleanBlank=function()
{
	return this.isEmpty()?"":this.replace(/\s/g,"");
}
function checkColor()
{
	var color_tmp=(arguments[0]+"").replace(/\s/g,"").toUpperCase();
	var model_tmp1=arguments[1].toUpperCase();
	var model_tmp2="rgb("+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(5).HexToDec()+")";model_tmp2=model_tmp2.toUpperCase();
	if(color_tmp==model_tmp1 ||color_tmp==model_tmp2)
	{
		return true;
	}
	return false;
}
function $V()
{
	return $wwl(arguments[0]).value;
}
function vodcms_date(evt,popCtrl,dateCtrl)
{
	evt.cancelBubble=true;
	gdCtrl=dateCtrl;var evtDate="";
	if(document.all)
	{
		evtDate=evt.srcElement.value;
	}else{
		evtDate=evt.currentTarget.value;
	}
	var reg=/(^\d{4})\-([0-1]\d)\-([0-2]\d$)/;
	if(reg.test(evtDate))
	{
		reg.exec();
		giYear=RegExp.$1;
		giMonth=RegExp.$2;
		giDay=RegExp.$3;
	}
	fSetYearMon(giYear,giMonth);
	var point=fGetXY(popCtrl);
	with($wwl("calendardiv").style)
	{
		left=point.x+"px";
		top=(point.y+popCtrl.offsetHeight+1)+"px";
		visibility='visible';
		zindex='99';position='absolute';
	}
	$wwl("calendardiv").focus();
}
function fSetDate(iYear,iMonth,iDay)
{
	var iMonthNew=new String(iMonth);
	var iDayNew=new String(iDay);
	if(iMonthNew.length<2)
	{
		iMonthNew="0"+iMonthNew;
	}
	if(iDayNew.length<2)
	{
		iDayNew="0"+iDayNew;
	}
	gdCtrl.value=iYear+splitChar+iMonthNew+splitChar+iDayNew;fHideCalendar();
}
function fHideCalendar()
{
	$wwl("calendardiv").style.visibility="hidden";
	for(var i=0;i<goSelectTag.length;i++)
	{
		goSelectTag[i].style.visibility="visible";
	}
	goSelectTag.length=0;
}
function fSetSelected()
{
	var iOffset=0;
	var iYear=parseInt($wwl("tbSelYear").value);
	var iMonth=parseInt($wwl("tbSelMonth").value);
	var aCell=$wwl("cellText"+arguments[0]);
	with(aCell)
	{
		var iDay=parseInt(innerHTML);
		if(checkColor(style.color,gcNotCurMonth))
		{
			iOffset=(innerHTML>10)?-1:1;
		}
		iMonth+=iOffset;
		if(iMonth<1)
		{
			iYear--;iMonth=12;
		}else if(iMonth>12){
			iYear++;iMonth=1;
		}
	}
	fSetDate(iYear,iMonth,iDay);
}
function Point(iX,iY)
{
	this.x=iX;
	this.y=iY;
}
function fBuildCal(iYear,iMonth)
{
	var aMonth=new Array();
	for(var i=1;i<7;i++)
	{
		aMonth[i]=new Array(i);
	}
	var dCalDate=new Date(iYear,iMonth-1,1);
	var iDayOfFirst=dCalDate.getDay();
	var iDaysInMonth=new Date(iYear,iMonth,0).getDate();
	var iOffsetLast=new Date(iYear,iMonth-1,0).getDate()-iDayOfFirst+1;
	var iDate=1;
	var iNext=1;
	for(var d=0;d<7;d++)
	{
		aMonth[1][d]=(d<iDayOfFirst)?(iOffsetLast+d)*(-1):iDate++;
	}
	for(var w=2;w<7;w++)
	{
		for(var d=0;d<7;d++)
		{
			aMonth[w][d]=(iDate<=iDaysInMonth)?iDate++:(iNext++)*(-1);
		}
	}
	return aMonth;
}
function fDrawCal(iYear,iMonth,iCellHeight,iDateTextSize)
{
	var colorTD="background-color:"+gcMouseOut+";border-color:"+gcMouseOut+";";
	var styleTD="height:"+iCellHeight+"px;font-weight:bolder;font-size:"+iDateTextSize+"px;vertical-align:middle; text-align:center;";
	var dateCal="";dateCal+="<tr>";
	for(var i=0;i<7;i++)
	{
		dateCal+="<td style='"+colorTD+styleTD+"color:"+gcWeekDay+";'>"+WeekDay[i]+"</td>";
	}
	dateCal+="</tr>";
	for(var w=1;w<7;w++)
	{
		dateCal+="<tr>";for(var d=0;d<7;d++)
		{
			var tmpid=w+""+d;
			dateCal+="<td style='"+styleTD+"cursor:pointer;' onclick='fSetSelected("+tmpid+")'>";
			dateCal+="<span id='cellText"+tmpid+"'></span>";dateCal+="</td>";
		}
		dateCal+="</tr>";
	}
	return dateCal;
}
function fUpdateCal(iYear,iMonth)
{
	var myMonth=fBuildCal(iYear,iMonth);
	var i=0;
	for(var w=1;w<7;w++)
	{
		for(var d=0;d<7;d++)
		{
			with($wwl("cellText"+w+""+d))
			{
				parentNode.style.backgroundColor=gcMouseOut;parentNode.style.borderColor=gcMouseOut;parentNode.onmouseover=function()
				{
					this.style.backgroundColor=gcMouseOver;
				};
				parentNode.onmouseout=function()
				{
					this.style.backgroundColor=gcMouseOut;
				};
				if(myMonth[w][d]<0)
				{
					style.color=gcNotCurMonth;innerHTML=Math.abs(myMonth[w][d]);
				}else{
					style.color=((d==0)||(d==6))?gcRestDay:gcWorkDay;innerHTML=myMonth[w][d];
					if(iYear==giYear && iMonth==giMonth && myMonth[w][d]==giDay)
					{
						parentNode.style.backgroundColor=gcMouseOver;parentNode.onmouseover=function()
						{
							this.style.backgroundColor=gcMouseOver;
						};
						parentNode.onmouseout=function()
						{
							this.style.backgroundColor=gcMouseOver;
						};
					}
					if(iYear==curYear && iMonth==curMonth && myMonth[w][d]==curDay)
					{
						style.color=gcToday;parentNode.style.backgroundColor=gcTodayMouseOut;parentNode.onmouseover=function()
						{
							this.style.backgroundColor=gcTodayMouseOver;
						};
						parentNode.onmouseout=function()
						{
							this.style.backgroundColor=gcTodayMouseOut;
						};
					}
				}
			}
		}
	}
}
function fCurrentDate()
{
	return curYear+strYear+curMonth+strMonth+curDay+strDay;
}
function fSetYearMon(iYear,iMon)
{
	$wwl("tbSelMonth").options[iMon-1].selected=true;
	for(var i=0;i<$wwl("tbSelYear").length;i++)
	{
		if($wwl("tbSelYear").options[i].value==iYear)
		{
			$wwl("tbSelYear").options[i].selected=true;
		}
	}
	fUpdateCal(iYear,iMon);
}
function fPrevMonth()
{
	var iMon=$wwl("tbSelMonth").value;
	var iYear=$wwl("tbSelYear").value;
	if(--iMon<1)
	{
		iMon=12;iYear--;
	}
	fSetYearMon(iYear,iMon);
}
function fNextMonth()
{
	var iMon=$wwl("tbSelMonth").value;
	var iYear=$wwl("tbSelYear").value;if(++iMon>12){iMon=1;iYear++;}fSetYearMon(iYear,iMon);
}
function fGetXY(aTag)
{
	var oTmp=aTag;
	var pt=new Point(0,0);
	do
	{
		pt.x+=oTmp.offsetLeft;pt.y+=oTmp.offsetTop;oTmp=oTmp.offsetParent;
	}
	while(oTmp.tagName.toUpperCase()!="BODY");
	return pt;
}
function getDateDiv()
{
	var noSelectForIE="";
	var noSelectForFireFox="";
	if(document.all)
	{
		noSelectForIE="onselectstart='return false;'";
	}else{
		noSelectForFireFox="-moz-user-select:none;";
	}
	var dateDiv="";
	dateDiv+="<div id='calendardiv' onclick='event.cancelBubble=true' "+noSelectForIE+" style='"+noSelectForFireFox+"position:absolute;z-index:99;visibility:hidden;border:1px solid #999999;'>";
	dateDiv+="<table style='border:0px; background-color:#E4E4E4;' cellpadding='1' cellspacing='1' >";
	dateDiv+="<tr>";
	dateDiv+="<td><input type='button' id='PrevMonth' value='&lt;' style='height:20px;width:20px;font-weight:bolder;' onclick='fPrevMonth()'>";
	dateDiv+="</td><td><select id='tbSelYear' style='border:1px solid;' onchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";
	for(var i=startYear;i<endYear;i++)
	{
		dateDiv+="<option value='"+i+"'>"+i+strYear+"</option>";
	}
	dateDiv+="</select></td><td>";
	dateDiv+="<select id='tbSelMonth' style='border:1px solid;' onchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";
	for(var i=0;i<12;i++)
	{
		dateDiv+="<option value='"+(i+1)+"'>"+gMonths[i]+"</option>";
	}
	dateDiv+="</select></td><td>";
	dateDiv+="<input type='button' id='NextMonth' value='&gt;' style='height:20px;width:20px;font-weight:bolder;' onclick='fNextMonth()'>";
	dateDiv+="</td>";
	dateDiv+="</tr><tr>";
	dateDiv+="<td align='center' colspan='4'>";
	dateDiv+="<div style='background-color:#cccccc'><table width='100%' border='0' cellpadding='3' cellspacing='1'>";
	dateDiv+=fDrawCal(giYear,giMonth,dayTdHeight,dayTdTextSize);
	dateDiv+="</table></div>";
	dateDiv+="</td>";
	dateDiv+="</tr><tr><td align='center' colspan='4' nowrap>";
	dateDiv+="<span style='cursor:pointer;font-weight:bolder;' onclick='fSetDate(curYear,curMonth,curDay)' onmouseover='this.style.color=\"#666666\"' onmouseout='this.style.color=\"#000000\"'>"+strToday+":"+fCurrentDate()+"</span>";
	dateDiv+="</tr></tr>";
	dateDiv+="</table></div>";
	return dateDiv;
}
with(document)
{
	onclick=fHideCalendar;write(getDateDiv());
}