calendar.script
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:8k
源码类别:

电子政务应用

开发平台:

Java

  1. var gdCtrl = new Object();
  2. var goSelectTag = new Array();
  3. var gcGray = "#808080";
  4. var gcToggle = "#ffff00";
  5. var gcBG = "#99CCFF";
  6. var previousObject = null;
  7. var gdCurDate = new Date();
  8. var giYear = gdCurDate.getFullYear();
  9. var giMonth = gdCurDate.getMonth()+1;
  10. var giDay = gdCurDate.getDate();
  11. var gCalMode = "";
  12. var gCalDefDate = "";
  13. var CAL_MODE_NOBLANK = "2";
  14. function fSetDate(iYear, iMonth, iDay){
  15.   //VicPopCal.style.visibility = "hidden";
  16.   if ((iYear == 0) && (iMonth == 0) && (iDay == 0)){
  17.    gdCtrl.value = "1970-01-01";
  18.   }else{
  19.    iMonth = iMonth + 100 + "";
  20.    iMonth = iMonth.substring(1);
  21.    iDay   = iDay + 100 + "";
  22.    iDay   = iDay.substring(1);
  23.    gdCtrl.value = iYear+"-"+iMonth+"-"+iDay;
  24.   }
  25.   
  26.   for (i in goSelectTag)
  27.    goSelectTag[i].style.visibility = "visible";
  28.   goSelectTag.length = 0;
  29.   
  30.   window.returnValue=gdCtrl.value;
  31.   window.close();
  32. }
  33. function HiddenDiv()
  34. {
  35. var i;
  36.   VicPopCal.style.visibility = "hidden";
  37.   for (i in goSelectTag)
  38.    goSelectTag[i].style.visibility = "visible";
  39.   goSelectTag.length = 0;
  40. }
  41. function fSetSelected(aCell){
  42.   var iOffset = 0;
  43.   var iYear = parseInt(tbSelYear.value);
  44.   var iMonth = parseInt(tbSelMonth.value);
  45.   
  46.   aCell.bgColor = gcBG;
  47.   with (aCell.children["cellText"]){
  48.    var iDay = parseInt(innerText);
  49.    if (color==gcGray)
  50. iOffset = (Victor<10)?-1:1;
  51. /*** below temp patch by maxiang ***/
  52. if( color == gcGray ){
  53. iOffset = (iDay < 15 )?1:-1;
  54. }
  55. /*** above temp patch by maxiang ***/
  56. iMonth += iOffset;
  57. if (iMonth<1) {
  58. iYear--;
  59. iMonth = 12;
  60. }else if (iMonth>12){
  61. iYear++;
  62. iMonth = 1;
  63. }
  64.   }
  65.   fSetDate(iYear, iMonth, iDay);
  66. }
  67. function Point(iX, iY){
  68. this.x = iX;
  69. this.y = iY;
  70. }
  71. function fBuildCal(iYear, iMonth) {
  72.   var aMonth=new Array();
  73.   for(i=1;i<7;i++)
  74.    aMonth[i]=new Array(i);
  75.   
  76.   var dCalDate=new Date(iYear, iMonth-1, 1);
  77.   var iDayOfFirst=dCalDate.getDay();
  78.   var iDaysInMonth=new Date(iYear, iMonth, 0).getDate();
  79.   var iOffsetLast=new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;
  80.   var iDate = 1;
  81.   var iNext = 1;
  82.   for (d = 0; d < 7; d++)
  83. aMonth[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
  84.   for (w = 2; w < 7; w++)
  85.    for (d = 0; d < 7; d++)
  86. aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
  87.   return aMonth;
  88. }
  89. function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize) {
  90.   var WeekDay = new Array("日","一","二","三","四","五","六");
  91.   var styleTD = " bgcolor='"+gcBG+"' bordercolor='"+gcBG+"' valign='middle' align='center' height='"+iCellHeight+"' style='font-size:12px; ";
  92.   with (document) {
  93. write("<tr>");
  94. for(i=0; i<7; i++)
  95. write("<td "+styleTD+" color:#990099' >" + WeekDay[i] + "</td>");
  96. write("</tr>");
  97.    for (w = 1; w < 7; w++) {
  98. write("<tr>");
  99. for (d = 0; d < 7; d++) {
  100. write("<td id=calCell "+styleTD+"cursor:hand;' onMouseOver='this.bgColor=gcToggle' onMouseOut='this.bgColor=gcBG' onclick='fSetSelected(this)'>");
  101. write("<font id=cellText ><b> </b></font>");
  102. write("</td>")
  103. }
  104. write("</tr>");
  105. }
  106.   }
  107. }
  108. function fUpdateCal(iYear, iMonth) {
  109.   myMonth = fBuildCal(iYear, iMonth);
  110.   var i = 0;
  111.   for (w = 0; w < 6; w++)
  112. for (d = 0; d < 7; d++)
  113. with (cellText[(7*w)+d]) {
  114. Victor = i++;
  115. if (myMonth[w+1][d]<0) {
  116. color = gcGray;
  117. innerText = -myMonth[w+1][d];
  118. }else{
  119. // Modified by maxiang for we need 
  120. // Saturday displayed in blue font color.
  121. //color = ((d==0)||(d==6))?"red":"black";
  122. if( d == 0 ){
  123. color = "red";
  124. }else if( d == 6 ){
  125. color = "blue";
  126. }else{
  127. color = "black";
  128. }
  129. // End of above maxiang
  130. innerText = myMonth[w+1][d];
  131. }
  132. }
  133. }
  134. function fSetYearMon(iYear, iMon){
  135.   tbSelMonth.options[iMon-1].selected = true;
  136.   for (i = 0; i < tbSelYear.length; i++)
  137. if (tbSelYear.options[i].value == iYear)
  138. tbSelYear.options[i].selected = true;
  139.   fUpdateCal(iYear, iMon);
  140. }
  141. function fPrevMonth(){
  142.   var iMon = tbSelMonth.value;
  143.   var iYear = tbSelYear.value;
  144.   
  145.   if (--iMon<1) {
  146.   iMon = 12;
  147.   iYear--;
  148.   }
  149.   
  150.   fSetYearMon(iYear, iMon);
  151. }
  152. function fNextMonth(){
  153.   var iMon = tbSelMonth.value;
  154.   var iYear = tbSelYear.value;
  155.   
  156.   if (++iMon>12) {
  157.   iMon = 1;
  158.   iYear++;
  159.   }
  160.   
  161.   fSetYearMon(iYear, iMon);
  162. }
  163. function fToggleTags(){
  164.   with (document.all.tags("SELECT")){
  165.   for (i=0; i<length; i++)
  166.   if ((item(i).Victor!="Won")&&fTagInBound(item(i))){
  167.   item(i).style.visibility = "hidden";
  168.   goSelectTag[goSelectTag.length] = item(i);
  169.   }
  170.   }
  171. }
  172. function fTagInBound(aTag){
  173.   with (VicPopCal.style){
  174.    var l = parseInt(left);
  175.    var t = parseInt(top);
  176.    var r = l+parseInt(width);
  177.    var b = t+parseInt(height);
  178. var ptLT = fGetXY(aTag);
  179. return !((ptLT.x>r)||(ptLT.x+aTag.offsetWidth<l)||(ptLT.y>b)||(ptLT.y+aTag.offsetHeight<t));
  180.   }
  181. }
  182. function fGetXY(aTag){
  183.   var oTmp = aTag;
  184.   var pt = new Point(0,0);
  185.   do {
  186.    pt.x += oTmp.offsetLeft;
  187.    pt.y += oTmp.offsetTop;
  188.    oTmp = oTmp.offsetParent;
  189.   } while(oTmp.tagName!="BODY");
  190.   return pt;
  191. }
  192. // Main: popCtrl is the widget beyond which you want this calendar to appear;
  193. //       dateCtrl is the widget into which you want to put the selected date.
  194. // i.e.: <input type="text" name="dc" style="text-align:center" readonly><INPUT type="button" value="V" onclick="fPopCalendar(dc,dc);return false">
  195. function fPopCalendar(popCtrl, dateCtrl, mode, defDate){
  196. gCalMode = mode;
  197. gCalDefDate = defDate;
  198.   if (popCtrl == previousObject){
  199.    if (VicPopCal.style.visibility == "visible"){
  200.    //HiddenDiv();
  201.    return true;
  202.    }
  203.   
  204.   }
  205.   previousObject = popCtrl;
  206.   gdCtrl = dateCtrl;
  207.   fSetYearMon(giYear, giMonth); 
  208.   var point = fGetXY(popCtrl);
  209. if( gCalMode == CAL_MODE_NOBLANK ){
  210. document.all.CAL_B_BLANK.style.visibility = "hidden";
  211. }else{
  212. document.all.CAL_B_BLANK.style.visibility = "visible";
  213. }
  214.   with (VicPopCal.style) {
  215.    left = point.x;
  216. top  = point.y+popCtrl.offsetHeight;
  217. width = VicPopCal.offsetWidth;
  218. height = VicPopCal.offsetHeight;
  219. fToggleTags(point); 
  220. visibility = 'visible';
  221.   }
  222. }
  223. var gMonths = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
  224. with (document) {
  225. write("<Div id='VicPopCal' style='OVERFLOW:hidden;POSITION:absolute;VISIBILITY:hidden;border:0px ridge;width:100%;height:100%;top:0;left:0;z-index:100;overflow:hidden'>");
  226. write("<table border='0' bgcolor='#3366CC'>");
  227. write("<TR>");
  228. write("<td valign='middle' align='center'><input type='button' name='PrevMonth' value='<' style='height:20;width:20;FONT:bold' onClick='fPrevMonth()'>");
  229. write("&nbsp;<SELECT name='tbSelYear' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>");
  230. for(i=1930;i<2100;i++)
  231. write("<OPTION value='"+i+"'>"+i+"年</OPTION>");
  232. write("</SELECT>");
  233. write("&nbsp;<select name='tbSelMonth' onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>");
  234. for (i=0; i<12; i++)
  235. write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
  236. write("</SELECT>");
  237. write("&nbsp;<input type='button' name='PrevMonth' value='>' style='height:20;width:20;FONT:bold' onclick='fNextMonth()'>");
  238. write("</td>");
  239. write("</TR><TR>");
  240. write("<td align='center'>");
  241. write("<DIV style='background-color:#000066'><table width='100%' border='0'>");
  242. fDrawCal(giYear, giMonth, 8, '12');
  243. write("</table></DIV>");
  244. write("</td>");
  245. write("</TR><TR><TD align='center'>");
  246. write("<TABLE width='100%'><TR><TD align='center'>");
  247. write("<B ID="CAL_B_BLANK" style='color:"+gcBG+"; visibility:visible; cursor:hand; font-size:12px' onclick='fSetDate(0,0,0)' onMouseOver='this.style.color=gcToggle' onMouseOut='this.style.color=gcBG'>清空</B>");
  248. write("</td><td algin='center'>");
  249. write("<B style='color:"+gcBG+";cursor:hand; font-size:12px' onclick='fSetDate(giYear,giMonth,giDay)' onMouseOver='this.style.color=gcToggle' onMouseOut='this.style.color=gcBG'>选择: "+giYear+"-"+giMonth+"-"+giDay+"</B>");
  250. write("</td></tr></table>");
  251. write("</TD></TR>");
  252. write("</TABLE></Div>");
  253. }