<!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>Affiliate Login - TC1</title>
  <meta name="description" content="TC1 affiliate 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="logo-name">TC1</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://affiliateportal.revcent.com/tc1shop/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 () {
        $('.log-out-btn').click(function () {
          $.ajax({
            type: 'POST',
            url: 'https://affiliateportal.revcent.com/tc1shop/auth/logout',
            dataType: "json",
            success: function (x) {
              window.location.replace('https://affiliateportal.revcent.com/tc1shop');
            }
          });
        });
        $(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://affiliateportal.revcent.com/tc1shop/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://affiliateportal.revcent.com/tc1shop/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");
             }
           }
         }
       });
     }
   });
 </script>

 
 <script>
   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://affiliateportal.revcent.com/tc1shop/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://affiliateportal.revcent.com/tc1shop/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://affiliateportal.revcent.com/tc1shop/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://affiliateportal.revcent.com/tc1shop/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://affiliateportal.revcent.com/tc1shop/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>