календарь отстает на один день, и к прошедшим дням подставляется минус. Как такое вообще возможно??
JavaScript Code:
  1. <script>
  2.     function Calendar3(id, year, month) {
  3.         var Dlast = new Date(year,month+1,0).getDate(),
  4.             D = new Date(year,month,Dlast),
  5.             DNlast = D.getDay(),
  6.             DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
  7.             calendar = '<tr>',
  8.             m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
  9.             g = document.querySelector('#'+id+' input');
  10.         
  11.         var lastmonth = 32 - new Date(g.value, m.value-1, 32).getDate();
  12.             if (DNfirst != 0) {
  13.                 for(var  i = DNfirst; i > 1; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
  14.             }else{
  15.                 for(var  i = 6; i > 0; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
  16.             }
  17.         
  18.         for(var  i = 1; i <= Dlast; i++) {
  19.             if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
  20.                 calendar += '<td class="today">' + i;
  21.             } else {
  22.                 calendar += '<td>' + i;
  23.             }
  24.             if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
  25.                 calendar += '<tr>';
  26.             }
  27.         }
  28.         
  29.         var dayaftermonth = 1;
  30.                     for(var  i = DNlast; i < 8; i++) {
  31.                       if(i > DNlast) {
  32.                         calendar += '<td style="color: Gray">' + dayaftermonth;
  33.                         dayaftermonth ++;
  34.                       }
  35.                     }
  36.                 
  37.         document.querySelector('#'+id+' tbody').innerHTML = calendar;
  38.         g.value = D.getFullYear();
  39.         m.selected = true;
  40.         if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
  41.             document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
  42.         }
  43.         document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(230, 33, 33)'; // в выпадающем списке выделен текущий месяц
  44.     }
  45.     Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
  46.     document.querySelector('#calendar3').onchange = function Kalendar3() {
  47.         Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
  48.     }
  49. </script>