#include <stdio.h>
#include "dates.h"

int is_leap_year (int year)
{
  if (year % 4 == 0)
    if (year % 100 == 0)
      if (year % 400 == 0)
        return 1;
      else
        return 0;
    else
      return 1;
  else
    return 0;
}

int days_in_month (int month, int year)
{
  if (month == 2)
    if (is_leap_year (year))
      return 29;
    else
      return 28;
  else if (month == 4 || month == 6 || month == 9 || month == 11)
    return 30;
  else
    return 31;
}

void date_print (date *d)
{
  printf ("%02d.%02d.%04d", d->day, d->month, d->year);
}

int date_set (date *d, char day, char month, int year)
{
  d->year = year;
  if (month > 0 && month <= 12)
    d->month = month;
  else
    return 0;
  if (day > 0 && day <= days_in_month (month, year))
    d->day = day;
  else
    return 0;
  return 1;
}

void date_next (date *d)
{
  d->day++;
  if (d->day > days_in_month (d->month, d->year))
    {
      d->month++;
      d->day = 1;
      if (d->month > 12)
        {
          d->year++;
          d->month = 1;
        }
    }
}