代码如下: 
<script language='javascript' src='http://www.adsenser.org/js/calendar.js'></script>
<input type="text" name=date title="单击弹出日历" style='width:80;cursor:pointer;' οnfοcus="javascript:calendar()">
 [Ctrl+A 全选 提示:你可先修改部分代码,再点运行代码] 
其中用到一个Calendar.js文件代码如下:
  1
  
document.write(
  "
  <div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 144; height: 193; display: none'>
  "
  );
    2
  
document.write(
  "
  <iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div>
  "
  );
    3
  
  function
   writeIframe(){
    4
  
        
  var
   strIframe 
  =
   
  "
  <html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style>
  "
  +
  
    5
  
    
  "
  *{font-size: 12px; font-family: 宋体}
  "
  +
  
    6
  
    
  "
  .bg{  color: 
  "
  +
   WebCalendar.lightColor 
  +
  "
  ; cursor: default; background-color: 
  "
  +
   WebCalendar.darkColor 
  +
  "
  ;}
  "
  +
  
    7
  
    
  "
  table#tableMain{ width: 142; height: 180;}
  "
  +
  
    8
  
    
  "
  table#tableWeek td{ color: 
  "
  +
   WebCalendar.lightColor 
  +
  "
  ;}
  "
  +
  
    9
  
    
  "
  table#tableDay  td{ font-weight: bold;}
  "
  +
  
   10
  
    
  "
  td#meizzYearHead, td#meizzYearMonth{color: 
  "
  +
   WebCalendar.wordColor 
  +
  "
  }
  "
  +
  
   11
  
    
  "
  .out { text-align: center; border-top: 1px solid 
  "
  +
   WebCalendar.DarkBorder 
  +
  "
  ; border-left: 1px solid 
  "
  +
   WebCalendar.DarkBorder 
  +
  "
  ;
  "
  +
  
   12
  
    
  "
  border-right: 1px solid 
  "
  +
   WebCalendar.lightColor 
  +
  "
  ; border-bottom: 1px solid 
  "
  +
   WebCalendar.lightColor 
  +
  "
  ;}
  "
  +
  
   13
  
    
  "
  .over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF;
  "
  +
  
   14
  
    
  "
  border-bottom: 1px solid 
  "
  +
   WebCalendar.DarkBorder 
  +
  "
  ; border-right: 1px solid 
  "
  +
   WebCalendar.DarkBorder 
  +
  "
  }
  "
  +
  
   15
  
    
  "
  input{ border: 1px solid 
  "
  +
   WebCalendar.darkColor 
  +
  "
  ; padding-top: 1px; height: 18; cursor: hand;
  "
  +
  
   16
  
    
  "
         color:
  "
  +
   WebCalendar.wordColor 
  +
  "
  ; background-color: 
  "
  +
   WebCalendar.btnBgColor 
  +
  "
  }
  "
  +
  
   17
  
    
  "
  </style></head><body onselectstart='return false' style='margin: 0px' οncοntextmenu='return false'><form name=meizz>
  "
  ;
   18
  
    
  if
   (WebCalendar.drag){ strIframe 
  +=
   
  "
  <scr
  "
  +
  "
  ipt language=javascript>
  "
  +
  
   19
  
    
  "
  var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){
  "
  +
  
   20
  
    
  "
  if(parent.WebCalendar.drag && drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0;
  "
  +
  
   21
  
    
  "
  o.style.left = parseInt(o.style.left) + window.event.clientX-cx;
  "
  +
  
   22
  
    
  "
  o.style.top  = parseInt(o.style.top)  + window.event.clientY-cy;}}
  "
  +
  
   23
  
    
  "
  function document.onkeydown(){ switch(window.event.keyCode){  case 27 : parent.hiddenCalendar(); break;
  "
  +
  
   24
  
    
  "
  case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break;
  "
  +
  
   25
  
    
  "
  case 84 : document.forms[0].today.click(); break;} window.event.keyCode = 0; window.event.returnValue= false;}
  "
  +
  
   26
  
    
  "
  function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr
  "
  +
  "
  ipt>
  "
  }
   27
  
    strIframe 
  +=
   
  "
  <select name=tmpYearSelect  οnblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:3;left:18;display:none'
  "
  +
  
   28
  
    
  "
   οnchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>
  "
  +
  
   29
  
    
  "
  <select name=tmpMonthSelect οnblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:3;left:74;display:none'
  "
  +
  
   30
  
    
  "
   οnchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>
  "
  +
  
   31
  
    
  "
  <table id=tableMain class=bg border=0 cellspacing=2 cellpadding=0>
  "
  +
  
   32
  
    
  "
  <tr><td width=140 height=19 bgcolor='
  "
  +
   WebCalendar.lightColor 
  +
  "
  '>
  "
  +
  
   33
  
    
  "
      <table width=140 id=tableHead border=0 cellspacing=1 cellpadding=0><tr align=center>
  "
  +
  
   34
  
    
  "
      <td width=15 height=19 class=bg title='向前翻 1 月
快捷键:←' style='cursor: hand' οnclick='parent.prevM()'><b><</b></td>
  "
  +
  
   35
  
    
  "
      <td width=60 id=meizzYearHead  title='点击此处选择年份' οnclick='parent.funYearSelect(parseInt(this.innerText, 10))'
  "
  +
  
   36
  
    
  "
          οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'
  "
  +
  
   37
  
    
  "
          οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>
  "
  +
  
   38
  
    
  "
      <td width=50 id=meizzYearMonth title='点击此处选择月份' οnclick='parent.funMonthSelect(parseInt(this.innerText, 10))'
  "
  +
  
   39
  
    
  "
          οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'
  "
  +
  
   40
  
    
  "
          οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>
  "
  +
  
   41
  
    
  "
      <td width=15 class=bg title='向后翻 1 月
快捷键:→' οnclick='parent.nextM()' style='cursor: hand'><b>></b></td></tr></table>
  "
  +
  
   42
  
    
  "
  </td></tr><tr><td height=20><table id=tableWeek border=1 width=140 cellpadding=0 cellspacing=0 
  "
  ;
   43
  
    
  if
  (WebCalendar.drag){strIframe 
  +=
   
  "
  οnmοusedοwn='dragStart()' οnmοuseup='drag=false' οnmοuseοut='drag=false'
  "
  ;}
   44
  
    strIframe 
  +=
   
  "
   borderColorLight='
  "
  +
   WebCalendar.darkColor 
  +
  "
  ' borderColorDark='
  "
  +
   WebCalendar.lightColor 
  +
  "
  '>
  "
  +
  
   45
  
    
  "
      <tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table>
  "
  +
  
   46
  
    
  "
  </td></tr><tr><td valign=top width=140 bgcolor='
  "
  +
   WebCalendar.lightColor 
  +
  "
  '>
  "
  +
  
   47
  
    
  "
      <table id=tableDay height=120 width=140 border=0 cellspacing=1 cellpadding=0>
  "
  ;
   48
  
         
  for
  (
  var
   x
  =
  0
  ; x
  <
  5
  ; x
  ++
  ){ strIframe 
  +=
   
  "
  <tr>
  "
  ;
   49
  
         
  for
  (
  var
   y
  =
  0
  ; y
  <
  7
  ; y
  ++
  )  strIframe 
  +=
   
  "
  <td class=out id='meizzDay
  "
  +
   (x
  *
  7
  +
  y) 
  +
  "
  '></td>
  "
  ; strIframe 
  +=
   
  "
  </tr>
  "
  ;}
   50
  
         strIframe 
  +=
   
  "
  <tr>
  "
  ;
   51
  
         
  for
  (
  var
   x
  =
  35
  ; x
  <
  39
  ; x
  ++
  ) strIframe 
  +=
   
  "
  <td class=out id='meizzDay
  "
  +
   x 
  +
  "
  '></td>
  "
  ;
   52
  
         strIframe 
  +=
  "
  <td colspan=3 class=out title='
  "
  +
   WebCalendar.regInfo 
  +
  "
  '><input style=' background-color: 
  "
  +
  
   53
  
         WebCalendar.btnBgColor 
  +
  "
  ;cursor: hand; padding-top: 4px; width: 100%; height: 100%; border: 0' οnfοcus='this.blur()'
  "
  +
  
   54
  
         
  "
   type=button value='    关闭' οnclick='parent.hiddenCalendar()'></td></tr></table>
  "
  +
  
   55
  
    
  "
  </td></tr><tr><td height=20 width=140 bgcolor='
  "
  +
   WebCalendar.lightColor 
  +
  "
  '>
  "
  +
  
   56
  
    
  "
      <table border=0 cellpadding=1 cellspacing=0 width=140>
  "
  +
  
   57
  
    
  "
      <tr><td><input name=prevYear title='向前翻 1 年
快捷键:↑' οnclick='parent.prevY()' type=button value='<<'
  "
  +
  
   58
  
    
  "
      οnfοcus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000)'><input
  "
  +
  
   59
  
    
  "
      οnfοcus='this.blur()' name=prevMonth title='向前翻 1 月
快捷键:←' οnclick='parent.prevM()' type=button value='< '>
  "
  +
  
   60
  
    
  "
      </td><td align=center><input name=today type=button value='Today' οnfοcus='this.blur()' style='width: 50' title='当前日期
快捷键:T'
  "
  +
  
   61
  
    
  "
      οnclick=/
  "
  parent.returnDate(
  new
   Date().getDate() 
  +
  '
  /
  '
  +
   (
  new
   Date().getMonth() 
  +
  1
  ) 
  +
  '
  /
  '
  +
   
  new
   Date().getFullYear())/
  "
  >
  "
  +
  
   62
  
    
  "
      </td><td align=right><input title='向后翻 1 月
快捷键:→' name=nextMonth οnclick='parent.nextM()' type=button value=' >'
  "
  +
  
   63
  
    
  "
      οnfοcus='this.blur()'><input name=nextYear title='向后翻 1 年
快捷键:↓' οnclick='parent.nextY()' type=button value='>>'
  "
  +
  
   64
  
    
  "
      οnfοcus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999)'></td></tr></table>
  "
  +
  
   65
  
    
  "
  </td></tr><table></form></body></html>
  "
  ;
   66
  
    
  with
  (WebCalendar.iframe)
   67
  
    {
   68
  
        document.writeln(strIframe); document.close();
   69
  
        
  for
  (
  var
   i
  =
  0
  ; i
  <
  39
  ; i
  ++
  )
   70
  
        {
   71
  
            WebCalendar.dayObj[i] 
  =
   eval(
  "
  meizzDay
  "
  +
   i);
   72
  
            WebCalendar.dayObj[i].onmouseover 
  =
   dayMouseOver;
   73
  
            WebCalendar.dayObj[i].onmouseout  
  =
   dayMouseOut;
   74
  
            WebCalendar.dayObj[i].onclick     
  =
   returnDate;
   75
  
        }
   76
  
    }
   77
  
}
   78
  
  function
   WebCalendar() 
  //
  初始化日历的设置
  
   79
  
  {
   80
  
    
  this
  .regInfo    
  =
   
  "
  WEB Calendar ver 3.0
关闭的快捷键:[Esc]
  "
  ;
   81
  
    
  this
  .daysMonth  
  =
   
  new
   Array(
  31
  , 
  28
  , 
  31
  , 
  30
  , 
  31
  , 
  30
  , 
  31
  , 
  31
  , 
  30
  , 
  31
  , 
  30
  , 
  31
  );
   82
  
    
  this
  .day        
  =
   
  new
   Array(
  39
  );            
  //
  定义日历展示用的数组
  
   83
  
      
  this
  .dayObj     
  =
   
  new
   Array(
  39
  );            
  //
  定义日期展示控件数组
  
   84
  
      
  this
  .dateStyle  
  =
   
  null
  ;                     
  //
  保存格式化后日期数组
  
   85
  
      
  this
  .objExport  
  =
   
  null
  ;                     
  //
  日历回传的显示控件
  
   86
  
      
  this
  .eventSrc   
  =
   
  null
  ;                     
  //
  日历显示的触发控件
  
   87
  
      
  this
  .inputDate  
  =
   
  null
  ;                     
  //
  转化外的输入的日期(d/m/yyyy)
  
   88
  
      
  this
  .thisYear   
  =
   
  new
   Date().getFullYear(); 
  //
  定义年的变量的初始值
  
   89
  
      
  this
  .thisMonth  
  =
   
  new
   Date().getMonth()
  +
   
  1
  ; 
  //
  定义月的变量的初始值
  
   90
  
      
  this
  .thisDay    
  =
   
  new
   Date().getDate();     
  //
  定义日的变量的初始值
  
   91
  
      
  this
  .today      
  =
   
  this
  .thisDay 
  +
  "
  /
  "
  +
   
  this
  .thisMonth 
  +
  "
  /
  "
  +
   
  this
  .thisYear;   
  //
  今天(d/m/yyyy)
  
   92
  
      
  this
  .iframe     
  =
   window.frames(
  "
  meizzCalendarIframe
  "
  ); 
  //
  日历的 iframe 载体
  
   93
  
      
  this
  .calendar   
  =
   getObjectById(
  "
  meizzCalendarLayer
  "
  );  
  //
  日历的层
  
   94
  
      
  this
  .dateReg    
  =
   
  ""
  ;           
  //
  日历格式验证的正则式
  
   95
  
      
  this
  .yearFall   
  =
   
  50
  ;           
  //
  定义年下拉框的年差值
  
   96
  
      
  this
  .format     
  =
   
  "
  yyyy-mm-dd
  "
  ; 
  //
  回传日期的格式
  
   97
  
      
  this
  .timeShow   
  =
   
  false
  ;        
  //
  是否返回时间
  
   98
  
      
  this
  .drag       
  =
   
  true
  ;         
  //
  是否允许拖动
  
   99
  
      
  this
  .darkColor  
  =
   
  "
  #408080
  "
  ;    
  //
  控件的暗色
  
  100
  
      
  this
  .lightColor 
  =
   
  "
  #FFFFFF
  "
  ;    
  //
  控件的亮色
  
  101
  
      
  this
  .btnBgColor 
  =
   
  "
  #ededed
  "
  ;    
  //
  控件的按钮背景色
  
  102
  
      
  this
  .wordColor  
  =
   
  "
  #000000
  "
  ;    
  //
  控件的文字颜色
  
  103
  
      
  this
  .wordDark   
  =
   
  "
  #DCDCDC
  "
  ;    
  //
  控件的暗文字颜色
  
  104
  
      
  this
  .dayBgColor 
  =
   
  "
  #F5F5FA
  "
  ;    
  //
  日期数字背景色
  
  105
  
      
  this
  .todayColor 
  =
   
  "
  #ff3300
  "
  ;    
  //
  今天在日历上的标示背景色
  
  106
  
      
  this
  .DarkBorder 
  =
   
  "
  #D4D0C8
  "
  ;    
  //
  日期显示的立体表达色
  
  107
  
  }   
  var
   WebCalendar 
  =
   
  new
   WebCalendar();
  108
  
  function
   calendar() 
  //
  主调函数
  
  109
  
  {
  110
  
    
  var
   e 
  =
   window.event.srcElement;   
  111
  
    writeIframe();
  112
  
    
  var
   o 
  =
   WebCalendar.calendar.style; WebCalendar.eventSrc 
  =
   e;
  113
  
 
  if
   (arguments.length 
  ==
   
  0
  ) WebCalendar.objExport 
  =
   e;
  114
  
    
  else
   WebCalendar.objExport 
  =
   eval(arguments[
  0
  ]);
  115
  
    WebCalendar.iframe.tableWeek.style.cursor 
  =
   WebCalendar.drag 
  ?
   
  "
  move
  "
   : 
  "
  default
  "
  ;
  116
  
 
  var
   t 
  =
   e.offsetTop,  h 
  =
   e.clientHeight, l 
  =
   e.offsetLeft, p 
  =
   e.type;
  117
  
 
  while
   (e 
  =
   e.offsetParent){t 
  +=
   e.offsetTop; l 
  +=
   e.offsetLeft;}
  118
  
    o.display 
  =
   
  ""
  ; WebCalendar.iframe.document.body.focus();
  119
  
    
  var
   cw 
  =
   WebCalendar.calendar.clientWidth, ch 
  =
   WebCalendar.calendar.clientHeight;
  120
  
    
  var
   dw 
  =
   document.body.clientWidth, dl 
  =
   document.body.scrollLeft, dt 
  =
   document.body.scrollTop;
  121
  
    
  122
  
    
  if
   (document.body.clientHeight 
  +
   dt 
  -
   t 
  -
   h 
  >=
   ch) o.top 
  =
   (p
  ==
  "
  image
  "
  )
  ?
   t 
  +
   h : t 
  +
   h 
  +
   
  6
  ;
  123
  
    
  else
   o.top  
  =
   (t 
  -
   dt 
  <
   ch) 
  ?
   ((p
  ==
  "
  image
  "
  )
  ?
   t 
  +
   h : t 
  +
   h 
  +
   
  6
  ) : t 
  -
   ch;
  124
  
    
  if
   (dw 
  +
   dl 
  -
   l 
  >=
   cw) o.left 
  =
   l; 
  else
   o.left 
  =
   (dw 
  >=
   cw) 
  ?
   dw 
  -
   cw 
  +
   dl : dl;
  125
  
    
  if
    (
  !
  WebCalendar.timeShow) WebCalendar.dateReg 
  =
   
  /^
  (/d{
  1
  ,
  4
  })(
  -|
  /
  /
  )(/d{
  1
  ,
  2
  })/
  2
  (/d{
  1
  ,
  2
  })$
  /
  ;
  126
  
    
  else
   WebCalendar.dateReg 
  =
   
  /^
  (/d{
  1
  ,
  4
  })(
  -|
  /
  /
  )(/d{
  1
  ,
  2
  })/
  2
  (/d{
  1
  ,
  2
  }) (/d{
  1
  ,
  2
  }):(/d{
  1
  ,
  2
  }):(/d{
  1
  ,
  2
  })$
  /
  ;
  127
  
    
  try
  {
  128
  
        
  if
   (WebCalendar.objExport.value.trim() 
  !=
   
  ""
  ){
  129
  
            WebCalendar.dateStyle 
  =
   WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);
  130
  
            
  if
   (WebCalendar.dateStyle 
  ==
   
  null
  )
  131
  
            {
  132
  
                WebCalendar.thisYear   
  =
   
  new
   Date().getFullYear();
  133
  
                WebCalendar.thisMonth  
  =
   
  new
   Date().getMonth()
  +
   
  1
  ;
  134
  
                WebCalendar.thisDay    
  =
   
  new
   Date().getDate();
  135
  
                alert(
  "
  原文本框里的日期有错误!/n可能与你定义的显示时分秒有冲突!
  "
  );
  136
  
                writeCalendar(); 
  return
   
  false
  ;
  137
  
            }
  138
  
            
  else
  
  139
  
            {
  140
  
                WebCalendar.thisYear   
  =
   parseInt(WebCalendar.dateStyle[
  1
  ], 
  10
  );
  141
  
                WebCalendar.thisMonth  
  =
   parseInt(WebCalendar.dateStyle[
  3
  ], 
  10
  );
  142
  
                WebCalendar.thisDay    
  =
   parseInt(WebCalendar.dateStyle[
  4
  ], 
  10
  );
  143
  
                WebCalendar.inputDate  
  =
   parseInt(WebCalendar.thisDay, 
  10
  ) 
  +
  "
  /
  "
  +
   parseInt(WebCalendar.thisMonth, 
  10
  ) 
  +
  "
  /
  "
  +
   
  144
  
                parseInt(WebCalendar.thisYear, 
  10
  ); writeCalendar();
  145
  
            }
  146
  
        }  
  else
   writeCalendar();
  147
  
    }  
  catch
  (e){writeCalendar();}
  148
  
}
  149
  
  function
   funMonthSelect() 
  //
  月份的下拉框
  
  150
  
  {
  151
  
    
  var
   m 
  =
   isNaN(parseInt(WebCalendar.thisMonth, 
  10
  )) 
  ?
   
  new
   Date().getMonth() 
  +
   
  1
   : parseInt(WebCalendar.thisMonth);
  152
  
    
  var
   e 
  =
   WebCalendar.iframe.document.forms[
  0
  ].tmpMonthSelect;
  153
  
    
  for
   (
  var
   i
  =
  1
  ; i
  <
  13
  ; i
  ++
  ) e.options.add(
  new
   Option(i 
  +
  "
  月
  "
  , i));
  154
  
    e.style.display 
  =
   
  ""
  ; e.value 
  =
   m; e.focus(); window.status 
  =
   e.style.top;
  155
  
}
  156
  
  function
   funYearSelect() 
  //
  年份的下拉框
  
  157
  
  {
  158
  
    
  var
   n 
  =
   WebCalendar.yearFall;
  159
  
    
  var
   e 
  =
   WebCalendar.iframe.document.forms[
  0
  ].tmpYearSelect;
  160
  
    
  var
   y 
  =
   isNaN(parseInt(WebCalendar.thisYear, 
  10
  )) 
  ?
   
  new
   Date().getFullYear() : parseInt(WebCalendar.thisYear);
  161
  
        y 
  =
   (y 
  <=
   
  1000
  )
  ?
   
  1000
   : ((y 
  >=
   
  9999
  )
  ?
   
  9999
   : y);
  162
  
    
  var
   min 
  =
   (y 
  -
   n 
  >=
   
  1000
  ) 
  ?
   y 
  -
   n : 
  1000
  ;
  163
  
    
  var
   max 
  =
   (y 
  +
   n 
  <=
   
  9999
  ) 
  ?
   y 
  +
   n : 
  9999
  ;
  164
  
        min 
  =
   (max 
  ==
   
  9999
  ) 
  ?
   max
  -
  n
  *
  2
   : min;
  165
  
        max 
  =
   (min 
  ==
   
  1000
  ) 
  ?
   min
  +
  n
  *
  2
   : max;
  166
  
    
  for
   (
  var
   i
  =
  min; i
  <=
  max; i
  ++
  ) e.options.add(
  new
   Option(i 
  +
  "
  年
  "
  , i));
  167
  
    e.style.display 
  =
   
  ""
  ; e.value 
  =
   y; e.focus();
  168
  
}
  169
  
  function
   prevM()  
  //
  往前翻月份
  
  170
  
  {
  171
  
    WebCalendar.thisDay 
  =
   
  1
  ;
  172
  
    
  if
   (WebCalendar.thisMonth
  ==
  1
  )
  173
  
    {
  174
  
        WebCalendar.thisYear
  --
  ;
  175
  
        WebCalendar.thisMonth
  =
  13
  ;
  176
  
    }
  177
  
    WebCalendar.thisMonth
  --
  ; writeCalendar();
  178
  
}
  179
  
  function
   nextM()  
  //
  往后翻月份
  
  180
  
  {
  181
  
    WebCalendar.thisDay 
  =
   
  1
  ;
  182
  
    
  if
   (WebCalendar.thisMonth
  ==
  12
  )
  183
  
    {
  184
  
        WebCalendar.thisYear
  ++
  ;
  185
  
        WebCalendar.thisMonth
  =
  0
  ;
  186
  
    }
  187
  
    WebCalendar.thisMonth
  ++
  ; writeCalendar();
  188
  
}
  189
  
  function
   prevY(){WebCalendar.thisDay 
  =
   
  1
  ; WebCalendar.thisYear
  --
  ; writeCalendar();}
  //
  往前翻 Year
  
  190
  
  function
   nextY(){WebCalendar.thisDay 
  =
   
  1
  ; WebCalendar.thisYear
  ++
  ; writeCalendar();}
  //
  往后翻 Year
  
  191
  
  function
   hiddenSelect(e){
  for
  (
  var
   i
  =
  e.options.length; i
  >-
  1
  ; i
  --
  )e.options.remove(i); e.style.display
  =
  "
  none
  "
  ;}
  192
  
  function
   getObjectById(id){ 
  if
  (document.all) 
  return
  (eval(
  "
  document.all.
  "
  +
   id)); 
  return
  (eval(id)); }
  193
  
  function
   hiddenCalendar(){getObjectById(
  "
  meizzCalendarLayer
  "
  ).style.display 
  =
   
  "
  none
  "
  ;};
  194
  
  function
   appendZero(n){
  return
  ((
  "
  00
  "
  +
   n).substr((
  "
  00
  "
  +
   n).length
  -
  2
  ));}
  //
  日期自动补零程序
  
  195
  
  function
   String.prototype.trim(){
  return
   
  this
  .replace(
  /
  (
  ^
  /s
  *
  )
  |
  (/s
  *
  $)
  /
  g,
  ""
  );}
  196
  
  function
   dayMouseOver()
  197
  
{
  198
  
    
  this
  .className 
  =
   
  "
  over
  "
  ;
  199
  
    
  this
  .style.backgroundColor 
  =
   WebCalendar.darkColor;
  200
  
    
  if
  (WebCalendar.day[
  this
  .id.substr(
  8
  )].split(
  "
  /
  "
  )[
  1
  ] 
  ==
   WebCalendar.thisMonth)
  201
  
    
  this
  .style.color 
  =
   WebCalendar.lightColor;
  202
  
}
  203
  
  function
   dayMouseOut()
  204
  
{
  205
  
    
  this
  .className 
  =
   
  "
  out
  "
  ; 
  var
   d 
  =
   WebCalendar.day[
  this
  .id.substr(
  8
  )], a 
  =
   d.split(
  "
  /
  "
  );
  206
  
    
  this
  .style.removeAttribute('backgroundColor');
  207
  
    
  if
  (a[
  1
  ] 
  ==
   WebCalendar.thisMonth 
  &&
   d 
  !=
   WebCalendar.today)
  208
  
    {
  209
  
        
  if
  (WebCalendar.dateStyle 
  &&
   a[
  0
  ] 
  ==
   parseInt(WebCalendar.dateStyle[
  4
  ], 
  10
  ))
  210
  
            
  this
  .style.color 
  =
   WebCalendar.lightColor;
  211
  
        
  else
  
  212
  
            
  this
  .style.color 
  =
   WebCalendar.wordColor;
  213
  
    }
  214
  
}
  215
  
  function
   writeCalendar() 
  //
  对日历显示的数据的处理程序
  
  216
  
  {
  217
  
    
  var
   y 
  =
   WebCalendar.thisYear;
  218
  
    
  var
   m 
  =
   WebCalendar.thisMonth; 
  219
  
    
  var
   d 
  =
   WebCalendar.thisDay;
  220
  
    WebCalendar.daysMonth[
  1
  ] 
  =
   (
  0
  ==
  y
  %
  4
   
  &&
   (y
  %
  100
  !=
  0
   
  ||
   y
  %
  400
  ==
  0
  )) 
  ?
   
  29
   : 
  28
  ;
  221
  
    
  if
   (
  !
  (y
  <=
  9999
   
  &&
   y 
  >=
   
  1000
   
  &&
   parseInt(m, 
  10
  )
  >
  0
   
  &&
   parseInt(m, 
  10
  )
  <
  13
   
  &&
   parseInt(d, 
  10
  )
  >
  0
  )){
  222
  
        alert(
  "
  对不起,你输入了错误的日期!
  "
  );
  223
  
        WebCalendar.thisYear   
  =
   
  new
   Date().getFullYear();
  224
  
        WebCalendar.thisMonth  
  =
   
  new
   Date().getMonth()
  +
   
  1
  ;
  225
  
        WebCalendar.thisDay    
  =
   
  new
   Date().getDate(); }
  226
  
    y 
  =
   WebCalendar.thisYear;
  227
  
    m 
  =
   WebCalendar.thisMonth;
  228
  
    d 
  =
   WebCalendar.thisDay;
  229
  
    WebCalendar.iframe.meizzYearHead.innerText  
  =
   y 
  +
  "
   年
  "
  ;
  230
  
    WebCalendar.iframe.meizzYearMonth.innerText 
  =
   parseInt(m, 
  10
  ) 
  +
  "
   月
  "
  ;
  231
  
    WebCalendar.daysMonth[
  1
  ] 
  =
   (
  0
  ==
  y
  %
  4
   
  &&
   (y
  %
  100
  !=
  0
   
  ||
   y
  %
  400
  ==
  0
  )) 
  ?
   
  29
   : 
  28
  ; 
  //
  闰年二月为29天
  
  232
  
      
  var
   w 
  =
   
  new
   Date(y, m
  -
  1
  , 
  1
  ).getDay();
  233
  
    
  var
   prevDays 
  =
   m
  ==
  1
    
  ?
   WebCalendar.daysMonth[
  11
  ] : WebCalendar.daysMonth[m
  -
  2
  ];
  234
  
    
  for
  (
  var
   i
  =
  (w
  -
  1
  ); i
  >=
  0
  ; i
  --
  ) 
  //
  这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy
  
  235
  
      {
  236
  
        WebCalendar.day[i] 
  =
   prevDays 
  +
  "
  /
  "
  +
   (parseInt(m, 
  10
  )
  -
  1
  ) 
  +
  "
  /
  "
  +
   y;
  237
  
        
  if
  (m
  ==
  1
  ) WebCalendar.day[i] 
  =
   prevDays 
  +
  "
  /
  "
  +
   
  12
   
  +
  "
  /
  "
  +
   (parseInt(y, 
  10
  )
  -
  1
  );
  238
  
        prevDays
  --
  ;
  239
  
    }
  240
  
    
  for
  (
  var
   i
  =
  1
  ; i
  <=
  WebCalendar.daysMonth[m
  -
  1
  ]; i
  ++
  ) WebCalendar.day[i
  +
  w
  -
  1
  ] 
  =
   i 
  +
  "
  /
  "
  +
   m 
  +
  "
  /
  "
  +
   y;
  241
  
    
  for
  (
  var
   i
  =
  1
  ; i
  <
  39
  -
  w
  -
  WebCalendar.daysMonth[m
  -
  1
  ]
  +
  1
  ; i
  ++
  )
  242
  
    {
  243
  
        WebCalendar.day[WebCalendar.daysMonth[m
  -
  1
  ]
  +
  w
  -
  1
  +
  i] 
  =
   i 
  +
  "
  /
  "
  +
   (parseInt(m, 
  10
  )
  +
  1
  ) 
  +
  "
  /
  "
  +
   y;
  244
  
        
  if
  (m
  ==
  12
  ) WebCalendar.day[WebCalendar.daysMonth[m
  -
  1
  ]
  +
  w
  -
  1
  +
  i] 
  =
   i 
  +
  "
  /
  "
  +
   
  1
   
  +
  "
  /
  "
  +
   (parseInt(y, 
  10
  )
  +
  1
  );
  245
  
    }
  246
  
    
  for
  (
  var
   i
  =
  0
  ; i
  <
  39
  ; i
  ++
  )    
  //
  这个循环是根据源数组写到日历里显示
  
  247
  
      {
  248
  
        
  var
   a 
  =
   WebCalendar.day[i].split(
  "
  /
  "
  );
  249
  
        WebCalendar.dayObj[i].innerText    
  =
   a[
  0
  ];
  250
  
        WebCalendar.dayObj[i].title        
  =
   a[
  2
  ] 
  +
  "
  -
  "
  +
   appendZero(a[
  1
  ]) 
  +
  "
  -
  "
  +
   appendZero(a[
  0
  ]);
  251
  
        WebCalendar.dayObj[i].bgColor      
  =
   WebCalendar.dayBgColor;
  252
  
        WebCalendar.dayObj[i].style.color  
  =
   WebCalendar.wordColor;
  253
  
        
  if
   ((i
  <
  10
   
  &&
   parseInt(WebCalendar.day[i], 
  10
  )
  >
  20
  ) 
  ||
   (i
  >
  27
   
  &&
   parseInt(WebCalendar.day[i], 
  10
  )
  <
  12
  ))
  254
  
            WebCalendar.dayObj[i].style.color 
  =
   WebCalendar.wordDark;
  255
  
        
  if
   (WebCalendar.inputDate
  ==
  WebCalendar.day[i])    
  //
  设置输入框里的日期在日历上的颜色
  
  256
  
          {WebCalendar.dayObj[i].bgColor 
  =
   WebCalendar.darkColor; WebCalendar.dayObj[i].style.color 
  =
   WebCalendar.lightColor;}
  257
  
        
  if
   (WebCalendar.day[i] 
  ==
   WebCalendar.today)      
  //
  设置今天在日历上反应出来的颜色
  
  258
  
          {WebCalendar.dayObj[i].bgColor 
  =
   WebCalendar.todayColor; WebCalendar.dayObj[i].style.color 
  =
   WebCalendar.lightColor;}
  259
  
    }
  260
  
}
  261
  
  function
   returnDate() 
  //
  根据日期格式等返回用户选定的日期
  
  262
  
  {
  263
  
    
  if
  (WebCalendar.objExport)
  264
  
    {
  265
  
        
  var
   returnValue;
  266
  
        
  var
   a 
  =
   (arguments.length
  ==
  0
  ) 
  ?
   WebCalendar.day[
  this
  .id.substr(
  8
  )].split(
  "
  /
  "
  ) : arguments[
  0
  ].split(
  "
  /
  "
  );
  267
  
        
  var
   d 
  =
   WebCalendar.format.match(
  /^
  (/w{
  4
  })(
  -|
  /
  /
  )(/w{
  1
  ,
  2
  })/
  2
  (/w{
  1
  ,
  2
  })$
  /
  );
  268
  
        
  if
  (d
  ==
  null
  ){alert(
  "
  你设定的日期输出格式不对!/r/n/r/n请重新定义 WebCalendar.format !
  "
  ); 
  return
   
  false
  ;}
  269
  
        
  var
   flag 
  =
   d[
  3
  ].length
  ==
  2
   
  ||
   d[
  4
  ].length
  ==
  2
  ; 
  //
  判断返回的日期格式是否要补零
  
  270
  
          returnValue 
  =
   flag 
  ?
   a[
  2
  ] 
  +
  d[
  2
  ]
  +
   appendZero(a[
  1
  ]) 
  +
  d[
  2
  ]
  +
   appendZero(a[
  0
  ]) : a[
  2
  ] 
  +
  d[
  2
  ]
  +
   a[
  1
  ] 
  +
  d[
  2
  ]
  +
   a[
  0
  ];
  271
  
        
  if
  (WebCalendar.timeShow)
  272
  
        {
  273
  
            
  var
   h 
  =
   
  new
   Date().getHours(), m 
  =
   
  new
   Date().getMinutes(), s 
  =
   
  new
   Date().getSeconds();
  274
  
            returnValue 
  +=
   flag 
  ?
   
  "
   
  "
  +
   appendZero(h) 
  +
  "
  :
  "
  +
   appendZero(m) 
  +
  "
  :
  "
  +
   appendZero(s) : 
  "
   
  "
  +
    h  
  +
  "
  :
  "
  +
   m 
  +
  "
  :
  "
  +
   s;
  275
  
        }
  276
  
        WebCalendar.objExport.value 
  =
   returnValue;
  277
  
        hiddenCalendar();
  278
  
    }
  279
  
}
  280
  
  function
   document.onclick()
  281
  
{
  282
  
    
  if
  (WebCalendar.eventSrc 
  !=
   window.event.srcElement) hiddenCalendar();
  283
  
}
  284
  
  285
  
  286
  
  /*
      jeff add
  287
  
    日期输入控件的控制函数
  288
  
  */
  
  289
  
  function
   makeDate(Obj)
  290
  
{
  291
  
    
  var
   y
  =
  eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  YearInput
  "
  ).value;
  292
  
    
  var
   m
  =
  eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  MonthInput
  "
  ).value;
  293
  
    
  var
   d
  =
  eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  DayInput
  "
  ).value;
  294
  
    
  //
  使用 datetime 数据类型存储从 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期
  
  295
  
      
  if
  (isDate(y,m,d) 
  &&
   y
  >=
  1753
  )
  296
  
    {
  297
  
        eval(
  "
  document.all.
  "
  +
  Obj).value
  =
  y
  +
  "
  -
  "
  +
  m
  +
  "
  -
  "
  +
  d;
  298
  
    }
  299
  
    
  else
  
  300
  
    {
  301
  
        
  if
  (y
  !=
  ""
  ||
  m
  !=
  ""
  ||
  d
  !=
  ""
  )
  302
  
            
  return
   
  false
  ;
  303
  
        eval(
  "
  document.all.
  "
  +
  Obj).value 
  =
   
  ""
  ;
  304
  
    }
  305
  
    
  return
   
  true
  ;
  306
  
}
  307
  
  function
   splitDate(Obj)
  308
  
{
  309
  
    
  var
   dt
  =
  eval(
  "
  document.all.
  "
  +
  Obj).value;
  310
  
    eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  YearInput
  "
  ).value
  =
  dt.substring(
  0
  ,dt.indexOf(
  "
  -
  "
  ));
  311
  
    eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  MonthInput
  "
  ).value
  =
  dt.substring(dt.indexOf(
  "
  -
  "
  )
  +
  1
  ,dt.lastIndexOf(
  "
  -
  "
  ));
  312
  
    eval(
  "
  document.all.
  "
  +
  Obj
  +
  "
  DayInput
  "
  ).value
  =
  dt.substring(dt.lastIndexOf(
  "
  -
  "
  )
  +
  1
  );
  313
  
}
  314
  
  function
   isDate(year,month,day)
  315
  
{
  316
  
    month 
  =
   month
  -
  1
  ;
  317
  
    
  var
   dt 
  =
   
  new
   Date(year,month,day);
  318
  
    
  if
  (year
  ==
  dt.getFullYear()
  &&
  month
  ==
  dt.getMonth()
  &&
  day
  ==
  dt.getDate())
  319
  
        
  return
   
  true
  ;
  320
  
    
  else
  
  321
  
        
  return
   
  false
  ;
  322
  
}
  323
  
  324
  
  //
  显示日期输入控件(输入框名称,初始日期值,是否需要日历控件)
  
  325
  
  function
   writeDateInput(inputName,inputValue,needCalendar)
  326
  
{
  327
  
    
  var
   dateInput 
  =
   
  "
  <table cellspacing=0 cellpadding=0><tr><td><div class=cBoxnosize style='width:80'>
  "
  +
  
  328
  
        
  "
  <input class=yearInput type=text name=
  "
  +
  inputName
  +
  "
  YearInput size=4 maxlength=4 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  39
  )event.keyCode
  =
  9
  ;/
  "
   onpropertychange=/
  "
  if
  (value.length
  ==
  4
  )
  this
  .nextSibling.nextSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  329
  
        
  "
  -<input class=monthInput type=text name=
  "
  +
  inputName
  +
  "
  MonthInput size=2 maxlength=2 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  39
  )event.keyCode
  =
  9
  ;
  if
  (event.keyCode
  ==
  37
  )
  this
  .previousSibling.previousSibling.select();/
  "
   onpropertychange=/
  "
  if
  (value.length
  ==
  2
  )
  this
  .nextSibling.nextSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  330
  
        
  "
  -<input class=dayInput type=text name=
  "
  +
  inputName
  +
  "
  DayInput size=2 maxlength=2 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  37
  )
  this
  .previousSibling.previousSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  331
  
        
  "
  <input type=hidden name=
  "
  +
  inputName
  +
  "
   onpropertychange=/
  "
  splitDate('
  "
  +inputName+
  "
  ')/
  "
  >
  "
  ;
  332
  
    
  if
  (needCalendar
  ==
  true
  )
  333
  
        dateInput 
  =
   dateInput
  +
  "
  </div></td><td> <input type=button value=/
  "
  日期/
  "
   οnclick=/
  "
  if
  (
  !
  makeDate('
  "
  +inputName+
  "
  '))alert('对不起,你输入了错误的日期!');calendar(document.all.
  "
  +inputName+
  "
  );/
  "
   class=cButton></td></tr></table>
  "
  ;
  334
  
    
  else
  
  335
  
        dateInput 
  =
   dateInput
  +
  "
  </div></td></tr></table>
  "
  ;
  336
  
    document.writeln(dateInput);
  337
  
    
  if
  (inputValue
  !=
  ""
  )
  338
  
        eval(
  "
  document.all.
  "
  +
  inputName).value
  =
  inputValue;
  339
  
}
  340
  
  341
  
  function
   writeDateInputs(inputName,inputId,inputValue,needCalendar)
  342
  
{
  343
  
    
  var
   dateInput 
  =
   
  "
  <table><tr><td><div class=cBoxnosize style='width:80'>
  "
  +
  
  344
  
        
  "
  <input class=yearInput type=text name=
  "
  +
  inputId
  +
  "
  YearInput size=4 maxlength=4 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  39
  )event.keyCode
  =
  9
  ;/
  "
   onpropertychange=/
  "
  if
  (value.length
  ==
  4
  )
  this
  .nextSibling.nextSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  345
  
        
  "
  -<input class=monthInput type=text name=
  "
  +
  inputId
  +
  "
  MonthInput size=2 maxlength=2 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  39
  )event.keyCode
  =
  9
  ;
  if
  (event.keyCode
  ==
  37
  )
  this
  .previousSibling.previousSibling.select();/
  "
   onpropertychange=/
  "
  if
  (value.length
  ==
  2
  )
  this
  .nextSibling.nextSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  346
  
        
  "
  -<input class=dayInput type=text name=
  "
  +
  inputId
  +
  "
  DayInput size=2 maxlength=2 οnkeydοwn=/
  "
  if
  (event.keyCode
  ==
  37
  )
  this
  .previousSibling.previousSibling.select();/
  "
   οnblur=/
  "
  if
  (value.search(
  /
  [
  ^
  0
  -
  9
  ]
  /
  )
  >-
  1
  ){alert('请输入数字');
  this
  .select();}/
  "
  >
  "
  +
  
  347
  
        
  "
  <input type=hidden name=
  "
  +
  inputName
  +
  "
   id=
  "
  +
  inputId
  +
  "
   onpropertychange=/
  "
  splitDate('
  "
  +inputId+
  "
  ')/
  "
  >
  "
  ;
  348
  
    
  if
  (needCalendar
  ==
  true
  )
  349
  
        dateInput 
  =
   dateInput
  +
  "
  </div></td><td><input type=button value=/
  "
  日期/
  "
   οnclick=/
  "
  if
  (
  !
  makeDate('
  "
  +inputId+
  "
  '))alert('对不起,你输入了错误的日期!');calendar(document.all.
  "
  +inputId+
  "
  );/
  "
   class=cButton></td></tr></table>
  "
  ;
  350
  
    
  else
  
  351
  
        dateInput 
  =
   dateInput
  +
  "
  </div></td></tr></table>
  "
  ;
  352
  
    document.writeln(dateInput);
  353
  
    
  if
  (inputValue
  !=
  ""
  )
  354
  
        eval(
  "
  document.all.
  "
  +
  inputId).value
  =
  inputValue;
  355
  
}