<?php

namespace GriffinForms\Admin\Language;

class Form extends \GriffinForms\Admin\Language\Format
{
    protected static $instance;
    
    protected function backToForms()
    {
        return __('All Forms', 'griffinforms-form-builder');
    }
    
    protected function formLayout()
    {
        return __('Form Builder', 'griffinforms-form-builder');
    }
    
    protected function headingCreateForm()
    {
        return __('Add New Form', 'griffinforms-form-builder');
    }
    
    protected function headingEditForm()
    {
        return __('Edit Form', 'griffinforms-form-builder');
    }
    
    protected function nameLabel()
    {
        return __('Form Name', 'griffinforms-form-builder');
    }
    
    protected function nameDescription()
    {
        return __('Name of your form. Not visible to the user on frontend. This is essential for identifying forms, and thus cannot be empty.', 'griffinforms-form-builder');
    }
    
    protected function headingDescription()
    {
        return __('Form heading appears to users on frontend. You can keep it blank if you do not need it.', 'griffinforms-form-builder');
    }
    
    protected function headingLabel()
    {
        return __('Form Heading', 'griffinforms-form-builder');
    }
    
    protected function descriptionLabel()
    {
        return __('Form Description', 'griffinforms-form-builder');
    }
    
    protected function descriptionDescription()
    {
        return __('Description helps recalling purpose of the form, if you have many forms.', 'griffinforms-form-builder');
    }
    
    protected function folderDescription()
    {
        return __('Folders help you organize your forms.', 'griffinforms-form-builder');
    }
    
    protected function accessLevelDescription()
    {
        return __('Define who can view and fill this form.', 'griffinforms-form-builder');
    }

    protected function submissionEditLabel()
    {
        return __('Submission edit access', 'griffinforms-form-builder');
    }

    protected function submissionEditDescription()
    {
        return __('Choose who can reopen and update a saved submission from the frontend.', 'griffinforms-form-builder');
    }

    protected function submissionEdit()
    {
        return __('Submission Edit Access', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeLabel()
    {
        return __('Submission edit time', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeDescription()
    {
        return __('Set when edited submissions remain reopenable from the frontend.', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeModeLabel()
    {
        return __('Time rule type', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeNoneLabel()
    {
        return __('No time limit', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeWindowLabel()
    {
        return __('Start/end window', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeDurationLabel()
    {
        return __('Relative duration', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeStartLabel()
    {
        return __('Start date & time', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeEndLabel()
    {
        return __('End date & time', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeDurationDaysLabel()
    {
        return __('Duration days', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeDurationHoursLabel()
    {
        return __('Duration hours', 'griffinforms-form-builder');
    }

    protected function submissionEditTimePreMessageLabel()
    {
        return __('Message before edit window starts', 'griffinforms-form-builder');
    }

    protected function submissionEditTimePostMessageLabel()
    {
        return __('Message after edit window ends', 'griffinforms-form-builder');
    }

    protected function submissionEditTimeDescriptionHint()
    {
        return __('Window mode uses fixed timestamps. Duration mode starts from the submission time.', 'griffinforms-form-builder');
    }
    
    protected function autoResponderDescription()
    {
        return __('Send email to the user who fills this form.', 'griffinforms-form-builder');
    }
    
    protected function alertEmailsDescription()
    {
        return __('Send new form submission alerts.', 'griffinforms-form-builder');
    }
    
    protected function saveEntriesDescription()
    {
        return __('Decide how many submissions you wish to retain for this form.', 'griffinforms-form-builder');
    }

    protected function progressBarLabel()
    {
        return __('Progress bar', 'griffinforms-form-builder');
    }

    protected function progressBarDescription()
    {
        return __('Show a horizontal indicator above multi-step forms so users can see their current step and progress.', 'griffinforms-form-builder');
    }

    protected function successMessageLabel()
    {
        return __('Type your message below:', 'griffinforms-form-builder');
    }    
    
    protected function autoResponderLabel()
    {
        return __('Send email to the user?', 'griffinforms-form-builder');
    }    
    
    protected function toggleAutoResponderLabel()
    {
        return __('Yes, send a confirmation email to the user.', 'griffinforms-form-builder');
    }    

    protected function invalidMessage()
    {
        return __('No message selected. Please choose or create a message to enable confirmation emails.', 'griffinforms-form-builder');
    } 
    
    protected function alertEmailsLabel()
    {
        return __('Send new submission alerts to', 'griffinforms-form-builder');
    }    
    
    protected function saveEntriesLabel()
    {
        return __('Save submissions in database?', 'griffinforms-form-builder');
    }
    
    protected function allEntries()
    {
        return __('All', 'griffinforms-form-builder');
    }
    
    protected function noEntries()
    {
        return __('None', 'griffinforms-form-builder');
    }
    
    protected function recentTen()
    {
        return __('Recent 10', 'griffinforms-form-builder');
    }

    protected function recentFifty()
    {
        return __('Recent 50', 'griffinforms-form-builder');
    }

    protected function recentHundred()
    {
        return __('Recent 100', 'griffinforms-form-builder');
    }

    protected function recentThousand()
    {
        return __('Recent 1000', 'griffinforms-form-builder');
    }
    
    protected function maxResponsesLabel()
    {
        return __('Entries Limit', 'griffinforms-form-builder');
    }    

    protected function invalidRetentionDays()
    {
        return __('Retention days must be 0 or a positive number.', 'griffinforms-form-builder');
    }
    
    protected function maxResponsesErrorLabel()
    {
        return __('User notice on entry limit', 'griffinforms-form-builder');
    }    
    
    protected function responseCalculationLabel()
    {
        return __('Entry count based on', 'griffinforms-form-builder');
    }
    
    protected function redirectUrlLabel()
    {
        return __('Redirection', 'griffinforms-form-builder');
    }     
    
    protected function accessLevelLabel()
    {
        return __('Who can fill this form?', 'griffinforms-form-builder');
    }     
    
    protected function autofillLabel()
    {
        return __('Support autocomplete?', 'griffinforms-form-builder');
    }

    /**
     * Returns the description for the autofill option.
     *
     * @return string
     */
    protected function autofillDescription() {
        return __( 'Enable this option to allow browsers to auto-fill saved user data like name, email, etc.', 'griffinforms-form-builder' );
    }
    
    protected function postProcessing()
    {
        return __('Post Processing', 'griffinforms-form-builder');
    }    
    
    protected function preProcessing()
    {
        return __('Pre-Processing', 'griffinforms-form-builder');
    }    
    
    protected function browserBehavior()
    {
        return __('Browser Behavior', 'griffinforms-form-builder');
    }    

    protected function compliance()
    {
        return __('Compliance', 'griffinforms-form-builder');
    }

    protected function complianceModeLabel()
    {
        return __('Enable Compliance Mode', 'griffinforms-form-builder');
    }

    protected function complianceModeDescription()
    {
        return __('Enables additional audit data for compliance workflows. Applies to new submissions only.', 'griffinforms-form-builder');
    }

    protected function complianceProfileLabel()
    {
        return __('Compliance profile', 'griffinforms-form-builder');
    }

    protected function complianceProfileDescription()
    {
        return __('Select a compliance profile to guide default audit behavior. HIPAA‑ready config provides stricter audit/retention defaults and reminders. You are responsible for HIPAA compliance, BAAs, and operational controls.', 'griffinforms-form-builder');
    }

    protected function hipaaReadyDisclaimer()
    {
        return __('HIPAA‑ready config provides stricter audit/retention defaults and reminders. You are responsible for HIPAA compliance, BAAs, and operational controls.', 'griffinforms-form-builder');
    }

    protected function complianceFlagsLabel()
    {
        return __('Compliance flags', 'griffinforms-form-builder');
    }

    protected function complianceFlagsDescription()
    {
        return __('Advanced per‑form controls for data minimization and retention.', 'griffinforms-form-builder');
    }

    protected function complianceFlagsModeLabel()
    {
        return __('Compliance defaults', 'griffinforms-form-builder');
    }

    protected function complianceFlagsModeDescription()
    {
        return __('Inherit uses global compliance defaults. Custom lets you override per‑form.', 'griffinforms-form-builder');
    }

    protected function complianceFlagsModeInherit()
    {
        return __('Inherit global defaults', 'griffinforms-form-builder');
    }

    protected function complianceFlagsModeCustom()
    {
        return __('Custom (override for this form)', 'griffinforms-form-builder');
    }

    protected function complianceFlagStoreIpLabel()
    {
        return __('Store IP address', 'griffinforms-form-builder');
    }

    protected function complianceFlagStoreUserAgentLabel()
    {
        return __('Store user agent', 'griffinforms-form-builder');
    }

    protected function complianceFlagRetentionDaysLabel()
    {
        return __('Retention days (optional)', 'griffinforms-form-builder');
    }

    protected function standard()
    {
        return __('Standard', 'griffinforms-form-builder');
    }

    protected function gdpr()
    {
        return __('GDPR (privacy‑first)', 'griffinforms-form-builder');
    }

    protected function hipaa()
    {
        return __('HIPAA‑ready', 'griffinforms-form-builder');
    }
    
    protected function limitEntriesLabel()
    {
        return __('Limit Submissions?', 'griffinforms-form-builder');
    }    

    protected function availabilityWindowLabel()
    {
        return __('Availability Window', 'griffinforms-form-builder');
    }
    
    protected function toggleLimitEntriesLabel()
    {
        return __('Yes, limit submissions for this form', 'griffinforms-form-builder');
    }    

    protected function toggleAvailabilityWindowLabel()
    {
        return __('Yes, restrict submissions to a time window', 'griffinforms-form-builder');
    }
    
    protected function limitEntriesCountLabel()
    {
        return __('Limit submissions to:', 'griffinforms-form-builder');
    }     
    
    protected function limitEntriesMessageLabel()
    {
        return __('Show this message once limit is reached', 'griffinforms-form-builder');
    }    

    protected function availabilityWindowStartDateLabel()
    {
        return __('Start date & time', 'griffinforms-form-builder');
    }

    protected function availabilityWindowEndDateLabel()
    {
        return __('End date & time', 'griffinforms-form-builder');
    }

    protected function availabilityWindowPreMessageLabel()
    {
        return __('Message before start time', 'griffinforms-form-builder');
    }

    protected function availabilityWindowPostMessageLabel()
    {
        return __('Message after end time', 'griffinforms-form-builder');
    }

    protected function availabilityWindowDescription()
    {
        return __('Restrict submissions to a specific start/end window using your site timezone.', 'griffinforms-form-builder');
    }

    protected function lifetimeSubmissionCountLabel()
    {
        return __('Lifetime submissions', 'griffinforms-form-builder');
    }

    protected function lifetimeSubmissionCountDescription()
    {
        return __('Tracks total submissions over time (not reduced by retention cleanup).', 'griffinforms-form-builder');
    }

    protected function lifetimeSubmissionCountResetLabel()
    {
        return __('Reset counter', 'griffinforms-form-builder');
    }

    protected function lifetimeSubmissionCountResetConfirm()
    {
        return __('Reset lifetime submission count to 0? This cannot be undone.', 'griffinforms-form-builder');
    }

    protected function lifetimeSubmissionCountResetSuccess()
    {
        return __('Lifetime submission count reset.', 'griffinforms-form-builder');
    }
    
    protected function dynamicCount()
    {
        return __('Count existing entries only', 'griffinforms-form-builder');
    }    
    
    protected function staticCount()
    {
        return __('Count lifetime entries', 'griffinforms-form-builder');
    }    
    
    protected function limitEntriesDescription()
    {
        return __('Set of options to limit submissions for this form. The limit applies to the lifetime submission count (not reduced by retention cleanup).', 'griffinforms-form-builder');
    }    
    
    protected function publicAccess()
    {
        return __('Anyone', 'griffinforms-form-builder');
    }     
    
    protected function registeredAccess()
    {
        return __('Only registered users', 'griffinforms-form-builder');
    }    
    
    protected function toggleRoleAccessLabel()
    {
        return __('Only users with specific roles?', 'griffinforms-form-builder');
    }    
    
    protected function selectUserRolesLabel()
    {
        return __('Select user roles below:', 'griffinforms-form-builder');
    }    
    
    protected function noOne()
    {
        return __('No one', 'griffinforms-form-builder');
    }    
    
    protected function OnlyMe()
    {
        return __('Only to me', 'griffinforms-form-builder');
    }    
    
    protected function specificEmails()
    {
        return __('Specific people', 'griffinforms-form-builder');
    }    
    
    protected function doNothing()
    {
        return __('Do nothing', 'griffinforms-form-builder');
    }    
    
    protected function userActionLabel()
    {
        return __('What happens after form submission?', 'griffinforms-form-builder');
    }    
    
    protected function showSuccessMessage()
    {
        return __('Show a message', 'griffinforms-form-builder');
    }    
    
    protected function redirectUser()
    {
        return __('Redirect user to another page', 'griffinforms-form-builder');
    }    
    
    protected function redirectionUrlLabel()
    {
        return __('Enter the URL below:', 'griffinforms-form-builder');
    }    
    
    protected function userActionDescription()
    {
        return __('Choose what happens after user successfully submits the form.', 'griffinforms-form-builder');
    }
    
    protected function emptySuccessMessage()
    {
        return __('Please enter a valid success message.', 'griffinforms-form-builder');
    }
    
    protected function createItem()
    {
        return __('Save Form', 'griffinforms-form-builder');
    }

    protected function selectAutoresponderMessage()
    {
        return __('Select Message', 'griffinforms-form-builder');
    }

    protected function loadMoreMessage()
    {
        return __('Load More', 'griffinforms-form-builder');
    }

    protected function createMessage()
    {
        return __('Create New Message', 'griffinforms-form-builder');
    }

    protected function messageNameLabel()
    {
        return __('Message Name', 'griffinforms-form-builder');
    }

    protected function messageContentLabel()
    {
        return __('Message Content', 'griffinforms-form-builder');
    }

    protected function folderNameLabel()
    {
        return __('Folder Name', 'griffinforms-form-builder');
    }

    protected function invalidEmail()
    {
        return __('Please enter valid email for sending admin alerts.', 'griffinforms-form-builder');
    }

    protected function invalidLimit()
    {
        return __('Please enter valid number for submissions limit.', 'griffinforms-form-builder');
    }

    protected function invalidRedirectionUrl()
    {
        return __('Please enter a valid URL for redirection.', 'griffinforms-form-builder');
    }

    protected function adminEmailPlaceholder()
    {
        $user_email = wp_get_current_user()->user_email;
        /* translators: %s is the email address of the currently logged-in admin user */
        return sprintf(__('e.g., %s', 'griffinforms-form-builder'), $user_email);
    }

    protected function noEmailFieldMessage()
    {
        return __('Please add an email field to the form before enabling autoresponder.', 'griffinforms-form-builder');
    }

    protected function verifyingEmailFieldMessage()
    {
        return __('Verifying email fields...', 'griffinforms-form-builder');
    }

    protected function mapAutoresponderMessage()
    {
        return __('Map Email Fields', 'griffinforms-form-builder');
    }

    protected function emailFieldLabel()
    {
        return __('Email Field', 'griffinforms-form-builder');
    }

    protected function mapToLabel()
    {
        return __('Map To', 'griffinforms-form-builder');
    }

    protected function messageLabel()
    {
        return __('Message', 'griffinforms-form-builder');
    }

    protected function mapEmailFieldsHeader()
    {
        return __('Map Email Fields', 'griffinforms-form-builder');
    }

    protected function doneActionBtn()
    {
        return __('Done', 'griffinforms-form-builder');
    }

    protected function selectMessageLabel()
    {
        return __('Select', 'griffinforms-form-builder');
    }

    protected function changeMessageLabel()
    {
        return __('Change', 'griffinforms-form-builder');
    }

    protected function defaultMessageLabel()
    {
        return __('Default message', 'griffinforms-form-builder');
    }

    protected function selectMessage()
    {
        return __('Select Email Message', 'griffinforms-form-builder');
    }

    protected function invalidAutoresponderMapping()
    {
        return __('The autoresponder mapping is invalid or incomplete. Please review your selections.', 'griffinforms-form-builder');
    }

    protected function removeMessageLabel()
    {
        return __('Remove', 'griffinforms-form-builder');
    }

    protected function removeItemLabel()
    {
        return __('Remove Selection', 'griffinforms-form-builder');
    }

    protected function selectFolder()
    {
        return __('Root', 'griffinforms-form-builder');
    }
    
    
    public static function getInstance()
    {
        if (self::$instance == null)
        {
            self::$instance = new Form();
        }
        
        return self::$instance;
    }
    
    private function __construct() 
    {
    }
}
