$(document).ready(function () {
  var errorColor = "#F3565D";
  var normalColor = "#ccc";

  // Check Valid Email
  function checkEmail(email) {
    var re = new RegExp(
      /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    );
    return email.match(re);
  }

  // Check Valid Mobile
  function checkMobile(mobile) {
    var match = mobile.toString().match(/0[0-9]{9,}/);
    return match && match.length > 0;
  }

  // Check Valid Email
  function checkValidEmail() {
    var email = $("#email").val();
    if (email.length > 0) {
      if (checkEmail(email)) {
        $("#email").css("border-color", normalColor);
        $("#invalidEmail").hide();
        $("#existsEmail").hide();
      } else {
        $("#email").css("border-color", errorColor);
        $("#invalidEmail").show();
        $("#existsEmail").hide();
      }
    } else {
      $("#email").css("border-color", errorColor);
      $("#invalidEmail").hide();
      $("#existsEmail").hide();
    }
  }

  // validate mã số thuế
  function checkMST(mst) {
    // Nếu không đủ 10 số return false
    if (!mst || (mst && mst.length !== 10 && mst.length !== 14)) {
      return false;
    }

    // Kiểm tra logic
    let mst_check =
      parseInt(mst[0] * 31) +
      parseInt(mst[1] * 29) +
      parseInt(mst[2] * 23) +
      parseInt(mst[3] * 19) +
      parseInt(mst[4] * 17) +
      parseInt(mst[5] * 13) +
      parseInt(mst[6] * 7) +
      parseInt(mst[7] * 5) +
      parseInt(mst[8] * 3);

    if (10 - (mst_check % 11) === parseInt(mst[9])) {
      return true;
    } else {
      return false;
    }
  }

  // Check Ma dai ly
  function checkMaDL(maDL) {
    $.post("/check-mdl", {
      maDL: maDL
    })
      .success(data => {
        return true;
      })
      .error(err => {
        return false;
      });
  }

  Number.prototype.format = function (n, x) {
    var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\.' : '$') + ')';
    return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, 'g'), '$&,');
  };

  // check thay doi email
  $("#email").change(function () {
    checkValidEmail();
  });

  // check thay doi so dien thoai
  $("#mobile").change(function () {
    var mobile = $(this).val();
    if (mobile.length > 0) {
      if (checkMobile(mobile)) {
        $(this).css("border-color", normalColor);
        $("#invalidMobile").hide();
      } else {
        $(this).css("border-color", errorColor);
        $("#invalidMobile").show();
      }
    } else {
      $(this).css("border-color", errorColor);
      $("#invalidMobile").hide();
    }
  });

  // check thay doi nguoi lien he
  $("#contact").change(function () {
    var contact = $(this).val();
    if (contact.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi ten cong ty
  $("#company").change(function () {
    var company = $(this).val();
    if (company.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });


  // check thay doi dia chi
  $("#address").change(function () {
    var address = $(this).val();
    if (address.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi tinh thanh
  $("#city").change(function () {
    var city = $(this).val();
    if (city.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi ma so thue
  $("#taxCode").change(function () {
    var taxCode = $("#taxCode").val();
    if (taxCode.length > 0) {
      if (checkMST(taxCode)) {
        $.post("/get-mst", {
          tax: taxCode
        })
          .success(data => {
            if (data) {
              $("#xhd_taxCode").val(taxCode);
              if (data.name) {
                $("#dk_unit").val(data.name);
                $("#xhd_unit").val(data.name);
              }

              if (data.address) {
                $("#address").val(data.address);
                $("#xhd_address").val(data.address);
              }

              if (data.contact) {
                $("#contact").val(data.contact);
              }

              if (data.phone) {
                $("#phone").val(data.phone);
              }

              if (data.tinh_thanh) {
                $("#city").val(data.tinh_thanh);
              }
            }
            $(this).css("border-color", normalColor);
            $("#invalidTaxCode").hide();
            $("#existsTaxCode").hide();
            $("#continue").prop("disabled", false);
          })
          .error(err => {
            $("#invalidTaxCode").hide();
            $("#existsTaxCode").show();
            $(this).css("border-color", errorColor);
            $("#continue").prop("disabled", true);
          });
      } else {
        $(this).css("border-color", errorColor);
        $("#invalidTaxCode").show();
        $("#existsTaxCode").hide();
        $("#continue").prop("disabled", true);
      }
    } else {
      $(this).css("border-color", errorColor);
      $("#invalidTaxCode").hide();
    }
  });

  // check thay doi ma so thue xuat hoa don
  $("#xhd_taxCode").change(function () {
    var taxCode = $("#xhd_taxCode").val();
    if (taxCode.length > 0) {
      if (checkMST(taxCode)) {
        $(this).css("border-color", normalColor);
        $("#invalidTaxCode").hide();
        $("#continue").prop("disabled", false);
      } else {
        $(this).css("border-color", errorColor);
        $("#invalidTaxCode").show();
        $("#continue").prop("disabled", true);
      }
    } else {
      $("#invalidTaxCode").hide();
    }
  });

  // check thay doi tinh thanh
  $("#xhd_address").change(function () {
    var xhd_address = $(this).val();
    if (xhd_address.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi tinh thanh
  $("#xhd_unit").change(function () {
    var xhd_unit = $(this).val();
    if (xhd_unit.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi xhd email
  $("#xhd_email").change(function () {
    var xhd_email = $(this).val();
    if (xhd_email.length > 0) {
      var re = new RegExp(
        /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
      );
      let validEmail = xhd_email.match(re);
      if (!validEmail) {
        $("#xhd_email").css("border-color", errorColor);
        $("#invalidEmail").show();
      }
    } else {
      $("#xhd_email").css("border-color", normalColor);
      $("#invalidEmail").hide();
    }

  });

  // check thay doi xhd so dien thoai
  $("#xhd_mobile").change(function () {
    var mobile = $(this).val();
    if (mobile.length > 0) {
      if (checkMobile(mobile)) {
        $(this).css("border-color", normalColor);
        $("#invalidMobile").hide();
      } else {
        $(this).css("border-color", errorColor);
        $("#invalidMobile").show();
      }
    } else {
      $(this).css("border-color", normalColor);
      $("#invalidMobile").hide();
    }
  });

  // Check thay doi ma so thue dai ly
  $("#dl_taxCode").change(function () {
    var dl_taxCode = $("#dl_taxCode").val();
    if (dl_taxCode.length <= 8 || dl_taxCode.length >= 15) {
      $(this).css("border-color", errorColor);
      $("#existsTaxCode").hide();
      $("#invalidTaxCode").show();
      $("#continue").prop("disabled", true);
    }
    else {
      if (checkMaDL(dl_taxCode)) {
        $(this).css("border-color", errorColor);
        $("#existsTaxCode").show();
        $("#invalidTaxCode").hide();
      }
      else {
        $(this).css("border-color", normalColor);
        $("#existsTaxCode").hide();
        $("#invalidTaxCode").hide();

      }
    }
  });

  // Check thay doi hinh thuc thanh toan
  $('input[type=radio][name=payment]').change(function () {
    if (this.value == 'now') {
      $('#step-confirm').show();
      $('#continue-step-2').show();
      $('#formRegisterButton').hide();
    }
    else if (this.value == 'after') {
      $('#step-confirm').hide();
      $('#continue-step-2').hide();
      $('#formRegisterButton').show();
    }
  });

  // Check thay doi dieu khoan
  $("#term").click(function () {
    if ($("#term").prop("checked")) {
      $("#term_error").hide();
    }
  });

  $(".required").blur(function () {
    if ($(this).val().length > 0) {
      $(this)
        .closest("div")
        .find(".msg")
        .remove();
    }
  });

  // check thay doi thong tin don vi dang ki su dung
  $("#dk_unit").change(function () {
    var dk_unit = $(this).val();
    if (dk_unit.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });
  // check thay doi thong tin nguoi lien he dang ki su dung
  $("#dk_name").change(function () {
    var dk_name = $(this).val();
    if (dk_name.length > 0) {
      $(this).css("border-color", normalColor);
    } else {
      $(this).css("border-color", errorColor);
    }
  });

  // check thay doi email dang ki su dung
  $("#dk_email").change(function () {
    var dk_email = $('#dk_email ').val();
    if (dk_email.length > 0) {
      var re = new RegExp(
        /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
      );
      let validEmail1 = dk_email.match(re);
      if (!validEmail1) {
        $("#dk_email").css("border-color", errorColor);
        $("#invalidDKEmail").show();
      } else {
        $("#dk_email").css("border-color", normalColor);
        $("#invalidDKEmail").hide();
      }
    } else {
      $("#dk_email").css("border-color", normalColor);
      $("#invalidDKEmail").hide();
    }
  });

  // check thay doi so dien thoai dang ki su dung
  $("#dk_mobile").change(function () {
    var dk_mobile = $(this).val();
    if (dk_mobile.length > 0) {
      if (checkMobile(dk_mobile)) {
        $(this).css("border-color", normalColor);
        $("#invalidMobile").hide();
      } else {
        $(this).css("border-color", errorColor);
        $("#invalidMobile").show();
      }
    } else {
      $(this).css("border-color", normalColor);
      $("#invalidMobile").hide();
    }
  });
  // đăng ký dùng thử
  $("#registerTrial").submit(function (event) {
    var data = $("#registerTrial")
      .serializeArray()
      .reduce(function (obj, item) {
        obj[item.name] = item.value;
        return obj;
      }, {});

    var company = $("#company").val();
    var taxCode = $("#taxCode").val();
    var address = $("#address").val();
    var city = $("#city").val();
    var name = $("#name").val();
    var contact = $("#contact").val();
    var mobile = $("#mobile").val();
    var email = $("#email").val();
    var cap = data["g-recaptcha-response"];
    $("#register_error").hide();
    delete data["g-recaptcha-response"];
    if (data.city) {
      data.location = { city: data.city };
    }
    delete data.city;
    if (taxCode.length === 0 || !checkMST(taxCode)) {
      $("#taxCode").focus();
      $("#taxCode").css('border-color', errorColor);
    }
    else if (contact.length === 0) {
      $("#contact").focus();
      $("#contact").css('border-color', errorColor);
    }
    else if (company.length === 0) {
      $("#company").focus();
      $("#company").css('border-color', errorColor);
    } else if (address.length === 0) {
      $("#address").focus();
      $("#address").css('border-color', errorColor);
    }
    else if (mobile.length === 0 || !checkMobile(mobile)) {
      $("#mobile").focus();
      $("#mobile").css('border-color', errorColor);
    }
    else if (city.length === 0) {
      $("#city").focus();
      $("#city").css('border-color', errorColor);
    }
    else if (email.length === 0 || !checkEmail(email)) {
      $("#email").focus();
      $("#email").css('border-color', errorColor);
    } else {
      $(".waiting").show();
      $.post("/dang-ky-dung-thu", {
        data: data,
        "g-recaptcha-response": cap
      })
        .success(function () {
          $(".waiting").hide();
          window.location.replace(
            window.location.origin + "/dang-ky-dung-thu-thanh-cong"
          );
        })
        .error(function (err) {
          $(".waiting").hide();
          if (window.grecaptcha) {
            grecaptcha.reset();
          }

          $("#register_error").text(err.responseText);
          $("#register_error").show();
        });
    }
  });

  // Xu ly click next step buoc 1
  $('#continue-step-1').click((event) => {
    var taxCode = $("#taxCode").val();
    var dk_unit = $("#dk_unit").val();
    var address = $("#address").val();
    var city = $("#city").val();
    var dk_name = $('#dk_name').val();
    var dk_mobile = $('#dk_mobile').val();
    var dk_email = $('#dk_email').val();

    if (taxCode.length === 0 || !checkMST(taxCode)) {
      $("#taxCode").css('border-color', errorColor);
      $("#taxCode").focus();
    }
    else if (dk_unit.length === 0) {
      $('#dk_unit').css('border-color', errorColor);
      $('#dk_unit').focus();
    }
    else if (address.length === 0) {
      $("#address").css('border-color', errorColor);
      $("#address").focus();
    }
    else if (city.length === 0) {
      $("#city").css('border-color', errorColor);
      $("#city").focus();
    }
    else if (dk_name.length === 0) {
      $("#dk_name").css('border-color', errorColor);
      $("#dk_name").focus();
    }
    else if (dk_mobile.length === 0 || !checkMobile(dk_mobile)) {
      $("#dk_mobile").css('border-color', errorColor);
      $("#dk_mobile").focus();
    }
    else if (dk_email.length === 0 || !checkEmail(dk_email)) {
      $("#dk_email").css('border-color', errorColor);
      $("#dk_email").focus();
    }
    else {
      $("#xhd_taxCode").val(taxCode);
      $("#xhd_unit").val(dk_unit);
      $("#xhd_address").val(address);
      $('#xhd_email').val(dk_email);
      $('#xhd_mobile').val(dk_mobile);
      $('#name').val(dk_name);
      $('#continue-step-1-finish').click();
    }
  });

  // đăng ký sử dụng - hinh thuc thanh toan: de sau
  $("#formRegister").submit(function (event) {
    var data = $("#formRegister")
      .serializeArray()
      .reduce(function (obj, item) {
        obj[item.name] = item.value;
        return obj;
      }, {});

    var agreed = $("#term").prop("checked");
    if (!agreed) {
      $("#term_error").show();
      return;
    }
    var xhd_unit = $("#xhd_unit").val();
    var xhd_taxCode = $("#xhd_taxCode").val();
    var xhd_mobile = $("#xhd_mobile").val();
    var xhd_email = $("#xhd_email").val();
    var so_luong_hoa_don = $("#taxCode").attr("sl");
    var cap = data["g-recaptcha-response"];
    $("#register_error").hide();
    delete data["g-recaptcha-response"];
    if (data.city) {
      data.location = { city: data.city };
    }
    delete data.city;
    if (xhd_unit.length === 0) {
      $("#xhd_unit").focus();
      $("#xhd_unit").css('border-color', errorColor);
    } else if (xhd_taxCode.length === 0 || !checkMST(xhd_taxCode)) {
      $("#xhd_taxCode").focus();
      $("#xhd_taxCode").css('border-color', errorColor);
    } else if (xhd_address.length === 0) {
      $("#xhd_address").focus();
      $("#xhd_address").css('border-color', errorColor);
    } else if (xhd_mobile.length > 0 && !checkMobile(xhd_mobile)) {
      $("#xhd_mobile").focus();
      $("#xhd_mobile").css('border-color', errorColor);
    } else if (xhd_email.length > 0 && !checkEmail(xhd_email)) {
      $("#xhd_email").focus();
      $("#xhd_email").css('border-color', errorColor);
    } else {
      data.so_luong_hoa_don = so_luong_hoa_don;
      $(".waiting").show();
      $.post("/dang-ky-su-dung", {
        data: data,
        "g-recaptcha-response": cap
      })
        .success(function () {
          $(".waiting").hide();
          window.location.replace(
            window.location.origin + "/dang-ky-dung-thu-thanh-cong"
          );
        })
        .error(function (err) {
          $(".waiting").hide();
          if (window.grecaptcha) {
            grecaptcha.reset();
          }
          $("#register_error").text(err.responseText);
          $("#register_error").show();
        });
    }
  });

  // Chuyen sang xac nhan thanh toan
  $("#continue-step-2").click((event) => {
    var data = $("#formRegister")
      .serializeArray()
      .reduce(function (obj, item) {
        obj[item.name] = item.value;
        return obj;
      }, {});

    var agreed = $("#term").prop("checked");
    if (!agreed) {
      $("#term_error").show();
      return;
    }

    var xhd_unit = $("#xhd_unit").val();
    var xhd_taxCode = $("#xhd_taxCode").val();
    var xhd_mobile = $("#xhd_mobile").val();
    var xhd_email = $("#xhd_email").val();
    var so_luong_hoa_don = $("#taxCode").attr("sl");
    var ten_goi = $("#taxCode").attr("pack_name");
    var gia_goi = $("#taxCode").attr("price");
    var phi_khoi_tao = $("#taxCode").attr("price_init");
    let total_price = parseInt(gia_goi) + parseInt(phi_khoi_tao);
    var cap = data["g-recaptcha-response"];
    $("#register_error").hide();
    delete data["g-recaptcha-response"];
    if (data.city) {
      data.location = { city: data.city };
    }
    delete data.city;
    if (xhd_unit.length === 0) {
      $("#xhd_unit").focus();
      $("#xhd_unit").css('border-color', errorColor);
    } else if (xhd_taxCode.length === 0 || !checkMST(xhd_taxCode)) {
      $("#xhd_taxCode").focus();
      $("#xhd_taxCode").css('border-color', errorColor);
    } else if (xhd_address.length === 0) {
      $("#xhd_address").focus();
      $("#xhd_address").css('border-color', errorColor);
    } else if (xhd_mobile.length > 0 && !checkMobile(xhd_mobile)) {
      $("#xhd_mobile").focus();
      $("#xhd_mobile").css('border-color', errorColor);
    } else if (xhd_email.length > 0 && !checkEmail(xhd_email)) {
      $("#xhd_email").focus();
      $("#xhd_email").css('border-color', errorColor);
    } else {
      data.so_luong_hoa_don = so_luong_hoa_don;
      data.ten_goi = ten_goi;
      data.phi_khoi_tao = phi_khoi_tao;
      data.gia_goi = gia_goi;
      $(".waiting").show();
      $.post("/dang-ky-su-dung", {
        data: data,
        "g-recaptcha-response": cap
      })
        .success(function () {
          $(".waiting").hide();
          // Nhập thông tin thanh toán
          $("#payment_packname").val(ten_goi);
          $("#payment_sl").val(parseInt(so_luong_hoa_don).format());
          $("#payment_packprice").val(parseInt(gia_goi).format() + ' VNĐ');
          $("#payment_price_init").val(parseInt(phi_khoi_tao).format() + ' VNĐ');
          $("#payment_total_price").val(parseInt(total_price).format() + ' VNĐ');
          $("#payment_total_price_after_discount").val(parseInt(total_price).format() + ' VNĐ');
          $("#payment_total_price_after_discount").attr("price", total_price);
          $("#continue-step-2-finish").click();
        })
        .error(function (err) {
          $(".waiting").hide();
          if (window.grecaptcha) {
            grecaptcha.reset();
          }
        });
    }
  });

  // đăng ký đại lý
  $("#registerAgency").submit(function (event) {
    var data = $("#registerAgency")
      .serializeArray()
      .reduce(function (obj, item) {
        obj[item.name] = item.value;
        return obj;
      }, {});

    var agreed = $("#term").prop("checked");
    if (!agreed) {
      $("#term_error").show();
      return;
    }

    // console.log(data);
    var dl_taxCode = $("#dl_taxCode").val();
    var address = $("#address").val();
    var contact = $("#contact").val();
    var email = $("#email").val();
    var mobile = $("#mobile").val();
    var cap = data["g-recaptcha-response"];
    $("#register_error").hide();
    delete data["g-recaptcha-response"];


    if (contact.length === 0) {
      $("#contact").focus();
      $("#contact").css('border-color', errorColor);
    }
    else if (
      dl_taxCode.length <= 8 ||
      dl_taxCode.length >= 12
    ) {
      $("#dl_taxCode").focus();
      $("#dl_taxCode").css('border-color', errorColor);
    }
    else if (email.length === 0 || !checkEmail(email)) {
      $("#email").focus();
      $("#email").css('border-color', errorColor);
    }
    else if (mobile.length === 0 || !checkMobile(mobile)) {
      $("#mobile").focus();
      $("#mobile").css('border-color', errorColor);
    }
    else if (address.length === 0) {
      $("#address").focus();
      $("#address").css('border-color', errorColor);
    } else {

      $(".waiting").show();
      $.post("/dang-ky-dai-ly", {
        data: data,
        "g-recaptcha-response": cap
      })
        .success(function () {
          $(".waiting").hide();
          window.location.replace(
            window.location.origin + "/dang-ky-dai-ly-thanh-cong"
          );
        })
        .error(function (err) {
          $(".waiting").hide();
          if (window.grecaptcha) {
            grecaptcha.reset();
          }
          $("#register_error").text(err.responseText);
          $("#register_error").show();
        });
    }
  });

  // LIÊN HỆ
  $("#formContacts").submit(function (event) {
    var data = $("#formContacts")
      .serializeArray()
      .reduce(function (obj, item) {
        obj[item.name] = item.value;
        return obj;
      }, {});
    // var name = $("#name").val();
    var email = $("#email").val();
    var message = $("#message").val();
    var cap = data["g-recaptcha-response"];
    $("#register_error").hide();
    delete data["g-recaptcha-response"];
    if (data.city) {
      data.location = { city: data.city };
    }
    delete data.city;
    if (message.length === 0) {
      $("#message").focus();
      $('#message').css("border-color", 'red');
    } if (email.length === 0 || !checkEmail(email)) {
      $("#email").focus();
      $("#email").css("border-color", 'red');
      return false;
    } else {
      $.post("/thong-tin-lien-he", {
        data: data,
        "g-recaptcha-response": cap
      })
        .success(function () {
          window.location.replace(
            window.location.origin + "/lien-he-thanh-cong"
          );
        })
        .error(function (err) {
          $("#register_error").text(err.responseText);
          $("#register_error").show();
        });
    }
  });

  
});
