function GetMonDays(month, year)
{
   var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
   if (IsLeapYear(year))
   {
      DaysInMonth[1]=29;
   }   
   return DaysInMonth[month];   
}

function IsLeapYear(year)
{
   if ((year%4)==0)
   {
      if ((year%100==0) && (year%400)!=0)
      {
         return false;
      }
      else
      {
         return true;
      }
   }
   else
   {
      return false;
   }
}

var MonthName=["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"];

function SetupDays()
{
   var dayObj = document.getElementById('day');
   var monthObj = document.getElementById('month');
   var yearObj = document.getElementById('year');
   
   today = new Date();
   d = today.getDate();
   m = today.getMonth();
   y = today.getFullYear();
   
   startd = 1;
   
   if (yearObj.value == y && monthObj.value == m + 1)
   {
      startd = d;
   }
   
   oldday = dayObj.value;
   
   for (i = dayObj.length - 1; i >= 0; i--)
   {
      dayObj.remove(i);   
   }
   
   oldd = startd;
   
   for (i = startd; i <= GetMonDays(parseInt(monthObj.value) - 1); i++)
   {
      if (oldday == i) oldd = oldday;
      dayObj.options[i - startd] = new Option(i, i);
   }
   
   dayObj.value = oldd;   
   
}

function SetupMonths(yearObj)
{
   monthObj = document.getElementById('month');
   yearObj = document.getElementById('year');

   today = new Date();
   d = today.getDate();
   m = today.getMonth();
   y = today.getFullYear();
   
   startm = 0;
   
   if (yearObj.value == y)
   {
      startm = m;
   }
   
   oldmonth = monthObj.value;
   
   for (i = monthObj.length - 1; i >= 0; i--)
   {
      monthObj.remove(i);   
   }
   
   oldm = startm + 1;
   for (i = startm; i < 12; i++)
   {
      if (oldmonth == i + 1) oldm = oldmonth;
      monthObj.options[i - startm] = new Option(MonthName[i], (i + 1));
   }
   
   monthObj.value = oldm;
   
   SetupDays();
   
}

SetupMonths();