var dcm=document;

var monthNames = new Array('January','February','March','April','May','June',
'July','August','September','October','November','December');

var monthdays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var today = new Date();
var month = today.getMonth();
var cm = month + 1;
var day = today.getDay();
var dayN = today.getDate();
var cd = dayN;
var days = monthdays[month];
var currentyear = today.getFullYear();
var cy = currentyear;

if (month == 1) {
  var year = today.getYear();
  if (year%4 ==0 && year%100 == 0  && year%400 != 0) days = 29;
}

var dm = cm;
var dd = cd;
var dy = cy;

function calDays( i ) {
  if (!i) { i = 0 };
  dm += i;
  if (dm == 13) {
    dm = 1;
    dy += 1;
  } else if (dm == 0) {
    dm = 12;
    dy -= 1;
  }
  var d = new Date( dy, dm - 1, dd );
  day = d.getDay();
  days = monthdays[ dm - 1 ];
  var mn = monthNames[ dm - 1 ];

  // Create a date string.
  var ds = dy +
    (dm < 10 ? '0' + dm : '' + dm) +
    (dd < 10 ? '0' + dd : '' + dd);
  var cs = cy +
    (cm < 10 ? '0' + cm : '' + cm) +
    (cd < 10 ? '0' + cd : '' + cd);

  // Convert the date string to a number for comparison.
  ds -= 0;
  cs -= 0;

  var html = 
    '<br><table border="0" id="cal" cellpadding="0" cellspacing="0" align="center">' +
    '  <tr align="center" id="calheader">' +
    '    <td><a href="#a1" onclick="reset_cal(); return false;" id="cal_reset" style="color:blue">reset</a></td>' +
    '    <td>';

  if (ds > cs) {
    html += '&nbsp;<a href="#a1" onclick="calDays( -1 );return false" id="cal_prev" style="color:blue">&lt;&lt;</a>';
  } else {
    html += '&nbsp;';
  }

  html += '</td>' +
    '    <td colspan="3" style="color: black">' +
    mn + '&nbsp;' + dy +
    '    </td>' +
    '    <td>';

  if (ds < cs + 10000) {
    html += '<a href="#a1" onclick="calDays( 1 );return false;" id="cal_next" style="color:blue">&gt;&gt;</a>&nbsp;';
  } else {
    html += '&nbsp;';
  }

  html += '</td>' +
    '    <td><a href="#a1" onclick="hide_cal();return false;" id="cal_close" style="color:blue">close</a></td>' +
    '  </tr><tr><td colspan="7">&nbsp;</td></tr>' +
    '  <tr align="center" id="caldaylabel">' +
    '    <td style="color: black" width="30"><b>S</b></td>' +
    '    <td style="color: black" width="30"><b>M</b></td>' +
    '    <td style="color: black" width="30"><b>T</b></td>' +
    '    <td style="color: black" width="30"><b>W</b></td>' +
    '    <td style="color: black" width="30"><b>T</b></td>' +
    '    <td style="color: black" width="30"><b>F</b></td>' +
    '    <td style="color: black" width="30"><b>S</b></td>' +
    '  </tr>';

  var jumped = 0;
  var inserted = 1;
  var start = day - dayN%7 + 1;
  if (start < 0) {
    start += 7
  } else if (start >=7) {
    start -= 7;
  }
  var weeks = parseInt((start + days)/7);
  if ((start + days)%7 != 0) {
    weeks++
  }

  for (var i=weeks; i>0; i--) {
    html += '<tr align="center" class="caldays">';
    for (var j=7; j>0; j--) {
      if (jumped<start || inserted>days) {
        html += '<td style="color: black">&nbsp;';
        jumped++;
      } else {
        if ((dm == cm && dy == cy && inserted >= cd) ||
            (ds > cs && ds < cs + 10000) ||
            (dm == cm && dy == cy + 1 && inserted <= cd)) {
          html += '<td><a href="#a1" onclick="' +
            'update_send_date(' + dm + ', ' + inserted + ', ' + dy + ' );' +
            'hide_cal();return false;"' +
            'style="color: blue">';
        } else {
          html += '<td style="color: black">';
        }
        if (inserted == dayN && dm == cm && dy == cy) {
          html += '<span id="currentday">' + inserted + '</span>'
        } else {
          html += inserted;
        }
        if ((dm == cm && dy == cy && inserted >= cd) ||
            (ds > cs && ds < cs + 10000) ||
            (dm == cm && dy == cy + 1 && inserted <= cd)) {
          html += '</a>';
        }
        inserted++;
      }
      html += '</td>';
    }
    html += '</tr>';
  }

  html += '  <tr align="center" id="calfooter">' +
    '  </tr>' +
    '</table>';

  var o = dcm.getElementById( 'calDsp' );
  o.innerHTML = html;
  o.style.visibility = 'visible';
  o.style.display    = 'block';

}

function reset_cal() {
  dm = cm;
  dd = cd;
  dy = cy;
  calDays();
}

function update_send_date( m, d, y ) {
  var dt = dcm.getElementById("gosendform");
  dt.send_month.value = m;
  dt.send_day.value   = d;
  dt.send_year.value  = y;
  var dto = new Date(y,m-1,d);
  dcm.gosend.time_zone_offset.value = -1*dto.getTimezoneOffset()/60;
  display_send_date();
}

function display_send_date() {
  var o  = dcm.getElementById('send_date');
  var dt = dcm.getElementById("gosendform");
  if (dt.send_month.value == cm &&
      dt.send_day.value   == cd &&
      dt.send_year.value  == cy) {
     o.innerHTML = dt.send_month.value +
       '.' + dt.send_day.value +
       '.' + dt.send_year.value;
  } else {
     o.innerHTML = dt.send_month.value +
       '.' + dt.send_day.value +
       '.' + dt.send_year.value;
  }
}

function hide_cal() {
  var o  = dcm.getElementById( 'calDsp' );
  o.style.display    = 'none';
}

function set_user_time() {

  dcm.gosend.time_zone_offset.value = -1*today.getTimezoneOffset()/60;

  dcm.gosend.send_year_default.value  = cy;
  dcm.gosend.send_month_default.value = cm;
  dcm.gosend.send_day_default.value   = cd;

  var u_month = (cm<10) ? '0' + cm : cm;
  var u_day   = (cd<10) ? '0' + cd : cd;

  var u_hour = today.getHours();
  if(u_hour<10){u_hour='0'+u_hour}

}


