$(function () {
  var phoneReg = /^1\d{10}$/;
  var numCodeReg = /^[0-9]{4,6}$/;
  var psdReg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/;
  var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

  function validateUserName(name) {
    var pass = true;
    var warning = '';
    if (!name) {
      pass = false;
      warning = '请输入姓名';
    } else {
      if (name.length < 2) {
        pass = false;
        warning = '姓名不能少于2个字符';
      } else if (name.length > 24) {
        pass = false;
        warning = '姓名不能大于24个字符';
      } else if (/\d+/.test(name)) {
        pass = false;
        warning = '姓名中不能出现数字，请重新输入';
      } else if (!(/^[\u4e00-\u9fa5a-zA-Z\s]+[·•\.]?[\u4e00-\u9fa5a-zA-Z\s]+$/.test(name))) {
        pass = false;
        warning = '姓名输入有误，请重新输入';
      }
    }
    return {
      pass: pass,
      warning: warning
    }
  }

  var apiHost = window.location.protocol + '//' + window.location.host.replace(/(.*?)\./, 'api.')

  // 邮箱自动提示后缀
  new EmailAutoComplete({
    parentCls: "#email", // 当前input元素的父级类
    targetCls: "#email-input", // 目标input元素
    mailArr: [
      '@qq.com',
      '@163.com',
      '@gmail.com',
      '@sina.com',
      '@sina.cn',
      '@vip.sina.com',
      '@hotmail.com',
      '@yahoo.com',
      '@sohu.com',
      '@aliyun.com',
      '@126.com',
      '@139.com',
      '@189.com',
      '@21cn.com',
    ]
  });

  // set datepicker plugin type
  $('.graduate-time').datepicker({
    language: 'zh-CN',
    format: 'yyyy',
    autoclose: true,
    minViewMode: "years",
    initialDate: new Date(),
  });

  // click to choose gender
  var inpGender = document.getElementById("gender-choose");
  var gender = document.getElementById("gender");
  var inpHigEdu = document.getElementById("high-edu");
  var highestEdu = document.getElementById("highest-eduction");
  var ulGender = $("#gender-list");
  var ulHigEdu = $("#edu-list");
  // choose gender
  chooseEle(inpGender, ulGender, gender);
  // choose higest eduction
  chooseEle(inpHigEdu, ulHigEdu, highestEdu);

  // the method to click choose
  function chooseEle(inp, ele) {
    var liArr = ele.find("li");
    for (var i = 0; i < liArr.length; i++) {
      liArr[i].index = i;
      liArr[i].onclick = function (event) {
        inp.value = "";
        inp.value = this.innerHTML;
      }
    }
  }

  // choose degreeId
  function chooseDegreeId() {
    var inpVal = $("#high-edu").val();
    switch (inpVal) {
      case "中专":
        return 1;
      case "大专":
        return 2;
      case "双学位":
        return 3;
      case "本科":
        return 4;
      case "硕士":
        return 5;
      case "博士":
        return 6;
      default:
        return ""
    }
  }

  //显示完善信息弹框发送请求
  var collegeData = [];
  var majorId = 0; // define a var to save majorId
  var cityData = []
  var positionData = []
  getMajorsAjax();
  getCityDataAjax();
  getPositionDataAjax();

  //ajax to get messages about schools
  function getCollegesAjax() {
    $.ajax({
      url: "//api.haitou.cc/common/const?type=college",
      type: "GET",
      data: "",
      success: function (data) {
        var info = data.college.college;
        var collegeArr = [];
        for (var i = 0; i < info.length; i++) {
          collegeArr.push(info[i].name);
        }
        collegeData = collegeArr;
        // use typeahead plugin
        setTimeout(function () {
          $("#school-choose").typeahead({
            source: collegeArr,
          });
        }, 500)
      }
    })
  }

  // college blur
  $(".ht-modal-introduction #school-choose").on("blur", function () {
    let value = $(this).val();
    if (collegeData.indexOf(value) == -1 && value !== "其他学校") {
      $(this).val("");
    }
  })

  // get all informations about major

  function getMajorsAjax() {
    $.ajax({
      url: "https://cdn6.haitou.cc/major/major_2.json",
      data: "",
      success: function (data) {
        var majorArr = data.list;
        var majorList = data.major;
        for (var i = 0; i < majorArr.length; i++) {
          var html = '';
          html += "<div class='major-list'>";

          html += "<div class='major-list-title'>" + majorArr[i].name + "</div>";

          html += "<div class='major-list-msg'>";

          html += "<ul>";

          for (var j = 0; j < majorList.length; j++) {
            if (majorList[j].degree == majorArr[i].id) {

              html += "<li>";

              html += "<span data = " + majorList[j].id + " title = " + majorList[j].name + ">" + majorList[j].name + "</span>";

              html += "</li>";
            }
          }
          html += "<ul>";

          html += "</div>";

          html += "</div>";

          // add to page
          $(".major-box-list").append(html);

          // add this major name to input area
          $(".major-box-list li").on("click", function () {
            // change majorId
            majorId = $(this).find("span").attr("data");
            var chooseVal = $(this).find("span").text();
            $("#major-choose").val(chooseVal);
            $("#major-choose").data('major_id', majorId)
            // close majorbox
            $(".major-box").removeClass("dpb").addClass("dpn");
          })
        }
      }
    })
  }

  var selectList = ($('#cities-choose').val() || '').split(",").filter(ele => !!ele);
  $('#cities-choose').val(selectList.join(','))

  // 获取城市数据
  function getCityDataAjax() {
    $.ajax({
      url: `${apiHost}/student-city-intention/province-city?client=pc`,
      success: function (res) {
        cityData = [{province: "热门城市", city: res.hotCity}].concat(res.data);
        var province = '';
        for (var i = 0, length = cityData.length; i < length; i++) {
          if (i === 0) {
            province += '<li class="active" data-index=' + i + '>' + cityData[i].province + '</li>'
          } else {
            province += '<li data-index=' + i + '>' + cityData[i].province + '</li>'
          }
        }
        $(".cities-box-list-left").html('<ul>' + province + '</ul>')
        renderRight(0)
        renderSelectLabel()
      }
    })
  }

  $(".cities-box").click(function (e) {
    e.stopPropagation()
  })

  // 左侧边栏选中
  $(".cities-box-list-left").on("click", 'li', function () {
    var index = $(this).data("index")
    $(this).addClass("active").siblings().removeClass("active");
    renderRight(index)
  })

  // 渲染右侧
  function renderRight(index) {
    var cities = cityData[index].city;
    var cityHtml = "";
    for (var i = 0, length = cities.length; i < length; i++) {
      cityHtml += '<li class=' + (selectList.indexOf(cities[i]) > -1 ? "active" : "") + '>' + cities[i] + '</li>'
    }
    $(".cities-box-list-right").html('<ul>' + cityHtml + '</ul>')
  }

  // 城市选中
  $(".cities-box-list-right").on("click", 'li', function () {
    var city = $(this).text()
    var selectIndex = selectList.indexOf(city)
    if (selectIndex > -1) {
      $(this).removeClass("active");
      selectList.splice(selectIndex, 1)
      $('#cities-choose').val(selectList.join(","))
      renderSelectLabel()
    } else if (selectList.length >= 3) {
      showErrorMsg($("#cities"), '城市不超过三个')
      setTimeout(function () {
        $("#cities").find("input").focus().val(selectList.join(","))
      }, 1000)
    } else {
      $(this).addClass("active");
      selectList.push(city)
      $('#cities-choose').val(selectList.join(","))
      renderSelectLabel()
    }
  })

  // 渲染选中列表
  function renderSelectLabel() {
    var selectHtml = '<span class="cities-box-select-label">已选择 ' + selectList.length + '/3</span>'
    for (var i = 0, length = selectList.length; i < length; i++) {
      selectHtml += '<span  class="cities-box-select-item">' + selectList[i] + '<i class="cities-box-select-item-remove" data-city=' + selectList[i] + ' ></i></span>'
    }
    $(".cities-box-select").html('<div>' + selectHtml + '</div>')
  }

  // 删除已选中列表
  $(".cities-box-select").on("click", '.cities-box-select-item-remove', function () {
    var city = $(this).data("city")
    var index = selectList.indexOf(city)
    selectList.splice(index, 1);
    renderSelectLabel();
    $('#cities-choose').val(selectList.join(","))
    // 右边栏若存在选中则删除选中状态
    $(".cities-box-list-right").find("li").each(function () {
      var thisCtiy = $(this).text();
      if (city === thisCtiy) {
        $(this).removeClass("active")
      }
    })
  })

  // 意向职位
  var selectPositionList = ($('#positions-choose').val() || '').split(",").filter(ele => !!ele);
  $('#positions-choose').val(selectPositionList.join(','))

  // 获取城市数据
  function getPositionDataAjax() {
    $.ajax({
      url: `${apiHost}/user/student-position-intention?client=pc`,
      success: function (res) {
        positionData = res.data;
        var html = '';
        for (var i = 0, length = positionData.length; i < length; i++) {
          if (i === 0) {
            html += '<li class="active" data-index=' + i + '>' + positionData[i].position + '</li>'
          } else {
            html += '<li data-index=' + i + '>' + positionData[i].position + '</li>'
          }
        }
        $(".positions-box-list-left").html('<ul>' + html + '</ul>')
        renderPositionRight(0)
        renderPositionSelectLabel()
      }
    })
  }

  $(".positions-box").click(function (e) {
    e.stopPropagation()
  })

  // 左侧边栏选中
  $(".positions-box-list-left").on("click", 'li', function () {
    var index = $(this).data("index")
    $(this).addClass("active").siblings().removeClass("active");
    renderPositionRight(index)
  })

  // 渲染右侧
  function renderPositionRight(index) {
    var positions = positionData[index].sub_position;
    var html = "";
    for (var i = 0, length = positions.length; i < length; i++) {
      html += '<li class=' + (selectPositionList.indexOf(positions[i]) > -1 ? "active" : "") + '>' + positions[i] + '</li>'
    }
    $(".positions-box-list-right").html('<ul>' + html + '</ul>')
  }

  // 城市选中
  $(".positions-box-list-right").on("click", 'li', function () {
    var position = $(this).text()
    var selectIndex = selectPositionList.indexOf(position)
    if (selectIndex > -1) {
      $(this).removeClass("active");
      selectPositionList.splice(selectIndex, 1)
      $('#positions-choose').val(selectPositionList.join(","))
      renderPositionSelectLabel()
    } else if (selectPositionList.length >= 3) {
      showErrorMsg($("#positions"), '方向不超过三个')
      setTimeout(function () {
        $("#positions").find("input").focus().val(selectPositionList.join(","))
      }, 1000)
    } else {
      $(this).addClass("active");
      selectPositionList.push(position)
      $('#positions-choose').val(selectPositionList.join(","))
      renderPositionSelectLabel()
    }
  })

  // 渲染选中列表
  function renderPositionSelectLabel() {
    var selectHtml = '<span class="positions-box-select-label">已选择 ' + selectPositionList.length + '/3</span>'
    for (var i = 0, length = selectPositionList.length; i < length; i++) {
      selectHtml += '<span  class="positions-box-select-item">' + selectPositionList[i] + '<i class="positions-box-select-item-remove" data-position=' + selectPositionList[i] + ' ></i></span>'
    }
    $(".positions-box-select").html('<div>' + selectHtml + '</div>')
  }

  // 删除已选中列表
  $(".positions-box-select").on("click", '.positions-box-select-item-remove', function () {
    var position = $(this).data("position")
    var index = selectPositionList.indexOf(position)
    selectPositionList.splice(index, 1);
    renderPositionSelectLabel();
    $('#positions-choose').val(selectPositionList.join(","))
    // 右边栏若存在选中则删除选中状态
    $(".positions-box-list-right").find("li").each(function () {
      var thisPosition = $(this).text();
      if (position === thisPosition) {
        $(this).removeClass("active")
      }
    })
  })


  // 获取页面地址
  function getUrl() {
    return window.location.href;
  }

  // save self messages
  $("#finish input").on("click", function () {
    var degree = chooseDegreeId();
    var email = $("#email-input").val();
    var name = $("#realname input").val();
    var major_name = $("#major-choose").val();
    var major = $("#major-choose").data('major_id');
    var college_name = $("#school-choose").val();
    var sexValue = $("#gender-choose").val();
    var graduation_date = $(".graduate-time").val() + "-07-01 00:00:00";
    var positions = $('#positions-choose').val();
    var cities = $('#cities-choose').val();
    var data = {
      "name": name,
      "sex": sexValue ? (sexValue === "男" ? 1 : 2) : "",
      "college_name": college_name,
      "degree": degree,
      "major": major,
      "major_name": major_name,
      "graduation_date": graduation_date,
      "cities": cities,
      "positions": positions,
      "email": email
    }
    if (!validateUserName(data['name']).pass) {
      showErrorMsg($("#realname"), validateUserName(data['name']).warning);
      return false;
    }
    if (!data["sex"]) {
      showErrorMsg($("#gender"), "请选择性别");
      return false;
    }
    if (!data["cities"]) {
      showErrorMsg($("#cities"), '请选择意向城市');
      return false;
    }
    if (!data["college_name"]) {
      showErrorMsg($("#school"), '请输入您的学校');
      return false;
    }
    if (!data["major_name"]) {
      showErrorMsg($("#major"), '请选择专业');
      return false;
    }
    if (!data["degree"]) {
      showErrorMsg($("#highest-eduction"), '请选择最高学历');
      return false;
    }
    if (!data["positions"]) {
      showErrorMsg($("#positions"), '请选择求职方向');
      return false;
    }
    if (!data["email"]) {
      showErrorMsg($("#email"), '请输入您的邮箱');
      return false;
    }
    if (!data["email"].match(emailReg)) {
      $("#email-input").val("");
      showErrorMsg($("#email"), '请输入正确格式的邮箱');
      return false;
    }
    $.ajax({
      url: "/system/student-info?infoState=1&redirect_url=" + encodeURIComponent(window.location.href),
      type: "POST",
      xhrFields: {
        withCredentials: true
      },
      data: data,
      success: function (data) {
        console.log(data)
        if (data.status == "success") {
          location.href = getUrl();
          window.location.reload();
        } else {
          errors = data.errors;
          if (errors['name']) {
            showErrorMsg($("#realname"), errors['name']);
          }
        }
      }
    })
  })

  //错误信息提示
  function showErrorMsg(ele, text) {
    ele.find("label").text(text);
    ele.find("label").removeClass("remove-error").addClass("error");
    var placeholderText = ele.find("input").attr("placeholder");
    ele.find("input").attr("placeholder", "").val("");
    // 当前输入框获取焦点，隐藏错误信息
    ele.find("input").on("focus input", function (event) {
      $(this).siblings("label").removeClass("error").addClass("remove-error");
      ele.find("input").attr("placeholder", placeholderText)
    })
  }
});

//label 标签点击输入框获取焦点
$(document).on("click", "label", function () {
  $(this).siblings("input").focus();
})

// 完善个人信息 end
