/****************************************************
 *　フォーム入力チェック用関数ライブラリ（DOM＋CSS）　　　　　*
 *　 2006/09/30 (c) Ohsako, Junichi　　　　　　　　　　 *
 *　 2007/08/10 Update　　　　　　　　　　　　　　　　　　 *
 ****************************************************/

//////////  関数定義  //////////

//
// 名称：chkField()
// 機能：Form内の要素が未入力か判定する
// 引数：array = 対象テキストエレメントのid配列
// 用法：chkField(['e1','e2', ...]);
//

function chkField(array) {
  var el = array;
  var f = null;
  var message = "必ず入力をお願いします";
  for(var i = 0; i < el.length ; i++) {
    var te = document.getElementById(el[i]);
    if(isBlank(te.value)) {
      te.value = message;
      te.focus();
      te.select();
      f = 1;
    } else if (te.value == "必ず入力をお願いします") {
      te.focus();
      te.select();
      f = 1;
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：chkPostcode()
// 機能：Form内のエレメントが郵便番号形式か判定する
// 引数：array = 対象エレメントのid配列
// 用法：chkPostcode(['e1','e2', ...]);
//

function chkPostcode(array) {
  var el = array;
  var f = null;
  for (var i = 0; i < el.length ; i++) {
    var te = document.getElementById(el[i]);
    if(te.value) {
      if(!te.value.match(/\d{3}-\d{4}/g)) {
        te.style.color = "#f00";
        te.select();
        f = 1;
      } else {
      te.style.color = "black";
      }
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：chkPhone()
// 機能：Form内のエレメントが電話番号形式か判定する
// 引数：array = 対象エレメントのid配列
// 用法：chkPhone(['e1','e2', ...]);
//

function chkPhone(array) {
  var el = array;
  var f = null;
  for(var i = 0; i < el.length ; i++) {
    var te = document.getElementById(el[i]);
    if(te.value) {
      if(!te.value.match(/\d{4}\-\d{1}\-\d{4}|\d{2}\-\d{4}\-\d{4}|\d{3}\-\d{3}\-\d{4}|\d{4}\-\d{2}\-\d{4}|\d{5}\-\d{1}\-\d{4}|\d{3}\-\d{4}\-\d{4}/g)) {
        te.style.color = "#f00";
        var tmpValue = te.value;
        te.focus();
        te.select();
        te.value = tmpValue;
        f = 1;
      } else {
      te.style.color = "black";
      }
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：chkAddress()
// 機能：Form内の要素がE-mailアドレスか判定する
// 引数：array = 対象テキストエレメントのid配列
// 用法：chkField(['e1','e2', ...]);
//

function chkAddress(array) {
  var el = array;
  var f = null;
  for(var i = 0; i < el.length ; i++) {
    var te = document.getElementById(el[i]);
    if(te.value) {
      if(!te.value.match(/\b[-\w.]+@[-\w.]+\.[-\w]+\b/g)) {
        te.style.color = "#f00";
        te.focus();
        te.select();
        f = 1;
      } else {
      te.style.color = "black";
      }
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：isBlank()
// 機能：文字列が空白文字以外を含んでいればtrueを返す
// 引数：chars = 対象文字列
// 用法：isBlank("chars");
//

function isBlank(chars) {
  for(i = 0; i < chars.length; i++) {
    var c = chars.charAt(i);
    if(((c != ' ') || (c != '　')) && (c != '\n') && (c != '\t')) {
      return false;
    }
  }
  return true;
}



//
// 名称：isInt()
// 機能：文字列が半角数字以外を含んでいなければtrueを返す
// 引数：element = 対象テキストエレメントのid
// 　　　digits = 指定桁数
// 用法：isDecimal("chars");
//

function isInt (element) {
  var f = null;
  var te = document.getElementById(element);
  if(te.value) {
    if(te.value.match(/[^\d{1,}]/g)) {
      te.style.color = "#f00";
      var tmpValue = te.value;
      te.focus();
      te.select();
      te.value = tmpValue;
      f = 1;
    } else {
    te.style.color = "black";
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：isDecimal()
// 機能：文字列が指定桁数の半角数字以外を含んでいなければtrueを返す
// 引数：element = 対象テキストエレメントのid
// 　　　digits = 指定桁数
// 用法：isDecimal("chars");
//

function isDecimal (element, digits) {
  var f = null;
  var te = document.getElementById(element);
  if(te.value) {
    if(te.value.match(/[^\d{digits}]/g)) {
      te.style.color = "#f00";
      var tmpValue = te.value;
      te.focus();
      te.select();
      te.value = tmpValue;
      f = 1;
    } else {
    te.style.color = "black";
    }
  }
  if(f) {
    return false;
  } else {
    return true;
  }
}



//
// 名称：toggleDisable ()
// 機能：フォームコントロールの無効化を切り替える
// 引数：id = 対象フォームコントロールのid
// 用法：toggleDisable ("id1", "id2", "id3", "id4", "id5", ...);
//

function toggleDisable () {
  // 切り替えの連続実行
  for (var i = 0; i < arguments.length; i++) {
    if (document.getElementById(arguments[i]).disabled) {
      document.getElementById(arguments[i]).disabled = false;
    } else {
      document.getElementById(arguments[i]).disabled = true;
    }
  }
}



//
// 名称：setVisible ()
// 機能：要素の顕在化する
// 引数：id = 要素のid
// 用法：setVisible ("id1", "id2", "id3", "id4", "id5", ...);
//

function setVisible () {
  // 切り替えの連続実行
  for (var i = 0; i < arguments.length; i++) {
    document.getElementById(arguments[i]).style.display = "block";
  }
  return;
}



//
// 名称：setInvisible ()
// 機能：要素の潜在化する
// 引数：id = 対象要素のid
// 用法：setInvisible ("id1", "id2", "id3", "id4", "id5", ...);
//

function setInvisible () {
  // 切り替えの連続実行
  for (var i = 0; i < arguments.length; i++) {
    document.getElementById(arguments[i]).style.display = "none";
  }
  return;
}



//
// 名称：setValue ()
// 機能：要素の値をセットする
// 引数：id = 対象要素のid, data = セットする値
// 用法：setValue ("id", "data");
//

function setValue (id, data) {
  document.getElementById (id).value = data;
}



//
// 名称：inActive ()
// 機能：要素にフォーカスすると内容をリセットし、色を変更する
// 引数：Obj = 対象要素のオブジェクト
// 用法：inActive ("Obj");
//

var inActive =
function(Obj) {
  Obj.value = '';
  Obj.style.color = '#333';
}



// リザルトのテキストをクリア

function clearHtml () {
  document.getElementById ("result").innerHTML = "";
}