function formCheck(){
  if(nullCheck() == false){ return false; }
  if(formatCheck() == false){ return false; }
  document.form1.submit();
}

function nullCheck(){
  var myForm = document.form1;

  if((myForm.naiyou01.checked == false) && (myForm.naiyou02.checked == false) && (myForm.naiyou03.checked == false) && (myForm.naiyou04.checked == false) && (myForm.naiyou05.checked == false) && (myForm.naiyou06.checked == false)){
    alertAndJump("「ご依頼内容」を選択して下さい。", "anchor_naiyou");
    return false;
  }
  if(myForm.name.value.match(/^\s*$/)){
    alertAndFocus("「お名前（漢字）」をご記入下さい。", myForm.name);
    return false;
  }
  if(myForm.kana.value.match(/^\s*$/)){
    alertAndFocus("「お名前（カナ）」をご記入下さい。", myForm.kana);
    return false;
  }
  if(myForm.birthyear.value.match(/^\s*$/)){
    alertAndFocus("「生年月日（年）」をご記入下さい。", myForm.birthyear);
    return false;
  }
  if(myForm.birthmonth.value.match(/^\s*$/)){
    alertAndFocus("「生年月日（月）」をご記入下さい。", myForm.birthmonth);
    return false;
  }
  if(myForm.birthday.value.match(/^\s*$/)){
    alertAndFocus("「生年月日（日）」をご記入下さい。", myForm.birthday);
    return false;
  }
  if(myForm.post1.value.match(/^\s*$/)){
    alertAndFocus("「郵便番号」をご記入下さい。", myForm.post1);
    return false;
  }
  if(myForm.post2.value.match(/^\s*$/)){
    alertAndFocus("「郵便番号」をご記入下さい。", myForm.post2);
    return false;
  }
  if(myForm.plef.value.match(/^\s*$/)){
    alertAndFocus("「都道府県」をご選択下さい。", myForm.plef);
    return false;
  }
  if(myForm.address1.value.match(/^\s*$/)){
    alertAndFocus("「住所（市区町村）」をご記入下さい。", myForm.address1);
    return false;
  }
  if(myForm.address2.value.match(/^\s*$/)){
    alertAndFocus("「住所（番地・号）」をご記入下さい。", myForm.address2);
    return false;
  }
  if(radioCheck(myForm.sex) == false){
    alertAndJump("「性別」をご選択下さい。", "anchor_sex");
    return false;
  }
  if(myForm.age.value.match(/^\s*$/)){
    alertAndFocus("「年齢」をご記入下さい。", myForm.age);
    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.post1.value, "-0123456789")){
    alertAndFocus("「郵便番号」に使用できる文字は半角数値[0～9]と[-]（ハイフン）です。", myForm.post1);
    return false;
  }
  if(! isLegalChar(myForm.post2.value, "-0123456789")){
    alertAndFocus("「郵便番号」に使用できる文字は半角数値[0～9]と[-]（ハイフン）です。", myForm.post2);
    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;
  }
}

var checkboxnames="car_class01,car_class02,car_class03,car_class04,car_class05,car_class06,car_class07,car_class08,car_class09,car_class10,car_class11,car_class12,car_class13,car_class14,car_class15,car_class16,car_class17,car_class18,car_class19,car_class20,car_class21,car_class22,car_class23" //対象チェックボックス名

var _chkbox
checkboxnames=checkboxnames.split(",")
function countchecked(clicked,limit){
var count=0
for(var i=0;i<checkboxnames.length;i++)
if(clicked.form.elements[checkboxnames[i]].checked)count++
if(count>limit){
alert("希望車種は"+limit+"車種までです。")
_chkbox=clicked
setTimeout("_chkbox.checked=false",0)
}
}

function resetcheck(form){
for(var i=0;i<form.elements.length;i++)
if(form.elements[i].type=="checkbox")
form.elements[i].checked=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;
}
