var WinCal;
var font = 'Courier';
var bga = 'c0c0c0';
var bgb = 'ffffff';

function set_date(sm,sd,sy,mm,dd,yy) {
   var imm = mm - 0; imm += 1;
   document.myform[sm].selectedIndex = imm;
   document.myform[sd].selectedIndex = dd;
   document.myform[sy].selectedIndex = yy - 2004;
   WinCal.close();
}

function show_calendar(sm,sd,sy,mm,dd,yy) {
   var arr_months = ["January", "February", "March", "April", "May", "June",
      "July", "August", "September", "October", "November", "December"];
   var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
   var n_weekstart = 0; // day week starts from (normally 0 or 1)

   var dt_today = new Date();
   var iyy = yy - 0; iyy += 2004;
   var imm = mm - 0; imm -= 1;
   var dt_date = (mm == '' || dd == '' || yy == '') ? new Date() : new Date(iyy,imm,dd);
   var dt_prev_month = new Date(dt_date);
   dt_prev_month.setMonth(dt_date.getMonth()-1);
   var dt_next_month = new Date(dt_date);
   dt_next_month.setMonth(dt_date.getMonth()+1);
   var dt_firstday = new Date(dt_date);
   dt_firstday.setDate(1);
   dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
   var dt_lastday = new Date(dt_next_month);
   dt_lastday.setDate(0);

   // print calendar header
   var str_buffer = new String (
      "<html>\n"+
      "<head>\n"+
      "   <title>Calendar</title>\n"+
      "<style>\n"+
      "  td {font-family:"+font+"; font-size:12px}\n"+
      "</style>\n"+
      "</head>\n"+
      "<body bgcolor=white>\n"+
      "<table cellspacing=0 border=0 width=100%>\n"+
      "<tr><td bgcolor="+bga+">\n"+
      "<table cellspacing=1 cellpadding=3 border=0 width=100%>\n"+

      "<tr bgcolor="+bga+">\n   <td><a href=\"javascript:window.opener.show_calendar('"+sm+"','"+sd+"','"+sy+"','"+
      (dt_prev_month.getMonth()+1)+"','"+dt_prev_month.getDate()+"','"+(dt_prev_month.getFullYear()-2004)+
      "')\"><img src=HM_More_black_left.gif border=0></a></td>\n"+

      "   <td colspan=5 align=center>"+
      "<font color=black>"+
      arr_months[dt_date.getMonth()]+" "+dt_date.getFullYear()+"</font></td>\n"+

      "   <td align=right><a href=\"javascript:window.opener.show_calendar('"+sm+"','"+sd+"','"+sy+"','"+
      (dt_next_month.getMonth()+1)+"','"+dt_next_month.getDate()+"','"+(dt_next_month.getFullYear()-2004)+
      "')\"><img src=HM_More_black_right.gif border=0></a></td>\n</tr>\n"
   );

   var dt_day = new Date(dt_firstday);

   // print weekdays titles
   str_buffer += "<tr bgcolor="+bgb+" align=center>\n";
   for (var n=0; n<7; n++)
      str_buffer += "   <td>"+
      "<font color=black>"+
      week_days[(n_weekstart+n)%7]+"</font></td>\n";

   // print calendar table
   str_buffer += "</tr>\n";
   while (dt_day.getMonth() == dt_date.getMonth() ||
      dt_day.getMonth() == dt_firstday.getMonth()) {
      // print row heder
      str_buffer += "<tr align=right>\n";
      for (var n_wday=0; n_wday<7; n_wday++) {
         if (dt_day.getDate() == dt_date.getDate() &&
            dt_day.getMonth() == dt_date.getMonth())
            // print current date
            str_buffer += "   <td bgcolor=ff8080>";
         else if (dt_day.getDay() == 0 || dt_day.getDay() == 6)
            // weekend days
            str_buffer += "   <td bgcolor=f6f6f6>";
         else
            // print working days of current month
            str_buffer += "   <td bgcolor=white>";

         if (dt_day.getMonth() == dt_date.getMonth())
            // print days of current month
            str_buffer += "<a href=\"javascript:window.opener.set_date('"+sm+"','"+sd+"','"+sy+"','"+
            dt_day.getMonth()+"','"+dt_day.getDate()+"','"+(dt_day.getFullYear())+
            "')\">"+"<font color=black>";
         else 
            // print days of other months
            str_buffer += "<a href=\"javascript:window.opener.set_date('"+sm+"','"+sd+"','"+sy+"','"+
            dt_day.getMonth()+"','"+dt_day.getDate()+"','"+(dt_day.getFullYear())+
            "')\">"+"<font color=gray>";
         str_buffer += dt_day.getDate()+"</font></a></td>\n";
         dt_day.setDate(dt_day.getDate()+1);
      }
      // print row footer
      str_buffer += "</tr>\n";
   }
   // print calendar footer
   str_buffer +=
      "</table>\n"+
      "</tr>\n</td>\n</table>\n"+
      "</body>\n"+
      "</html>\n";

   WinCal = window.open("", "calendar",
      "width=225,height=200,status=no,resizable=yes,top=400,left=200");
   WinCal.focus();
   WinCal.document.open();
   WinCal.document.write(str_buffer);
   WinCal.document.close();
}

