<!--
Copyright 2020 TATA ELXSI

Licensed under the Apache License, Version 2.0 (the 'License');
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
<div class="login-container">
    <div class="wrap-login">
        <div class="login-logo">
            <img src="assets/images/logo.png" alt="Logo">
        </div>
        <form [formGroup]="loginForm" (ngSubmit)="onSubmit()" class="login-form" autocomplete="off">
            <div class="wrap-input">
                <input autocomplete="off" class="input-control" type="text" formControlName="userName" placeholder="{{ 'PAGE.LOGIN.USERNAME' | translate }}"
                />
                <span class="input-icon">
                    <i class="fa fa-user" aria-hidden="true"></i>
                </span>
            </div>
            <div *ngIf="submitted && loginForm.controls['userName'].errors" class="input-validation-msg">
                <div *ngIf="loginForm.controls['userName'].errors.required">{{'PAGE.LOGIN.USERNAMEVALIDMESSAGE' | translate}}</div>
            </div>
            <div class="wrap-input">
                <input autocomplete="off" class="input-control" [type]="visiblePassword?'text':'password'" formControlName="password" placeholder="{{ 'PAGE.LOGIN.PASSWORD' | translate }} "/>
                <span class="input-icon">
                    <i class="fa fa-lock" aria-hidden="true"></i>
                </span>
                <i *ngIf="loginForm.controls['password'].value" class="input-icon-eye" (click)="onShowPassword()" [ngClass]="visiblePassword?'fa fa-eye-slash':'fa fa-eye'"></i>
            </div>
            <div *ngIf="submitted && loginForm.controls['password'].errors" class="input-validation-msg">
                <div *ngIf="loginForm.controls['password'].errors.required">{{'PAGE.LOGIN.PASSWORDVALIDMESSAGE' | translate}}</div>
            </div>
            <button type="submit" class="submit-btn">
                <i class="fa fa-arrow-right" aria-hidden="true"></i>
            </button>
            <div class="signup-text-center">
                <span class="caret">{{'PAGE.LOGIN.SIGNINMSG' | translate}}</span>
            </div>

        </form>
    </div>
</div>
<app-loader [waitingMessage]="message" *ngIf="isLoadingResults"></app-loader>
<div class="login-footer">
   <a href="https://osm.etsi.org" target="_blank">{{'OSMSOURCEMANO' | translate}} {{sharedService.osmVersion}}</a>
</div>
