/**
 * 入力チェック
 * @param id
 * @return
 */
function form_check() {
  $('#CandidateInputForm').validate({
    groups: {
      tel: "data[registrant][tel01] data[registrant][mobile_tel01]",
      qualification: "data[hold_qualification][qualification_no][1] data[hold_qualification][qualification_no][2] data[hold_qualification][qualification_no][3] data[hold_qualification][qualification_no][4] data[hold_qualification][qualification_no][8]",
      job_type: "data[preference_job_type][no][3] data[preference_job_type][no][4] data[preference_job_type][no][11] data[preference_job_type][no][5]"
    },
    // エラーの表示位置変更
    errorPlacement: function(error, element) {
      switch(element.attr('name')) {
      case 'data[registrant][name_family]':
        error.insertBefore('#JobNameFamily');
        break;
      case 'data[registrant][name_kana_family]':
        error.insertBefore('#JobNameKanaFamily');
        break;
      case 'data[registrant][birth_y]':
        error.insertBefore('#JobBirthY');
        break;
      case 'data[registrant][mcode]':
        error.insertBefore('#JobMcode');
        break;
      case 'data[registrant][address]':
        error.insertBefore('#JobAddress');
        break;
      case 'data[registrant][mobile_tel01]':
        error.insertBefore('#tel');
        break;
      case 'data[registrant][mail]':
        error.insertBefore('#JobMail');
        break;
      case 'data[hold_qualification][qualification_no][1]':
        error.insertBefore('#HoldQualification1');
        break;
      case 'data[preference_job_type][no][3]':
        error.insertBefore('#JobJobType3');
        break;
      case 'data[registrant][job_location_priority1]':
        error.insertBefore('#job_location_no');
        break;
      case 'data[registrant][preference_assumption_date]':
        error.insertBefore('#JobPreferenceAssumptionDate');
        break;
      default:
        // ToDo Nothing
      }
    },
    rules: {
      'data[registrant][name_family]': {
        required: true
      },
      'data[registrant][name_kana_family]': {
        required: true
      },
      'data[registrant][birth_y]': {
        required: true
      },
      'data[registrant][mcode]': {
        required: true
      },
      'data[registrant][address]': {
        required: true
      },
      'data[registrant][mail]': {
        mailtype: 'mailtype'
      },
      'data[registrant][mobile_tel01]': {
        required: function() {
          return ($('#JobMobileTel01').val() ==  "" && $('#JobTel01').val() ==  "");
        },
        phoneNo: true,
        minlength: 11
      },
      'data[registrant][tel01]': {
        required: function() {
          return ($('#JobMobileTel01').val() ==  "" && $('#JobTel01').val() ==  "");
        },
        phoneNo: true,
        minlength: 10
      },
      // 保有資格 validate Start
      'data[hold_qualification][qualification_no][1]': {
        required: function() {
          return ($("input[type='checkbox']").eq(0).attr('checked') == false
           && $("input[type='checkbox']").eq(1).attr('checked') == false
           && $("input[type='checkbox']").eq(2).attr('checked') == false
           && $("input[type='checkbox']").eq(3).attr('checked') == false
           && $("input[type='checkbox']").eq(4).attr('checked') == false);
        }
      },
      'data[hold_qualification][qualification_no][2]': {
        required: function() {
          return ($("input[type='checkbox']").eq(0).attr('checked') == false
           && $("input[type='checkbox']").eq(1).attr('checked') == false
           && $("input[type='checkbox']").eq(2).attr('checked') == false
           && $("input[type='checkbox']").eq(3).attr('checked') == false
           && $("input[type='checkbox']").eq(4).attr('checked') == false);
        }
      },
      'data[hold_qualification][qualification_no][3]': {
        required: function() {
          return ($("input[type='checkbox']").eq(0).attr('checked') == false
           && $("input[type='checkbox']").eq(1).attr('checked') == false
           && $("input[type='checkbox']").eq(2).attr('checked') == false
           && $("input[type='checkbox']").eq(3).attr('checked') == false
           && $("input[type='checkbox']").eq(4).attr('checked') == false);
        }
      },
      'data[hold_qualification][qualification_no][4]': {
        required: function() {
          return ($("input[type='checkbox']").eq(0).attr('checked') == false
           && $("input[type='checkbox']").eq(1).attr('checked') == false
           && $("input[type='checkbox']").eq(2).attr('checked') == false
           && $("input[type='checkbox']").eq(3).attr('checked') == false
           && $("input[type='checkbox']").eq(4).attr('checked') == false);
        }
      },
      'data[hold_qualification][qualification_no][8]': {
        required: function() {
          return ($("input[type='checkbox']").eq(0).attr('checked') == false
           && $("input[type='checkbox']").eq(1).attr('checked') == false
           && $("input[type='checkbox']").eq(2).attr('checked') == false
           && $("input[type='checkbox']").eq(3).attr('checked') == false
           && $("input[type='checkbox']").eq(4).attr('checked') == false);
        }
      },
      // 保有資格 validate End

      // 希望勤務形態 validate Start
      'data[preference_job_type][no][3]': {
        required: function() {
          return ($("#JobJobType3").attr('checked') == false
           && $("#JobJobType4").attr('checked') == false
           && $("#JobJobType11").attr('checked') == false
           && $("#JobJobType5").attr('checked') == false);
        }
      },
      'data[preference_job_type][no][4]': {
        required: function() {
          return ($("#JobJobType3").attr('checked') == false
           && $("#JobJobType4").attr('checked') == false
           && $("#JobJobType11").attr('checked') == false
           && $("#JobJobType5").attr('checked') == false);
        }
      },
      'data[preference_job_type][no][11]': {
        required: function() {
          return ($("#JobJobType3").attr('checked') == false
           && $("#JobJobType4").attr('checked') == false
           && $("#JobJobType11").attr('checked') == false
           && $("#JobJobType5").attr('checked') == false);
        }
      },
      'data[preference_job_type][no][5]': {
        required: function() {
          return ($("#JobJobType3").attr('checked') == false
           && $("#JobJobType4").attr('checked') == false
           && $("#JobJobType11").attr('checked') == false
           && $("#JobJobType5").attr('checked') == false);
        }
      },
      // 希望勤務体系 validate End
      'data[registrant][job_location_priority1]': {
        required: true
      },
      'data[registrant][job_location_priority2]': {
        required: function() {
          return ($('#JobJobLocationPriority1').val == "");
        }
      },
      'data[registrant][preference_assumption_date]': {
        required: true
      }
    },
    messages: {
      'data[registrant][name_family]': {
        required: 'お名前を入力してください'
      },
      'data[registrant][name_kana_family]': {
        required: 'ふりがなを入力してください'
      },
      'data[registrant][birth_y]': {
        required: '生まれた年を選択してください'
      },
      'data[registrant][mcode]': {
        required: '市区町村名を選択してください'
      },
      'data[registrant][address]': {
        required: '番地・建物名を入力してください'
      },
      'data[registrant][mail]': {
        mailtype: 'メールアドレスが正しくありません'
      },
      'data[registrant][mobile_tel01]': {
        required : '連絡先を入力してください',
        phoneNo  : '電話番号が正しくありません',
        minlength: '電話番号の桁数が足りません'
      },
      'data[registrant][tel01]': {
        required : '連絡先を入力してください',
        phoneNo  : '電話番号が正しくありません',
        minlength: '電話番号の桁数が足りません'
      },
      // 保有資格 Start
      'data[hold_qualification][qualification_no][1]':{
        required : '保有資格をチェックしてください'
      },
      'data[hold_qualification][qualification_no][2]':{
        required : '保有資格をチェックしてください'
      },
      'data[hold_qualification][qualification_no][3]':{
        required : '保有資格をチェックしてください'
      },
      'data[hold_qualification][qualification_no][4]':{
        required : '保有資格をチェックしてください'
      },
      'data[hold_qualification][qualification_no][8]':{
        required : '保有資格をチェックしてください'
      },
      // 保有資格 End

      // 希望勤務形態 Start
      'data[preference_job_type][no][3]': {
        required: '希望勤務形態をチェックしてください'
      },
      'data[preference_job_type][no][4]': {
        required: '希望勤務形態をチェックしてください'
      },
      'data[preference_job_type][no][11]': {
        required: '希望勤務形態をチェックしてください'
      },
      'data[preference_job_type][no][5]': {
        required: '希望勤務形態をチェックしてください'
      },
      // 希望勤務体系 End
      'data[registrant][job_location_priority1]': {
        required: '希望勤務地を選択してください'
      },
      'data[registrant][job_location_priority2]': {
        required: function(element) {
          if (!$('select[name="data[registrant][job_location_priority1]"]').val()){
            return '希望勤務地を選択してください';
          }
        }
      },
      'data[registrant][preference_assumption_date]': {
        required: '希望就業時期を選択してください'
      }
    },
    errorClass: 'errorTxt',
    errorElement: 'p'
  });

  // 郵便番号の形式チェック追加
  jQuery.validator.addMethod("postal", function(value, element) {
  return this.optional(element) || /^([0-9]{3}-?[0-9]{4}|[０-９]{3}-?[０-９]{4})$/.test(value);
  }, "半角数字で入力してください");

  // メールアドレスの形式チェック追加
  jQuery.validator.addMethod("mailtype", function(value, element) {
  return this.optional(element) || /^((\"[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~\.]+\")|([\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~\.]+))@[0-9A-Za-z\-\.]+[A-Za-z]$/.test(value);
  }, "メールアドレスが正しくありません");
}
