<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" href="https://cdn.revcent.com/img/favicon.png">
  <title>Customer Login - BIOLUMA</title>
  <meta name="description" content="BIOLUMA customer login." />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/bootstrap.min.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/fontawesome-5/css/all.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/fontawesome-5/css/v4-shims.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/lightbox/ekko-lightbox.min.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/bootstrap-markdown/bootstrap-markdown.min.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/bootstrap-select/bootstrap-select.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/json-forms/json-forms.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/code-prettify/theme.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/datatables/datatables.min.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/animate.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/sweetalert/sweetalert.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/switchery/switchery.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/daterangepicker/daterangepicker.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/multiselect/multiselect.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/toastr/toastr.min.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/yamm/yamm.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/css/revcent.min.css" type="text/css" />
  <style>
    @font-face {
      font-family: 'revcentcustom';
      src: url('https://cdn.revcent.com/fonts/revcent/logo-icon-color.eot?416rza');
      src: url('https://cdn.revcent.com/fonts/revcent/logo-icon-color.eot?416rza#iefix') format('embedded-opentype'),
        url('https://cdn.revcent.com/fonts/revcent/logo-icon-color.ttf?416rza') format('truetype'),
        url('https://cdn.revcent.com/fonts/revcent/logo-icon-color.woff?416rza') format('woff'),
        url('https://cdn.revcent.com/fonts/revcent/logo-icon-color.svg?416rza#icomoon') format('svg');
      font-weight: normal;
      font-style: normal;
      font-display: block;
    }

    [class^="revcenticon-"],
    [class*=" revcenticon-"] {
      font-family: 'revcentcustom' !important;
      speak: never;
      font-style: normal;
      font-weight: normal;
      font-variant: normal;
      text-transform: none;
      line-height: 1;

      /* Better Font Rendering =========== */
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    .revcenticon-color:before {
      content: "\e900";
      color: #5ec4f0;
    }
    
  </style><style>
    .middle-box h1 {
        font-size: 30px;
    }

    .logo-name {
        color: #424242;
        font-size: 28px;
        letter-spacing: 0;
        font-weight: 400;
        margin-bottom: 0;
    }

    .form-control {
        font-size: 18px;
        font-weight: 300;
    }

    .m-t {
        margin-top: 15px;
        margin-bottom: 15px;
    }

    body.img-bg {
        background-color: #f9f9f9;
    }

    #login-h3 {
        font-size: 18px;
    }

    #main-logo {
        max-height: 50px;
    }
</style>
</head>

<body class="white-bg">
    <div class="wrapper">
        <div class="row text-center">
            <div class="col-sm-4 col-sm-offset-4">
                <div style="margin-top: 30px">
                    <div class="main-logo-wrap">
                        <img src="https://customerportalimage.revcent.com/EMm9K8Gd5Wf9VbgY6OZL.png" id="main-logo">
                    </div>
                </div>
                <form class="form" id="loginForm" novalidate="novalidate">
                    <h3 id="login-h3">Account Login</h3>
                    <br>
                    <div class="form-group">
                        <input type="text" class="form-control input-lg" id="email" name="email" placeholder="Email" data-toggle="tooltip" data-placement="top" title="Email"  value="" required>
                    </div>
                    <div class="form-group">
                        <input type="password" class="form-control input-lg" id="password" name="password" placeholder="Password" data-toggle="tooltip" data-placement="top" title="Password" value="" required>
                    </div>
                    <div class="form-group">
                        <button type="submit" name="login" id="submit-login" class="btn btn-lg btn-success btn-block">Login</button>
                    </div>

                    <div class="form-group">
                        <a id="forgot-password-btn"><small>Forgot password?</small></a>
                    </div>
                    <div class="form-group">
                        <a id="resend-confirmation-modal-btn"><small>Resend Email Confirmation</small></a>
                    </div>
                    <p class="text-muted text-center"><small>Don't have an account? <a href="https://customerportal.revcent.com/bioluma/register">Register</a></small> </p>

                </form>
            </div>
        </div>

    </div>

    <script src="https://cdn.revcent.com/js/jquery.min.js"></script>
    <script src="https://cdn.revcent.com/js/bootstrap.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/validation/jquery.validate.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/validation/additional-methods.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/metisMenu/jquery.metisMenu.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/bootstrap-markdown/markdown.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/bootstrap-select/bootstrap-select.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/json-forms/json-forms.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/json-forms/json-forms-bootstrap.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/datatables/datatables.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/datatables/datatables.select.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/moment/moment.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/moment/moment-timezone.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/immutable/immutable.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/switchery/switchery.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/sweetalert/sweetalert.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/daterangepicker/daterangepicker.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/multiselect/multiselect.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/autocomplete/jquery.autocomplete.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/card/jquery.card.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/code-prettify/run_prettify.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/lightbox/ekko-lightbox.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/highcharts.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/map.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/funnel.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/heatmap.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/exporting.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/export-data.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/data.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/drilldown.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/boost-canvas.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/modules/boost.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/mapdata/countries/us/us-all.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/mapdata/countries/us/us-all-all.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highcharts/mapdata/custom/world.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/lodash/lodash.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/toastr/toastr.min.js"></script>
    <script src="https://cdn.revcent.com/js/revcent.min.js"></script>
    <script src="https://cdn.revcent.com/js/revcent-table.min.js"></script>
    <script src="https://cdn.revcent.com/js/revcent-misc.min.js"></script>
    <script src="https://cdn.revcent.com/js/revcent-schemas.min.js"></script>



    <script>
      $(document).ready(function () {
        $('.lobtn').click(function () {
          $.ajax({
            type: 'POST',
            url: 'https://customerportal.revcent.com/bioluma/auth/logout',
            dataType: "json",
            success: function (x) {
              window.location.replace('https://customerportal.revcent.com/bioluma');
            }
          });
        });
        $(function () {
          $('[data-toggle="popover"]').popover()
        })
        $(function () {
          $('[data-toggle="tooltip"]').tooltip()
        })
        $('body.canvas-menu .sidebar-collapse').slimScroll({
          height: '100%',
          railOpacity: 0.9
        });
        $('.navbar-header').removeClass('hidden');
      });
    </script> <script>
   $(document).ready(function () {
     $("#loginForm").submit(function (event) {
       event.preventDefault();
       let u = $('#email').val();
       let p = $('#password').val();
       let btn_id = '#submit-login';
       $(btn_id).addClass('disabled please-wait-btn').prop('disabled', true);
       $(btn_id).text('Verifying Credentials. Please Wait...');
       loginUser(u, p, null);
     });


     function loginUser(u, p, t) {
       let btn_id = '#submit-login';
       $.ajax({
         type: 'POST',
         url: 'https://customerportal.revcent.com/bioluma/auth/login',
         dataType: "json",
         data: {
           email: u,
           password: p
         },
         success: function (x) {
           if (x.code === 1) {
             window.parent.postMessage({
                 event_id: 'revcent_response',
                 revcent_response: x
               },
               '*'
             );
             window.location.replace("https://customerportal.revcent.com/bioluma/login");
           } else {
             $('#submit-login').removeClass('disabled please-wait-btn').prop('disabled', false);
             $(btn_id).text('Login');
             if (x.code === 2) {
               $('#email-confirm-modal-token').val('');
               $('#email-confirm-modal').modal('show');
             } else {
               swal("Error", x.message, "warning");
             }
           }
         }
       });
     }


     function toggleModalConfirmButton(button_id, enabled) {
       if (enabled && enabled === true) {
         $('#' + button_id).removeClass('disabled').prop('disabled', false);
       } else {
         $('#' + button_id).addClass('disabled').prop('disabled', true);
       }
     }

     $(document).on("click", "#resend-confirmation-modal-btn", function (a) {
       toggleModalConfirmButton('resend-confirmation-btn', true);
       $('#resend-email-modal-email').val('');
       $('#resend-email-modal').modal('show');
     });

     $(document).on("click", "#forgot-password-btn", function (a) {
       toggleModalConfirmButton('send-reset-email-btn', true);
       $('#reset-email-modal-email').val('');
       $('#reset-email-modal').modal('show');
     });



     $(document).on("click", "#resend-confirmation-btn", function (a) {
       toggleModalConfirmButton('resend-confirmation-btn', false);
       let user_email = $('#resend-email-modal-email').val();
       if (user_email === '') {
         toggleModalConfirmButton('resend-confirmation-btn', true);
         swal("Error", "Please enter your email address.", "warning");
         return;
       }
       $.ajax({
         type: 'POST',
         url: 'https://customerportal.revcent.com/bioluma/auth/resend-confirmation',
         dataType: "json",
         data: {
           email: user_email
         },
         success: function (x) {
           if (x.code === 0) {
             toggleModalConfirmButton('resend-confirmation-btn', true);
             swal("Error", x.message, "warning");
           } else {
             $('#resend-email-modal').modal('hide');
             swal("Email Code Sent", x.message, "success");
           }
         }
       });
     });


     $(document).on("click", "#send-reset-email-btn", function (a) {
       toggleModalConfirmButton('send-reset-email-btn', false);
       let user_email = $('#reset-email-modal-email').val();
       if (user_email === '') {
         toggleModalConfirmButton('send-reset-email-btn', true);
         swal("Error", "Please enter your email address.", "warning");
         return;
       }
       $.ajax({
         type: 'POST',
         url: 'https://customerportal.revcent.com/bioluma/auth/reset-password',
         dataType: "json",
         data: {
           email: user_email
         },
         success: function (x) {
           if (x.code === 0) {
             toggleModalConfirmButton('send-reset-email-btn', true);
             swal("Error", x.message, "warning");
           } else {
             swal("Email Sent", x.message, "success");
             beginConfirmResetPassword();
           }
         }
       });
     });

     function beginConfirmResetPassword() {
       toggleModalConfirmButton('password-reset-confirm-btn', true);
       $('#reset-email-modal').modal('hide');
       $('#reset-confirm-modal-token').val('');
       $('#reset-confirm-modal-password').val('');
       $('#reset-confirm-modal').modal('show');
     }

     $(document).on("click", "#password-reset-confirm-btn", function (a) {
       toggleModalConfirmButton('password-reset-confirm-btn', false);
       let token = $('#reset-confirm-modal-token').val();
       let new_password = $('#reset-confirm-modal-password').val();
       $.ajax({
         type: 'POST',
         url: 'https://customerportal.revcent.com/bioluma/auth/confirm-reset-password',
         dataType: "json",
         data: {
           token: token,
           email: $('#reset-email-modal-email').val(),
           password: new_password
         },
         success: function (x) {
           if (x.code === 0) {
             toggleModalConfirmButton('password-reset-confirm-btn', true);
             swal("Error", x.message, "warning");
           } else {
             $('#reset-confirm-modal-token').val('');
             $('#reset-confirm-modal-password').val('');
             $('#reset-confirm-modal').modal('hide');
             swal({
               title: "Password Reset!",
               text: "Login with your new password.",
               type: "success"
             });
           }
         }
       });
     });

     $(document).on("click", "#email-confirm-btn", function (a) {
       toggleModalConfirmButton('email-confirm-btn', false);
       let token = $('#reset-confirm-modal-token').val();
       $.ajax({
         type: 'POST',
         url: 'https://customerportal.revcent.com/bioluma/auth/confirm-email',
         dataType: "json",
         data: {
           email: $('#email').val(),
           password: $('#password').val(),
           token: $('#email-confirm-modal-token').val()
         },
         success: function (x) {
           if (x.code === 1) {
             $('#email-confirm-modal-token').val('');
             $('#email-confirm-modal').modal('hide');
             window.parent.postMessage({
                 event_id: 'revcent_response',
                 revcent_response: x
               },
               '*'
             );
             window.location.replace("https://customerportal.revcent.com/bioluma/login");
           } else {
             toggleModalConfirmButton('email-confirm-btn', true);
             swal("Error", x.message, "warning");
           }
         }
       });
     });


   });
 </script>

    <div id="resend-email-modal" class="modal fade">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header" id="resend-email-modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span> <span class="sr-only">close</span></button>
                    <h4 class="modal-title" id="resend-email-modal-title">Resend Confirmation</h4>
                </div>
                <div id="resend-email-modal-body" class="modal-body">
                    <form class="form-horizontal" id="resend-email-form">
                        <div class="form-group">
                            <label class="col-sm-2 control-label" for="resend-email-modal-email">Email</label>
                            <div class="col-sm-5">
                                <input type="text" required name="resend-email-modal-email" class="form-control" id="resend-email-modal-email">
                            </div>
                            <div class="col-sm-5">
                                <span class="help-block m-b-none">Enter the email you used to register.</span>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer" id="resend-email-modal-footer">
                    <button class="btn btn-outline-x btn-primary" id="resend-confirmation-btn">Resend Confirmation</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

    <div id="reset-email-modal" class="modal fade">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header" id="reset-email-modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span> <span class="sr-only">close</span></button>
                    <h4 class="modal-title" id="reset-email-modal-title">Enter your Email</h4>
                </div>
                <div id="reset-email-modal-body" class="modal-body">
                    <form class="form-horizontal" id="reset-email-form">
                        <div class="form-group">
                            <label class="col-sm-2 control-label" for="reset-email-modal-email">Email</label>
                            <div class="col-sm-5">
                                <input type="text" required name="reset-email-modal-email" class="form-control" id="reset-email-modal-email">
                            </div>
                            <div class="col-sm-5">
                                <span class="help-block m-b-none">Enter your email to receive a temporary reset code.</span>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer" id="reset-email-modal-footer">
                    <button class="btn btn-outline-x btn-primary" id="send-reset-email-btn">Sent Reset Code</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

    <div id="reset-confirm-modal" class="modal fade">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header" id="reset-confirm-modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span> <span class="sr-only">close</span></button>
                    <h4 class="modal-title" id="reset-confirm-modal-title">Confirm Code</h4>
                </div>
                <div id="reset-confirm-modal-body" class="modal-body">
                    <form class="form-horizontal" id="reset-confirm-form">
                        <div class="form-group">
                            <label class="col-sm-2 control-label" for="reset-confirm-modal-token">Code</label>
                            <div class="col-sm-5">
                                <input type="text" required name="reset-confirm-modal-token" class="form-control" id="reset-confirm-modal-token">
                            </div>
                            <div class="col-sm-5">
                                <span class="help-block m-b-none">Enter the code we sent.</span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label" for="reset-confirm-modal-password">Password</label>
                            <div class="col-sm-5">
                                <input type="text" required name="reset-confirm-modal-password" class="form-control" id="reset-confirm-modal-password">
                            </div>
                            <div class="col-sm-5">
                                <span class="help-block m-b-none">Enter your new password.</span>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer" id="reset-confirm-modal-footer">
                    <button class="btn btn-outline-x btn-primary" id="password-reset-confirm-btn">Reset Password</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>


    <div id="email-confirm-modal" class="modal fade">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header" id="email-confirm-modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span> <span class="sr-only">close</span></button>
                    <h4 class="modal-title" id="email-confirm-modal-title">Confirm Email</h4>
                </div>
                <div id="reset-confirm-modal-body" class="modal-body">
                    <form class="form-horizontal" id="email-confirm-form">
                        <div class="form-group">
                            <label class="col-sm-2 control-label" for="email-confirm-modal-token">Code</label>
                            <div class="col-sm-5">
                                <input type="text" required name="email-confirm-modal-token" class="form-control" id="email-confirm-modal-token">
                            </div>
                            <div class="col-sm-5">
                                <span class="help-block m-b-none">Enter the code we sent to your email.</span>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer" id="email-confirm-modal-footer">
                    <button class="btn btn-outline-x btn-primary" id="email-confirm-btn">Confirm Email</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

</body>

</html>