PpmsCalendar.js
上传用户:shengyuan
上传日期:2016-09-07
资源大小:5044k
文件大小:7k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * calendar.js Copyright(c)1999 Toshirou Takahashi tato@fureai.or.jp
  3. INSTRUCTIONS:
  4. Write the following HTML Tag into HTML header.
  5. <SCRIPT language="JavaScript" src="script/date_validation.js"></SCRIPT><SCRIPT language="JavaScript" src="script/calendar.js"></SCRIPT>
  6. Set following attribute of the input element which is written the date into.
  7. onkeypress="trapKeydown('INPUT_ELEMENTS_NAME_ATTRIBUTE')"
  8. Set the following attribute of the image element which is used for trigger to display this calendar.
  9. onclick="ppCalendar('INPUT_ELEMENTS_NAME_ATTRIBUTE')"
  10. */
  11. var now    = new Date();
  12. var absnow = now;
  13. var oContainer;
  14. var numDateDay;
  15. var numDateMonth;
  16. var numDateYear;
  17. var oPPForm;
  18. function trapKeydown( nameElement,arg1,arg2,arg3){
  19. if(event.keyCode == 32){
  20. if(!arguments[1])arg1=0;
  21. if(!arguments[2])arg2=0;
  22. if(!arguments[3])arg3=0;
  23. event.returnValue = false;
  24. editDate(document.getElementById(nameElement), 0, true);
  25. ppCalendar( nameElement,arg1,arg2,arg3);
  26. }
  27. }
  28. function ppCalendar( nameElement,arg1,arg2,arg3){
  29.   var tempPosition;
  30.   var strDate;
  31.   var numCoordinateX;
  32.   var numCordinateY;
  33.   var numWindowWidth = 145; // Window width
  34.   var numWindowHeight = 172; // Window height
  35.   if(!arguments[1])arg1=0;
  36.   if(!arguments[2])arg2=0;
  37.   if(!arguments[3])arg3=0;
  38.   if( arg2 != 1){
  39. // Retrieve coordinate where the event occured.
  40. numCoordinateX = window.event.screenX;
  41. numCordinateY = window.event.screenY;
  42. // Adjust a window position within a screen.
  43. if ((numCoordinateX + numWindowWidth) > screen.width - 6){
  44. numCoordinateX = screen.width - numWindowWidth - 6;
  45. } else if (numCoordinateX < 0){
  46. numCoordinateX = 0;
  47. }
  48. if ((numCordinateY + numWindowHeight) > screen.height - 55){
  49. numCordinateY = screen.height- numWindowHeight - 55;
  50. } else if (numCordinateY < 0){
  51. numCordinateY = 0;
  52. }
  53. oContainer = window.open("","日历"," left=" + numCoordinateX
  54.  +",screenX=100" + numCoordinateX
  55.  +",top=" + numCordinateY
  56.  +",screenY=" + numCordinateY
  57.  +",toolbar=0"
  58.  +",location=0"
  59.  +",directories=0"
  60.  +",status=0"
  61.  +",menubar=0"
  62.  +",scrollbars=0"
  63.  +",resizable=0"
  64.  +",innerWidth=100"
  65.  +",innerHeight=180"
  66.  +",width=" + numWindowWidth
  67.  +",height=" + numWindowHeight);
  68. oContainer.focus();
  69.   }
  70.   //
  71.   if(arg1==0)now = new Date()
  72.   strDate = document.getElementById(nameElement).value;
  73.   if( isDate(strDate) == true && arg2!=1){
  74. numDateDay = Number(getDay(strDate));
  75. numDateMonth= Number(getMonth(strDate)) - 1;
  76. numDateYear = Number(getYear(strDate));
  77.   } else if(isMonth(strDate) == true && arg2!=1){
  78. numDateDay = "";
  79. numDateMonth= Number(getMonth(strDate)) - 1;
  80. numDateYear = Number(getYear(strDate));
  81.   } else{
  82. numDateDay = "";
  83. numDateMonth = now.getMonth();
  84. numDateYear  = now.getFullYear();
  85.   }
  86.   //
  87.   if(numDateMonth==11 && arg1 > 0){     //
  88. numDateMonth = -1 + arg1 ; numDateYear++   //
  89.   } else if(numDateMonth==0 && arg1 < 0){  //
  90. numDateMonth = 12 + arg1 ; numDateYear--   //
  91.   } else {
  92. numDateMonth +=  arg1    //
  93.   }
  94.   //
  95.   if(numDateYear<1900)numDateYear=1900+numDateYear
  96.   //
  97.   now = new Date(numDateYear,numDateMonth,1)
  98.   //
  99.   nowyyyymm=numDateYear*100+numDateMonth
  100.   //
  101.   nowtitleyyyymm=numDateYear+'/'+(numDateMonth + 1)
  102.   //
  103.   week = new Array('日','一','二','三','四','五','六');
  104.   //
  105.   fstday   = now    //
  106.   startday = fstday - ( fstday.getDay() * 1000*60*60*24 )  //
  107.   startday = new Date(startday)
  108.   //
  109.   ddata = ''
  110.   ddata += '<HTML>'
  111.   ddata += '<HEAD>'
  112.   ddata += '<TITLE>日历</TITLE>n'
  113.   ddata += '<STYLE>n'
  114.   ddata += ' BODY  { font:12px ; line-height:12px ; margin : 0px }n'
  115.   ddata += '</STYLE>'
  116.   ddata += '</HEAD>'
  117.   ddata += '<BODY  BGCOLOR=#dddddd>n'
  118.   ddata += '<FORM>'
  119.   ddata += '<TABLE BORDER=0 BGCOLOR=#dddddd BORDERCOLOR=#dddddd n'
  120. ddata += 'STYLE="n'
  121. ddata += 'font-family    : Arial;n'
  122. ddata += 'font-size     : 14px;n'
  123. ddata += 'border-top    : 1px outset #ffffff;n'
  124. ddata += 'border-right    : 1px outset #888888;n'
  125. ddata += 'border-bottom    : 1px outset #555555;n'
  126. ddata += 'border-left    : 1px outset #ffffff;"n'
  127. ddata += '>n'
  128.   //-MONTH
  129.   ddata += '   <TR id="trmonth" BGCOLOR="#778899" BORDERCOLOR=#dddddd WIDTH=140 HEIGHT=14>n'
  130.   ddata += '   <TH COLSPAN=7 WIDTH=140 HEIGHT=14 ALIGN="right"><NOBR>n'
  131.   ddata += '<FONT COLOR=#ffffff>n'
  132.   ddata +=  nowtitleyyyymm
  133.   ddata += '</FONT>n'
  134.   ddata += ' <INPUT TYPE=button VALUE=" < " '
  135.   ddata += "  onClick="self.opener.ppCalendar('" + nameElement + "',-1,1," + arg3 + ");">n";
  136.   ddata += 'n'
  137.   ddata += '<INPUT TYPE=button VALUE=" > " '
  138.   ddata += "  onClick="self.opener.ppCalendar('" + nameElement + "',1,1," + arg3 + ");">n";
  139.   ddata += '</NOBR></TH>n'
  140.   ddata += '   </TR>n'
  141.   //-WEEK
  142.   ddata += '   <TR BGCOLOR="#ccddee" WIDTH=140 HEIGHT=14>n'
  143.   for (i=0;i<7;i++){
  144. ddata += '  <TH WIDTH=14 HEIGHT=14>n'
  145. ddata +=    week[i]
  146. ddata += '  </TH>n'
  147.   }
  148.   ddata += '   </TR>n'
  149.   //-DATE
  150.   for(j=0;j<6;j++){
  151. ddata += '  <TR BGCOLOR=#ffffff>n'
  152. for(i=0;i<7;i++){
  153.   nextday = startday.getTime() + (i * 1000*60*60*24)
  154.   wrtday  = new Date(nextday)
  155.   wrtdate = wrtday.getDate()
  156.   wrtmonth= wrtday.getMonth()
  157.   wrtyear = wrtday.getFullYear()
  158.   if(wrtyear < 1900)wrtyear=1900 + wrtyear
  159.   wrtyyyymm = wrtyear * 100 + wrtmonth
  160.   wrtyyyymmdd= ''+wrtyear +'-'+ (wrtmonth+1) +'-'+wrtdate
  161.   wrtdateA = '<FONT COLOR=#000000>n'
  162.   wrtdateA += wrtdate
  163.   wrtdateA += '</FONT>n'
  164. wrtdate
  165.   if(wrtyyyymm != nowyyyymm){
  166. strColor = "#cccccc";
  167.   } else if( wrtdate  == numDateDay  &&
  168.   wrtmonth == numDateMonth &&
  169.   wrtday.getFullYear() == numDateYear){
  170. strColor = "orange";
  171.   } else if( wrtdate  == absnow.getDate()  &&
  172.  wrtmonth == absnow.getMonth() &&
  173.  wrtday.getFullYear() == absnow.getFullYear()){
  174. strColor = "yellow";
  175.   } else {
  176. strColor = "";
  177.   }
  178.   if(Number(wrtmonth + 1) <10){
  179. wrtmonth = "0" + String((wrtmonth + 1));
  180.   }else{
  181. wrtmonth = String((wrtmonth + 1));
  182.   }
  183.   if(Number(wrtdate) <10){
  184. wrtdate = "0" + String(wrtdate);
  185.   }else{
  186. wrtdate = String(wrtdate);
  187.   }
  188.   if(arg3 == 1){
  189. wrtyyyymmdd= ''+wrtyear +'-'+ wrtmonth;
  190.   }else{
  191. wrtyyyymmdd= ''+wrtyear +'-'+ wrtmonth +'-'+wrtdate;
  192.   }
  193. ddata += "<TD style="cursor:hand;" align="right" bgcolor="" + strColor + "" width=14 height=14 onclick="window.opener.document.getElementById('" + nameElement + "').value='"+wrtyyyymmdd+"'; window.opener.document.getElementById('" + nameElement + "').style.backgroundColor=''; self.close(); " >"
  194.   ddata += wrtdateA
  195.   ddata += '   </TD>n'
  196. }
  197. ddata += '  </TR>n'
  198. startday = new Date(nextday)
  199. startday = startday.getTime() + (1000*60*60*24)
  200. startday = new Date(startday)
  201.   }
  202.   ddata += '</TABLE>n'
  203.   ddata += '</FORM>n'
  204.   ddata += '</BODY>n'
  205.   ddata += '</HTML>n'
  206.   pre_nameElement = nameElement;
  207.   oContainer.document.write(ddata)
  208.   oContainer.document.close()
  209.   oContainer.focus()
  210. }