<!-- Modal change avatar -->
<div class="modal fade" id="avatarChangeModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Change your Cloudron Avatar</h4>
            </div>
            <div class="modal-body settings-avatar-selector">
                <img id="previewAvatar" width="128" height="128" ng-src="{{avatarChange.avatar.data || avatarChange.avatar.url || client.avatar}}"/>
                <input type="file" id="avatarFileInput" style="display: none" accept="image/png"/>

                <br/>
                <br/>

                <div class="grid">
                    <div class="item" ng-repeat="avatar in avatarChange.availableAvatars" style="background-image: url('{{avatar.data || avatar.url}}');" ng-click="avatarChange.setPreviewAvatar(avatar)"></div>
                    <div class="item add" ng-click="avatarChange.showCustomAvatarSelector()"></div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-success" ng-click="avatarChange.doChangeAvatar()" ng-disabled="avatarChange.busy"><i class="fa fa-circle-o-notch fa-spin" ng-show="avatarChange.busy"></i> Change</button>
            </div>
        </div>
    </div>
</div>

<!-- Modal change cloudron name -->
<div class="modal fade" id="cloudronNameChangeModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Change Cloudron Name</h4>
            </div>
            <div class="modal-body">
                <form name="cloudronNameChangeForm" role="form" novalidate ng-submit="cloudronNameChange.submit()" autocomplete="off">
                    <div class="form-group" ng-class="{ 'has-error': (cloudronNameChangeForm.name.$dirty && cloudronNameChangeForm.name.$invalid) }">
                        <label class="control-label">Name</label>
                        <div class="control-label" ng-show="(!cloudronNameChangeForm.name.$dirty && cloudronNameChange.error.name) || (cloudronNameChangeForm.name.$dirty && cloudronNameChangeForm.name.$invalid)">
                            <small ng-show="cloudronNameChangeForm.name.$error.required">A name is required</small>
                            <small ng-show="cloudronNameChangeForm.name.$error.maxlength">The name is too long</small>
                            <small ng-show="!cloudronNameChangeForm.name.$dirty && cloudronNameChange.error.name">{{ cloudronNameChange.error.name }}</small>
                        </div>
                        <input type="text" class="form-control" ng-model="cloudronNameChange.name" name="name" id="inputCloudronName" ng-maxlength="30" required autofocus>
                    </div>
                    <input class="ng-hide" type="submit" ng-disabled="cloudronNameChangeForm.$invalid"/>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-success" ng-click="cloudronNameChange.submit()" ng-disabled="cloudronNameChangeForm.$invalid || cloudronNameChange.busy"><i class="fa fa-circle-o-notch fa-spin" ng-show="cloudronNameChange.busy"></i> Change</button>
            </div>
        </div>
    </div>
</div>

<!-- Modal enable email -->
<div class="modal fade" id="enableEmailModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Cloudron Email Server</h4>
            </div>
            <div class="modal-body" ng-show="dnsConfig.provider === 'noop' || dnsConfig.provider === 'manual'">
                No DNS provider is setup. Displayed DNS records will have to be setup manually.<br/>
            </div>
            <div class="modal-body" ng-show="dnsConfig.provider === 'route53' || dnsConfig.provider === 'digitalocean'">
                The Cloudron will setup Email related DNS records automatically.
                If this domain is already configured to handle email with some other provider, it will <b>overwrite</b> those records.
                <br/><br/>
                Disabling Cloudron Email later will <b>not</b> put the old records back.
                <br/><br/>
                Status of DNS Records will show an error when DNS is propagating (~5 minutes).
                <br/>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-success" ng-click="email.enable()">I understand, enable</button>
            </div>
        </div>
    </div>
</div>

<!-- Modal backup failed -->
<div class="modal fade" id="createBackupFailedModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Unable to create backup</h4>
            </div>
            <div class="modal-body">
                {{ createBackup.errorMessage }}
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-success" data-dismiss="modal">OK</button>
            </div>
        </div>
    </div>
</div>

<!-- Modal plan change -->
<div class="modal fade" id="planChangeModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Cloudron Change Plan</h4>
            </div>
            <div class="modal-body">
                This will change your plan from <b>{{ currentPlan.name }}</b> to <b>{{ planChange.requestedPlan.name }}</b>.
                <br/>
                <br/>
                Your apps and data will be migrated to the new Cloudron and will take around 15 minutes.
                <br/>
                <br/>
                <br/>
                <form name="planChangeForm" role="form" novalidate ng-submit="planChange.doChangePlan(planChangeForm)" autocomplete="off">
                    <fieldset>
                        <input type="password" style="display: none;">
                        <div class="form-group" ng-class="{ 'has-error': (!planChangeForm.password.$dirty && planChange.error.password) || (planChangeForm.password.$dirty && planChangeForm.password.$invalid) }">
                            <label class="control-label" for="inputDeveloperModeChangePassword">Give your password to verify that you are performing that action</label>
                            <div class="control-label" ng-show="(!planChangeForm.password.$dirty && planChange.error.password) || (planChangeForm.password.$dirty && planChangeForm.password.$invalid)">
                                <small ng-show=" planChangeForm.password.$dirty && planChangeForm.password.$invalid">A password is required</small>
                                <small ng-show="!planChangeForm.password.$dirty && planChange.error.password">Wrong password</small>
                            </div>
                            <input type="password" class="form-control" ng-model="planChange.password" id="inputPlanChangePassword" name="password" required autofocus>
                        </div>
                        <input class="ng-hide" type="submit" ng-disabled="planChangeForm.$invalid"/>
                    </fieldset>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-success" ng-click="planChange.doChangePlan()" ng-disabled="planChange.busy"><i class="fa fa-circle-o-notch fa-spin" ng-show="planChange.busy"></i> Confirm</button>
            </div>
        </div>
    </div>
</div>

<!-- modal backup config -->
<div class="modal fade" id="configureBackupModal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Configure Backup Storage</h4>
            </div>
            <div class="modal-body">
                <p>Only Amazon S3 or API compatible services are supported. <sup><a ng-href="{{ config.webServerOrigin }}/references/selfhosting.html#backups" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></p>
                <form name="configureBackupForm" role="form" novalidate ng-submit="configureBackup.submit()" autocomplete="off">
                    <fieldset>
                        <p class="has-error text-center" ng-show="configureBackup.error">{{ configureBackup.error.generic }}</p>

                        <!-- S3 -->
                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.bucket }">
                            <label class="control-label" for="inputConfigureBackupBucket">Bucket name</label>
                            <input type="text" class="form-control" ng-model="configureBackup.bucket" id="inputConfigureBackupBucket" name="bucket" ng-disabled="configureBackup.busy" required autofocus>
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.prefix }">
                            <label class="control-label" for="inputConfigureBackupPrefix">Prefix</label>
                            <input type="text" class="form-control" ng-model="configureBackup.prefix" id="inputConfigureBackupPrefix" name="prefix" ng-disabled="configureBackup.busy" placeholder="Prefix for backup file names" required>
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.region }">
                            <label class="control-label" for="inputConfigureBackupRegion">Region</label>
                            <select class="form-control" name="region" id="inputConfigureBackupRegion" ng-model="configureBackup.region" ng-options="a.value as a.name for a in s3Regions" ng-disabled="configureBackup.busy" required></select>
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.accessKeyId }">
                            <label class="control-label" for="inputConfigureBackupAccessKeyId">Access key id</label>
                            <input type="text" class="form-control" ng-model="configureBackup.accessKeyId" id="inputConfigureBackupAccessKeyId" name="accessKeyId" ng-disabled="configureBackup.busy" required>
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.secretAccessKey }">
                            <label class="control-label" for="inputConfigureBackupSecretAccessKey">Secret access key</label>
                            <input type="text" class="form-control" ng-model="configureBackup.secretAccessKey" id="inputConfigureBackupSecretAccessKey" name="secretAccessKey" ng-disabled="configureBackup.busy" required>
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.endpoint }">
                            <label class="control-label" for="inputConfigureBackupEndpoint">Endpoint (optional)</label>
                            <input type="text" class="form-control" ng-model="configureBackup.endpoint" id="inputConfigureBackupEndpoint" name="endpoint" ng-disabled="configureBackup.busy" placeholder="URL of S3 compatible storage (Minio, Swift). Leave empty when using Amazon S3.">
                        </div>

                        <div class="form-group" ng-class="{ 'has-error': configureBackup.error.key }">
                            <label class="control-label" for="inputConfigureBackupKey">Encryption key (optional)</label>
                            <input type="text" class="form-control" ng-model="configureBackup.key" id="inputConfigureBackupKey" name="prefix" ng-disabled="configureBackup.busy" placeholder="Passphrase used to encrypt the backups">
                        </div>

                        <input class="ng-hide" type="submit" ng-disabled="configureBackupForm.$invalid"/>
                    </fieldset>
                </form>
            </div>
            <div class="modal-footer ">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="submit" class="btn btn-outline btn-success pull-right" ng-click="configureBackup.submit()" ng-disabled="configureBackupForm.$invalid || configureBackup.busy">
                    <i class="fa fa-circle-o-notch fa-spin" ng-show="configureBackup.busy"></i><span>Save</span>
                </button>
            </div>
        </div>
    </div>
</div>

<br/>

<div class="section-header">
    <div class="text-left">
        <h1>Settings</h1>
    </div>
</div>

<div class="section-header">
    <div class="text-left">
        <h3>About</h3>
    </div>
</div>

<div class="card" style="margin-bottom: 15px;">
    <div class="row">
        <div class="col-xs-4" style="min-width: 150px;">
            <div class="settings-avatar" ng-click="avatarChange.showChangeAvatar()" style="background-image: url('{{ client.avatar }}');">
                <div class="overlay"></div>
            </div>
        </div>
        <div class="col-xs-8">
            <table width="100%">
                <tr>
                    <td class="text-muted" style="vertical-align: top;">Name</td>
                    <td class="text-right" style="vertical-align: top; white-space: nowrap;">{{ config.cloudronName }} <a href="" ng-click="cloudronNameChange.show()"><i class="fa fa-pencil text-small"></i></a></td>
                </tr>
                <tr ng-show="appstoreConfig.profile">
                    <td class="text-muted" style="vertical-align: top;">App store account</td>
                    <td class="text-right" style="vertical-align: top; white-space: nowrap;">{{ appstoreConfig.profile.email }}</td>
                </tr>
                <tr ng-show="config.provider === 'caas'">
                    <td class="text-muted" style="vertical-align: top;">Model</td>
                    <td class="text-right" style="vertical-align: top; white-space: nowrap;">{{ config.size }} - {{ config.region }}</td>
                </tr>
                <tr>
                    <td class="text-muted" style="vertical-align: top;">Version</td>
                    <td class="text-right" style="vertical-align: top; white-space: nowrap;">{{ config.version }}</td>
                </tr>
                <tr>
                    <td class="text-muted" style="vertical-align: top;">Provider</td>
                    <td class="text-right" style="vertical-align: top; white-space: nowrap;">{{ config.provider }}</td>
                </tr>
            </table>
        </div>
    </div>
</div>

<div class="section-header" ng-show="config.provider === 'caas'">
    <div class="text-left">
        <h3>Plans</h3>
    </div>
</div>

<div class="card" style="margin-bottom: 15px;" ng-show="config.provider === 'caas'">
    <div class="row">
        <div class="col-xs-12 text-right">
            <a href="{{ config.webServerOrigin }}/console.html#/userprofile" target="_blank">Change payment method</a>
            or
            <a href="{{ config.webServerOrigin }}/console.html" target="_blank">Cancel this Cloudron</a>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-10 plans" style="margin-left: 20px">
            <div ng-repeat="plan in availablePlans">
                  <label>
                        <input type="radio" ng-model="planChange.requestedPlan" ng-value="plan">
                            {{ plan.name }} ({{ plan.slug | uppercase }}) - {{ plan.price/100 }}{{ currency }}/month
                            <span ng-show="currentPlan.name === plan.name" style="font-weight: bold"> (current plan)
                        </span>
                  </label>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-xs-12">
            <button class="btn btn-primary pull-right" ng-disabled="planChange.requestedPlan.name === currentPlan.name" ng-click="planChange.showChangePlan()">Change Plan</button>
        </div>
    </div>
</div>

<div class="section-header">
    <div class="text-left">
        <h3>Email</h3>
    </div>
</div>

<div class="card" style="margin-bottom: 15px;">
    <div class="row">
        <div class="col-md-12">
            Cloudron has a built-in email server that allows users to send and receive email for your domain.
            The <a href="https://cloudron.io/references/usermanual.html#email" target="_blank">User manual</a> has information on how to setup email clients.
        </div>
    </div>
    <br/>
    <div class="row">
        <div class="col-md-12" ng-show="dnsConfig.provider !== 'caas'">
            <button ng-class="mailConfig.enabled ? 'btn btn-danger' : 'btn btn-primary'" ng-click="email.toggle()" ng-enabled="mailConfig">{{ mailConfig.enabled ? "Disable Email" : "Enable Email" }}</button>
        </div>
        <div class="col-md-12" ng-show="dnsConfig.provider === 'caas'">
            <span class="text-danger text-bold">This feature requires the Cloudron to be on <a href="https://cloudron.io/references/usermanual.html#entire-cloudron-on-a-custom-domain" target="_blank">custom domain</a>.</span>
        </div>
    </div>
    <br/>
    <div class="row">
        <div class="col-md-12" ng-show="(dnsConfig.provider !== 'caas')">
            Set the following DNS records to guarantee email delivery.

            <div ng-repeat="record in expectedDnsRecordsTypes">
               <div class="row" ng-if="mailConfig.enabled || (record.name !== 'DMARC' && record.name !== 'MX')">
                    <div class="col-xs-12">
                        <h4 class="text-muted">
                            {{ record.name }} record <i ng-class="expectedDnsRecords[record.value].status ? 'fa fa-check-circle text-success' : 'fa fa-exclamation-triangle text-danger'" aria-hidden="true"></i>
                            <button class="btn btn-xs btn-default" ng-click="email.refresh()" ng-disabled="email.refreshBusy" ng-show="!expectedDnsRecords[record.value].status"><i class="fa fa-refresh" ng-class="{ 'fa-pulse': email.refreshBusy }"></i></button>
                        </h4>
                        <a href="" data-toggle="collapse" data-parent="#accordion" data-target="#collapse_dns_{{ record.value }}">Advanced</a>
                        <div id="collapse_dns_{{ record.value }}" class="panel-collapse collapse">
                            <div class="panel-body">
                                <p>Domain: <b ng-click-select><tt>{{ expectedDnsRecords[record.value].domain }}</tt></b></p>
                                <p>Record type: <b ng-click-select><tt>{{ expectedDnsRecords[record.value].type }}</tt></b></p>
                                <p style="overflow: auto; white-space: nowrap;">Expected value: <b ng-click-select><tt>{{ expectedDnsRecords[record.value].expected }}</tt></b></p>
                                <p style="overflow: auto; white-space: nowrap;">Current value: <b ng-click-select><tt>{{ expectedDnsRecords[record.value].value ? expectedDnsRecords[record.value].value : '[not set]' }}</tt></b></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="row">
                <div class="col-xs-12">
                    <h4 class="text-muted">
                        Outbound SMTP (Port 25) <i ng-class="outboundPort25.status ? 'fa fa-check-circle text-success' : 'fa fa-exclamation-triangle text-danger'" aria-hidden="true"></i>
                        <button class="btn btn-xs btn-default" ng-click="email.refresh()" ng-disabled="email.refreshBusy" ng-show="!outboundPort25.status"><i class="fa fa-refresh" ng-class="{ 'fa-pulse': email.refreshBusy }"></i></button>
                    </h4>
                    <a href="" data-toggle="collapse" data-parent="#accordion" data-target="#collapse_dns_{{ record.value }}">Advanced</a>
                    <div id="collapse_dns_{{ record.value }}" class="panel-collapse collapse">
                        <div class="panel-body">
                            <p><b> {{ outboundPort25.value }} </b> </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<div class="section-header">
    <div class="text-left">
        <h3>Backups</h3>
    </div>
</div>

<div class="card" style="margin-bottom: 15px;">
    <div class="row" ng-show="backupConfig.provider !== 'caas' || config.isDev">
        <div class="col-xs-6">
            <span class="text-muted">Provider</span>
        </div>
        <div class="col-xs-6 text-right">
            <span>{{ backupConfig.provider === 'caas' ? 'cloudron.io' : backupConfig.provider }}</span>
        </div>
    </div>
    <div class="row" ng-show="backupConfig.provider !== 'caas' || config.isDev">
        <div class="col-xs-6">
            <span class="text-muted">Location</span>
        </div>
        <div class="col-xs-6 text-right">
            <span ng-show="backupConfig.provider === 'filesystem'">{{ backupConfig.backupFolder }}</span>
            <span ng-show="backupConfig.provider === 's3'">{{ backupConfig.region + '   ' + backupConfig.bucket + '/' + backupConfig.prefix }}</span>
        </div>
    </div>

    <br/>

    <div class="row">
        <div class="col-xs-6">
            <span class="text-muted">Last backup</span>
        </div>
        <div class="col-xs-6 text-right">
            <span ng-show="lastBackup">{{ lastBackup.creationTime | prettyDate }}</span>
            <span ng-hide="lastBackup">No backups have been made yet</span>
        </div>
    </div>

    <div class="row" ng-show="backupConfig.provider !== 'caas' || config.isDev">
        <br/>
        <div class="col-md-12">
            <div ng-show="createBackup.busy" class="progress progress-striped active animateMe">
                <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{ createBackup.percent }}%"></div>
            </div>
            <br/>
        </div>
    </div>
    <div class="row" ng-show="backupConfig.provider !== 'caas' || config.isDev">
        <div class="col-md-6">
            <p ng-show="createBackup.busy">{{ createBackup.message }}</p>
        </div>
        <div class="col-md-6 text-right">
            <button class="btn btn-outline btn-primary pull-right" ng-click="configureBackup.show()" ng-disabled="createBackup.busy">Configure</button>

            <button class="btn btn-outline btn-primary" ng-click="createBackup.doCreateBackup()" ng-disabled="createBackup.busy" style="margin-right: 10px">Backup now</button>
        </div>
    </div>
</div>

<div class="section-header">
    <div class="text-left">
        <h3>Updates</h3>
    </div>
</div>

<div class="card" style="margin-bottom: 15px;">
    <div class="row">
        <div class="col-md-12">
            <p>Configure the update schedule for the platform and the apps</p>
            <p class="text-danger" ng-show="autoUpdate.error"><br/>{{ autoUpdate.error }}</p>
        </div>
    </div>

    <div class="row">
        <div class="col-md-12">
            <div class="radio">
              <label>
                <input type="radio" name="scheduleRadio" ng-model="autoUpdate.pattern" value="00 00 1,3,5,23 * * *">
                Every night
              </label>
            </div>
            <div class="radio">
              <label>
                <input type="radio" name="scheduleRadio" ng-model="autoUpdate.pattern" value="00 00 1,3,5,23 * * 6">
                Saturday night
              </label>
            </div>
            <div class="radio">
              <label>
                <input type="radio" name="scheduleRadio" ng-model="autoUpdate.pattern" value="never">
                Update manually (Not recommended)
              </label>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-md-12">
            <p class="text-success pull-right text-bold" ng-show="autoUpdate.success && autoUpdate.pattern === autoUpdate.currentPattern">Saved</p>
            <button class="btn btn-outline btn-primary pull-right" ng-hide="autoUpdate.success && autoUpdate.pattern === autoUpdate.currentPattern" ng-click="autoUpdate.submit()" ng-disabled="autoUpdate.busy || autoUpdate.pattern === autoUpdate.currentPattern"><i class="fa fa-circle-o-notch fa-spin" ng-show="autoUpdate.busy"></i> Save</button>
        </div>
    </div>
</div>

<!-- Offset the footer -->
<br/><br/>
