<!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 - Oconee Valley Bottling Company</title>
  <meta name="description" content="Oconee Valley Bottling Company 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/qZJO544K92Iy8yE0L2w4.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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/auth/logout',
            dataType: "json",
            success: function (x) {
              window.location.replace('https://customerportal.revcent.com/GOrqOGrYQ5CP2KYqJKGP');
            }
          });
        });
        $(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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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/GOrqOGrYQ5CP2KYqJKGP/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>