function formCheck(){
  if(nullCheck() == false){ return false; }
  if(formatCheck() == false){ return false; }
  document.form1.submit();
}

function nullCheck(){
  var myForm = document.form1;

  if(myForm.name.value.match(/^\s*$/)){
    alertAndFocus("「お名前（漢字）」をご記入下さい。", myForm.name);
    return false;
  }
  if(myForm.kana.value.match(/^\s*$/)){
    alertAndFocus("「お名前（カナ）」をご記入下さい。", myForm.kana);
    return false;
  }
  if(myForm.plef.value.match(/^\s*$/)){
    alertAndFocus("「都道府県」をご選択下さい。", myForm.plef);
    return false;
  }
  if(radioCheck(myForm.sex) == false){
    alertAndJump("「性別」をご選択下さい。", "anchor_sex");
    return false;
  }
  if(myForm.email.value.match(/^\s*$/)){
    alertAndFocus("「E-mailアドレス」をご記入下さい。", myForm.email);
    return false;
  }
  if( ! myForm.email.value.match(/^[^@]+@[^@]+(\.[^@]+)+$/) ){
    alertAndFocus("「E-mailアドレス」を正しくご記入下さい。", myForm.email);
    return false;
  }
}

function formatCheck(){
  var myForm = document.form1;

  if(myForm.birthmonth.value == 2){
    if( ! (((myForm.birthyear.value%4)==0 && (myForm.birthyear.value%100)!=0) || (myForm.birthyear.value%400)==0) ){
      if(myForm.birthday.value > 28){
        alertAndFocus("この日付は存在しません。", myForm.birthday);
        return false;
      }
    }
  }

  if(myForm.birthmonth.value == 2){
    if(((myForm.birthyear.value%4)==0 && (myForm.birthyear.value%100)!=0) || (myForm.birthyear.value%400)==0){
      if(myForm.birthday.value > 29){
        alertAndFocus("この日付は存在しません。", myForm.birthday);
        return false;
      }
    }
  }
  else if( (myForm.birthmonth.value == 4) ||
           (myForm.birthmonth.value == 6) ||
           (myForm.birthmonth.value == 9) ||
           (myForm.birthmonth.value == 11))
  {
    if(myForm.birthday.value > 30){
        alertAndFocus("この日付は存在しません。", myForm.birthday);
      return false;
    }
  }

  if(! isLegalChar(myForm.birthmonth.value, "0123456789")){
    alertAndFocus("「生年月日（月）」に使用できる文字は半角数値[0～9]です。", myForm.birthmonth);
    return false;
  }
  if(myForm.birthmonth.value > 12){
    alertAndFocus("この日付は存在しません。", myForm.birthmonth);
    return false;
  }
  if(! isLegalChar(myForm.birthday.value, "0123456789")){
    alertAndFocus("「生年月日（日）」に使用できる文字は半角数値[0～9]です。", myForm.birthday);
    return false;
  }
  if(myForm.birthday.value > 31){
    alertAndFocus("この日付は存在しません。", myForm.birthday);
    return false;
  }

  if(! isLegalChar(myForm.email.value, "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")){
    alertAndFocus("「E-mailアドレス」に使用できない文字が記入されています。", myForm.email);
    return false;
  }
  if(myForm.email.value.indexOf("@") == -1){
    alertAndFocus("「E-mailアドレス」のフォーマットが間違っています。", myForm.email);
    return false;
  }
}

function alertAndFocus(alrtMsg, obj){
  alert(alrtMsg);
  obj.focus();
  obj.select();
}

function alertAndJump(alrtMsg, dst){
  alert(alrtMsg);
  location.hash = dst;
}

function radioCheck(radioObj){
  var isChecked = 0;
  var index = 0;
  var i;
  for(i = 0; i < radioObj.length; i++){
    if(radioObj[i].checked){
      isChecked++;
      index = i;
      break;
    }
  }
  if(i == radioObj.length){
    return false;
  }
  else{
    return radioObj[index];
  }
}

function isLegalChar(target, canUse){
  for(i = 0; i < target.length; i++){
    if(canUse.indexOf(target.charAt(i)) == -1){
      return false;
    }
  }
  return true;
}
