<!--
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.
 -->

<!DOCTYPE html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <!-- <link rel="icon" href="/img/favicon.ico"> -->

    <title>Griffin - Data Quality Service</title>
    <link rel="icon" href="../img/favicon.ico">
    <!-- Bootstrap Core CSS -->
    <link href="../bower_components/bootswatch/cyborg/bootstrap.css" rel="stylesheet">
    <link href="login.css" rel="stylesheet">
    <!-- Custom Fonts -->
    <!-- <link href="bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body>

    <div id="content" class="container-fluid">
        <div class="row" id="content-row">

            <div class="col-md-6 col-md-offset-1 col-xs-12">
                <div id="bark-description">
                    <h3>
                        Data Quality Service Platform on eBay Cloud.
                    </h3><br>
                    <p>
                        Automates your data quality validation
                    </p><br>
                    <p>
                        Health monitoring, Profiling and detection
                    </p><br>
                    <p>
                        Unified Visualization
                    </p><br>
                    <p>
                        One set of tools to build data quality pipelines
                    </p>
                </div>
            </div>

            <div class="col-md-3 col-md-offset-1 col-xs-12">
                <div id="login-form">
                    <div style="text-align:center;margin-bottom:30px;">
                        <img src="../img/logo.gif" class="img-rounded" style="width:80%;">
                    </div>

                    <input type="input" class="form-control" placeholder="username" autocomplete="on" style="margin-bottom:20px;">

                    <input type="password" class="form-control" placeholder="password" autocomplete="on">

                    <div class="checkbox">
                    <label style="color:white;">
                        <input type="checkbox" value="remember-me" checked>Remember me
                    </label>
                    </div>

                    <button class="btn btn-default btn-large btn-block" id="login-btn" style="margin-bottom: 20px;">Log in</button>

                    <div id="loginMsg">Login failed. Try again.</div>
                </div>
            </div>

            <div class="col-xs-12">
                <div id="bark-description-2">
                    <h3>
                        Data Quality Service Platform on the eBay Cloud.
                    </h3><br>
                    <p>
                        Automates your data quality validation
                    </p><br>
                    <p>
                        Health monitoring, Profiling and detection
                    </p><br>
                    <p>
                        Unified Visualization
                    </p><br>
                    <p>
                        One set of tools to build data quality pipelines
                    </p>
                </div>
            </div>
        </div>

    </div>

    <script src="../bower_components/jquery/dist/jquery.js"></script>
    <script src="../bower_components/bootstrap/dist/js/bootstrap.js"></script>
    <script src="login.js"></script>
</body>
</html>
