var validation_required = true;
function set_validation_required(f) {
  validation_required = f;
}

function isNull(value) {
  return (value.replace(/^[ ]+|[ ]+$/g, "")=="");
}

function isChecked(obj) {
  checkCount = 0;
  for(i=0; i<obj.length; i++) {
    checkCount += obj[i].checked ? 1 : 0;
  }
  return (checkCount>0);
}

function isCheckedValue(obj) {
  for(i=0; i<obj.length; i++) {
    if(obj[i].checked) return obj[i].value;
  }
  return "";
}

function isZenkaku(value) {
  for (var i = 0; i < value.length; ++i) {
    var c = value.charCodeAt(i);
    if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) {
      return false;
    }
  }
  return true;
}

function isEmail(value) {
    if(value.match("^[0-9A-Za-z._]+@[0-9A-Za-z.]+$")){
        return true;
    }else{
        return false;
    }
}

function isDigit(value) {
  return !value.match(/[^0-9]+/);
}

function isSame(v1, v2) {
  return (v1==v2);
}

function validate_for_p02() {
  var msg = "";
  var obj = document.form1;
  // 寄付種別のチェック
  if(!obj.donate_type_general.checked && !obj.donate_type_specific.checked && !obj.donate_type_iap.checked) {
    msg += "何れかの寄付にチェックを入れてください。\n";
  }
  // 特定寄付のプロジェクト選択チェック
  if(obj.donate_type_specific.checked) {
    var checkCount = 0;
    for(i=0; i<obj.type_of_specific.length; i++) {
      checkCount += obj.type_of_specific[i].checked ? 1 : 0;
    }
    if(checkCount==0) {
      msg += "特定寄付の何れかのプロジェクトを選択してください。\n";
    }
  }
  // 口数のチェック
  if(obj.donate_type_general.checked && (obj.amount_of_general.value=="" || obj.amount_of_general.value.match(/[^0-9]+/))) {
    msg += "一般寄付の口数を半角数字で入力してください。\n";
  }
  if(obj.donate_type_specific.checked && (obj.amount_of_specific.value=="" || obj.amount_of_specific.value.match(/[^0-9]+/))) {
    msg += "特定寄付の口数を半角数字で入力してください。\n";
  }
  if(obj.donate_type_iap.checked && (obj.amount_of_iap.value=="" || obj.amount_of_iap.value.match(/[^0-9]+/))) {
    msg += "I am powerful 基金の口数を半角数字で入力してください。\n";
  }
  // エラーメッセージのチェック
  if(validation_required && msg!="") {
    alert(msg);
    return false;
  } else {
    return true;
  }
}

function validate_for_p03() {
  var msg = "";
  var obj = document.form1;
  if(isNull(obj.last_name.value) || isNull(obj.first_name.value)) msg += "お名前を入力してください。\n";
  if(!isZenkaku(obj.last_name.value) || !isZenkaku(obj.first_name.value)) msg += "お名前は全角で入力してください。\n";
  if(isNull(obj.last_kana.value) || isNull(obj.first_kana.value)) msg += "ふりがなを入力してください。\n";
  if(!isZenkaku(obj.last_kana.value) || !isZenkaku(obj.first_kana.value)) msg += "ふりがなは全角で入力してください。\n";
  if(isNull(obj.email.value) || isNull(obj.email_again.value)) msg += "Eメールアドレスを入力してください。\n";
  else if(!isEmail(obj.email.value) || !isEmail(obj.email_again.value)) msg += "Eメールアドレスの形式が正しくありません。\n";
  else if(!isSame(obj.email.value, obj.email_again.value)) msg += "Eメールアドレスが一致しません。\n";
  if(isNull(obj.zip1.value) || isNull(obj.zip2.value)) msg += "郵便番号を入力してください。\n";
  if(!isDigit(obj.zip1.value) || !isDigit(obj.zip2.value)) msg += "郵便番号は半角数字で入力してください。\n";
  if(isNull(obj.prefecture.value)) msg += "都道府県を選択してください。\n";
  if(isNull(obj.address1.value)) msg += "市区郡町村を入力してください。\n";
  if(isNull(obj.address2.value)) msg += "地区名・丁目・番地・号を入力してください。\n";
  if(!isDigit(obj.tel1.value) || !isDigit(obj.tel2.value) || !isDigit(obj.tel3.value)) msg += "電話番号は半角数字で入力してください。\n";
  if(!isChecked(obj.gender)) msg += "性別を選択してください。\n";
  // アンケートのチェック
  if(!obj.enquete_dm.checked
  && !obj.enquete_mm.checked
  && !obj.enquete_ev.checked
  && !obj.enquete_hp.checked
  && !obj.enquete_inv.checked
  && !obj.enquete_sns.checked
  && !obj.enquete_se.checked
  && !obj.enquete_etc.checked) {
    msg += "お知りになったきっかけを一つ以上選択してください。\n";
  }
  if(obj.enquete_etc.checked && isNull(obj.enquete_etc_comment.value)) msg += "その他の内容を具体的に入力してください。\n";
  // エラーメッセージのチェック
  if(validation_required && msg!="") {
    alert(msg);
    return false;
  } else {
    return true;
  }
}

