var ns4,ie4;	//浏览器类型指示
var gYear,gMonth,gDate,gDay;	//当前年,月,日,星期
var gTDArray;	//35个元素的数组,记录当前7x5个方格对应的日期
var gLowIndex,gHighIndex,gCurIndex;	//本月第一天,最后一天,当前日在 gTDArray 中的下标

//检查浏览器的类型,以便在进行层操作的时候保持兼容
function z_checkBrowser()
{
  ns4=(document.layers)?true:false;
  ie4=(document.all)?true:false;
  if (!ns4 && !ie4)
  {
    alert('您的浏览器不支持DHTML!');
    window.location='index.asp';
  }
}

function z_addMemo()
{
  var myToday;
  myToday=txtYear.value + "-" + txtMonth.value + "-" + gDate;
  Window.location='addMemoForm.asp?memoDate=' + myToday;
}
function z_changeText(which,text)
{
  if (ns4){
    var myLayer=document.layers[which].document;
    myLayer.open();
    myLayer.write(text);
    myLayer.close();
  }else{
    document.all[which].innerText=text;
  }
}


function z_changeStyle(which,newStyle)
{
  if (ns4){
    document.layers[which].className=newStyle;
  }else{
    document.all[which].className=newStyle;
  }
}


//用户按 - 按钮增加月份值
function z_addMonth()
{
  if (txtMonth.value==12)
  {
    gMonth=0;
    if (gYear==99)
      gYear+=1900;
    gYear+=1;
  }else{
    gMonth+=1;
  }
  z_calculate();
  z_refresh();
}

//用户按 + 按钮减小月份值
function z_subMonth()
{
  if (txtMonth.value==1)
  {
    gMonth=11;
    if (gYear==2000) //Y2K
      gYear-=1900;
    gYear-=1;
  }else{
    gMonth-=1;
  }
  z_calculate();
  z_refresh();
}
//用户手工修改年的值
function z_changeYear()
{
  if (txtYear.value.length!=4)
  {
    alert('请输入4位年份!');
    txtYear.focus();
  }
  else{
    if (txtYear.value<1970)
    {
      alert('年份应大于1970!');
      txtYear.focus();
    }else{
      gYear=(txtYear.value<2000)?txtYear.value-1900:txtYear.value;
      z_calculate();
      z_refresh();
    }
  }    
}

//用户手工修改月的值
function z_changeMonth()
{
  if (txtMonth.value.length==0)
  {
    alert('请输入月份!');
    txtMonth.focus();
  }
  else{
    if(txtMonth.value<1 || txtMonth.value>12)
    {
      alert('月份应该在1到12之间!');
      txtMonth.focus();
    }else{
      gMonth=txtMonth.value-1;
      z_calculate();
      z_refresh();
    }
  }
}

//用户用鼠标选择某一天,参数为新的日在 gTDArray 中的位置下标
function z_changeDate(which)
{
  if(gTDArray[which]!=0)  //新选择的表格是合法的日
  {
    z_changeStyle('Box'+gCurIndex,'uContentWhiteCenterTD');
    gCurIndex=which;
    gDate=gTDArray[gCurIndex];
    z_changeStyle('Box'+gCurIndex,'uTitleTD');
  }
}

//进行本月天数计算,给gLowIndex,gHighIndex,gCurIndex,gTDArray赋值
function z_calculate()
{
  var Day27ThisMonth,Date1NextMonth;
  var LowIndex;
  var DayNumber;
  
  var tmpDate=new Date(gYear,gMonth,gDate);
  
  //LowIndex的值正好是本月1号的星期值
  tmpDate.setDate(1);
  LowIndex=tmpDate.getDay();
  
  //注意1,3,5,7,8,10,12月肯定是31天
  var realMonth=gMonth+1;
  if ((realMonth==1)||(realMonth==3)||(realMonth==5)||(realMonth==7)||(realMonth==8)||(realMonth==10)||(realMonth==12))
    DayNumber=31;
  else{
    if (realMonth!=2)
      DayNumber=30;
    else{
      var realYear=gYear<2000?gYear+1900:gYear;
      if (realYear%400==0)
        DayNumber=29;
      else
        if (realYear%100==0)
          DayNumber=28;
        else
          if (realYear%4==0)
            DayNumber=29;
          else
            DayNumber=28;
    }
  }
/*  
 * 下面是比较愚蠢的计算方法,是在不知道闰年的计算方法时用的
 *
 else{
    //本月27号的星期值
    tmpDate.setDate(27);
    Day27ThisMonth=tmpDate.getDay();

    //下月一号的星期值
    var tmpYear=gYear;
    var tmpMonth=gMonth;

    if(gMonth==11)
    {
      tmpMonth=0;
      if (tmpYear==99)
        tmpYear+=1900;
      tmpYear+=1;
    }else  tmpMonth++;
  
    tmpDate.setYear(tmpYear);
    tmpDate.setMonth(tmpMonth);
    tmpDate.setDate(1);
    Day1NextMonth=tmpDate.getDay();

    //找出本月的天数
    DayNumber=27;

    for(i=0;i<6;i++)
    {
      //注意下面找本月27号到下月一号之间天数的方法
      //根据一周有7天且27号到下月1号之间的天数肯定少于7天这个性质
      if((Day27ThisMonth+i) % 7==Day1NextMonth)
      {
        DayNumber+=(i-1);
        break;
      }
    }
  }
*/
  
  //给 gTDArray 数组赋值,注意不在本月的对应元素赋0
  for(i=0;i<LowIndex;i++)
    gTDArray[i]=0;
  
  for(i=0;i<DayNumber;i++)
    gTDArray[LowIndex+i]=i+1;

  for(i=LowIndex+DayNumber;i<42;i++)
    gTDArray[i]=0;
    
  for(i=0;i<42;i++)
  {
    if (gDate==gTDArray[i])  
    {
      gCurIndex=i;
      break;
    }
  }
}

function z_refresh()
{
  txtYear.value=(gYear<2000)?gYear+1900:gYear; //Y2K
  txtMonth.value=gMonth+1;
  for (i=0;i<42;i++)
  {
    if (gTDArray[i]==0)
      z_changeText('Box'+i,'');
    else
      z_changeText('Box'+i,gTDArray[i]);
    z_changeStyle('Box'+i,'uContentWhiteCenterTD');
  }
  z_changeStyle('Box'+gCurIndex,'uTitleTD');
}

function z_initialize()
{
  
  var tmpDate;
  
  z_checkBrowser();	//检查浏览器类型
    
  tmpDate=new Date();	//保存当前日期值
  gYear=tmpDate.getYear();
  gMonth=tmpDate.getMonth();
  gDate=tmpDate.getDate();
  gDay=tmpDate.getDay();
  
  gTDArray=new Array(42);	//初始化gTDArray为42个元素的数组
  
  z_calculate();		//进行本月天数计算,给gLowIndex,gHighIndex,gCurIndex,gTDArray赋值
  z_refresh();  		//根据当前的gTDArray,gLowIndex,gHighIndex,gCurIndex刷新显示
}


