﻿/*
	Calendar.js由青岛亿速思维网络科技有限公司开发，版权所有，未经许可，严禁用于商业目的或作为其他产品的任何部分发布。
	Calendar.js by Qingdao ETSOO Network-Tech Co., Ltd. This script may not be used or distributed without license.
	Version 2.0.0, http://www.etsoo.com
*/
//各月份天数
var rgMC=new Array(12);rgMC[0]=31;rgMC[1]=28;rgMC[2]=31;rgMC[3]=30;rgMC[4]=31;rgMC[5]=30;rgMC[6]=31;rgMC[7]=31;rgMC[8]=30;
	rgMC[9]=31;rgMC[10]=30;rgMC[11]=31;
//全局变量，活动对象和所有对象集合
var ETSOOCalendarActiveObject;
var ETSOOCalendarObjects={};
//日期对象
function ETSOOCalendar(strName,numStart,numEnd,strLanguage,numShowHour){
	if(strName==null)strName="CreateDate";
	var numStart=parseInt(numStart);
	if(isNaN(numStart))numStart=-5;
	var numEnd=parseInt(numEnd);
	if(isNaN(numEnd))numEnd=5;
	if(strLanguage==null)strLanguage=(navigator.language==null?navigator.userLanguage:navigator.language);
	strLanguage=strLanguage.toLowerCase();
	this.Name=strName;
	this.StartYear=numStart;
	this.EndYear=numEnd;
	this.Language=strLanguage;
	this.Init=ETSOOCalendarInit;
	this.Init(numShowHour);
	this.Show=ETSOOCalendarShow;
	ETSOOCalendarObjects[strName]=this;
}
//初始化
function ETSOOCalendarInit(numShowHour){
	if(document.getElementById("CalendarFrame")==null){
		document.write('<iframe id="CalendarFrame" name="CalendarFrame" style="display:none;z-index:100;position:absolute;" marginWidth=0 marginHeight=0 frameBorder=0 noResize scrolling=no src="/ETSOOBase/Calendar/Calendar.htm?Language='+this.Language+'"></iframe>');
	}
	var strName=this.Name;
	var strField='<input type="text" name="'+strName+'" style="width:80px;ime-mode:disabled;"><img id="ETSOOCalendar" onclick="ETSOOCalendarObjects[\''+strName+'\'].Show(event)" src="/ETSOOBase/Calendar/Calendar.gif" align="absbottom" border="0" style="cursor:pointer;cursor:hand">';
	if(numShowHour==1||numShowHour==2){
		strField+=' <select name="'+strName+'Hour" size="1">';
		for(var numI=0;numI<24;numI++){
			strField+='<option value="'+numI+'">'+numI+'</option>';
		}
		strField+='</select>:<select name="'+strName+'Minute" size="1">';
		var numStep=5;
		if(numShowHour==2)numStep=1;
		for(var numI=0;numI<60;numI+=numStep){
			strField+='<option value="'+numI+'">'+numI+'</option>';
		}
		strField+='</select>';
		if(numShowHour==2){
			strField+=':<select name="'+strName+'Second" size="1">';
			for(var numI=0;numI<60;numI++){
				strField+='<option value="'+numI+'">'+numI+'</option>';
			}
			strField+='</select>';
		}
	}
	document.write(strField);
}
//获取event对象
ETSOOGetEventObj=function(objEvent){
	if(objEvent==null)objEvent=window.event;
	if(objEvent==null)return;
	return objEvent.target?objEvent.target:objEvent.srcElement;
}
//获取对象的位置
function ETSOOGetPos(objE){
	var numLeft=0,numTop=0;
	while(objE){
		numLeft+=objE.offsetLeft;
		numTop+=objE.offsetTop;
		objE=objE.offsetParent;
	}
	return new Array(numLeft,numTop);
}
//显示日期
function ETSOOCalendarShow(objEvent){
	var objDF=document.getElementById("CalendarFrame");
	var objWF=window.frames["CalendarFrame"];
	if(objWF.DoLoad){
		var objSrcElement=ETSOOGetEventObj(objEvent);
		var strElementName=this.Name;
		var objE=objSrcElement.previousSibling;
		if(objE){
			var objDate=ETSOOGetInputDate(objE);
			if(objDate==null)objDate=new Date();
			var numYear=objDate.getFullYear();
			var numMonth=objDate.getMonth()+1;
			var numDay=objDate.getDate();
			//传递变量
			objWF.Arguments=[objE,this.StartYear,this.EndYear,numDay,numMonth,numYear];
			objWF.DoLoad();
			var arrPos=ETSOOGetPos(objSrcElement);
			var numLeft=arrPos[0];
			var numTop=arrPos[1]+objSrcElement.clientHeight;
			var numBodyWidth=document.body.clientWidth;
			var numBodyHeight=document.body.clientHeight;
			var numCalendarWidth=parseFloat(objDF.style.width);
			var numCalendarHeight=parseFloat(objDF.style.height);
			if(numLeft+numCalendarWidth>numBodyWidth)numLeft=numBodyWidth-numCalendarWidth;
			if(numTop+numCalendarHeight>numBodyHeight)
			{
				numDistance=numTop+numCalendarHeight-numBodyHeight;
				numTop=numBodyHeight-objSrcElement.clientHeight-numCalendarHeight*2+numDistance;
			}
			with(objDF.style){
				left=numLeft;
				top=numTop;
			}
		}
	}
}
//获取目标日期值
function ETSOOGetInputDate(objE){
	var objDate;
	if(objE){
		var strValue=objE.value;
		var regDate=/^(\d{1,4})[\/\.-](\d{1,2})[\/\.-](\d{1,4})$/gi;
		if(regDate.test(strValue)){
			var numDay,numMonth,numYear;
			if(RegExp.$3.length<=2){
				objDate=new Date(RegExp.$1,RegExp.$2-1,RegExp.$3);
			}
			else{
				objDate=new Date(RegExp.$3,RegExp.$1-1,RegExp.$2);
			}
			regDate.test(strValue);
		}
	}
	return objDate;
}
//获得每月天数
function ETSOOGetMonthCount(numMonth,numYear){
	var numDay=rgMC[numMonth-1];
	if((numMonth==2)&&ETSOOIsLeapYear(numYear))numDay++;
	return numDay;
}
//是不是闰年
function ETSOOIsLeapYear(numYear){
	if(0==numYear%4&&((numYear%100!=0)||(numYear%400==0)))return true;
	else return false;
}
//日期自动添零
function ETSOOAddZero(numIn){
	return((numIn<10)?"0":"")+numIn;
}
//格式化日期
function ETSOOFormatDate(objDate,strFormatString){
	var strDateString="";
	if(typeof(objDate)=="object"){
		var numLongYear=ETSOOAddZero(objDate.getFullYear());
		var numShortYear=ETSOOAddZero(numLongYear.toString().substring(3,4));
		var numYear=(strFormatString.indexOf("yyyy")==-1)?numShortYear:numLongYear;
		var numMonth=ETSOOAddZero(objDate.getMonth()+1);
		var numDay=ETSOOAddZero(objDate.getDate());
		var numHour=ETSOOAddZero(objDate.getHours());
		var numMinute=ETSOOAddZero(objDate.getMinutes());
		var numSecond=ETSOOAddZero(objDate.getSeconds());
		strDateString=strFormatString.replace(/dd/g,numDay).replace(/MM/g,numMonth).replace(/y{1,4}/g,numYear);
		strDateString=strDateString.replace(/hh/g,numHour).replace(/mm/g,numMinute).replace(/ss/g,numSecond);
	}
	return strDateString;
}
//隐藏
ETSOOCalendar.Hide=function(){
	var objDF=document.getElementById("CalendarFrame");
	if(objDF)objDF.style.display="none";
}
//点击时隐藏
if(window.Node){
	document.addEventListener("mousedown",ETSOOCalendar.Hide,true);
}else{
	document.attachEvent("onmousedown",ETSOOCalendar.Hide);
}
