// 获取id
function getId(id) {
  return document.getElementById(id);
};
function getName(name, i) {
  var index = i || 0;
  return document.getElementsByName(name)[index];
};

// 提示框
function $toast(title, type, duration){
  var colorList = {
    success: {bg: '#F6FFED', color: '#39AD00', border: '#52C41A',shadow: '#9DF248', imgpath: 'https://dcmedia.icgoo.net/img/simple_page/success.png'},
    warning: {bg: '#fdf6ec', color: '#e6a23c', border: '#faecd8',shadow: '#cacaca', imgpath: 'https://dcmedia.icgoo.net/img/simple_page/warn.png'},
    error: {bg: '#FFF1F0', color: '#FF3234',  border: '#FF968C',shadow: '#FFBDBD', imgpath: 'https://dcmedia.icgoo.net/img/simple_page/err.png'},
  };
  var bg = 'rgba(0,0,0,0.8)';
  var color= '#fff';
  var border = 'rgba(0,0,0,0.8)';
  var shadow = 'rgba(0,0,0,0.34)'
  var icon_toast = ''
  if (type) {
    bg = colorList[type].bg;
    color = colorList[type].color;
    border = colorList[type].border;
    shadow = colorList[type].shadow;
    icon_toast= "<img src='"+ colorList[type].imgpath +"' with='14' height='14' style='margin-right: 10px;position: relative;top: -1px;' >";
  }
  var time = duration || 3000;
  var child=document.getElementsByClassName("showtoast");
  if(child.length > 0) {
    child[0].parentNode.removeChild(child[0]);
  }
  var div_toast=document.createElement("div");
  div_toast.style = "background-color:"+bg+";font-size:14px; padding:9px 16px; width: 380px; max-width: 85%;left:50%;transform: translateX(-50%); top:20%;color:"+ color +";position:fixed;z-index: 1051;border-radius: 4px; border: 1px solid "+border +";box-sizing: border-box;line-height: 1;box-shadow: 0 0 4px 0px "+shadow+";opacity:1; transition: opacity 0.8s";
  div_toast.className = "showtoast";
  div_toast.innerHTML = icon_toast + '<span>'+title+'</span>';
  document.body.appendChild(div_toast);
  setTimeout(function(){
    div_toast.style.opacity = 0;
    setTimeout(() => {
      child[0].parentNode.removeChild(child[0]);
    }, 800);
  }, time);
};

// 对话框
/**
 * title: 标题  默认：提示
 * content： 内容  默认：无内容
 * btnNo：关闭按钮文字  默认：取消
 * btnNoHref：关闭按钮链接 默认：javascript:void(0);
 * btnOk：确认按钮文字  默认： 确认
 * btnOkHref：确认按钮链接 默认：javascript:void(0);
 *
 *
 */
function $dialog(data = {}){
  showBox('dialogGlobal');
  getId('dialogGlobal_title').innerText = data.title || '提示';
  getId('dialogGlobalContent').innerHTML = data.content || '';
  getId('dialogGlobalBtnNo').innerText = data.btnNo || '取消';
  getId('dialogGlobalBtnNo').setAttribute('href', data.btnNoHref || 'javascript:void(0);');
  getId('dialogGlobalBtnOk').innerText = data.btnOk || '确认';
  getId('dialogGlobalBtnOk').setAttribute('href', data.btnOkHref || 'javascript:void(0);');
};

// 移动端导航显示与隐藏
/***禁止滑动***/
function stop() {
  document.documentElement.style.position = 'fixed';
  document.body.style.overflow = 'hidden'; //隐藏滚动条
}
/***取消滑动限制***/
function move() {
  document.documentElement.style.position = 'static';
  document.body.style.overflow = ''; //出现滚动条
}
// 元素显示与隐藏
function showBox(boxId) {
  var box = getId(boxId);
  box.style.display = "block";
}
function hideBox(boxId) {
  var box = getId(boxId);
  box.style.display = "none";
}
function changeBoxShow(showId, hideId) {
  showBox(showId);
  hideBox(hideId);
}

function showNavBox(boxClass = "nav-box") {
  if ($('.hidden-lg').is(':visible')) {
      var className = getId("nav_box").className;
      if (className === boxClass) {
        move();
        getId("nav_box").className = boxClass + " hidden-s";
      } else {
        stop();
        getId("nav_box").className = boxClass;
      }
  }
}

function tabChange(tabNavId, content) {
  $(tabNavId + " .tab-nav").click(function(){
			$(this).addClass('active').siblings(".tab-nav").removeClass('active');
			//2.根据li的索引值，来确定哪个div显示，其他div
			$(content).find('.con-item').eq($(this).index()).show().siblings(".con-item").hide();
		});
}

// 显示意见反馈表单
function showFeedbackForm(){
        showBox('feedback');
  // $.ajax({
  //   url: '/get_captcha_template/feedback/',
  //   method: 'GET',
  //   success: function (rep){
  //     console.log(rep,  666666666666);
  //     document.getElementById('feedbackCaptchaBox').innerHTML = rep;
  //   },
  //   error: function (xhr){
  //     $toast('获取验证码失败, 请刷新重试或联系客服人员', 'error');
  //     showBox('feedback');
  //   }
  // })
}

// 提交反馈
function submitFeedback(btnElem, type) {
  var fixed = getId("feedback_fixed").value;
  var email = getId('feedback_email').value;
  // 表单验证

  if (type == 'cn') {
    var phone = getId("feedback_phone").value;
    if (!fixed) {
      $toast("您还没有填写反馈内容", 'error');
      return false;
    }
    if (!phone && !email) {
      $toast("请填写手机或邮箱", 'error');
      return false;
    }
    if(phone) {
      var reg1 = /^1[345678]\d{9}$/;
      if (!reg1.test(phone)) {
        $toast("您输入的手机号有错误！", 'error');
        return false;
      }
    }
    if(email) {
      var reg2 = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
      if (!reg2.test(email)) {
        $toast("您输入的邮箱有错误！", 'error');
        return false;
      }
    }
  }else if (type == 'en') {
    if (!fixed) {
      $toast("Please fill in your feedback", 'error');
      return false;
    }
    if (!email) {
      $toast("Enter your email", 'error');
      return false;
    }
    if(email) {
      var reg2 = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
      if (!reg2.test(email)) {
        $toast("The email you entered is wrong!", 'error');
        return false;
      }
    }
  }else{
    return false;
  }

  var $form = $(btnElem).parents('form');
  var url = $form.attr('action');
  var method = $form.attr('method');
  if (!url) {
      url = window.location.href;
  };

  var formData = new FormData($form[0]);
  $.ajax({
    url: url,
    method: method,
    processData:false,
    contentType:false,
    data: formData,
    success: function (rep){
      if (rep.status){
        getId("feedback").style.display = "none";
        $form[0].reset();
        $toast(rep.message, 'success');
      }else{
        $toast(rep.message, 'error');
      }
    },
    error: function (xhr){
      if (type == 'cn'){
        $toast('提交失败, 请刷新重试', 'error');
      }else{
        $toast('Error, please try again later!', 'error');
      }
    }
  })
}

function changeCss(cssName){
  var c=getId("cssImportMain");
  c.setAttribute("href","/static/css/"+ cssName);
}

// 回到顶部
function backTop() {
  var top = document.body.scrollTop || document.documentElement.scrollTop;
  var speed = top / 10;
  var scrollToptimer = setInterval(function () {
    if (top < 1) {
      clearTimeout(scrollToptimer)
    } else {
      top -= speed
      document.body.scrollTop = top
      document.documentElement.scrollTop = top
    }
  }, 30);
}

// 报价申请表单验证
function offerApplyFormSubmit(e, formId, dialogId) {
    var form = document.getElementById(formId);
    if (!validateForm(form)){
      return false;
    }
    var $form = $(form);
    var url = $form.attr('action');
    var method = $form.attr('method');
    if (!url) {
        url = window.location.href;
    };
    var formdata_obj = new FormData(form);
    e.disabled = true;
    $.ajax({
        url: url,
        type: method,
        processData:false,  //不让jquery处理我的数据
        contentType:false,  //不让jquery添加内容类型的请求头
        data: formdata_obj,
        success:function (rep) {
          e.disabled = false;
          if (rep.status) {
            if (dialogId === 'en') {
              $toast(rep.message, 'success');
              $form.find('a[name=refreshCaptchaBtn]').click();
              if (window.location.host === 'en.iclabcn.com') {
                gtag_report_conversion(window.location.href) // 传给 Google Analytics 监听提交成功事件
              }
              } else {
                showBox('dialogMsg');
                document.getElementById('dialogNo').style.display = 'none';
                document.getElementById('dialogMain').innerHTML = rep.message;
                document.getElementById('dialogOk').href = window.location.href;
            }
            $("#" + formId)[0].reset();
          } else {
            $toast(rep.message, 'error');
            var data = rep.data;
            for (var name in data) {
              var field = $form.find('[name=' + name + ']:first');
                $(field).next('span').text(data[name]).addClass('error');
            };
            if (!data['captcha_1']){
              // {# 刷新验证码 因为验证码输入正确后, 后台就会删除验证码, 所以要刷新 #}
              $form.find('a[name=refreshCaptchaBtn]').click();
            }
          };

        },
        error:function (xhr, errorMsg) {
          e.disabled = false;
          ajaxErrorCallback(xhr, errorMsg)
        }
    })

}

// 设置cookie
function setCookie(name, value, days, domain) {
  var expires = "";
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  var cookie = name + "=" + value + expires + "; path=/";
  if (domain){
    document.cookie = cookie + "; domain=" + domain;
  }else{
    document.cookie = cookie;
  }
}

// 移除cookie
function removeCookie(name){
  document.cookie = name + '=; path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'
  // console.log(document.cookie);
}
// 获取cookie
function getCookie(name) {
  let cookieValue = null;
  if (document.cookie && document.cookie !== '') {
      const cookies = document.cookie.split(';');
      for (let i = 0; i < cookies.length; i++) {
          const cookie = cookies[i].trim();
          if (cookie.substring(0, name.length + 1) === (name + '=')) {
              cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
              break;
          }
      }
  }
  return cookieValue;
}
const csrftoken = getCookie('csrftoken');

// ajax提交错误提示封装
function ajaxErrorCallback(xhr, errorMsg){
    if (xhr.status === 401){
      $toast(xhr.responseJSON.message, 'error');
      setTimeout(function (){
        if (xhr.responseJSON.data.location){
            var location = xhr.responseJSON.data.location;
        }else{
            var location = '/login/';
        }
        window.location.href = location;
      }, 500)
  }else{
    var msg = (errorMsg !== 'error' && errorMsg) || (xhr.responseJSON && xhr.responseJSON.message) || '提交失败, 请刷新重试或联系客服';
    $toast(msg, 'error');
  }
}

// 表单提交方法封装
function submitForm(form) {
  var $form = $(form);
  var url = $form.attr('action');
  var method = $form.attr('method');
  if (!url) {
      url = window.location.href;
  };
  var data = new FormData(form);
  $.ajax({
    url: url,
    type: method,
    data: data,
    processData: false,
    contentType: false,
    success: function (rep) {
        if (rep.status) {
          $toast(rep.message, 'success');
          setTimeout(function (){
            if (rep.data !== undefined && rep.data.location && rep.data.location !== undefined){
              window.location.href = rep.data.location;
            }else{
              window.location.reload();
            }
          }, 500);
        } else {
            $toast(rep.message, 'error');
            var data = rep.data;
            for (var name in data) {
                var field = $form.find('[name=' + name + ']:first');
                $(field).next('span').text(data[name]).addClass('error');
            };
        };
    },
    error: ajaxErrorCallback
  })
}

// 表单验证1
function verifyFormInputValue(form){
  var result = true;
  $(form).find('input[required]').map((index, item) => {
    if (!item.value) {
        $(item).next('span').text('此处为必填项')
        result = false;
    }else{
        $(item).next('span').text('')
    }
  })

  return result
}

// 表单验证+表单提交
function ajaxFormSubmit(form){
  if (!verifyFormInputValue(form)){
    return false;
  }
  submitForm(form);
}

// 正则验证
function regValid(name, value) {
  var regList = {
    phone: /^1[345678]\d{9}$/,
    mobile: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
    email: /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/,
    username: /^[a-zA-Z][\w_]{5,19}$/,  //用户名-以字母开头，6-20位字母、数字、下划线组合
    yzt_username: /[\w_\-]{6,19}$/,  // yzt用户名-6-20位字母、数字、下划线、减号组合
    password: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,   // 密码-6-20位字母、数字组合, 必须包含字母数字
    yzt_password: /^(?![0-9_]+$)(?![a-zA-Z_]+$)[0-9A-Za-z_]{6,20}$/,   // 密码-6-20位字母、数字、下划线组合, 必须包含字母数字
  }
  return regList[name].test(value);
}
// 表单验证2
function validate(item){
  var datatype = item.getAttribute('datatype');
  if (datatype && !item.value) {
    var nullmsg = '不能为空';
    if (item.getAttribute('nullmsg')) {
      nullmsg = item.getAttribute('nullmsg');
    } else if (item.getAttribute('placeholder')) {
      nullmsg = item.getAttribute('placeholder');
    }
    $(item).next('span').text(nullmsg);
    return false;
  } else if(datatype && datatype !== '*') {
    if (!regValid(datatype, item.value)) {
      $(item).next('span').text(item.getAttribute('errmsg') || '格式错误');
      return false;
    } else {
      $(item).next('span').text('');
      return true;
    }
  } else {
    $(item).next('span').text('');
    return true;
  }
}
// 单项验证
function validateForm(form){
  var result = true;
  $(form).find('.form-control').map((index, item) => {
    if (!validate(item)) {
      result = false;
    }
  })
  return result
}
// 单项表单验证
function validateInput(item){
  return validate(item)
}
function getHashStrings() {
  var hashStrings = window.location.hash.length > 0 ? window.location.hash.substring(1) : "";
  return hashStrings
}
function getSearch() {
  var url = window.location.search || window.location.href;
  var urlParams = url.split('?')[1];
  var obj = {};
  if(urlParams){
    var arr = urlParams.split('&');
    for(var i = 0; i < arr.length; i++) {
      var params = arr[i].split('=')
      obj[params[0]] = params[1]
    }
  }
  return obj
}

// 表单验证+表单提交2
function handleFormSubmit(id) {
  var form = document.getElementById(id);
  if (!validateForm(form)){
    return false;
  }
  submitForm(form);
}

// 绑定一账通账号：创芯已登陆，一账通未绑定
$('[name=showBindYZTAccountModalBtn]').on('click', function (){
  $dialog({
    content: '是否绑定一账通账号？<br/>',
    btnNo: '暂不绑定',
    // btnNoHref: '',
    btnOk: '立即绑定',
    btnOkHref: '/associate_yzt_account.html',
  })
})


var createYZTAccountBtnClickStatus = true;
$('#createYZTAccountBtn').on('click', function (){
  if (createYZTAccountBtnClickStatus){
    createYZTAccountBtnClickStatus = false;
    $.ajax({
      url: '/account/api/yzt/check/',
      method: 'GET',
      success: function (rep){
        try {
          var $yztUsernameInput = $('input#yzt_username');
          $yztUsernameInput.val(rep.data.username);
          if (!rep.status){
            $toast(rep.message, 'warning', 5000);
            $yztUsernameInput.siblings('span.help-block').text('该用户名在一账通平台中已存在, 请设置一账通的用户名');
          }
          // 跳转到创建一账通账号
          window.location.href = "/associate_account.html#yzt_create";
        } catch (error) {
        }
        createYZTAccountBtnClickStatus = true;
      },
      error: function (xhr){
        try {
          ajaxErrorCallback(xhr, '创建一账通账号失败, 请刷新重试或联系客服');
        } catch (error) {
        }
        createYZTAccountBtnClickStatus = true;
      },
    })
  }
})

// 解除绑定一账通账号
$('#unbindYZTAccountBtn').on('click', function(){
    if (confirm('确定当前账号与一账通账号进行解除绑定操作吗?')){
      $.ajax({
        url: '/account/api/yzt/unbind/',
        headers: {'X-CSRFToken': csrftoken},
        method: 'POST',
        success: function (rep){
          if (rep.status){
            $toast(rep.message, 'success');
            setTimeout(function (){
              window.location.reload();
            }, 500);
          }else{
            $toast(rep.message, 'error');
          }
        },
        error: function (xhr){
          ajaxErrorCallback(xhr, '解除绑定失败, 请刷新重试或联系客服');
        }
      });
    }
})

// 绑定创芯检测账号
function confirmBindLocalAccount(){
  if (getCookie('yzt_account_is_not_bind') === '1'){
    removeCookie('yzt_account_is_not_bind');
    if (getCookie('yzt_phone_is_register') === '1'){
      // 一账通账号未绑定创芯检测账号，但手机号已经在创芯检测注册过
      removeCookie('yzt_phone_is_register');
      if (confirm('一账通账号的手机号已经在创芯检测注册过, 是否进行绑定?')){
        window.location.href = "/associate_local_account.html";
      }
      return false;
    } else {
      // 一账通账号未绑定创芯检测账号，且手机号也未注册创芯检测账号
      $dialog({
        content: '当前一账通账号暂未绑定创芯检测账号, 请先进行绑定',
        btnNo: '暂不绑定',
        // btnNoHref: '',
        btnOk: '立即绑定',
        btnOkHref: '/associate_local_account.html',
      })
    }
  }
}
// 一账通获取验证码
$('[name=sendVerifyCodeBtn]').on('click', function (){
  var phone = $(this).parents('form').find('input[name=phone]').val();
  var action = this.dataset.action;
  $(this).attr('disabled', true)
  $(this).text('发送中...')
  var _this = this
  $.ajax({
    url: '/common/api/verify_code/',
    data: {'action': action, 'phone': phone},
    headers: {'X-CSRFToken': csrftoken},
    method: 'POST',
    success: function (rep){
      if (rep.status){
        $toast(rep.message, 'success');
      }else{
        $toast(rep.message, 'error');
      }
      if (rep.timedelta) {
        codeCountdown(_this, rep.timedelta+'');
      } else {
        $(_this).text('获取验证码')
        $(_this).removeAttr('disabled')
      }
    },
    error: function (xhr){
      $(_this).removeAttr('disabled')
      ajaxErrorCallback(xhr);
    }
  })

})


$(function (){
  confirmBindLocalAccount();
});


function refreshCaptcha(elem){
  if (elem.dataset.clicked === '1'){
    return false;
  }

  elem.dataset.clicked = '1';
  setTimeout(function (){
    elem.dataset.clicked = '0'
  }, 500);
  var $captchaImg = $(elem) .parents('form').find('img.captcha');
  var $captchaInput = $(elem) .parents('form').find('input#id_captcha_0');
  $.ajax({
    url: '/captcha/refresh/',
    method: 'GET',
    success: function (rep){
      $captchaImg.attr('src', rep.image_url);
      $captchaInput.val(rep.key);
    },
    error: function (xhr){
      $toast('获取图形验证码失败, 请稍后重试', 'error');
    }
  })
}


$('[name=refreshCaptchaBtn]').on('click', function (){
  refreshCaptcha(this);
})

// 倒计时
function codeCountdown(obj, time){
  var timedelta=120;
  var t = timedelta;
  if (time) {
    t = Number(time);
  }
  var inter = setInterval(function() {
    $(obj).text("重新发送" + t + "s");
    t--;
    if (t <= 0) {
      clearInterval(inter);
      $(obj).text('获取验证码')
      $(obj).removeAttr('disabled')
      t = timedelta;
    }
  }.bind(this), 1000);
};


$('[name=YZTChangePswdBtn]').on('click', function (){

  $.ajax({
    url: '/account/api/yzt/change_password/',
    method: 'POST',
    headers: {'X-CSRFToken': csrftoken},
    success: function (rep){
      if (rep.status){
        window.location.href = rep.data.location;
      }else{
        $toast(rep.message, 'error');
      }
    },
    error: function (xhr){
      ajaxErrorCallback(xhr, '前往修改密码页面失败');
    }
  })
})

$('.navList-p').on('click', function (){
  console.log($(this).hasClass('show-sub-menu'))
  if ($(this).hasClass('show-sub-menu')) {
    $(this).removeClass('show-sub-menu');
  } else {
     $('.navList-p').removeClass('show-sub-menu');
     $(this).addClass('show-sub-menu');
  }
})


function getRelatedLink(){
  if (!getCookie('location_site_type')){
    $.ajax({
      url: '/api/location_site_type/',
      method: 'GET',
      success: function (response){
        setCookie('location_site_type', response.site_type, 7);
        showRelatedLinkeMessageBar();
      }
    });
  }else{
    showRelatedLinkeMessageBar();
  }
}

function showRelatedLinkeMessageBar(){

  if (!getCookie('related_link_flag') && getCookie('location_site_type') == 2){
    var relatedLink = $('#enHrefTag').attr('href');
    if (!relatedLink){
      relatedLink = 'https://en.iclabcn.com/';
    }

    // 添加顶部提示
    var $topBar = $('<div class="top-message-bar">');
    var $message = $('<p>');
    var $linkText = $('<span>').text('If you need to access English language websites, please click here');
    var $link = $('<a>').attr('href', relatedLink).append($linkText);
    var $closeBtn = $('<span>').text('x').addClass('close-btn');
    $topBar.append($message.append($link).append($closeBtn));
    $('body').prepend($topBar);
    $('.header').addClass('mt42')

    $link.on('click', function (){
      ignoreRelatedLink();
    });

    // 关闭按钮点击事件
    $closeBtn.on('click', function() {
      $topBar.remove();
      $('.header').removeClass('mt42');
      ignoreRelatedLink();
    });
  }

}

function ignoreRelatedLink(){
  try{
    if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)){
        var domain = location.hostname;
    }else{
        var hostItems = location.hostname.split('.');
        hostItems[0] = '*';
        var domain = hostItems.join('.');
    }
  }catch{
      var domain = location.hostname;
  }
  setCookie('related_link_flag', 1, 7, domain);  // 设置7天cookie
}
