/**
* 【入力チェック関数】
* Ajax用簡易クロスブラウザライブラリjslb-ajaxを使用
*
* @param object  フォームオブジェクト
* @param string  送信先のスクリプトに渡すチェック種別
* @param boolean 入力チェックの有無(true:あり,false:なし)
*/
function check_param(oj,pid,required)
{
  var name = oj.name;// フォーム名
  var request_url = './user_check.php';// リクエストURL
  var method = 'POST';// HTTPリクエストメソッド(POSTまたはGET)
  var async = true;// 同期モード(非同期ならtrue,同期ならfalse)
  var sload = true;// スーパーロードをtrueで強制,省略またはfalseでデフォルト

  switch (name)
  {
    case "mail":
	  // フォーム値(複数項目の値を取得したいのでoj.valueではなくoj.form.XXX.valueを使用)
      var value = oj.form.mail.value;
      if (requiredCheck(name,value,'メールアドレス未入力',required)) return;
      sendRequest(on_loaded,'&pid='+pid+'&check_type='+name+'&mail='+value,method,request_url,async,sload);
      break;
    case "email":
	  // フォーム値(複数項目の値を取得したいのでoj.valueではなくoj.form.XXX.valueを使用)
      var value = oj.form.email.value;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,// コールバック関数
                 '&pid='+pid+'&check_type='+name+'&email='+value,// データ
                 method,request_url,async,sload);
      break;
    case "pswd":
      var value = oj.form.pswd.value;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&pswd='+value,
                 method,request_url,async,sload);
      break;
    case "pswd2":
      var value1 = oj.form.pswd.value;
      var value2 = oj.form.pswd2.value;
      if (requiredCheck('pswd',value1,'未入力',required)) return;
      if (requiredCheck('pswd2',value2,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&pswd='+value1+'&pswd2='+value2,
                 method,request_url,async,sload);
      break;
    case "handle_nm":
      var value = oj.form.handle_nm.value;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&handle_nm='+value,
                 method,request_url,async,sload);
      break;
    case "sex_tp":
      var value = oj.form.sex_tp.value;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&sex_tp='+value,
                 method,request_url,async,sload);
      break;
    case "post_cd1":
    case "post_cd2":
      var value1 = oj.form.post_cd1.value;
      var value2 = oj.form.post_cd2.value;
      if (requiredCheck('post_cd',value1,'未入力',required)) return;
      if (requiredCheck('post_cd',value2,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type=post_cd&post_cd1='+value1+'&post_cd2='+value2,
                 method,request_url,async,sload);
      break;
    case "birth_y":
    case "birth_m":
    case "birth_d":
      var value_y = oj.form.birth_y.value;
      var value_m = oj.form.birth_m.value;
      var value_d = oj.form.birth_d.value;
      if (requiredCheck('birth_dt',value_y,'未選択',required)) return;
      if (requiredCheck('birth_dt',value_m,'未選択',required)) return;
      if (requiredCheck('birth_dt',value_d,'未選択',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type=birth_dt&birth_y='+value_y+'&birth_m='+value_m+'&birth_d='+value_d,
                 method,request_url,async,sload);
      break;
    case "addr":
      var value = oj.form.addr.value;
      if (requiredCheck(name,value,'選択してください',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&addr='+value,
                 method,request_url,async,sload);
      break;
    case "mlma_flg":
      var value_m = oj.value;
      var value_e = oj.form.email.value;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&mlma_flg='+value_m+'&email='+value_e,
                 method,request_url,async,sload);
      break;
    case "kiyaku":
      var value = oj.form.kiyaku.checked;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,
                 '&pid='+pid+'&check_type='+name+'&kiyaku='+value,
                 method,request_url,async,sload);
      break;
    case "license":
          // フォーム値(複数項目の値を取得したいのでoj.valueではなくoj.form.XXX.valueを使用)
      var value = oj.form.license.value;
      if (requiredCheck(name,value,'未入力',required)) return;
      sendRequest(on_loaded,// コールバック関数
                 '&pid='+pid+'&check_type='+name+'&license='+value,// データ
                 method,request_url,async,sload);
      break;
  }
}
/**
* 【コールバック関数】
*/
function on_loaded(oj)
{
  // レスポンスを取得してデコード
  var res = decodeURIComponent(oj.responseText);
  // レスポンスを\nで分解して行データの配列を作る
  var rows = res.split('\n');
  // 行データの配列を各要素へ
  var fm   = rows[0];// ターゲット項目
  var code = rows[1];// エラーコード(0:OK,-1:未入力,それ以外:NG)
  var msg  = rows[2];// エラーメッセージ
  var mark = getMark(code);// エラー項目で表示するマーク(form_ok,form_ng,form_firstなど)
  // レスポンスされたメッセージを表示
  switch (fm) {
    case 'mlma_flg':
      if (code != 0)
        showMessage('email',msg,mark);
      break;
    default:
      showMessage(fm,msg,mark);
      break;
  }
}
function getMark(code)
{
  switch (code)
  {
    case "0":
      result = 'form_ok';
      break;
    case "-1":
      result = 'form_first';
      break;
    default:
      result = 'form_ng';
      break;
  }
  return result;
}
/**
* 【エラーメッセージ表示】
* エラーがなければ「OK!」を表示
*
* @param string フォーム名
* @param string メッセージ
* @param string デフォルトマーク(form_ok,form_ng,form_firstのいづれか)
*/
function showMessage(fm,msg,mark)
{
  if (msg == '') msg = 'OK!';
  document.getElementById('output_'+fm).innerHTML = msg;
  document.getElementById('mark_'+fm).className = mark;
}
/**
* 【未入力チェック】
* 入力データが空のときは指定された項目にメッセージを表示しtrueを返す
*
* @param string フォーム名
* @param string 入力データ
* @param string 未入力時のメッセージ
* @param boolean 未入力チェックフラグ(false:チェックしない)
*/
function requiredCheck(fm,value,msg,required)
{
  if (required && value == '') {
    showMessage(fm,msg,'form_first');
    return true;
  }
  return false;
}

/**
* フォームの空欄チェック
* ブロックテンプレート内のbodyタグのonLoadで呼び出し
*/
function emptyCheck()
{
  if (document.myFORM.email.value == "") {
    showMessage('email','未入力','form_first');
  }
  if (document.myFORM.pswd.value == "") {
    showMessage('pswd','未入力','form_first');
  }
  if (document.myFORM.handle_nm.value == "") {
    showMessage('handle_nm','未入力','form_first');
  }
  var sex_tp_chk = false;
  for (i = 0; i < document.myFORM.sex_tp.length; i++) {
    if (document.myFORM.sex_tp[i].checked == true) {
      sex_tp_chk = true;
    }
  }
  if (sex_tp_chk == false) {
    showMessage('sex_tp','未入力','form_first');
  }
  if (document.myFORM.birth_y.value == "") {
    if (document.myFORM.birth_m.options[document.myFORM.birth_m.selectedIndex].value == "") {
      if (document.myFORM.birth_d.options[document.myFORM.birth_d.selectedIndex].value == "") {
        showMessage('birth_dt','未選択','form_first');
      }
    }
    showMessage('pswd','未入力','form_first');
  }
  if (document.myFORM.addr.options[document.myFORM.addr.selectedIndex].value == "") {
    showMessage('addr','未選択','form_first');
  }
//  if (document.myFORM.post_cd1.value == "" && document.myFORM.post_cd2.value == "") {
//    showMessage('post_cd','未入力','form_first');
//  }
  // …以降繰り返し…

  if (document.myFORM.license.value == "") {
    showMessage('license','未入力','form_first');
  }

}

/**
* フォームの空欄チェック（会員登録用）
* ブロックテンプレート内のbodyタグのonLoadで呼び出し
*/
function emptyCheckAdd()
{
  if (document.myFORM.email.value == "") {
    showMessage('email','未入力','form_first');
  }
  if (document.myFORM.pswd.value == "") {
    showMessage('pswd','未入力','form_first');
  }
  if (document.myFORM.birth_y.value == "") {
    if (document.myFORM.birth_m.options[document.myFORM.birth_m.selectedIndex].value == "") {
      if (document.myFORM.birth_d.options[document.myFORM.birth_d.selectedIndex].value == "") {
        showMessage('birth_dt','未選択','form_first');
      }
    }
    showMessage('pswd','未入力','form_first');
  }
/*
  if (document.myFORM.license.value == "") {
    showMessage('license','未入力','form_first');
  }
*/
}

/**
* フォームの空欄チェック（CD配布 会員登録用）
* ブロックテンプレート内のbodyタグのonLoadで呼び出し
*/
function emptyCheckCampAdd()
{
  if (document.myFORM.email.value == "") {
    showMessage('email','未入力','form_first');
  }
  if (document.myFORM.pswd.value == "") {
    showMessage('pswd','未入力','form_first');
  }
  if (document.myFORM.birth_y.value == "") {
    if (document.myFORM.birth_m.options[document.myFORM.birth_m.selectedIndex].value == "") {
      if (document.myFORM.birth_d.options[document.myFORM.birth_d.selectedIndex].value == "") {
        showMessage('birth_dt','未選択','form_first');
      }
    }
    showMessage('pswd','未入力','form_first');
  }
  if (document.myFORM.license.value == "") {
    showMessage('license','未入力','form_first');
  }
}
