www.pudn.com > manager050315.rar > calendar.js


var	zz,	zv,	d, fTSR; 
var	gBF=false; 
var	g_MINY = 1601; 
var	g_MAXY = 4500; 
var	g_month	= 0; 
var	g_day =	0; 
var	g_year = 0; 
var	g_yLow = 1990; 
var	g_eC=null; 
var	g_eCV=""; 
var	g_dFmt=GetDateFmt(); 
var	g_fnCB=null; 
 
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; 
 
d =	new	Date(); 
fTSR=0; 
zv = d.getTime(); 
zz = "&zz="+zv; 
 
function GetDowStart() {return 0;} 
 
// 日期格式 
function GetDateFmt() 
{ 
//	return "mmddyy"; 
	return "yymmdd"; 
} 
 
// 年月日之间的分隔符为“-” 
function GetDateSep() 
{ 
	return "-"; 
} 
 
function GetInputDate(t,f) 
{ 
	var l	= t.length; 
	if(0 == l) return	false; 
	var cSp =	'\0'; 
	var sSp1 = ""; 
	var sSp2 = ""; 
	for(var i	= 0; i < t.length; i++) 
	{ 
		var	c =	t.charAt(i); 
		if(c ==	' '	|| isdigit(c))  
			continue; 
		else if(cSp	== '\0'	&& (c == '/' ||	c == '-' ||	c == '.')) 
		{ 
			cSp =	c; 
			sSp1 = t.substring(i+1,l); 
		} 
		else if(c == cSp)  
			sSp2 = t.substring(i+1,l); 
		else if(c != cSp)  
			return false; 
	} 
	if(0 == sSp1.length) return false; 
	var m; 
	var d; 
	var y;  
	if(f=="mmddyy") 
	{ 
		m =	atoi(t); 
		d =	atoi(sSp1); 
		if(0 !=	sSp2.length) 
			y = atoi(sSp2); 
		else  
			y = DefYr(m,d); 
	} 
	else if(f=="ddmmyy") 
	{ 
		m =	atoi(sSp1); 
		d =	atoi(t); 
		if(0 !=	sSp2.length) 
			y = atoi(sSp2); 
		else 
			y = DefYr(m,d); 
	} 
	else if (f=="yymmdd")		// 增加yymmdd的处理 
	{ 
//		alert("here"); 
		y = atoi(t); 
		m = atoi(sSp1); 
		if (0!=sSp2.length) 
		{ 
			d = atoi(sSp2); 
		} 
		else 
			d = DefYr(m,d); 
	} 
	else 
	{ 
		if(0 ==	sSp2.length) return	false; 
		m =	atoi(sSp1); 
		d =	atoi(sSp2); 
		y =	atoi(t); 
	} 
	if(y < 100) 
	{ 
		y =	1900+y; 
		while(y	< g_yLow)  
			y	= y+100; 
	} 
	if(y < g_MINY	|| y > g_MAXY || m < 1 || m	> 12) 
		return false; 
	if(d < 1 || d	> GetMonthCount(m,y)) 
		return false; 
	g_month =	m; 
	g_day	= d; 
	g_year = y; 
	return true; 
} 
 
function DefYr(m,d) 
{ 
	var dt = new Date(); 
	var yCur = (dt.getYear() < 1000) ? 1900+dt.getYear() : dt.getYear(); 
	if(m-1 < dt.getMonth() ||	(m-1 ==	dt.getMonth() && d < dt.getDate())) 
		return 1+yCur; 
	else return 
		yCur; 
} 
 
function atoi(s) 
{ 
	var t	= 0; 
	for(var i	= 0; i < s.length; i++) 
	{ 
		var	c =	s.charAt(i); 
		if(!isdigit(c)) 
			return t; 
		else 
			t = t*10 +	(c-'0'); 
	} 
	return t; 
} 
 
function isdigit(c) 
{ 
	return(c >= '0' &&	c <= '9'); 
} 
 
function GetMonthCount(m,y) 
{ 
	var c	= rgMC[m-1]; 
	if((2	== m) && IsLeapYear(y)) 
		c++; 
	return c; 
} 
 
function IsLeapYear(y) 
{ 
	if(0 == y	% 4	&& ((y % 100 !=	0) || (y % 400 == 0)))  
		return true; 
	else 
		return false; 
} 
 
//function ShowCalendar(eP,eD,eDP,dmin,dmax,fnCB) 
function ShowCalendar(eP,eD,eDP,fnCB) 
{ 
	var dseed = new Date(); 
	dmin = new Date(dseed.getFullYear()-100,1,1); 
	dmax = new Date(dseed.getFullYear()+100, 1, 1); 
	var dF=document.all.CalFrame; 
	var wF=window.frames.CalFrame; 
 
	if(null==wF.g_fCalLoaded || false==wF.g_fCalLoaded) 
	{ 
		alert("Unable to load popup	calendar.\r\nPlease reload the page."); 
		return; 
	} 
	wF.SetMinMax(new Date(dmin), new Date(dmax)); 
	g_fnCB=fnCB; 
 
	if(eD==g_eC && "block"==dF.style.display) 
	{ 
		if(g_eCV != eD.value &&	GetInputDate(eD.value,g_dFmt)) 
		{ 
			wF.SetInputDate(g_day,g_month,g_year); 
			//alert("SetDate in ShowCalendar * 1"); 
			wF.SetDate(g_day,g_month,g_year); 
			g_eCV=eD.value; 
		} 
		else 
			dF.style.display="none"; 
	} 
	else 
	{ 
		if(GetInputDate(eD.value,g_dFmt)) 
		{ 
			wF.SetInputDate(g_day,g_month,g_year); 
			//alert("SetDate in ShowCalendar * 2"); 
			wF.SetDate(g_day,g_month,g_year); 
		} 
		else if(null !=	eDP && GetInputDate(eDP.value,g_dFmt)) 
		{ 
			wF.SetInputDate(g_day,g_month,g_year); 
			//alert("SetDate in ShowCalendar * 3"); 
			wF.SetDate(g_day,g_month,g_year); 
		} 
		else 
		{ 
			//var dt=new Date(dmin); 
			var dt=new Date(); 
			wF.SetInputDate(-1,-1,-1); 
			//alert("dt="+dt); 
			wF.SetDate(dt.getDate(),dt.getMonth()+1,dt.getFullYear()); 
		} 
		var	eL=0;var eT=0; 
		for(var	p=eP; p&&p.tagName!='BODY';	p=p.offsetParent) 
		{ 
			eL+=p.offsetLeft; 
			eT+=p.offsetTop; 
		} 
		var	eH=eP.offsetHeight; 
		var	dH=dF.style.pixelHeight; 
		var	sT=document.body.scrollTop; 
		dF.style.left=eL; 
		if(eT-dH >=	sT && eT+eH+dH > document.body.clientHeight+sT) 
			dF.style.top=eT-dH; 
		else 
			dF.style.top=eT+eH; 
		if("none"==dF.style.display) 
			dF.style.display="block"; 
		g_eC=eD; 
		g_eCV=eD.value; 
	} 
} 
 
function SetDate(d,m,y) 
{ 
	if (d==null && m==null && y==null) 
	{ 
		g_eC.focus(); 
		g_eC.value = "" 
		return; 
	} 
	var ds=GetDateSep(); 
	g_eC.focus(); 
	if("mmddyy"==g_dFmt) 
		g_eC.value=m+ds+d+ds+y; 
	else if("ddmmyy"==g_dFmt) 
		g_eC.value=d+ds+m+ds+y; 
	else if("yymmdd"==g_dFmt) 
		g_eC.value =y+ds+m+ds+d; 
	else 
		g_eC.value=y+ds+m+ds+d; 
	g_eCV=g_eC.value; 
	if(null != g_fnCB	&& "" != g_fnCB) 
		eval(g_fnCB); 
} 
 
function GetDOW2(d,m,y) 
{ 
	var dt=new Date(y,m-1,d); 
	return(dt.getDay()+(7-GetDowStart()))%7; 
} 
 
function LoadMonths(n) 
{ 
	var dt=new Date(); 
	var m=dt.getMonth()+1; 
	var y=dt.getFullYear(); 
	var rg=new Array(n); 
	for(i=0; i < n; i++) 
	{ 
		rg[i]=document.createElement("IMG"); 
		rg[i].src="/eta/months/w" +	GetDOW2(1,m,y) + "d" + GetMonthCount(m,y) +	".gif"; 
		m++; 
		if(12 <	m) 
		{ 
			m=1; 
			y++; 
		} 
	} 
} 
 
LoadMonths(12);