var filaMonth;
calendar = new Object();
tr = new Object();
tr.bgcolor = "#cfdbfa";
tr.border = "#7F9DB9";
tr.nextMonth = "翌月";
tr.prevMonth = "前月";
tr.closeCalendar = "カレンダーを閉じる";
var calendar_html_url = "";
var months=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'];
var days=['<font color=Red>日</font>','月','火','水','木','金','<font color=Blue>土</font>'];

function showCalendar (cal, y, m, d,img, offset_x, offset_y, html_url_) {
    if (document.getElementById) {
        var c = document.getElementById(cal);
        var i = document.getElementById(img);
        calendar.cal = c;
				calendar_html_url = html_url_;
        buildCal(y, m, d);
        var l=0; var t=0;
        aTag = i;
        do {
            aTag = aTag.offsetParent;
            l += aTag.offsetLeft;
            t += aTag.offsetTop;
        } while (aTag.offsetParent && aTag.tagName != 'body');
        var left =  i.offsetLeft + l;
        var top = i.offsetTop + t + i.offsetHeight + 2;
        left = left + offset_x;
        top = top + offset_y;
        c.style.position = "absolute";
        c.style.left = left+'px';
        c.style.top = top+'px';
        c.style.display="block";
        c.style.visibility="visible";
    }
}

function closeCal() {
    calendar.cal.style.display='none';
}

function buildCal(y,m,d){
    var daysInMonth=[31,0,31,30,31,30,31,31,30,31,30,31];
    td=new Date(default_year, default_month-1, default_day);
    if (!y) y = td.getFullYear();
    if (!m) m = td.getMonth()+1;
    if (!d) d = td.getDate;

    var mDate = new Date(y, m-1, 1);
    var firstMonthDay = mDate.getDay();       //月初曜日
    daysInMonth[1]=(((mDate.getFullYear()%100!=0) && (mDate.getFullYear()%4==0)) || (mDate.getFullYear()%400==0))?29:28;    //2月末日

    var today = (y==td.getFullYear() && m==td.getMonth()+1)? td.getDate() : 0;
    var t='<table border=0 cellspacing=0 cellpadding=0 bgcolor="'+tr.bgcolor+'" width="210"><tr align=center><td style="border:solid; border-color:'+tr.border+'; border-width:1px;">';
    t+='<table cellspacing=2 cellpadding=1><tr>';
    var flm=td.getMonth()+1;
    var flyr=td.getFullYear();
    filaMonth=10;
    for(p=0;p<=10;p++){
      if (flm == m) {
        filaMonth = p;
      }
      flm++;
      if(flm>12){
        flm=1;
        flyr++;
      }
    }
    t+='<td colspan="6" class="memo06">';
    if (filaMonth == 0) {
        t+='&nbsp;&lt;&nbsp;';
    }
    else {
        t+='<a class=link_cell href="javascript:void(0);" onClick="prevMonth('+y+','+m+');return false;" title="'+tr.prevMonth+'"><span style=\"color:Blue;font-weight:bold;\">&nbsp;&lt;&nbsp;</span></a>';
    }
    t+='&nbsp;<select name="ym" onchange="goMonth(this.options[this.selectedIndex].value)">';
    var mn=td.getMonth()+1;
    var yr=td.getFullYear();
    for(n=0;n<=10;n++){
      t+='<option value="' + mn + '"';
      if (mn == m) {
          t+=' selected="selected"';
      }
      t+='>' + yr + '年 ' + months[mn-1] +'</option>';
      mn++;
      if(mn>12){
        mn=1;
        yr++;
      }
      if(default_year_to * 100 + default_month_to < yr * 100 + mn) break;
    }
    t+= ' </select>&nbsp;';
    if (filaMonth == 10 || default_year_to * 100 + default_month_to <= y * 100 + m * 1) {
        t+='&nbsp;&gt;&nbsp;';
    }
    else {
        t+='<a class=link_cell href="javascript:void(0);" onClick="nextMonth('+y+','+m+');return false;" title="' + tr.nextMonth +'"><span style=\"color:Blue;font-weight:bold;\">&nbsp;&gt;&nbsp;</span></a>';
    }
    t+='</td><td class="memo06"><a href="javascript:void(0);" onClick="closeCal();return false;"><img src="'+calendar_html_url+'kyozai/images/map_close2.gif" width=16 height=16 border=0 alt="'+tr.closeCalendar+'" title="'+tr.closeCalendar+'" hspace=3></td></tr>';
    t+='<tr>';
    for(dn=0;dn<7;dn++){
        var cl = '';
        t+='<td align=center class=memo06>'+days[dn]+'</td>';
    }
    t+='</tr><tr bgcolor="#FFFFFF">';
    for(i=1;i<=42;i++){
        var x = i - firstMonthDay;              //日～土の場合
        if (x > daysInMonth[m-1] || x <1) x = '&nbsp;';
        var cl = '';
        var href = 0;
        if (x>0){
            var xDay = new Date(y, m-1, x);
            if ((xDay.getFullYear() == y) && (xDay.getMonth()+1 == m)
                && (xDay.getDate() == d))
                { href=1}
            if ((xDay.getFullYear() == td.getFullYear())
                && (xDay.getMonth() == td.getMonth())
                && (xDay.getDate() == td.getDate()))
                { href=1;}
            else {
                if (xDay > td){ href=1; }
            }
        };
        t+='<td align="center" class="memo06">';
        if (href){
            t+="<a class=link_cell href=\"javascript:void(0);\" onClick=\"pickDate('"+y+"','"+(m<10 ? '0'+m*1 : ''+m*1)+"','"+(x<10 ? '0'+x*1 : ''+x*1)+"');return false;\" title=\""+m+"/"+x+"\"><span style=\"color:Blue;\">"+x+"</span></a>";
        } else {
            t+=x;
        }
        t+='</td>';
        if(((i)%7==0)&&(i<36)) {
            t+='</tr><tr bgcolor="#FFFFFF">';
        }
    }
    t+='</tr></table><br></td></table>';
    calendar.cal.innerHTML= t;
}

function prevMonth(y,m) {
    if (new Date(y,m-1,1) < td) return;
    if (m > 1) {m--} else {m = 12; y--};
    buildCal(y,m);
}

function nextMonth(y,m) {
    if (m<12){m++;} else {m=1;y++;}
    if (y > td.getFullYear() && m >= td.getMonth() ) return;
    buildCal(y,m);
}

function goMonth(m){
    var y = td.getFullYear();
    if (m < td.getMonth()+1) y++;
    buildCal(y,m);
}

function pickDate(y,m,d,dt,frm){

    Calendar_Selected(y,m,d);
    closeCal();
}

function checkDateOrder(frm, ci_day, ci_month_year, co_day, co_month_year) {
  if (document.getElementById) {
    var frm = document.getElementById(frm);
    var my = frm[ci_month_year].value.split("-");
      var ci = new Date (my[0], my[1]-1, frm[ci_day].value, 12, 0, 0, 0);

      my = frm[co_month_year].value.split("-");
      var co = new Date (my[0], my[1]-1, frm[co_day].value, 12, 0, 0, 0);

      if (ci >= co){
          co.setTime(ci.getTime() + 1000 * 60 * 60 * 24);
          frm[co_day].value =  co.getDate();
          var com = co.getMonth()+1;
          frm[co_month_year].value = co.getFullYear() + "-" + com;
      }
  }
}

