/********************************************************************************************************/
/*																										*/
/*作者：meizz																							*/
/*修改者：panjiangda																						*/
/*修改时间：2006-3																						*/
/*修改说明：																								*/
/*			修改年份下拉框过长的问题																		*/
/*			增加显示年、年月、年月日时三种日期格式，年月日本来就有											*/
/*			增加把日期在两个、三个、四个输出框中显示的功能能												*/
/*			增加时间输入																					*/
/*			一些细微的地方进行修改																		*/
/*调用说明：																								*/
/*			1、在要调用的页面的head区域加上<script language=javascript src="calendar.js"></script>		*/
/*			2、输入框直接调用：																			*/
/*								<INPUT onfocus=openDate(this)>											*/
/*			3、通过按钮调用：																				*/
/*							<INPUT name="txt" onfocus=openDate(this)>									*/
/*							<INPUT type="button" value="选择日期" onclick="openDate(document.all.txt)">  */
/*调用参数说明：																							*/
/*				openDate(obj)中的obj：调用它的对象														*/
/*待解决问题：																							*/
/*				点年份或月份下拉框后，拖动日期选择器之后，再点年份或月份下拉框，下拉框不跟着拖动				*/
/*																										*/
/********************************************************************************************************/

document.write("<div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 180; height: 172; display: none'>");
document.write("<iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=180 height=100%></iframe></div>");

function writeIframe(){	//日期选择器HTML代码
    var strIframe = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style>"+
    "*{ font-size: 12px; font-family: 宋体}"+
    ".bg{ color: "+ WebCalendar.lightColor +"; cursor: default; background-color: "+ WebCalendar.darkColor +";}"+
    "table#tableWeek td{ color: "+ WebCalendar.lightColor +";}"+
    "td#meizzYearHead, td#meizzYearMonth{color: "+ WebCalendar.wordColor +";background-color:"+ WebCalendar.dayBgColor +"}"+
	"td#Hours, td#Minutes, td#Seconds{color: "+ WebCalendar.wordColor +";background-color:"+ WebCalendar.wordDark +"}"+
    ".out{ text-align: center; border-top: 1px solid "+ WebCalendar.DarkBorder +"; border-left: 1px solid "+ WebCalendar.DarkBorder +";"+
    "		border-right: 1px solid "+ WebCalendar.lightColor +"; border-bottom: 1px solid "+ WebCalendar.lightColor +";}"+
    ".over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF;"+
    "		border-bottom: 1px solid "+ WebCalendar.DarkBorder +"; border-right: 1px solid "+ WebCalendar.DarkBorder +"}"+
    "input{ border: 1px solid "+ WebCalendar.darkColor +"; padding-top: 1px; height: 18; cursor: hand;"+
    "       color:"+ WebCalendar.wordColor +"; background-color: "+ WebCalendar.btnBgColor +"}"+
    "</style></head><body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'><form name=meizz>";

    strIframe += "<script language=javascript>"+
    "function document.onkeydown(){"+	//定义快捷键
	"	switch(window.event.keyCode){"+
	"		case 27 : parent.hiddenCalendar(); break;"+	//[ESC]键
	"		case 37 : parent.prevM(); break;"+	//[←]键
	"		case 38 : parent.prevY(); break;"+	//[↑]键
	"		case 39 : parent.nextM(); break;"+	//[→]键
	"		case 40 : parent.nextY(); break;"+	//[↓]键
	"		case 78 : parent.returnNowTime(); break;"+	//[N]键
	"		case 84 : parent.returnDate(new Date().getDate()+'/'+(new Date().getMonth() +1)+'/'+new Date().getFullYear()); break;"+	//[T]键
	"	}"+
	"	window.event.keyCode = 0; window.event.returnValue= false;"+
	"}";

	if (WebCalendar.drag){ 
		strIframe += "var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar;"+
		"function document.onmousemove(){"+
		"	if(parent.WebCalendar.drag && drag){"+
		"		if(o.style.left==')o.style.left=0; if(o.style.top==')o.style.top=0;"+
		"		o.style.left = parseInt(o.style.left) + window.event.clientX-cx;o.style.top = parseInt(o.style.top) + window.event.clientY-cy;"+
		"}}"+
		"function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}";
	}

	strIframe += "</script><!--•-->";

    strIframe += "<select name=tmpYearSelect onblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:1;left:35;display:none;"+
	"width:65px' onclick='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();' size=13></select>"+
    "<select name=tmpMonthSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:1;left:100;display:none; width:45px'"+
    " onclick='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();' size=12></select>"+
	"<select name=tmpHourSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:18;left:50;display:none; width:37px'"+
    " onclick='parent.WebCalendar.nowHour=this.value; parent.hiddenSelect(this); parent.writeCalendar();' size=12></select>"+
	"<select name=tmpMinuteSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:18;left:90;display:none; width:37px'"+
    " onclick='parent.WebCalendar.nowMinute=this.value; parent.hiddenSelect(this); parent.writeCalendar();' size=12></select>"+
	"<select name=tmpSecondSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:18;left:130;display:none; width:37px'"+
    " onclick='parent.WebCalendar.nowSecond=this.value; parent.hiddenSelect(this); parent.writeCalendar();' size=12></select>"+

    "<table id=showTimeHeight width=142 height=166 class=bg border=0 cellspacing=1 cellpadding=0>"+
    "	<tr><td width=178 height=19 bgcolor='"+ WebCalendar.lightColor +"'>"+
    "    <table width=178 id=tableHead border=0 cellspacing=0 cellpadding=0><tr align=center>"+
    "    <td width=19 height=19 class=bg title='向前翻1年(快捷键：↑)' style='cursor: hand' onclick='parent.prevY()'><b><<</b></td>"+
    "    <td width=15 height=19 class=bg title='向前翻1月(快捷键：←)' style='cursor: hand' onclick='parent.prevM()'><b><</b></td>"+
    "    <td width=65 id=meizzYearHead title='点击此处选择年份' onclick='parent.funYearSelect(parseInt(this.innerText, 10))'"+
    "        onmouseover='this.style.background=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
    "        onmouseout='this.style.background=parent.WebCalendar.dayBgColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
    "    <td width=45 id=meizzYearMonth title='点击此处选择月份' onclick='parent.funMonthSelect(parseInt(this.innerText, 10))'"+
    "        onmouseover='this.style.background=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
    "        onmouseout='this.style.background=parent.WebCalendar.dayBgColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
    "    <td width=15 class=bg title='向后翻1月(快捷键：→)' onclick='parent.nextM()' style='cursor: hand'><b>></b></td>"+
    "    <td width=19 class=bg title='向后翻1年(快捷键：↓)' onclick='parent.nextY()' style='cursor: hand'><b>>></b></td></tr></table>"+
    "</td></tr><tr><td height=18><table id=tableWeek border=1 align=center width=178 cellpadding=0 cellspacing=0 ";
    
	if(WebCalendar.drag){
		strIframe += "onmousedown='dragStart()' onmouseup='drag=false' onmouseout='drag=false'";
	}
    
	strIframe += " borderColorLight='"+ WebCalendar.darkColor +"' borderColorDark='"+ WebCalendar.lightColor +"'>"+
    "    <tr align=center height=18><td width=22>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table>"+
    "</td></tr><tr><td valign=top width=178 bgcolor='"+ WebCalendar.lightColor +"'>"+
    "    <table height=106 width=178 border=0 cellspacing=0 cellpadding=0>";

	for(var x=0; x<5; x++){ 
		strIframe += "<tr>";
		for(var y=0; y<7; y++)  
			strIframe += "<td class=out id='meizzDay"+ (x*7+y) +"'></td>"; 
		strIframe += "</tr>";
	}
	strIframe += "<tr>";
	for(var x=35; x<42; x++) 
		strIframe += "<td class=out id='meizzDay"+ x +"'></td>";
	
	strIframe +="</tr></table></td></tr><tr id=showTime style='display:none'><td height=20 width=178 bgcolor='"+ WebCalendar.wordDark +"'>"+
	"<table border=0 cellpadding=0 cellspacing=0 align=center><tr height=20>"+
    "<td align=center width=38 style='padding-top:5px' title='当前时间(快捷键：N)' style='cursor: hand' onclick='parent.returnNowTime()'>"+
	"<font color='"+ WebCalendar.todayColor +"'>时间：</font></td>"+
    "<td align=center width=35 id=Hours title='点击此处选择‘时’' onclick='parent.funHourSelect(parseInt(this.innerText, 10))'"+
	"        onmouseover='this.style.background=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
    "        onmouseout='this.style.background=parent.WebCalendar.wordDark; this.style.color=parent.WebCalendar.wordColor'>11</td>"+
    "<td align=center width=2>:</td>"+
    "<td align=center width=35 id=Minutes title='点击此处选择‘分’' onclick='parent.funMinuteSelect(parseInt(this.innerText, 10))'"+
	"        onmouseover='this.style.background=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
    "        onmouseout='this.style.background=parent.WebCalendar.wordDark; this.style.color=parent.WebCalendar.wordColor'>11</td>"+
    "<td align=center width=2>:</td>"+
    "<td align=center width=36 id=Seconds title='点击此处选择‘秒’' onclick='parent.funSecondSelect(parseInt(this.innerText, 10))'"+
	"        onmouseover='this.style.background=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
    "        onmouseout='this.style.background=parent.WebCalendar.wordDark; this.style.color=parent.WebCalendar.wordColor'>11</td>"+
	"</tr></table></td></tr>"+

	"<tr><td height=22 width=178 bgcolor='"+ WebCalendar.wordDark +"'>"+
	"<table border=0 cellpadding=0 cellspacing=0 width=178><tr height=22>"+
    "<td align=center vlign=middle title='当前日期(快捷键：T)' style='cursor: hand' "+
	"onclick=\"parent.returnDate(new Date().getDate()+'/'+(new Date().getMonth() +1)+'/'+new Date().getFullYear())\">"+
	"<font color='"+ WebCalendar.todayColor +"'>今天：</font><font color='"+ WebCalendar.wordColor +"'>"+
	new Date().getFullYear() + "-" + appendZero(new Date().getMonth() +1) + "-" + appendZero(new Date().getDate())+"</font></td>"+
	"<td align=center valign=middle title='清空文本框日期' style='cursor: hand' onclick='parent.clearDate()'>"+
	"<font color='"+ WebCalendar.todayColor +"'>清空</font></td>"+
	"<td align=center valign=middle title='关闭日期选择器(快捷键：[ESC])' style='cursor: hand' onclick='parent.hiddenCalendar()'>关闭</td>"+
	"</tr></table></td></tr>"+
	

	"<table></form></body></html>";
   
	with(WebCalendar.iframe){
        document.writeln(strIframe);
		document.close();
        for(var i=0; i<42; i++){
            WebCalendar.dayObj[i] = eval("meizzDay"+ i);
            WebCalendar.dayObj[i].onmouseover = dayMouseOver;
            WebCalendar.dayObj[i].onmouseout = dayMouseOut;
            WebCalendar.dayObj[i].onclick = returnDate;
        }
		if(WebCalendar.timeShow){
			getObjectById("meizzCalendarLayer").style.height = "193";
			eval("showTimeHeight").height = "186";
			eval("showTime").style.display = "";
		}
		else{
			getObjectById("meizzCalendarLayer").style.height = "172";
		}
    }
}

function TWebCalendar(){ //初始化日历的设置
    this.daysMonth  = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);	//定义一年每月天数的数组
    this.day        = new Array(42);            //定义日历展示用的数组
    this.dayObj     = new Array(42);            //定义日期展示控件数组
    this.dateStyle  = null;                     //保存格式化后日期数组
    this.objExport  = null;                     //日历回传的显示控件
    this.eventSrc   = null;                     //日历显示的触发控件
    this.inputDate  = null;                     //转化外的输入的日期(d/m/yyyy)
    this.thisYear   = new Date().getFullYear(); //定义年的变量的初始值
    this.thisMonth  = new Date().getMonth()+ 1; //定义月的变量的初始值
    this.thisDay    = new Date().getDate();     //定义日的变量的初始值
	this.nowHour	= new Date().getHours();	//定义时的变量的初始值
	this.nowMinute	= new Date().getMinutes();	//定义分的变量的初始值
	this.nowSecond	= new Date().getSeconds();	//定义秒的变量的初始值
    this.today      = this.thisDay +"/"+ this.thisMonth +"/"+ this.thisYear;   //今天(d/m/yyyy)
    this.iframe     = window.frames("meizzCalendarIframe"); //日历的 iframe 载体
    this.calendar   = getObjectById("meizzCalendarLayer");  //日历的层
    this.dateReg    = "";           //日历格式验证的正则式
    this.yearFallB  = 60;           //定义年下拉框的向前年差值
    this.yearFallA  = 20;           //定义年下拉框的向后年差值
    this.format     = "yyyy-mm-dd"; //回传日期的格式
    this.timeShow   = true;        //是否返回时间
    this.showType   = 'DAY';        //回传日期的样式：(YEAR)只返回年；(MONTH)返回年月；(DAY)默认状态－返回年月日；(TIME)返回年月日时
    this.drag       = false;         //是否允许拖动
    this.darkColor  = "#4B83BB";    //控件的暗色
    this.lightColor = "#F7FBFF";    //控件的亮色
    this.btnBgColor = "#FFFFF5";    //控件的按钮背景色
    this.wordColor  = "#000080";    //控件的文字颜色
    this.wordDark   = "#DEEAF6";    //控件的暗文字颜色
    this.dayBgColor = "#ffffff";    //日期数字背景色
    this.todayColor = "#CC3300";    //今天在日历上的标示背景色
    this.DarkBorder = "#F7FBFF";    //日期显示的立体表达色
}

var WebCalendar = new TWebCalendar();
var outObject1,outObject2,outObject3,outObject4; //存放引用openDate()的对象,专门为"通过按钮调用函数"准备

function openDate(obj,type){ //在单个输入框里显示
	outObject1 = obj;
	outObject2 = null;
	outObject3 = null;
	outObject4 = null;
	//重新初始化日历设置
	if(type=="YEAR" || type=="MONTH" || type=="DAY"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = false;
	}
	if(type=="TIME"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = true;
		WebCalendar.nowHour	= new Date().getHours();
		WebCalendar.nowMinute = new Date().getMinutes();
		WebCalendar.nowSecond = new Date().getSeconds();
	}
	if(type == null){
		WebCalendar.showType = "DAY";
		WebCalendar.timeShow = false;
	}
	WebCalendar.thisYear   = new Date().getFullYear();
    WebCalendar.thisMonth  = new Date().getMonth()+ 1;
    WebCalendar.thisDay    = new Date().getDate();
	//重新初始化设置结束
	calendar(obj);
}

function openDateWithinTwoColumn(obj1,obj2,type){ //在两个输入框里显示

	outObject1 = obj1;
	outObject2 = obj2;
	outObject3 = null;
	outObject4 = null;
	//重新初始化日历设置
	//if(type=="MONTH"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = false;
//	}
//	else{
//		alert("参数设置错误：在两个输入框里显示，日期类型只能选择‘MONTH’。");
//		return;
//	}
//重新初始化日历设置
	if(type=="YEAR" || type=="MONTH" || type=="DAY"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = false;
	}
	if(type=="TIME"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = true;
		WebCalendar.nowHour	= new Date().getHours();
		WebCalendar.nowMinute = new Date().getMinutes();
		WebCalendar.nowSecond = new Date().getSeconds();
	}
	if(type == null){
		WebCalendar.showType = "DAY";
		WebCalendar.timeShow = false;
	}

	WebCalendar.thisYear   = new Date().getFullYear();
    WebCalendar.thisMonth  = new Date().getMonth()+ 1;
    WebCalendar.thisDay    = new Date().getDate();
	//重新初始化设置结束
	calendar(obj1,obj2)
}

function openDateWithinThreeColumn(obj1,obj2,obj3,type){ //在三个输入框里显示
	outObject1 = obj1;
	outObject2 = obj2;
	outObject3 = obj3;
	outObject4 = null;
	//重新初始化日历设置
	if(type=="DAY"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = false;
	}
	else{
		alert("参数设置错误：在两个输入框里显示，日期类型只能选择‘DAY’。");
		return;
	}

	WebCalendar.thisYear   = new Date().getFullYear();
    WebCalendar.thisMonth  = new Date().getMonth()+ 1;
    WebCalendar.thisDay    = new Date().getDate();
	//重新初始化设置结束
	calendar(obj1,obj2,obj3)
}

function openDateWithinFourColumn(obj1,obj2,obj3,obj4,type){ //在四个输入框里显示
	outObject1 = obj1;
	outObject2 = obj2;
	outObject3 = obj3;
	outObject4 = obj4;
	//重新初始化日历设置
	if(type=="TIME"){
		WebCalendar.showType = type;
		WebCalendar.timeShow = true;
		WebCalendar.nowHour	= new Date().getHours();
		WebCalendar.nowMinute = new Date().getMinutes();
		WebCalendar.nowSecond = new Date().getSeconds();
	}
	else{
		alert("参数设置错误：在四个输入框里显示，日期类型只能选择‘TIME’。");
		return;
	}

	WebCalendar.thisYear   = new Date().getFullYear();
    WebCalendar.thisMonth  = new Date().getMonth()+ 1;
    WebCalendar.thisDay    = new Date().getDate();
	//重新初始化设置结束
	calendar(obj1,obj2,obj3,obj4)
}
function calendar(obj1,obj2,obj3,obj4){ //主调函数
    var e = window.event.srcElement;  
	writeIframe();
    var o = WebCalendar.calendar.style; 
	WebCalendar.eventSrc = e;
	
	if (arguments.length == 0) WebCalendar.objExport = e;
    else WebCalendar.objExport = eval(arguments[0]);

	outObject1 = WebCalendar.objExport;

    WebCalendar.iframe.tableWeek.style.cursor = WebCalendar.drag ? "move" : "default";
	var t = e.offsetTop,  h = e.clientHeight, l = e.offsetLeft, p = e.type;
	
	while (e = e.offsetParent){
		t += e.offsetTop; 
		l += e.offsetLeft;
	}

    o.display = ""; WebCalendar.iframe.document.body.focus();
    var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;
    var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;
    
    if (document.body.clientHeight + dt - t - h >= ch) o.top = (p=="image")? t + h : t + h + 6;
    else o.top  = (t - dt < ch) ? ((p=="image")? t + h : t + h + 6) : t - ch;
    if (dw + dl - l >= cw) o.left = l; 
	else o.left = (dw >= cw) ? dw - cw + dl : dl;

    if  (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2})$/;
    else WebCalendar.dateReg = /^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;

    try{
		var objValue = WebCalendar.objExport.value
		if(obj2 && obj2.value != ""){
			objValue += "-" + obj2.value;
		}
		if(obj3 && obj3.value != ""){
			objValue += "-" + obj3.value;
		}
		if(obj4 && obj4.value != ""){
			objValue += " " + obj4.value;
		}

		if (objValue.trim() != ""){
			if(objValue.trim().length == 4){
				objValue = objValuee.trim() + "-01-01"
			}
			if(objValue.trim().length == 7){
				objValue = objValue.trim() + "-01"
			}

            WebCalendar.dateStyle = objValue.match(WebCalendar.dateReg);

			if (WebCalendar.dateStyle == null){
                WebCalendar.thisYear   = new Date().getFullYear();
                WebCalendar.thisMonth  = new Date().getMonth()+ 1;
                WebCalendar.thisDay    = new Date().getDate();
                //alert("原文本框里的日期有错误！\n可能与你定义的显示时分秒有冲突！");
                writeCalendar(); 
				//return false;
            }
            else{
                WebCalendar.thisYear   = parseInt(WebCalendar.dateStyle[1], 10);
                WebCalendar.thisMonth  = parseInt(WebCalendar.dateStyle[3], 10);
                WebCalendar.thisDay    = parseInt(WebCalendar.dateStyle[4], 10);
				if(WebCalendar.dateStyle.length > 5){
					WebCalendar.nowHour	= parseInt(WebCalendar.dateStyle[5], 10);
					WebCalendar.nowMinute = parseInt(WebCalendar.dateStyle[6], 10);
					WebCalendar.nowSecond = parseInt(WebCalendar.dateStyle[7], 10);
				}

                WebCalendar.inputDate  = parseInt(WebCalendar.thisDay, 10) +"/"+ parseInt(WebCalendar.thisMonth, 10) +"/"+ parseInt(WebCalendar.thisYear, 10); 
				writeCalendar();
            }
        }  
		else writeCalendar();
    }  
	catch(e){
		writeCalendar();
	}
}

function funMonthSelect(){ //月份的下拉框
    var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);
    var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;
    
	for (var i=1; i<10; i++) e.options.add(new Option("  " + i +"月", i));
	for (var i=10; i<13; i++) e.options.add(new Option(" " + i +"月", i));

    e.style.display = "";
	e.value = m; 
	e.focus(); 
	window.status = e.style.top;
}

function funYearSelect(){ //年份的下拉框
    var n1 = WebCalendar.yearFallB;
	var n2 = WebCalendar.yearFallA;
    var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;
    var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);
        y = (y <= 1000)? 1000 : ((y >= 9999)? 9999 : y);
    var min = (y - n1 >= 1000) ? y - n1 : 1000;
    var max = (y + n2 <= 9999) ? y + n2 : 9999;
        min = (max == 9999) ? max-n*2 : min;
        max = (min == 1000) ? min+n*2 : max;
    
	for (var i=min; i<=max; i++){
      e.options[e.options.length] = new Option(i +"年", i+"", true, true);
    }

    e.style.display = "";
    e.value = y;
	e.focus();
}

function funHourSelect(){ //小时下拉框
	var e = WebCalendar.iframe.document.forms[0].tmpHourSelect;
	var h = WebCalendar.iframe.Hours.innerText;
	
	for (var i=0; i<9; i++) e.options.add(new Option("0" + i, i));
	for (var i=10; i<24; i++) e.options.add(new Option(i, i));

    e.style.display = "";
	e.value = h; 
	e.focus(); 
	window.status = e.style.top;
}

function funMinuteSelect(){ //分钟下拉框
	var e = WebCalendar.iframe.document.forms[0].tmpMinuteSelect;
	var m = WebCalendar.iframe.Minutes.innerText;

	for (var i=0; i<9; i++) e.options.add(new Option("0" + i, i));
	for (var i=10; i<60; i++) e.options.add(new Option(i, i));

    e.style.display = "";
	e.value = m; 
	e.focus(); 
	window.status = e.style.top;
}

function funSecondSelect(){ //秒钟下拉框
	var e = WebCalendar.iframe.document.forms[0].tmpSecondSelect;
	var s = WebCalendar.iframe.Seconds.innerText;

	for (var i=0; i<9; i++) e.options.add(new Option("0" + i, i));
	for (var i=10; i<60; i++) e.options.add(new Option(i, i));

    e.style.display = "";
	e.value = s; 
	e.focus(); 
	window.status = e.style.top;
}

function prevM(){  //往前翻月份
    WebCalendar.iframe.document.forms[0].tmpYearSelect.style.display = "none";
	WebCalendar.iframe.document.forms[0].tmpMonthSelect.style.display = "none";
	WebCalendar.thisDay = 1;
    
	if (WebCalendar.thisMonth==1){
        if(WebCalendar.thisYear > 1000){
			WebCalendar.thisYear--;
		}
		else{
			WebCalendar.thisYear = 9999;
		}
        WebCalendar.thisMonth=13;
    }
	
    WebCalendar.thisMonth--;
	writeCalendar();
}

function nextM(){  //往后翻月份
    WebCalendar.iframe.document.forms[0].tmpYearSelect.style.display = "none";
	WebCalendar.iframe.document.forms[0].tmpMonthSelect.style.display = "none";
	WebCalendar.thisDay = 1;
    
	if (WebCalendar.thisMonth==12){
        if(WebCalendar.thisYear < 9999){
			WebCalendar.thisYear++;
		}
		else{
			WebCalendar.thisYear = 1000;
		}
        WebCalendar.thisMonth=0;
    }
	
    WebCalendar.thisMonth++;
	writeCalendar();
}

function prevY(){  //往前翻年份
	WebCalendar.iframe.document.forms[0].tmpYearSelect.style.display = "none";
	WebCalendar.iframe.document.forms[0].tmpMonthSelect.style.display = "none";
	WebCalendar.thisDay = 1;
	if(WebCalendar.thisYear > 1000){
		WebCalendar.thisYear--;
	}
	else{
		WebCalendar.thisYear = 9999;
	}
	writeCalendar();
}

function nextY(){ //往后翻年份
	WebCalendar.iframe.document.forms[0].tmpYearSelect.style.display = "none";
	WebCalendar.iframe.document.forms[0].tmpMonthSelect.style.display = "none";
	WebCalendar.thisDay = 1;
	if(WebCalendar.thisYear < 9999){
		WebCalendar.thisYear++;
	}
	else{
		WebCalendar.thisYear = 1000;
	}
	writeCalendar();
}

function returnNowTime(){ //返回当前时间
	var hh = new Date().getHours();
	var mm = new Date().getMinutes();
	var ss = new Date().getSeconds();
	WebCalendar.iframe.Hours.innerText  = appendZero(hh);
	WebCalendar.iframe.Minutes.innerText  = appendZero(mm);
	WebCalendar.iframe.Seconds.innerText  = appendZero(ss);
}

function hiddenSelect(e){ //关闭下拉选择框
	for(var i=e.options.length; i>-1; i--)
		e.options.remove(i); 
	e.style.display="none";
}

function getObjectById(id){ 
	if(document.all)
		return(eval("document.all."+ id));
	return(eval(id)); 
}

function hiddenCalendar(){ //关闭日期选择器
	getObjectById("meizzCalendarLayer").style.display = "none";
	WebCalendar.inputDate = null;
}

function clearDate(){  //清除文本框中日期
    if(outObject1){
		outObject1.value="";
    }
	if(outObject2){
		outObject2.value="";
    }
	if(outObject3){
		outObject3.value="";
    }
	if(outObject4){
		outObject4.value="";
    }
	
	WebCalendar.inputDate = null;
	
    hiddenCalendar();
}

function appendZero(n){ //日期自动补零程序
	return(("00"+ n).substr(("00"+ n).length-2));
}

function String.prototype.trim(){
	return this.replace(/(^\s*)|(\s*$)/g,"");
}

function dayMouseOver(){
    this.className = "over";
    this.style.backgroundColor = WebCalendar.darkColor;
    
	if(WebCalendar.day[this.id.substr(8)].split("/")[1] == WebCalendar.thisMonth)
		this.style.color = WebCalendar.lightColor;
}

function dayMouseOut(){
    this.className = "out"; 
	var d = WebCalendar.day[this.id.substr(8)], a = d.split("/");
    this.style.removeAttribute('backgroundColor');
    
	if(a[1] == WebCalendar.thisMonth && d != WebCalendar.today){
        if(WebCalendar.dateStyle && a[0] == parseInt(WebCalendar.dateStyle[4], 10))
			this.style.color = WebCalendar.lightColor;
        
		this.style.color = WebCalendar.wordColor;
    }
}

function writeCalendar(){ //对日历显示的数据的处理程序
    var y = WebCalendar.thisYear;
    var m = WebCalendar.thisMonth; 
    var d = WebCalendar.thisDay;
	var H = WebCalendar.nowHour;
	var M = WebCalendar.nowMinute;
	var S = WebCalendar.nowSecond;
    WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;

	if (!(y<=9999 && y >= 1000 && parseInt(m, 10)>0 && parseInt(m, 10)<13 && parseInt(d, 10)>0 && parseInt(d, 10)<32)){
        //alert("对不起，你输入了错误的日期！");
        WebCalendar.thisYear   = new Date().getFullYear();
        WebCalendar.thisMonth  = new Date().getMonth()+ 1;
        WebCalendar.thisDay    = new Date().getDate(); 
	}

	else if (!(parseInt(H, 10)>=0 && parseInt(m, 10)<24 && parseInt(M, 10)>=0 && parseInt(M, 10)<60 && parseInt(S, 10)>=0 && parseInt(S, 10)<60)){
        //alert("对不起，你输入了错误的时间！");
        WebCalendar.nowHour   = new Date().getHours();
        WebCalendar.nowMinute  = new Date().getMinutes();
        WebCalendar.nowSecond    = new Date().getSeconds(); 
	}

    y = WebCalendar.thisYear;
    m = WebCalendar.thisMonth;
    d = WebCalendar.thisDay;
	H = WebCalendar.nowHour;
	M = WebCalendar.nowMinute;
	S = WebCalendar.nowSecond;

    WebCalendar.iframe.meizzYearHead.innerText  = y +" 年";
    WebCalendar.iframe.meizzYearMonth.innerText = parseInt(m, 10) +" 月";
	WebCalendar.iframe.Hours.innerText  = appendZero(H);
	WebCalendar.iframe.Minutes.innerText  = appendZero(M);
	WebCalendar.iframe.Seconds.innerText  = appendZero(S);

    WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天
    var w = new Date(y, m-1, 1).getDay();
    var prevDays = m==1  ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];
    
	for(var i=(w-1); i>=0; i--){ //这三个 for 循环为日历赋数据源（数组 WebCalendar.day）格式是 d/m/yyyy
        WebCalendar.day[i] = prevDays +"/"+ (parseInt(m, 10)-1) +"/"+ y;
        if(m==1) WebCalendar.day[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);
        prevDays--;
    }
    for(var i=1; i<=WebCalendar.daysMonth[m-1]; i++) 
		WebCalendar.day[i+w-1] = i +"/"+ m +"/"+ y;
    for(var i=1; i<42-w-WebCalendar.daysMonth[m-1]+1; i++){
        WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ (parseInt(m, 10)+1) +"/"+ y;
        if(m==12) 
			WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);
    }

    for(var i=0; i<42; i++){    //这个循环是根据源数组写到日历里显示
        var a = WebCalendar.day[i].split("/");
        WebCalendar.dayObj[i].innerText   = a[0];
        WebCalendar.dayObj[i].title       = a[2] +"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);
        WebCalendar.dayObj[i].bgColor     = WebCalendar.dayBgColor;
        WebCalendar.dayObj[i].style.color = WebCalendar.wordColor;
        
		if ((i<10 && parseInt(WebCalendar.day[i], 10)>20) || (i>27 && parseInt(WebCalendar.day[i], 10)<15))    //设置非本月日期在日历上的颜色
            WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;

        if (WebCalendar.inputDate==WebCalendar.day[i]){    //设置输入框里的日期在日历上的颜色
			WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor;
			WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;
		}
        if (WebCalendar.day[i] == WebCalendar.today){      //设置今天在日历上反应出来的颜色
			WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor;
			WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;
		}
    }
}

function returnDate(){  //根据日期格式等返回用户选定的日期
    if(WebCalendar.objExport){
        var returnValue;
        var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");
        var d = WebCalendar.format.match(/^(\w{4})(-|\/|.|)(\w{1,2})\2(\w{1,2})$/);
        
		if(d==null){
			alert("你设定的日期输出格式不对！\r\n\r\n请重新定义 WebCalendar.format ！");
			return false;
		}
		
        var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零
        
		returnY = a[2];
		returnM = flag ? appendZero(a[1]): a[1];
		returnD = flag ? appendZero(a[0]): a[0];
		returnHour = WebCalendar.iframe.Hours.innerText;
		returnMinute = WebCalendar.iframe.Minutes.innerText;
		returnSecond = WebCalendar.iframe.Seconds.innerText;

		if(WebCalendar.showType == "YEAR"){
			returnValue = returnY;
		}
		if(WebCalendar.showType == "MONTH"){
			returnValue = returnY + d[2] + returnM;
		}
		if(WebCalendar.showType == "DAY"){
			returnValue = returnY + d[2] + returnM + d[2] + returnD;
		}		
		if(WebCalendar.showType == "TIME" && WebCalendar.timeShow){
            returnValue = returnY + d[2] + returnM + d[2] + returnD + " " + returnHour + ":" + returnMinute + ":" + returnSecond;
        }
		
		if(outObject1 && !outObject2 && !outObject3){
			outObject1.value = returnValue;
		}
		if(outObject1 && outObject2 && !outObject3){
			outObject1.value = returnY;
			outObject2.value = returnM;
		}
		if(outObject1 && outObject2 && outObject3){
			outObject1.value = returnY;
			outObject2.value = returnM;
			outObject3.value = returnD;
		}
		if(outObject1 && outObject2 && outObject3 && outObject4){
			outObject1.value = returnY;
			outObject2.value = returnM;
			outObject3.value = returnD;
			outObject4.value = returnHour + ":" + returnMinute + ":" + returnSecond;
		}

        hiddenCalendar();
    }
}

function document.onfocusout(){
    if(WebCalendar.eventSrc != window.event.srcElement) 
		hiddenCalendar();
}