var gdCtrl = new Object();
var goSelectTag = new Array();
var gcGray   = "#808080";
var gcToggle = "#ffeecc";
var gcBG = "#ffffff";

var previousObject = null; 
var gdCurDate = new Date();
var giYear = gdCurDate.getFullYear();
var giMonth = gdCurDate.getMonth()+1;
var giDay = gdCurDate.getDate();
var todayYear = giYear
var todayMonth = giMonth
var todayDay = giDay

var WeekDay
var gMonths
var gWord
getWord()

function getWord(p_lang){
  if(p_lang) Language=p_lang;
  if(typeof(Language)=='undefined') Language='big5';
  if(Language=="big5"){
    WeekDay = new Array("日","一","二","三","四","五","六");
    gMonths = new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"); 
    gWord = new Array("上月","下月"," 年","清空","今天","關閉");
  } else if(Language=="gb"){
    WeekDay = new Array("","珨","媼","","侐","拻","鞠");
    gMonths = new Array("珨堎","媼堎","堎","侐堎","拻堎","鞠堎","堎","匐堎","嬝堎","坋堎","坋珨堎","坋媼堎"); 
    gWord = new Array("奻堎","狟堎"," 爛","諾","踏毞","壽敕"); 
  }else{
    WeekDay = new Array("Su","Mo","Tu","We","Th","Fr","Sa");
    gMonths= new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    gWord = new Array("prevmonth","nextmonth","","Clear","Today","close"); 
  }
}

function fSetDate(iYear, iMonth, iDay){
  VicPopCal.style.visibility = "hidden";
  if ((iYear == 0) && (iMonth == 0) && (iDay == 0)){
    gdCtrl.value = "";
  }else{
    iMonth = iMonth + 100 + "";
    iMonth = iMonth.substring(1);
    iDay   = iDay + 100 + "";
    iDay   = iDay.substring(1);
    if(gdCtrl.tagName == "INPUT"){
      gdCtrl.value = iYear+"-"+iMonth+"-"+iDay;
    }else{
      gdCtrl.innerText = iYear+"-"+iMonth+"-"+iDay;
    }
  } 
  for (i in goSelectTag){
    goSelectTag[i].style.visibility = "visible";
  }
  goSelectTag.length = 0;
  window.returnValue=gdCtrl.value;
}

function HiddenDiv(){
  var i;
  VicPopCal.style.visibility = "hidden";
  for (i in goSelectTag){
    goSelectTag[i].style.visibility = "visible";
  }
  goSelectTag.length = 0; 
  ShowCalendarMark=1;
}

function fSetSelected(aCell){
  var iOffset = 0;
  var iYear = parseInt(tbSelYear.value);
  var iMonth = parseInt(tbSelMonth.value); 
  aCell.bgColor = gcBG;
  with (aCell.children["cellText"]){
    var iDay = parseInt(innerText);
    if (color==gcGray)
      iOffset = (Victor<10)?-1:1;
    iMonth += iOffset;
    if (iMonth<1) {
      iYear--;
      iMonth = 12;
    }else if (iMonth>12){
      iYear++;
      iMonth = 1;
    }
  }
  fSetDate(iYear, iMonth, iDay);
}

function Point(iX, iY){
  this.x = iX;
  this.y = iY;
}

function fBuildCal(iYear, iMonth){
  var aMonth=new Array();
  for(i=1;i<7;i++)
    aMonth[i]=new Array(i); 
  var dCalDate=new Date(iYear, iMonth-1, 1);
  var iDayOfFirst=dCalDate.getDay();
  var iDaysInMonth=new Date(iYear, iMonth, 0).getDate();
  var iOffsetLast=new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;
  var iDate = 1;
  var iNext = 1; 
  for (d = 0; d < 7; d++){
    aMonth[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
  }
  for (w = 2; w < 7; w++){
    for (d = 0; d < 7; d++){
      aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
    }
  }
  return aMonth;
}

function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize){
  var styleTD = " bgcolor='"+gcBG+"' bordercolor='"+gcBG+"' valign='middle' align='center' height='"+iCellHeight+"' style='font: arial "+sDateTextSize+";"; 
  with (document) {
    write("<tr height=20>");
    write("<td height=20 class=caltdin>");
    write("<table width='100%' height='100%' border=0 cellspacing=0 cellpadding=0 class=calweek>");
    write("<tr>");
    for(i=0; i<7; i++){
      if(i==0){
        write("<td width=24><font color='#cc0033'>"+ WeekDay[i] + "</font></td>");
      }else if(i==6){
        write("<td width=24><font color='green'>"+ WeekDay[i] + "</font></td>");
      }else{
        write("<td width=24>"+ WeekDay[i] + "</td>");
      }
    }
    write("</tr>");
      write("</table></td></tr>");
    write("<tr><td height='100' class=caltdin>");
    write("<table width='100%' height=100 border=0 cellspacing=1 cellpadding=0 class=caltbinin>"); 
    for (w = 1; w < 7; w++) {
      write("<tr>");
      for (d = 0; d < 7; d++) {
        write("<td id=calCell "+styleTD+"cursor:hand;' onMouseOver='this.style.background=gcToggle' onMouseOut='this.style.background=gcBG' onclick='fSetSelected(this)'>");
        write("<font id=cellText> </font>");            
        write("</td>")
      }
      write("</tr>");
    }
      write("</table></td></tr>");
  }
}

function fUpdateCal(iYear, iMonth){
  myMonth = fBuildCal(iYear, iMonth);
  var i = 0;
  for (w = 0; w < 6; w++){
    for (d = 0; d < 7; d++){
      with (cellText[(7*w)+d]) {
        Victor = i++;
        if (myMonth[w+1][d]<0) {
          color = gcGray;
          innerText = -myMonth[w+1][d];
        }else{
          if(d==0){
            color = "#cc0033";
          }else if(d==6){
            color = "green";
          }else{
            color = "black";
          }
          innerText = myMonth[w+1][d];
        }
      }
    }
  }
}

function fSetYearMon(iYear, iMon){
  tbSelMonth.options[iMon-1].selected = true;
  tbSelYear.length = 100
  if(iYear<tbSelYear.options[0].value || iYear>tbSelYear.options[tbSelYear.length-1].value)
    tbSelYear[tbSelYear.length] = new Option(iYear+gWord[2],iYear);
  for (i = 0; i < tbSelYear.length; i++){
    if (tbSelYear.options[i].value == iYear){
      tbSelYear.options[i].selected = true;
    }
  }
  fUpdateCal(iYear, iMon);
}

function fPrevMonth(){
  var iMon = tbSelMonth.value;
  var iYear = tbSelYear.value; 
  if (--iMon<1) {
    iMon = 12;
    iYear--;
  } 
  fSetYearMon(iYear, iMon);
}

function fNextMonth(){
  var iMon = tbSelMonth.value;
  var iYear = tbSelYear.value; 
  if (++iMon>12) {
    iMon = 1;
    iYear++;
  } 
  fSetYearMon(iYear, iMon);
}

function fToggleTags(){
  with (document.all.tags("SELECT")){
    for (i=0; i<length; i++){
      if ((item(i).Victor!="Won")&&fTagInBound(item(i))){
        if(item(i).style.visibility == "hidden") continue;
        item(i).style.visibility = "hidden";
        goSelectTag[goSelectTag.length] = item(i);
      }
    }
  }
}

function fTagInBound(aTag){
  with (VicPopCal.style){
    var l = parseInt(left);
    var t = parseInt(top);
    var r = l+parseInt(width);
    var b = t+parseInt(height);
    var ptLT = fGetXY(aTag);
    return !((ptLT.x>r)||(ptLT.x+aTag.offsetWidth<l)||(ptLT.y>b)||(ptLT.y+aTag.offsetHeight<t));
  }
}

function fGetXY(aTag){
  var oTmp = aTag;
  var pt = new Point(0,0);
  do {
    pt.x += oTmp.offsetLeft;
    pt.y += oTmp.offsetTop;
    oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");
  return pt;
}

function newCalWindow(message1,message2,message3){
  var s,ss;
  var s=message3;
  var ss=s.split("=");
  objfield=ss[1];
  if(objfield.indexOf(".")==-1) {
    objfield = 'Form1.'+objfield;
  }
  obj=eval("document."+objfield)
  fPopCalendar(obj,obj,message2);  
}

function fPopCalendar(popCtrl, dateCtrl,strDate){
  if (popCtrl == previousObject){
    if (VicPopCal.style.visibility == "visible"){
      HiddenDiv();
      return true;
    } 
  }
  previousObject = popCtrl;
  gdCtrl = dateCtrl;
  fInitialDate(strDate);
  fSetYearMon(giYear, giMonth); 
  var point = fGetXY(popCtrl);
  with (VicPopCal.style) {
    left = point.x;
    top  = point.y+popCtrl.offsetHeight;
    width = VicPopCal.offsetWidth;
    height = VicPopCal.offsetHeight;
    fToggleTags(point);     
    visibility = 'visible';
  }
  ShowCalendarMark = 2;
}

function fInitialDate(strDate){
  if( strDate == null || strDate.length != 10 )
    return false; 
  var sYear  = strDate.substring(0,4);
  var sMonth = strDate.substring(5,7);
  var sDay   = strDate.substring(8,10); 
  if( sMonth.charAt(0) == '0' ) { 
    sMonth = sMonth.substring(1,2); 
  }
  if( sDay.charAt(0)   == '0' ) { 
    sDay   = sDay.substring(1,2);   
  } 
  var nYear  = parseInt(sYear );
  var nMonth = parseInt(sMonth);
  var nDay   = parseInt(sDay  );
  if ( isNaN(nYear ) )    return false;
  if ( isNaN(nMonth) )    return false;
  if ( isNaN(nDay  ) )    return false; 
  var arrMon = new Array(12);
  arrMon[ 0] = 31;    
  arrMon[ 1] = nYear % 4 == 0 ? 29:28;
  arrMon[ 2] = 31;    
  arrMon[ 3] = 30;
  arrMon[ 4] = 31;    
  arrMon[ 5] = 30;
  arrMon[ 6] = 31;    
  arrMon[ 7] = 31;
  arrMon[ 8] = 30;    
  arrMon[ 9] = 31;
  arrMon[10] = 30;    
  arrMon[11] = 31; 
  var nn=new Date();
  today=nn.getYear(); 
  if ( nMonth < 1 || nMonth > 12 )
    return false;
  if ( nDay < 1 || nDay > arrMon[nMonth - 1] )
    return false;
  giYear  = nYear;
  giMonth = nMonth;
  giDay   = nDay;
  return true;
}

function clickBody(){
  var evtX = event.clientX + document.body.scrollLeft;
  var evtY = event.clientY + document.body.scrollTop;
  with (VicPopCal.style){
    var l = parseInt(left);
    var t = parseInt(top);
    var r = l+parseInt(width);
    var b = t+parseInt(height);
    if(ShowCalendarMark==1 && !(evtX>l && evtY>t && evtX<(r) && evtY<(b))){
      if(VicPopCal.style.visibility=="visible")  {
        HiddenDiv();
      }
    }
  }
  ShowCalendarMark=1;
}

if(typeof(ShowCalendarMark)=='undefined'){ 
document.write("<style type='text/css'>");
document.write(".calmain {font-size:8pt;font-family:Verdana,新明細體;color:#000066}\n")
document.write(".caltableout  {border:1 #843726 solid; border-width:1 0 0 1;filter : progid:DXImageTransform.Microsoft.DropShadow(color=#66cc8080,offX=3,offY=3,positives=true);}\n")
document.write(".caltdout  {border:1 #843726 solid; border-width:0 1 1 0;} \n")
document.write(".caltablein  {border:1 #cccccc solid;background-color:d9edeb;border-width:1 0 0 1}\n")
document.write(".caltdin {border:1 #cccccc solid; border-width:0 1 0 0}\n")
document.write(".caltablein td{ font-size:8pt;text-align : center;color:000066;font-family:Verdana,新明細體;}\n")
document.write(".calweek td {font-size:8pt;color:000000;font-weight:700 ;text-align:center;vertical-align:bottom}\n")
document.write(".caltbinin {background-color:#ffcc99}\n")
document.write(".caltbinin td   {background-color:#ffffff}\n")
document.write("A.callr:link { border:1 #336699 solid;border-width:0 1 1 0;TEXT-DECORATION: none;}\n")
document.write("A.callr:visited { border:1 #336699 solid;border-width:0 1 1 0;TEXT-DECORATION: none; }\n")
document.write("A.callr:hover { border:1 #666666 solid;border-width:0 1 1 0;TEXT-DECORATION: none;}\n")
document.write("A.calbb:link { COLOR: #000066; TEXT-DECORATION: none;font-family:Verdana;font-size:8pt }\n")
document.write("A.calbb:visited { COLOR: #000066; TEXT-DECORATION: none;font-family:Verdana;font-size:8pt }\n")
document.write("A.calbb:hover { COLOR: #cc0033; TEXT-DECORATION: none;font-family:Verdana;font-size:8pt }\n")
document.write(".calb td {font-weight:bold;font-size:8pt;font-family:Verdana,新明細體;color:#000066}\n")
document.write("</style>");

document.attachEvent("onclick",clickBody);

with (document){
  var ShowCalendarMark = 1;
  write("<Div id='VicPopCal' style='OVERFLOW:hidden;POSITION:absolute;VISIBILITY:hidden;z-index:100;'>");
  write("<table align='center' width=180 cellpadding=0 cellspacing=0 bgcolor='#ffeecc' class=caltableout>");
  write("<TR>");
  write("<td class=caltdout height=22 valign='middle'>");
  write("<table width='96%' height=20 border=0 align='center' cellpadding=0 cellspacing=0><tr height=23>");
  write("<td class=calmain align='center' width=10><a href='#' class=callr onClick='fPrevMonth();return false;' title='"+gWord[0]+"'><font face=webdings>7</font></a></td>");
  write("<td class=calmain align='center' valign='bottom'>");
  write(" <SELECT name='tbSelYear'  onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>"); 
  var nn=new Date();
  today=nn.getYear();
  yy=today-75;
  for(i=0;i<=99;i++){
    write("<OPTION value='"+yy+"' >"+yy+gWord[2]+"</OPTION>");
    yy++;
  }
  write("</SELECT>");
  write(" <SELECT name='tbSelMonth'  onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)' Victor='Won'>");
  for (i=0; i<12; i++){
    write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
  }
  write("</SELECT>");
  write("</td>");
  write("<td class=calmain align='center' width=10><a href='#' class=callr onClick='fNextMonth();return false;' title='"+gWord[1]+"'><font face=webdings>8</font></a></td>");
  write("</td>");
  write("</tr></table></td>");
  write("</TR><TR>");
   write("<td class=caltdout height=127 valign='middle'>");
  write("<table width='178' height=120 border=0 align='center' cellpadding=0 cellspacing=0 class=caltablein>"); 
  fDrawCal(giYear, giMonth, 20, '12');
  write("</table>");
  write("</td>");
   write("</TR><TR><TD align='center' class=caltdout height=22>");
  write("<TABLE width='100%' cellpadding=0 cellspacing=0 border=0 height=22 class=calb><TR><TD align='center' valign='bottom' width='40'>");
  write("<a href='#' class=calbb onclick='fSetDate(0,0,0);return false;'>"+gWord[3]+"</a>");
  write("</td><td algin='center' valign='bottom'>");
  write("<a href='#' class=calbb onclick='fSetDate(todayYear,todayMonth,todayDay);return false;'>"+gWord[4]+": "+todayYear+"-"+todayMonth+"-"+todayDay);
  write("</td><td algin='center' width='25'>");
  write("<a href='#' onclick=\"HiddenDiv();return false;\"><img src='images/cal_close.gif' alt='"+gWord[5]+"' border=0></a>");
  write("</td></tr></table>");
  write("</TD></TR>");
  write("</TABLE></Div>"); 
} 
}