1
function atCalendarControl(){
2
var calendar=this;
3
this.calendarPad=null;
4
this.prevMonth=null;
5
this.nextMonth=null;
6
this.prevYear=null;
7
this.nextYear=null;
8
this.goToday=null;
9
this.calendarClose=null;
10
this.calendarAbout=null;
11
this.head=null;
12
this.body=null;
13
this.today=[];
14
this.currentDate=[];
15
this.sltDate;
16
this.target;
17
this.source;
18
19
/************** 加入日历底板及阴影 *********************/
20
this.addCalendarPad=function(){
21
document.write("<div id='divCalendarpad' style='position:absolute;top:100;left:0;width:255;height:167;display:none;'>");
22
document.write("<iframe frameborder=0 height=168 width=255></iframe>");
23
document.write("<div style='position:absolute;top:4;left:4;width:248;height:164;background-color:#336699;'></div>");
24
document.write("</div>");
25
calendar.calendarPad=document.all.divCalendarpad;
26
}
27
/************** 加入日历面板 *********************/
28
this.addCalendarBoard=function(){
29
var BOARD=this;
30
var divBoard=document.createElement("div");
31
calendar.calendarPad.insertAdjacentElement("beforeEnd",divBoard);
32
divBoard.style.cssText="position:absolute;top:0;left:0;width:250;height:166;border:1 outset;background-color:buttonface;";
33
34
var tbBoard=document.createElement("table");
35
divBoard.insertAdjacentElement("beforeEnd",tbBoard);
36
tbBoard.style.cssText="position:absolute;top:0;left:0;width:100%;height:10;font-size:9pt;";
37
tbBoard.cellPadding=0;
38
tbBoard.cellSpacing=1;
39
tbBoard.bgColor="#333333";
40
41
/************** 设置各功能按钮的功能 *********************/
42
/*********** Calendar About Button ***************/
43
trRow = tbBoard.insertRow(0);
44
calendar.calendarAbout=calendar.insertTbCell(trRow,0,"-","center");
45
calendar.calendarAbout.onclick=function(){calendar.about();}
46
/*********** Calendar Head ***************/
47
tbCell=trRow.insertCell(1);
48
tbCell.colSpan=5;
49
tbCell.bgColor="#99CCFF";
50
tbCell.align="center";
51
tbCell.style.cssText = "cursor:default";
52
calendar.head=tbCell;
53
/*********** Calendar Close Button ***************/
54
tbCell=trRow.insertCell(2);
55
calendar.calendarClose = calendar.insertTbCell(trRow,2,"x","center");
56
calendar.calendarClose.title="关闭";
57
calendar.calendarClose.onclick=function(){calendar.hide();}
58
59
/*********** Calendar PrevYear Button ***************/
60
trRow = tbBoard.insertRow(1);
61
calendar.prevYear = calendar.insertTbCell(trRow,0,"<<","center");
62
calendar.prevYear.title="上一年";
63
calendar.prevYear.onmousedown=function(){
64
calendar.currentDate[0]--;
65
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);
66
}
67
/*********** Calendar PrevMonth Button ***************/
68
calendar.prevMonth = calendar.insertTbCell(trRow,1,"<","center");
69
calendar.prevMonth.title="上一月";
70
calendar.prevMonth.onmousedown=function(){
71
72
calendar.currentDate[1]--;
73
if(calendar.currentDate[1]==0){
74
calendar.currentDate[1]=12;
75
calendar.currentDate[0]--;
76
}
77
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);
78
}
79
/*********** Calendar Today Button ***************/
80
calendar.goToday = calendar.insertTbCell(trRow,2,"今天","center",3);
81
calendar.goToday.title="选择今天";
82
calendar.goToday.onclick=function(){
83
var d;
84
d =new Date();
85
var e;
86
e=d.getMonth()+1;
87
88
// calendar.sltDate=calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2];
89
calendar.target.value=d.getYear() + "-"+e+"-"+d.getDate();
90
//calendar.target.value=calendar.sltDate;
91
calendar.hide();
92
//calendar.show(calendar.target,calendar.today[0]+"-"+calendar.today[1]+"-"+calendar.today[2],calendar.source);
93
}
94
/*********** Calendar NextMonth Button ***************/
95
calendar.nextMonth = calendar.insertTbCell(trRow,3,">","center");
96
calendar.nextMonth.title="下一";
97
calendar.nextMonth.onmousedown=function(){
98
calendar.currentDate[1]++;
99
if(calendar.currentDate[1]==13){
100
calendar.currentDate[1]=1;
101
calendar.currentDate[0]++;
102
}
103
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);
104
}
105
/*********** Calendar NextYear Button ***************/
106
calendar.nextYear = calendar.insertTbCell(trRow,4,">>","center");
107
calendar.nextYear.title="下一年";
108
calendar.nextYear.onmousedown=function(){
109
calendar.currentDate[0]++;
110
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);
111
112
}
113
114
trRow = tbBoard.insertRow(2);
115
var cnDateName = new Array("周日","周一","周二","周三","周四","周五","周六");
116
for (var i = 0; i < 7; i++) {
117
tbCell=trRow.insertCell(i)
118
tbCell.innerText=cnDateName[i];
119
tbCell.align="center";
120
tbCell.width=35;
121
tbCell.style.cssText="cursor:default;border:1 solid #99CCCC;background-color:#99CCCC;";
122
}
123
124
/*********** Calendar Body ***************/
125
trRow = tbBoard.insertRow(3);
126
tbCell=trRow.insertCell(0);
127
tbCell.colSpan=7;
128
tbCell.height=97;
129
tbCell.vAlign="top";
130
tbCell.bgColor="#F0F0F0";
131
var tbBody=document.createElement("table");
132
tbCell.insertAdjacentElement("beforeEnd",tbBody);
133
tbBody.style.cssText="position:relative;top:0;left:0;width:245;height:103;font-size:9pt;"
134
tbBody.cellPadding=0;
135
tbBody.cellSpacing=1;
136
calendar.body=tbBody;
137
}
138
/************** 加入功能按钮公共样式 *********************/
139
this.insertTbCell=function(trRow,cellIndex,TXT,trAlign,tbColSpan){
140
var tbCell=trRow.insertCell(cellIndex);
141
if(tbColSpan!=undefined) tbCell.colSpan=tbColSpan;
142
143
var btnCell=document.createElement("button");
144
tbCell.insertAdjacentElement("beforeEnd",btnCell);
145
btnCell.value=TXT;
146
btnCell.style.cssText="width:100%;border:1 outset;background-color:buttonface;";
147
btnCell.onmouseover=function(){
148
btnCell.style.cssText="width:100%;border:1 outset;background-color:#F0F0F0;";
149
150
}
151
btnCell.onmouseout=function(){
152
btnCell.style.cssText="width:100%;border:1 outset;background-color:buttonface;";
153
}
154
// btnCell.onmousedown=function(){
155
// btnCell.style.cssText="width:100%;border:1 inset;background-color:#F0F0F0;";
156
// }
157
btnCell.onmouseup=function(){
158
btnCell.style.cssText="width:100%;border:1 outset;background-color:#F0F0F0;";
159
}
160
btnCell.onclick=function(){
161
btnCell.blur();
162
}
163
return btnCell;
164
}
165
this.setDefaultDate=function(){
166
var dftDate=new Date();
167
calendar.today[0]=dftDate.getYear();
168
calendar.today[1]=dftDate.getMonth()+1;
169
calendar.today[2]=dftDate.getDate();
170
}
171
172
/****************** Show Calendar *********************/
173
this.show=function(targetObject,defaultDate,sourceObject){
174
if(targetObject==undefined) {
175
alert("未设置目标对像. \n方法: ATCALENDAR.show(obj 目标对像,string 默认日期,obj 点击对像);\n\n目标对像:接受日期返回值的对像.\n默认日期:格式为\"yyyy-mm-dd\",缺省为当日日期.\n点击对像:点击这个对像弹出calendar,默认为目标对像.\n");
176
return false;
177
}
178
else calendar.target=targetObject;
179
if(sourceObject==undefined) calendar.source=calendar.target;
180
else calendar.source=sourceObject;
181
182
var firstDay;
183
var Cells=new Array();
184
185
if(defaultDate==undefined || defaultDate==""){
186
var theDate=new Array();
187
calendar.head.innerText = calendar.today[0]+"-"+calendar.today[1]+"-"+calendar.today[2];
188
theDate[0]=calendar.today[0]; theDate[1]=calendar.today[1]; theDate[2]=calendar.today[2];
189
}
190
else{
191
var reg=/^\d{4}-\d{1,2}-\d{2}$/
192
if(!defaultDate.match(reg)){
193
alert("默认日期的格式不正确\n\n默认日期可接受格式为:'yyyy-mm-dd'");
194
return;
195
}
196
var theDate=defaultDate.split("-");
197
calendar.head.innerText = defaultDate;
198
}
199
calendar.currentDate[0]=theDate[0];
200
calendar.currentDate[1]=theDate[1];
201
calendar.currentDate[2]=theDate[2];
202
theFirstDay=calendar.getFirstDay(theDate[0],theDate[1]);
203
theMonthLen=theFirstDay+calendar.getMonthLen(theDate[0],theDate[1]);
204
//calendar.setEventKey();
205
206
calendar.calendarPad.style.display="";
207
var theRows = Math.ceil((theMonthLen)/7);
208
//清除旧的日历;
209
while (calendar.body.rows.length > 0) {
210
calendar.body.deleteRow(0)
211
}
212
//建立新的日历;
213
var n=0;day=0;
214
for(i=0;i<theRows;i++){
215
theRow=calendar.body.insertRow(i);
216
for(j=0;j<7;j++){
217
n++;
218
if(n>theFirstDay && n<=theMonthLen){
219
day=n-theFirstDay;
220
calendar.insertBodyCell(theRow,j,day);
221
}
222
223
else{
224
var theCell=theRow.insertCell(j);
225
theCell.style.cssText="background-color:#F0F0F0;cursor:default;";
226
}
227
}
228
}
229
230
//****************调整日历位置**************//
231
var offsetPos=calendar.getAbsolutePos(calendar.source);//计算对像的位置;
232
if((document.body.offsetHeight-(offsetPos.y+calendar.source.offsetHeight-document.body.scrollTop))<calendar.calendarPad.style.pixelHeight){
233
var calTop=offsetPos.y-calendar.calendarPad.style.pixelHeight;
234
}
235
else{
236
var calTop=offsetPos.y+calendar.source.offsetHeight;
237
}
238
if((document.body.offsetWidth-(offsetPos.x+calendar.source.offsetWidth-document.body.scrollLeft))>calendar.calendarPad.style.pixelWidth){
239
var calLeft=offsetPos.x;
240
}
241
else{
242
var calLeft=offsetPos.x+calendar.source.offsetWidth-calendar.calendarPad.style.pixelWidth ;
243
}
244
//alert(offsetPos.x);
245
calendar.calendarPad.style.pixelLeft=calLeft;
246
calendar.calendarPad.style.pixelTop=calTop;
247
}
248
/****************** 计算对像的位置 *************************/
249
this.getAbsolutePos = function(el) {
250
var r = { x: el.offsetLeft, y: el.offsetTop };
251
if (el.offsetParent) {
252
var tmp = calendar.getAbsolutePos(el.offsetParent);
253
r.x += tmp.x;
254
r.y += tmp.y;
255
}
256
return r;
257
};
258
259
//************* 插入日期单元格 **************/
260
this.insertBodyCell=function(theRow,j,day,targetObject){
261
var theCell=theRow.insertCell(j);
262
if(j==0) var theBgColor="#FF9999";
263
else var theBgColor="#FFFFFF";
264
if(day==calendar.currentDate[2]) var theBgColor="#CCCCCC";
265
if(day==calendar.today[2]) var theBgColor="#99FFCC";
266
theCell.bgColor=theBgColor;
267
theCell.innerText=day;
268
theCell.align="center";
269
theCell.width=35;
270
theCell.style.cssText="border:1 solid #CCCCCC;cursor:hand;";
271
theCell.onmouseover=function(){
272
theCell.bgColor="#FFFFCC";
273
theCell.style.cssText="border:1 outset;cursor:hand;";
274
}
275
theCell.onmouseout=function(){
276
theCell.bgColor=theBgColor;
277
theCell.style.cssText="border:1 solid #CCCCCC;cursor:hand;";
278
}
279
theCell.onmousedown=function(){
280
theCell.bgColor="#FFFFCC";
281
theCell.style.cssText="border:1 inset;cursor:hand;";
282
}
283
theCell.onclick=function(){
284
if(calendar.currentDate[1].length<2) calendar.currentDate[1]="0"+calendar.currentDate[1];
285
if(day.toString().length<2) day="0"+day;
286
calendar.sltDate=calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+day;
287
calendar.target.value=calendar.sltDate;
288
calendar.hide();
289
}
290
}
291
/************** 取得月份的第一天为星期几 *********************/
292
this.getFirstDay=function(theYear, theMonth){
293
var firstDate = new Date(theYear,theMonth-1,1);
294
return firstDate.getDay();
295
}
296
/************** 取得月份共有几天 *********************/
297
298
this.getMonthLen=function(theYear, theMonth) {
299
theMonth--;
300
var oneDay = 1000 * 60 * 60 * 24;
301
var thisMonth = new Date(theYear, theMonth, 1);
302
var nextMonth = new Date(theYear, theMonth + 1, 1);
303
var len = Math.ceil((nextMonth.getTime() - thisMonth.getTime())/oneDay);
304
return len;
305
}
306
/************** 隐藏日历 *********************/
307
this.hide=function(){
308
//calendar.clearEventKey();
309
calendar.calendarPad.style.display="none";
310
}
311
/************** 从这里开始 *********************/
312
this.setup=function(defaultDate){
313
calendar.addCalendarPad();
314
calendar.addCalendarBoard();
315
calendar.setDefaultDate();
316
}
317
/************** 关于AgetimeCalendar *********************/
318
this.about=function(){
319
/*//alert("Agetime Calendar V1.0\n\nwww.agetime.com\n");
320
popLeft = calendar.calendarPad.style.pixelLeft+4;
321
popTop = calendar.calendarPad.style.pixelTop+25;
322
var popup = window.createPopup();
323
var popupBody = popup.document.body;
324
popupBody.style.cssText="border:solid 2 outset;font-size:9pt;background-color:#F0F0F0;";
325
var popHtml = "<span style='color:#336699;font-size:12pt;'><U>关于 AgetimeCalendar</U></span><BR><BR>";
326
popHtml+="版本: v1.0<BR>日期: 2004-03-13";
327
popupBody.innerHTML=popHtml;
328
popup.show(popLeft,popTop,240,136,document.body); */
329
var strAbout = "About AgetimeCalendar\n\n";
330
strAbout+="-\t: 关于\n";
331
strAbout+="x\t: 隐藏\n";
332
strAbout+="<<\t: 上一年\n";
333
strAbout+="<\t: 上一月\n";
334
335
strAbout+="今日\t: 返回当天日期\n";
336
strAbout+=">\t: 下一月\n";
337
strAbout+="<<\t: 下一年\n";
338
339
alert(strAbout);
340
}
341
342
calendar.setup();
343
}
344
345
346
function atCalendarControl(){2
var calendar=this;3
this.calendarPad=null;4
this.prevMonth=null;5
this.nextMonth=null;6
this.prevYear=null;7
this.nextYear=null;8
this.goToday=null;9
this.calendarClose=null;10
this.calendarAbout=null;11
this.head=null;12
this.body=null;13
this.today=[];14
this.currentDate=[];15
this.sltDate;16
this.target;17
this.source;18

19
/************** 加入日历底板及阴影 *********************/20
this.addCalendarPad=function(){21
document.write("<div id='divCalendarpad' style='position:absolute;top:100;left:0;width:255;height:167;display:none;'>");22
document.write("<iframe frameborder=0 height=168 width=255></iframe>");23
document.write("<div style='position:absolute;top:4;left:4;width:248;height:164;background-color:#336699;'></div>");24
document.write("</div>");25
calendar.calendarPad=document.all.divCalendarpad;26
}27
/************** 加入日历面板 *********************/28
this.addCalendarBoard=function(){29
var BOARD=this;30
var divBoard=document.createElement("div");31
calendar.calendarPad.insertAdjacentElement("beforeEnd",divBoard);32
divBoard.style.cssText="position:absolute;top:0;left:0;width:250;height:166;border:1 outset;background-color:buttonface;";33

34
var tbBoard=document.createElement("table");35
divBoard.insertAdjacentElement("beforeEnd",tbBoard);36
tbBoard.style.cssText="position:absolute;top:0;left:0;width:100%;height:10;font-size:9pt;";37
tbBoard.cellPadding=0;38
tbBoard.cellSpacing=1;39
tbBoard.bgColor="#333333";40

41
/************** 设置各功能按钮的功能 *********************/42
/*********** Calendar About Button ***************/43
trRow = tbBoard.insertRow(0);44
calendar.calendarAbout=calendar.insertTbCell(trRow,0,"-","center");45
calendar.calendarAbout.onclick=function(){calendar.about();}46
/*********** Calendar Head ***************/47
tbCell=trRow.insertCell(1);48
tbCell.colSpan=5;49
tbCell.bgColor="#99CCFF";50
tbCell.align="center";51
tbCell.style.cssText = "cursor:default";52
calendar.head=tbCell;53
/*********** Calendar Close Button ***************/54
tbCell=trRow.insertCell(2);55
calendar.calendarClose = calendar.insertTbCell(trRow,2,"x","center");56
calendar.calendarClose.title="关闭";57
calendar.calendarClose.onclick=function(){calendar.hide();}58

59
/*********** Calendar PrevYear Button ***************/60
trRow = tbBoard.insertRow(1);61
calendar.prevYear = calendar.insertTbCell(trRow,0,"<<","center");62
calendar.prevYear.title="上一年";63
calendar.prevYear.onmousedown=function(){64
calendar.currentDate[0]--;65
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);66
}67
/*********** Calendar PrevMonth Button ***************/68
calendar.prevMonth = calendar.insertTbCell(trRow,1,"<","center");69
calendar.prevMonth.title="上一月";70
calendar.prevMonth.onmousedown=function(){71

72
calendar.currentDate[1]--;73
if(calendar.currentDate[1]==0){74
calendar.currentDate[1]=12;75
calendar.currentDate[0]--;76
}77
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);78
}79
/*********** Calendar Today Button ***************/80
calendar.goToday = calendar.insertTbCell(trRow,2,"今天","center",3);81
calendar.goToday.title="选择今天";82
calendar.goToday.onclick=function(){83
var d;84
d =new Date();85
var e;86
e=d.getMonth()+1;87
88
// calendar.sltDate=calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2];89
calendar.target.value=d.getYear() + "-"+e+"-"+d.getDate();90
//calendar.target.value=calendar.sltDate;91
calendar.hide();92
//calendar.show(calendar.target,calendar.today[0]+"-"+calendar.today[1]+"-"+calendar.today[2],calendar.source);93
}94
/*********** Calendar NextMonth Button ***************/95
calendar.nextMonth = calendar.insertTbCell(trRow,3,">","center");96
calendar.nextMonth.title="下一";97
calendar.nextMonth.onmousedown=function(){98
calendar.currentDate[1]++;99
if(calendar.currentDate[1]==13){100
calendar.currentDate[1]=1;101
calendar.currentDate[0]++;102
}103
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);104
}105
/*********** Calendar NextYear Button ***************/106
calendar.nextYear = calendar.insertTbCell(trRow,4,">>","center");107
calendar.nextYear.title="下一年";108
calendar.nextYear.onmousedown=function(){109
calendar.currentDate[0]++;110
calendar.show(calendar.target,calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+calendar.currentDate[2],calendar.source);111

112
}113

114
trRow = tbBoard.insertRow(2);115
var cnDateName = new Array("周日","周一","周二","周三","周四","周五","周六");116
for (var i = 0; i < 7; i++) {117
tbCell=trRow.insertCell(i)118
tbCell.innerText=cnDateName[i];119
tbCell.align="center";120
tbCell.width=35;121
tbCell.style.cssText="cursor:default;border:1 solid #99CCCC;background-color:#99CCCC;";122
}123

124
/*********** Calendar Body ***************/125
trRow = tbBoard.insertRow(3);126
tbCell=trRow.insertCell(0);127
tbCell.colSpan=7;128
tbCell.height=97;129
tbCell.vAlign="top";130
tbCell.bgColor="#F0F0F0";131
var tbBody=document.createElement("table");132
tbCell.insertAdjacentElement("beforeEnd",tbBody);133
tbBody.style.cssText="position:relative;top:0;left:0;width:245;height:103;font-size:9pt;"134
tbBody.cellPadding=0;135
tbBody.cellSpacing=1;136
calendar.body=tbBody;137
}138
/************** 加入功能按钮公共样式 *********************/139
this.insertTbCell=function(trRow,cellIndex,TXT,trAlign,tbColSpan){140
var tbCell=trRow.insertCell(cellIndex);141
if(tbColSpan!=undefined) tbCell.colSpan=tbColSpan;142

143
var btnCell=document.createElement("button");144
tbCell.insertAdjacentElement("beforeEnd",btnCell);145
btnCell.value=TXT;146
btnCell.style.cssText="width:100%;border:1 outset;background-color:buttonface;";147
btnCell.onmouseover=function(){148
btnCell.style.cssText="width:100%;border:1 outset;background-color:#F0F0F0;";149

150
}151
btnCell.onmouseout=function(){152
btnCell.style.cssText="width:100%;border:1 outset;background-color:buttonface;";153
}154
// btnCell.onmousedown=function(){155
// btnCell.style.cssText="width:100%;border:1 inset;background-color:#F0F0F0;";156
// }157
btnCell.onmouseup=function(){158
btnCell.style.cssText="width:100%;border:1 outset;background-color:#F0F0F0;";159
}160
btnCell.onclick=function(){161
btnCell.blur();162
}163
return btnCell;164
}165
this.setDefaultDate=function(){166
var dftDate=new Date();167
calendar.today[0]=dftDate.getYear();168
calendar.today[1]=dftDate.getMonth()+1;169
calendar.today[2]=dftDate.getDate();170
}171

172
/****************** Show Calendar *********************/173
this.show=function(targetObject,defaultDate,sourceObject){174
if(targetObject==undefined) {175
alert("未设置目标对像. \n方法: ATCALENDAR.show(obj 目标对像,string 默认日期,obj 点击对像);\n\n目标对像:接受日期返回值的对像.\n默认日期:格式为\"yyyy-mm-dd\",缺省为当日日期.\n点击对像:点击这个对像弹出calendar,默认为目标对像.\n");176
return false;177
}178
else calendar.target=targetObject;179
if(sourceObject==undefined) calendar.source=calendar.target;180
else calendar.source=sourceObject;181

182
var firstDay;183
var Cells=new Array();184

185
if(defaultDate==undefined || defaultDate==""){186
var theDate=new Array();187
calendar.head.innerText = calendar.today[0]+"-"+calendar.today[1]+"-"+calendar.today[2];188
theDate[0]=calendar.today[0]; theDate[1]=calendar.today[1]; theDate[2]=calendar.today[2];189
}190
else{191
var reg=/^\d{4}-\d{1,2}-\d{2}$/192
if(!defaultDate.match(reg)){193
alert("默认日期的格式不正确\n\n默认日期可接受格式为:'yyyy-mm-dd'");194
return;195
}196
var theDate=defaultDate.split("-");197
calendar.head.innerText = defaultDate;198
}199
calendar.currentDate[0]=theDate[0];200
calendar.currentDate[1]=theDate[1];201
calendar.currentDate[2]=theDate[2];202
theFirstDay=calendar.getFirstDay(theDate[0],theDate[1]);203
theMonthLen=theFirstDay+calendar.getMonthLen(theDate[0],theDate[1]);204
//calendar.setEventKey();205

206
calendar.calendarPad.style.display="";207
var theRows = Math.ceil((theMonthLen)/7);208
//清除旧的日历;209
while (calendar.body.rows.length > 0) {210
calendar.body.deleteRow(0)211
}212
//建立新的日历;213
var n=0;day=0;214
for(i=0;i<theRows;i++){215
theRow=calendar.body.insertRow(i);216
for(j=0;j<7;j++){217
n++;218
if(n>theFirstDay && n<=theMonthLen){219
day=n-theFirstDay;220
calendar.insertBodyCell(theRow,j,day);221
}222

223
else{224
var theCell=theRow.insertCell(j);225
theCell.style.cssText="background-color:#F0F0F0;cursor:default;";226
}227
}228
}229

230
//****************调整日历位置**************//231
var offsetPos=calendar.getAbsolutePos(calendar.source);//计算对像的位置;232
if((document.body.offsetHeight-(offsetPos.y+calendar.source.offsetHeight-document.body.scrollTop))<calendar.calendarPad.style.pixelHeight){233
var calTop=offsetPos.y-calendar.calendarPad.style.pixelHeight;234
}235
else{236
var calTop=offsetPos.y+calendar.source.offsetHeight;237
}238
if((document.body.offsetWidth-(offsetPos.x+calendar.source.offsetWidth-document.body.scrollLeft))>calendar.calendarPad.style.pixelWidth){239
var calLeft=offsetPos.x;240
}241
else{242
var calLeft=offsetPos.x+calendar.source.offsetWidth-calendar.calendarPad.style.pixelWidth ;243
}244
//alert(offsetPos.x);245
calendar.calendarPad.style.pixelLeft=calLeft;246
calendar.calendarPad.style.pixelTop=calTop;247
}248
/****************** 计算对像的位置 *************************/249
this.getAbsolutePos = function(el) {250
var r = { x: el.offsetLeft, y: el.offsetTop };251
if (el.offsetParent) {252
var tmp = calendar.getAbsolutePos(el.offsetParent);253
r.x += tmp.x;254
r.y += tmp.y;255
}256
return r;257
};258

259
//************* 插入日期单元格 **************/260
this.insertBodyCell=function(theRow,j,day,targetObject){261
var theCell=theRow.insertCell(j);262
if(j==0) var theBgColor="#FF9999";263
else var theBgColor="#FFFFFF";264
if(day==calendar.currentDate[2]) var theBgColor="#CCCCCC";265
if(day==calendar.today[2]) var theBgColor="#99FFCC";266
theCell.bgColor=theBgColor;267
theCell.innerText=day;268
theCell.align="center";269
theCell.width=35;270
theCell.style.cssText="border:1 solid #CCCCCC;cursor:hand;";271
theCell.onmouseover=function(){ 272
theCell.bgColor="#FFFFCC"; 273
theCell.style.cssText="border:1 outset;cursor:hand;";274
}275
theCell.onmouseout=function(){ 276
theCell.bgColor=theBgColor; 277
theCell.style.cssText="border:1 solid #CCCCCC;cursor:hand;";278
}279
theCell.onmousedown=function(){ 280
theCell.bgColor="#FFFFCC"; 281
theCell.style.cssText="border:1 inset;cursor:hand;";282
}283
theCell.onclick=function(){284
if(calendar.currentDate[1].length<2) calendar.currentDate[1]="0"+calendar.currentDate[1];285
if(day.toString().length<2) day="0"+day;286
calendar.sltDate=calendar.currentDate[0]+"-"+calendar.currentDate[1]+"-"+day;287
calendar.target.value=calendar.sltDate;288
calendar.hide();289
}290
}291
/************** 取得月份的第一天为星期几 *********************/292
this.getFirstDay=function(theYear, theMonth){293
var firstDate = new Date(theYear,theMonth-1,1);294
return firstDate.getDay();295
}296
/************** 取得月份共有几天 *********************/297

298
this.getMonthLen=function(theYear, theMonth) {299
theMonth--;300
var oneDay = 1000 * 60 * 60 * 24;301
var thisMonth = new Date(theYear, theMonth, 1);302
var nextMonth = new Date(theYear, theMonth + 1, 1);303
var len = Math.ceil((nextMonth.getTime() - thisMonth.getTime())/oneDay);304
return len;305
}306
/************** 隐藏日历 *********************/307
this.hide=function(){308
//calendar.clearEventKey();309
calendar.calendarPad.style.display="none";310
}311
/************** 从这里开始 *********************/312
this.setup=function(defaultDate){313
calendar.addCalendarPad();314
calendar.addCalendarBoard();315
calendar.setDefaultDate();316
}317
/************** 关于AgetimeCalendar *********************/318
this.about=function(){319
/*//alert("Agetime Calendar V1.0\n\nwww.agetime.com\n");320
popLeft = calendar.calendarPad.style.pixelLeft+4;321
popTop = calendar.calendarPad.style.pixelTop+25;322
var popup = window.createPopup();323
var popupBody = popup.document.body;324
popupBody.style.cssText="border:solid 2 outset;font-size:9pt;background-color:#F0F0F0;";325
var popHtml = "<span style='color:#336699;font-size:12pt;'><U>关于 AgetimeCalendar</U></span><BR><BR>";326
popHtml+="版本: v1.0<BR>日期: 2004-03-13";327
popupBody.innerHTML=popHtml;328
popup.show(popLeft,popTop,240,136,document.body); */329
var strAbout = "About AgetimeCalendar\n\n";330
strAbout+="-\t: 关于\n";331
strAbout+="x\t: 隐藏\n";332
strAbout+="<<\t: 上一年\n";333
strAbout+="<\t: 上一月\n";334

335
strAbout+="今日\t: 返回当天日期\n";336
strAbout+=">\t: 下一月\n";337
strAbout+="<<\t: 下一年\n";338
339
alert(strAbout);340
}341

342
calendar.setup();343
}344

345

346



浙公网安备 33010602011771号