{% extends "standard-form.njk" %}

{% from "radios/macro.njk" import govukRadios %}
{% from "date-input/macro.njk" import govukDateInput %}

{% set title = mssgs.licence_start_title_you if data.isLicenceForYou else mssgs.licence_start_title_other %}
{% set describedByTag = "licence-start-date-hint" %}

{%
    set errorMap = {
      'full-date': {
        'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error }
      },
      'day-and-month': {
        'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day_and_month }
      },
      'day-and-year': {
        'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day_and_year }
      },
      'month-and-year': {
        'object.missing': { ref: '#licence-start-date-month', text: mssgs.licence_start_error_missing_month_and_year }
      },
      'day': {
        'any.required': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day }
      },
      'month': {
        'any.required': { ref: '#licence-start-date-month', text: mssgs.licence_start_error_missing_month }
      },
      'year': {
        'any.required': { ref: '#licence-start-date-year', text: mssgs.licence_start_error_missing_year }
      },
      'non-numeric': {
        'number.base': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_non_numeric }
      },
      'invalid-date': {
        'any.custom': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_date_real }
      },
      'date-range': {
        'date.min': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days },
        'date.max': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days }
      },
      'licence-to-start': {
        'any.required': { ref: '#licence-to-start', text: mssgs.licence_start_error_choose_when }
      }
    }
%}

{% set dateInputItems = [
    {
      name: "day",
      label: mssgs.date_day,
      classes: "govuk-input--width-2 govuk-input--error" if data.isDayError else "govuk-input--width-2",
      value: payload['licence-start-date-day'],
      attributes: { maxlength : 2 }
    },
    {
      name: "month",
      label: mssgs.date_month,
      classes: "govuk-input--width-2 govuk-input--error" if data.isMonthError else "govuk-input--width-2",
      value: payload['licence-start-date-month'],
      attributes: { maxlength : 2 }
    },
    {
      name: "year",
      label: mssgs.date_year,
      classes: "govuk-input--width-4 govuk-input--error" if data.isYearError else "govuk-input--width-4",
      value: payload['licence-start-date-year'],
      attributes: { maxlength : 4 }
    }
  ]
%}

{% set startDate %}
    {% if not data.hasJunior %}
        <p class="govuk-body-m">{{ mssgs.licence_start_enter_todays_date }}</p>
    {% endif %}

    {{ govukDateInput({
      id: "licence-start-date",
      namePrefix: "licence-start-date",
      items: dateInputItems,
      errorMessage: { text: errorMap[data.error.errorKey][data.error.errorValue].text } if data.error,
      hint: {
        text: mssgs.licence_start_hint + data.maxStartDate
      }
    }) }}
{% endset -%}

{% block pageContent %}

    <p class="govuk-body-m"> {{ mssgs.licence_start_today_or_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days }}</p>

    {{ govukRadios({
        idPrefix: "licence-to-start",
        name: "licence-to-start",
        items: [
            {
                text: data.startAfterPaymentMinutes + mssgs.licence_start_minutes_after,
                value: "after-payment",
                checked: payload['licence-to-start'] === 'after-payment'
            },
            {
                text: mssgs.licence_start_later,
                value: "another-date",
                checked: payload['licence-to-start'] === 'another-date',
                conditional: {
                    html: startDate
                }
            }
        ],
        errorMessage: { text: mssgs.licence_start_error_choose_when } if error['licence-to-start']
    }) }}
{% endblock %}

{% block bodyEnd %}
    <script type="module" src="/public/javascript/govuk-frontend-min.js"></script>
    <script nonce="{{nonce}}" type="module">
        import { initAll } from '/public/javascript/govuk-frontend-min.js'
        initAll()
    </script>
{% endblock %}
