function atCalendarControl(){
	var calendar = this;
	this.calendarPad = null;
	this.prevMonth = null;
	this.nextMonth = null;
	this.prevYear = null;
	this.nextYear = null;
	this.goToday = null;
	this.calendarClose = null;
	this.calendarAbout = null;
	this.head = null;
	this.body = null;
	this.today = [];
	this.currentDate = [];
	this.sltDate;
	this.target;
	this.source;

	/************** 加入日历底板及阴影 *********************/
	this.addCalendarPad = function() {
		document.write("<div id='divCalendarpad' style='position:absolute;top:100;left:0;width:215;height:161;display:none; z-index:1000;filter:progid:DXImageTransform.Microsoft.Shadow(color=#777777, Direction=135, Strength=3) alpha(Opacity=90);'>");
		document.write("<iframe id='calFrame' frameborder=0 height=161 width=215></iframe>");
		document.write("</div>");
		calendar.calendarPad = document.all.divCalendarpad;
	}

	/*********** 加入日历面板 ************/
	this.addCalendarBoard = function() {
		var BOARD = this;
		var divBoard = document.createElement("div");
		calendar.calendarPad.insertAdjacentElement("beforeEnd", divBoard);
		divBoard.style.cssText = "position:absolute;top:0;left:0;width:215;height:161;border:1 outset;background-color:buttonface;";
		var tbBoard = document.createElement("table");
		divBoard.insertAdjacentElement("beforeEnd", tbBoard);
		tbBoard.style.cssText = "position:absolute;top:0;left:0;width:215;height:10;font-size:9pt;";
		tbBoard.cellPadding = 0;
		tbBoard.cellSpacing = 0;
		tbBoard.bgColor = "#ffffff";
		/*********** About **************/
		trRow = tbBoard.insertRow(0);
		calendar.calendarAbout = calendar.insertTbCell(trRow, 0, "-", "center");
		calendar.calendarAbout.onclick = function() {calendar.about();}
		/*********** Head ***************/
		tbCell = trRow.insertCell(1);
		tbCell.colSpan = 5;
		tbCell.bgColor = "#FFFFFF";
		tbCell.align = "center";
		tbCell.style.cssText = "cursor:default";
		calendar.head = tbCell;
		/*********** Close **************/
		tbCell = trRow.insertCell(2);
		calendar.calendarClose = calendar.insertTbCell(trRow, 2, "<font color=red><b>×</b></font>", "center");
		calendar.calendarClose.title = "关闭";
		calendar.calendarClose.onclick = function() {calendar.hide();}
		/*********** PrevYear ***********/
		trRow = tbBoard.insertRow(1);
		calendar.prevYear = calendar.insertTbCell(trRow, 0, "&lt;&lt;", "center");
		calendar.prevYear.title = "上一年";
		calendar.prevYear.onmousedown = function() {
			calendar.currentDate[0]--;
			calendar.show(calendar.target, calendar.currentDate[0] + "-" + calendar.currentDate[1] + "-" + calendar.currentDate[2], calendar.source);
		}
		/*********** PrevMonth **********/
		calendar.prevMonth = calendar.insertTbCell(trRow,1,"&lt;","center");
		calendar.prevMonth.title = "上一月";
		calendar.prevMonth.onmousedown = function() {
			calendar.currentDate[1]--;
			if(calendar.currentDate[1] == 0) {
				calendar.currentDate[1] = 12;
				calendar.currentDate[0]--;
			}
			calendar.show(calendar.target, calendar.currentDate[0] + "-" + calendar.currentDate[1] + "-" + calendar.currentDate[2], calendar.source);
		}
		/*********** Today **************/
		calendar.goToday = calendar.insertTbCell(trRow, 2, "今天", "center", 3);
		calendar.goToday.title = "选择今天";
		calendar.goToday.onclick = function() {
			calendar.sltDate = calendar.today[0];
			if(calendar.today[1].toString().length < 2) calendar.sltDate += "-0" + calendar.today[1];
			else calendar.sltDate += "-" + calendar.today[1];
			if(calendar.today[2].toString().length < 2) calendar.sltDate += "-0" + calendar.today[2];
			else calendar.sltDate += "-" + calendar.today[2];
			calendar.target.value = calendar.sltDate;
			calendar.hide();
		}
		/*********** NextMonth ***********/
		calendar.nextMonth = calendar.insertTbCell(trRow, 3, "&gt;", "center");
		calendar.nextMonth.title = "下一月";
		calendar.nextMonth.onmousedown = function() {
			calendar.currentDate[1]++;
			if(calendar.currentDate[1] == 13) {
				calendar.currentDate[1] = 1;
				calendar.currentDate[0]++;
			}
			calendar.show(calendar.target, calendar.currentDate[0] + "-" + calendar.currentDate[1] + "-" + calendar.currentDate[2], calendar.source);
		}
		/*********** NextYear *************/
		calendar.nextYear = calendar.insertTbCell(trRow, 4, "&gt;&gt;", "center");
		calendar.nextYear.title = "下一年";
		calendar.nextYear.onmousedown = function() {
			calendar.currentDate[0]++;
			calendar.show(calendar.target, calendar.currentDate[0] + "-" + calendar.currentDate[1] + "-" + calendar.currentDate[2], calendar.source);
		} 
		trRow = tbBoard.insertRow(2);
		var cnDateName = new Array("日", "一", "二", "三", "四", "五", "六");
		for (var i = 0; i < 7; i++) {
			tbCell = trRow.insertCell(i)
			tbCell.innerText = cnDateName[i];
			tbCell.align = "center";
			tbCell.width = 30;
			tbCell.style.cssText = "cursor:default;border:1 solid #ffffff;background-color:#e9f2f8;";
		}
		/********** Calendar Body *********/
		trRow = tbBoard.insertRow(3);
		tbCell = trRow.insertCell(0);
		tbCell.colSpan = 7;
		tbCell.height = 97;
		tbCell.vAlign = "top";
		tbCell.bgColor = "#ffffff";
		var tbBody = document.createElement("table");
		tbCell.insertAdjacentElement("beforeEnd", tbBody);
		tbBody.style.cssText = "position:relative;top:0;left:0;width:215;height:103;font-size:9pt;"
		tbBody.cellPadding = 0;
		tbBody.cellSpacing = 1;
		calendar.body = tbBody;
	}
	/******** 加入功能按钮公共样式 ***********/
	this.insertTbCell = function(trRow, cellIndex, TXT, trAlign, tbColSpan) {
		var tbCell = trRow.insertCell(cellIndex);
		if(tbColSpan != undefined) tbCell.colSpan = tbColSpan;
		var btnCell = document.createElement("button");
		tbCell.insertAdjacentElement("beforeEnd", btnCell);
		btnCell.value = TXT;
		btnCell.style.cssText = "width:100%;border:1 outset;background-color:#B3D5FF;";
		btnCell.onmouseover = function() {
			btnCell.bgColor = "#ffffff";
		}
		btnCell.onmouseout = function() {
			btnCell.bgColor = "#B3D5FF";
		}
		btnCell.onmousedown = function() {
			btnCell.bgColor = "#ffffff";
		}
		btnCell.onmouseup = function() {
			btnCell.bgColor = "#ffffff";
		}
		btnCell.onclick = function() {
			btnCell.blur();
		}
		return btnCell;
	}
	this.setDefaultDate = function() {
		var dftDate = new Date();
		calendar.today[0] = dftDate.getYear();
		calendar.today[1] = dftDate.getMonth() + 1;
		calendar.today[2] = dftDate.getDate();
	} 
	/************ Show Calendar *************/
	this.show = function(targetObject, defaultDate, sourceObject) {
		if(targetObject == undefined) {
			alert("未设置目标对像. \n方法: ATCALENDAR.show(obj 目标对像,string 默认日期,obj 点击对像);\n\n目标对像:接受日期返回值的对像.\n默认日期:格式为\"yyyy-mm-dd\",缺省为当日日期.\n点击对像:点击这个对像弹出calendar,默认为目标对像.\n");
			return false;
		} else calendar.target = targetObject;
		if(sourceObject == undefined) calendar.source = calendar.target;
		else calendar.source = sourceObject;
		var firstDay;
		var Cells = new Array();
		
		if(defaultDate == undefined || defaultDate == "") {
			var theDate = new Array();
			theDate[0] = calendar.today[0];
			theDate[1] = calendar.today[1];
			theDate[2] = calendar.today[2];
		} else {
			var reg = /^\d{4}-\d{1,2}-\d{1,2}$/
			if(!defaultDate.match(reg)) {
				alert("默认日期的格式不正确\n\n默认日期可接受格式为:'yyyy-mm-dd'");
				return;
			}
			var theDate = defaultDate.split("-");
		}
		calendar.currentDate[0] = theDate[0];
		calendar.currentDate[1] = theDate[1];
		calendar.currentDate[2] = theDate[2];
		
		//清楚head中内容
		while(calendar.head.childNodes.length > 0) {
			calendar.head.removeChild(calendar.head.childNodes[0]);
		}
		//在head中显示年选择
		var nfSelect = document.createElement("select");
		for(i = 1900; i <= 2020; i++) {
			var nfOption = document.createElement("option");
			nfOption.value = i;
			if(calendar.currentDate[0] == i) {
				nfOption.selected = true;
			}		
			var nfText = document.createTextNode(i + "年");		
			nfOption.appendChild(nfText);
			nfSelect.appendChild(nfOption);
		}
		nfSelect.style.cssText = "width: 79px; background-color:#B7D6FD;";
		nfSelect.onchange = function() {
			calendar.show(calendar.target, nfSelect.value + "-" + calendar.currentDate[1] + "-" + calendar.currentDate[2], calendar.source);
		}
		calendar.head.appendChild(nfSelect);
		//在head中显示月选择
		var yfSelect = document.createElement("select");
		for(i = 1; i <= 12; i++) {
			var yfOption = document.createElement("option");
			yfOption.value = i;
			if(calendar.currentDate[1] == i) {
				yfOption.selected = true;
			}		
			var yfText = document.createTextNode(i + "月");		
			yfOption.appendChild(yfText);
			yfSelect.appendChild(yfOption);
		}
		yfSelect.style.cssText = "width: 79px; background-color:#B7D6FD;";
		yfSelect.onchange = function() {
			calendar.show(calendar.target, calendar.currentDate[0] + "-" + yfSelect.value + "-" + calendar.currentDate[2], calendar.source);
		}
		calendar.head.appendChild(yfSelect);
		
		theFirstDay = calendar.getFirstDay(theDate[0], theDate[1]);
		theMonthLen = theFirstDay + calendar.getMonthLen(theDate[0], theDate[1]);
		calendar.calendarPad.style.display = "";
		var theRows = Math.ceil((theMonthLen) / 7);
		//清除旧的日历;
		while (calendar.body.rows.length > 0) {
			calendar.body.deleteRow(0);
		}
		//建立新的日历;
		var n = 0;
		day = 0;
		for(i = 0; i < theRows; i++) {
			theRow = calendar.body.insertRow(i);
			for(j = 0; j < 7; j++){
				n++;
				if(n > theFirstDay && n <= theMonthLen){
					day = n - theFirstDay;
					calendar.insertBodyCell(theRow, j, day);
				} else {
					var theCell = theRow.insertCell(j);
					theCell.style.cssText = "background-color:#ffffff;cursor:default;";
				}
			}
		} 
		//****************调整日历位置**************//
		var offsetPos = calendar.getAbsolutePos(calendar.source);   //计算对像的位置
		if((document.body.clientHeight - (offsetPos.y + calendar.source.offsetHeight)) < calendar.calendarPad.style.pixelHeight) {
			var calTop = offsetPos.y - calendar.calendarPad.style.pixelHeight;			
		} else {
			var calTop = offsetPos.y + calendar.source.offsetHeight;			
		}
		if((document.body.clientWidth - offsetPos.x) < calendar.calendarPad.style.pixelWidth) {
			var calLeft = offsetPos.x + calendar.source.offsetWidth - calendar.calendarPad.style.pixelWidth;			
		} else {
			var calLeft = offsetPos.x;
		}
		calendar.calendarPad.style.pixelLeft = calLeft;
		calendar.calendarPad.style.pixelTop = calTop;
	}

	/****************** 计算对像的位置 *************************/
	this.getAbsolutePos = function(el) {
		var r = { x: el.offsetLeft, y: el.offsetTop };
		if (el.offsetParent) {
			var tmp = calendar.getAbsolutePos(el.offsetParent);
			r.x += tmp.x;
			r.y += tmp.y;
		}
		return r;
	};
	 
	//************* 插入日期单元格 **************/
	this.insertBodyCell = function(theRow, j, day, targetObject) {
		var theCell = theRow.insertCell(j);
		if(j == 0) var theBgColor = "#DBFFAC";
		else var theBgColor = "#ffffff";
		if(day == calendar.currentDate[2]) var theBgColor = "#CCCCCC";
		if(day == calendar.today[2]) var theBgColor = "#70E07D";
		theCell.bgColor = theBgColor;
		theCell.innerText = day;
		theCell.align = "center";
		theCell.width = 30;
		theCell.style.cssText = "cursor:hand;";
		theCell.onmouseover = function() { 
			theCell.bgColor="#57C2FF";
		}
		theCell.onmouseout = function() { 
			theCell.bgColor = theBgColor;
		}
		theCell.onmousedown = function() {
			theCell.bgColor = "#FFFFCC";
		}
		theCell.onclick = function() {
			calendar.sltDate = calendar.currentDate[0];
			if(calendar.currentDate[1].toString().length < 2) calendar.sltDate += "-0" + calendar.currentDate[1];
			else calendar.sltDate += "-" + calendar.currentDate[1];
			if(day.toString().length < 2) calendar.sltDate += "-0" + day;
			else calendar.sltDate += "-" + day;
			calendar.target.value = calendar.sltDate;
			calendar.hide();
		}
	}
	/********** 取得月份的第一天为星期几 ************/
	this.getFirstDay = function(theYear, theMonth) {
	var firstDate = new Date(theYear, theMonth-1, 1);
		return firstDate.getDay();
	}
	/************ 取得月份共有几天 ****************/ 
	this.getMonthLen = function(theYear, theMonth) {
		theMonth--;
		var oneDay = 1000 * 60 * 60 * 24;
		var thisMonth = new Date(theYear, theMonth, 1);
		var nextMonth = new Date(theYear, theMonth + 1, 1);
		var len = Math.ceil((nextMonth.getTime() - thisMonth.getTime())/oneDay);
		return len;
	}
	/************** 隐藏日历******************/
	this.hide = function() {
		calendar.calendarPad.style.display = "none";
	}
	/************** 关于日历******************/
	this.about=function() {
		var strAbout = "\n";
		strAbout += "-\t:\t关 于\n";
		strAbout += "x\t:\t关 闭\n";
		strAbout += "<<\t:\t上 年\n";
		strAbout += "<\t:\t上 月\n"; 
		strAbout += "今天\t:\t当 天\n";
		strAbout += ">\t:\t下 月\n";
		strAbout += "<<\t:\t下 年\n";
		strAbout += "\n日历控件版本：v1.0\n\n开发设计:管孝锋 2007-01-01\n";
		alert(strAbout);
	}
	/************** 从这里开始 **************/
	this.setup = function(defaultDate) {
		calendar.addCalendarPad();
		calendar.addCalendarBoard();
		calendar.setDefaultDate();
	}
	calendar.setup();
}