/**
 * Invoice Ninja (https://invoiceninja.com).
 *
 * @link https://github.com/invoiceninja/invoiceninja source repository
 *
 * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
 *
 * @license https://www.elastic.co/licensing/elastic-license 
 */

class CheckoutCreditCardAuthorization {
    constructor() {
        // this.button = document.querySelector('#pay-button');
        this.button = document.getElementById('pay-button');

    }

    init() {
        this.frames = Frames.init(
            document.querySelector('meta[name=public-key]').content
        );
    }

    handle() {
        this.init();

        Frames.addEventHandler(
            Frames.Events.CARD_VALIDATION_CHANGED,
            (event) => {
                this.button.disabled = !Frames.isCardValid();
            }
        );

        Frames.addEventHandler(Frames.Events.CARD_TOKENIZED, (event) => {
            document.querySelector(
                'input[name="gateway_response"]'
            ).value = JSON.stringify(event);

            document.getElementById('server_response').submit();
        });

        document
            .querySelector('#authorization-form')
            .addEventListener('submit', (event) => {
                this.button.disabled = true;

                event.preventDefault();

                Frames.cardholder = {
                    name: document.querySelector('meta[name="cardholder_name"]').content ?? '',
                };
                
                Frames.submitCard();
            });
    }
}

new CheckoutCreditCardAuthorization().handle();
