package com.braintreepayments.cardform.view;

import android.content.Context;
import android.text.InputFilter;
import android.text.InputFilter.LengthFilter;
import android.text.InputType;
import android.util.AttributeSet;

import com.braintreepayments.cardform.R;

/**
 * Input for postal codes. Validated for presence only due to the wide variation of postal code formats worldwide.
 */
public class PostalCodeEditText extends ErrorEditText {
    public PostalCodeEditText(Context context) {
        super(context);
        init();
    }

    public PostalCodeEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public PostalCodeEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init() {
        setInputType(InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS);
        InputFilter[] filters = { new LengthFilter(16) };
        setFilters(filters);
    }

    @Override
    public boolean isValid() {
        return isOptional() || getText().toString().length() > 0;
    }

    @Override
    public String getErrorMessage() {
        return getContext().getString(R.string.bt_postal_code_required);
    }
}