function jsdate()
{
	this.today = new Date();
	this.Year = (isIE)? this.today.getYear():(this.today.getYear()+1900);
	this.Month = this.today.getMonth();
	this.Day = this.today.getDate();
	this.show = showDateDivOnObj;
	this.setNewDate = setNewDateAndShow;
	this.setNewDateByObj = setNewDateByObjAndShow;
	this.resetYear = resetDateObjYear;
	this.closeDiv = closeDivObjShow;
	this.setOK = setDateComplete;
	this.ssYear = (isIE)? this.today.getYear():(this.today.getYear()+1900);
	this.eeYear = (isIE)? (this.today.getYear()-60):(this.today.getYear()-60+1900);
	this.setYear = setTheYear;
	this.xoffset = 80;
	this.yoffset = -110;
}
function setTheYear(ss, ee)
{
	if(ee > ss)
	{
		this.ssYear = ee-1;
		this.eeYear = ss;
	}
	else
	{
		this.ssYear = ss;
		this.eeYear = ee-1;
	}
}
function showDateDivOnObj(obj)
{
	var divobj = document.getElementById("jsDateDiv");
	var monthStr = [_MONTH_1, _MONTH_2, _MONTH_3, _MONTH_4, _MONTH_5, _MONTH_6, _MONTH_7, _MONTH_8, _MONTH_9, _MONTH_10, _MONTH_11, _MONTH_12];
	var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
	var weekStr = [
		[_WEEK_0, "#FFFFFF", "#FFCCCC", "#C00000"],
		[_WEEK_1, "#000000", "#FFFFFF", "#A7E5FF"],
		[_WEEK_2, "#000000", "#FFFFFF", "#A7E5FF"],
		[_WEEK_3, "#000000", "#FFFFFF", "#A7E5FF"],
		[_WEEK_4, "#000000", "#FFFFFF", "#A7E5FF"],
		[_WEEK_5, "#000000", "#FFFFFF", "#A7E5FF"],
		[_WEEK_6, "#FFFFFF", "#E6FFC3", "#008000"]
	];
	var i, j, k, fweek, isThisMonth, day_n, isOutDay, kn;
	if((this.Year % 4) == 0)
		monthDays[1] = 29;
	var jsTable  = "<form name=\"DateFrm\" action=\"\" onsubmit=\"return false;\"><table id=\"DateTable\" bordercolor=\"#9F9F9F\" bgcolor=\"#000000\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">\n";
	jsTable += "	<tr>\n";
	jsTable += "		<td>\n";
	jsTable += "		<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n";
	jsTable += "			<tr>\n";
	jsTable += "				<td style=\"color:#FFFEA0;\">" + _A_D + " ";
	jsTable += "<select name=\"selYear\" style=\"font-size:12px;\" onchange=\"MyJsDate.resetYear(document." + obj.form.name + "." + obj.name + ", this.value)\">\n";
	for(i=this.ssYear; i>this.eeYear; i--)
	{
		jsTable += "<option value=\"" + i + "\"";
		if(this.Year == i)
		{
			jsTable += " selected";
		}
		jsTable += ">" + i + "</option>\n";
	}
	jsTable += "</select>\n";
	jsTable += _YEAR + "\n";
	jsTable += "<a href=\"Javascript:MyJsDate.setNewDate(document." + obj.form.name+ "." + obj.name+ ", " + this.Year + ", " + (this.Month-1) + ", " + this.Day + ")\" style=\"color:#FFFF00; font-size:14px;\">&nbsp;&laquo;&nbsp;</a> ";
	jsTable += monthStr[this.Month];
	jsTable += " <a href=\"Javascript:MyJsDate.setNewDate(document." + obj.form.name+ "." + obj.name+ ", " + this.Year + ", " + (this.Month+1) + ", " + this.Day + ")\" style=\"color:#FFFF00; font-size:14px;\">&nbsp;&raquo;&nbsp; </a>";
	jsTable += "</td>\n";
	jsTable += "				<td width=\"20\"><a href=\"Javascript:MyJsDate.closeDiv();\"><img src=\"/images/delitem.gif\" border=\"0\" width=\"16\" height=\"16\"></a></td>";
	jsTable += "			</tr>\n";
	jsTable += "		</table>\n";
	jsTable += "		</td>\n";
	jsTable += "	</tr>\n";
	jsTable += "	<tr>\n";
	jsTable += "		<td bgcolor=\"#000000\">";
	jsTable += "		<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" width=\"100%\">\n";
	jsTable += "			<tr>\n";
	for(i=0; i<weekStr.length; i++)
	{
		jsTable += "				<td align=\"center\" style=\"color:" + weekStr[i][1] + "; background-color:" + weekStr[i][3] + ";\">" + weekStr[i][0] + "</td>\n";
	}
	jsTable += "			</tr>\n";
	var dd = new Date(this.Year, this.Month, 1);
	fweek = dd.getDay();
	isThisMonth = true;
	day_n = 1;
	isOutDay = false;
	if(fweek > 0)
	{
		isThisMonth = false;
		if(this.Month > 0)
			day_n = monthDays[this.Month-1]-fweek+1;
		else
			day_n = monthDays[11]-fweek+1;
	}
	for(i=0; i<6; i++)
	{
		jsTable += "			<tr>\n";
		for(j=0; j<weekStr.length; j++)
		{
			jsTable += "				<td align=\"center\" style=\"font-weight:bold;";
			if(isThisMonth)
			{
				if(day_n == this.Day)
				{
					jsTable += " color: #FFFFFF; background-color: #FF9000; cursor:pointer;\" onclick=\"MyJsDate.setOK(document." + obj.form.name+ "." + obj.name+ ", " + day_n + ", 'setDateAfter();');\">";
				}
				else
				{
					jsTable += " color:#000000; background-color: " + weekStr[j][2] + "; cursor:pointer;\" onclick=\"MyJsDate.setOK(document." + obj.form.name+ "." + obj.name+ ", " + day_n + ", 'setDateAfter();');\">";
				}
			}
			else
			{
				jsTable += " color:#999999; font-size:10px; background-color: " + weekStr[j][2] + ";\">";
			}
			jsTable += day_n;
			jsTable += "</td>\n";
			day_n++;
			if(!isThisMonth)
			{
				if(this.Month > 0)
					kn = monthDays[this.Month-1];
				else
					kn = monthDays[11];
				if(day_n > kn)
				{
					day_n = 1;
					isThisMonth = true;
				}
			}
			if(isThisMonth)
			{
				if(day_n > monthDays[this.Month])
				{
					day_n = 1;
					isThisMonth = false;
					isOutDay = true;
				}
			}
		}
		jsTable += "			</tr>\n";
		if(isOutDay)
			break;
	}
	jsTable += "		</table>\n";
	jsTable += "		</td>\n";
	jsTable += "	</tr>\n";
	jsTable += "</table></form>\n";
	var divLocXY = get_element_loc(obj);
	divobj.innerHTML = jsTable;
	divobj.style.left = (divLocXY.x + this.xoffset) + "px";
	divobj.style.top = (divLocXY.y + this.yoffset) + "px";
	divobj.style.display = "";
}
function setNewDateAndShow(obj, y, m, d)
{
	if(m < 0)
	{
		m = 11;
		y --;
	}
	if(m > 11)
	{
		m = 0;
		y ++;
	}
	this.Year = y;
	this.Month = m;
	this.Day = d;
	this.show(obj);
}
function setNewDateByObjAndShow(obj)
{
	if(obj.value == "")
	{
		var d = new Date();
		var yyyy, mm, dd;
		yyyy = d.getYear();
		mm = d.getMonth() + 1;
		dd = d.getDate();
		if(mm < 10) mm = "0" + mm;
		if(dd < 10) dd = "0" + dd;
		 obj.value = yyyy + "/" + mm + "/" + dd;
	}
	var ddd = obj.value.split('/');
	y = parseInt(ddd[0], 10);
	m = parseInt(ddd[1], 10)-1;
	d = parseInt(ddd[2], 10);
	if(y == 0) y = this.today.getYear();
	if(m < 0) m = this.today.getMonth();
	if(d == 0) d = this.today.getDate();
	this.Year = y;
	this.Month = m;
	this.Day = d;
	this.show(obj);
}
function resetDateObjYear(obj, newY)
{
	var ddd = obj.value.split('/');
	y = newY;
	m = parseInt(ddd[1], 10)-1;
	d = parseInt(ddd[2], 10);
	if(y == 0) y = this.today.getYear();
	if(m < 0) m = this.today.getMonth();
	if(d == 0) d = this.today.getDate();
	this.Year = y;
	this.Month = m;
	this.Day = d;
	this.show(obj);
}
function closeDivObjShow()
{
	var divobj = document.getElementById("jsDateDiv");
	divobj.style.display = "none";
}
function setDateComplete(obj, day_n, func)
{
	var monthStr = (this.Month+1);
	
	if(monthStr < 10)
		monthStr = "0" + monthStr;
	
	this.Day = day_n;
	
	if(day_n < 10)
		day_n = "0" + day_n;
	
	obj.value = this.Year + "/" + monthStr + "/" + day_n;
	this.closeDiv();
	eval(func);
}
function setDateAfter()
{
}

document.writeln("<div id=\"jsDateDiv\" class=\"popDiv\" style=\"width:240px; display:none;\"></div>");

var MyJsDate = new jsdate();

