calendar.js
上传用户:tiancihang
上传日期:2014-03-12
资源大小:21387k
文件大小:9k
源码类别:

.net编程

开发平台:

C#

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