/*********************************************************
* 使用方法 <input onclick="fPopCalendar(event,this,this)" onfocus="this.select()" readonly="readonly" />
********************************************************/
var gMonths=new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");
var WeekDay=new Array("日","一","二","三","四","五","六");
var strToday="今天";
var strSelDay="上次选择的日期";
var strYear="年";
var strMonth="月";
var strDay="日";
var splitChar="-";
var startYear=1920;
var endYear=2020;
var dayTdHeight=12;
var dayTdTextSize=12;
var gcNotCurMonth="#E0E0E0";
var gcRestDay="#FF0000"; //周末显示颜色
var gcWorkDay="#444444"; //工作日
var gcMouseOver="#79D0FF";
var gcMouseOut="#F4F4F4";
var gcToday="#444444";
var gcTodayMouseOver="#79D0FF"; //6699FF
var gcTodayMouseOut="#6699FF"; //79D0FF
var gdCtrl=new Object();
var gdCurDate=new Date();
var giYear=gdCurDate.getFullYear();
var giMonth=gdCurDate.getMonth()+1;
var giDay=gdCurDate.getDate();
var gcYear=giYear;gcMonth=giMonth;gcDay=giDay; //已选择的日期
var gcColor1="#444444";gcMouseOver1="#79D0FF";gcMouseOut1="yellow"; //已选择的日期颜色
function $(id){return document.getElementById(id);}
function Point(iX,iY){this.x=iX;this.y=iY;}
function checkColor(){var color_tmp=(arguments[0]+"").replace(/\s/g,"").toUpperCase();var model_tmp1=arguments[1].toUpperCase();var model_tmp2="rgb("+parseInt(arguments[1].substring(1,3),16)+","+parseInt(arguments[1].substring(1,3),16)+","+parseInt(arguments[1].substring(5),16)+")";model_tmp2=model_tmp2.toUpperCase();if(color_tmp==model_tmp1 ||color_tmp==model_tmp2){return true;}return false;}
//popCtrl为显示在哪个控件下面
function fPopCalendar(evt,dateCtrl,popCtrl){
evt=evt?evt:(window.event?window.event:null);
if(evt)evt.cancelBubble=true; //取消气泡事件,使得事件不再向上传递
gdCtrl=dateCtrl;
UpdateCalendar(dateCtrl.value);
var p;
if(popCtrl)p=popCtrl; else p=dateCtrl;
var point=fGetXY(p);
with($("calendardiv").style){
left=point.x+"px";
top=(point.y+p.offsetHeight+1)+"px";
visibility='visible';
zindex='99';
position='absolute';}
$("calendardiv").focus();
hideSelectShow();
}
function UpdateCalendar(strDate){
if(strDate=="")return;
var x = "-"; // 分隔符
var p = "ymd"; //年月日顺序
var a = strDate.split(x);
if (a.length<3) return;
var y = parseInt(a[p.indexOf("y")],10);
var m = parseInt(a[p.indexOf("m")],10);
var d = parseInt(a[p.indexOf("d")],10);
if(isNaN(y) || isNaN(m) || isNaN(d)) return;
gcYear=y; gcMonth=m; gcDay=d;
fSetYearMon(y,m);
}
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(){hideSelectHide();$("calendardiv").style.visibility="hidden";}
function fSetSelected(){var iOffset=0;var iYear=parseInt($("tbSelYear").value);var iMonth=parseInt($("tbSelMonth").value);var aCell=$("cellText"+arguments[0]);aCell.bgColor=gcMouseOut;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 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=" bgcolor='"+gcMouseOut+"' bordercolor='"+gcMouseOut+"'";var styleTD=" valign='middle' align='center' style='height:"+iCellHeight+"px;font-weight:bolder;font-size:"+iDateTextSize+"px;";var dateCal="";dateCal+="<tr>";for(var i=0;i<7;i++){dateCal+="<td"+colorTD+styleTD+"color:#990099'>"+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"+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($("cellText"+w+""+d)){
parentNode.bgColor=gcMouseOut;
parentNode.borderColor=gcMouseOut;
parentNode.onmouseover=function(){this.bgColor=gcMouseOver;};
parentNode.onmouseout=function(){this.bgColor=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){
style.color=gcToday;parentNode.bgColor=gcTodayMouseOut;parentNode.title=strToday;
parentNode.onmouseover=function(){this.bgColor=gcTodayMouseOver;};
parentNode.onmouseout=function(){this.bgColor=gcTodayMouseOut;};
}
else if(iYear==gcYear && iMonth==gcMonth && myMonth[w][d]==gcDay){
style.color=gcColor1;parentNode.bgColor=gcMouseOut1;parentNode.title=strSelDay;
parentNode.onmouseover=function(){this.bgColor=gcMouseOver1;};
parentNode.onmouseout=function(){this.bgColor=gcMouseOut1;};
}
}
}
}
}
}
function fSetYearMon(iYear,iMon){
$("tbSelMonth").options[iMon-1].selected=true;
var t=$("tbSelYear");
for(var i=0;i<t.length;i++){
if(t.options[i].value==iYear)t.options[i].selected=true;
}
fUpdateCal(iYear,iMon);
}
function fPrevMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(--iMon<1){iMon=12;iYear--;}fSetYearMon(iYear,iMon);}
function fNextMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(++iMon>12){iMon=1;iYear++;}fSetYearMon(iYear,iMon);}
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;top:-999px;z-index:99;visibility:hidden;border:1px solid #999999;'>";
dateDiv+=getCalendar();
dateDiv+="</div>";
return dateDiv;
}
function getCalendar(){var dateDiv="";
dateDiv+="<table border='0' bgcolor='#E0E0E0' cellpadding=2 cellspacing=1><tr>";
dateDiv+="<td><input type='button' id='PrevMonth' value='<' style='height:20px;width:20px;font-weight:bolder;' onclick='fPrevMonth()'>";
dateDiv+="</td><td><select id='tbSelYear' style='border:1px solid;' onchange='fUpdateCal($(\"tbSelYear\").value,$(\"tbSelMonth\").value)'>";
for(var i=startYear;i<endYear;i++){dateDiv+="<option value='"+i+"'>"+i+strYear+"</option>";}
dateDiv+="</select></td><td><select id='tbSelMonth' style='border:1px solid;' onchange='fUpdateCal($(\"tbSelYear\").value,$(\"tbSelMonth\").value)'>";
for(var i=0;i<12;i++){dateDiv+