/* ===============================================
 * Copyright(C) 2007 KK Mediaplan Murakami Jimusyo
 * ===============================================
 * build : QWM Framework 5.0 : 2007.01.01
 * -----------------------------------------------
 * フォーム入力 検証 ver 5.0
 * ----------------------------------------------- */

// 数値
function pattern_Numeric(element, label, char)
{
  if (isNaN(element.value)) {
    if (!char) char = '数値';
    alert_Char(element, label, char);
    return false;
  }
  return true;
}

// 数値
function pattern_Number(element, label, char)
{
  if (!element.value.match(/^[0-9]+$/)) {
    if (!char) char = '半角数字';
    alert_Char(element, label, char);
    return false;
  }
  return true;
}

// アルファベット
function pattern_Alpha(element, label, char)
{
  if (!element.value.match(/^[a-zA-Z]+$/)) {
    if (!char) char = '半角英字';
    alert_Char(element, label, char);
    return false;
  }
  return true;
}

// アルファベットと数字
function pattern_Alpha_or_Number(element, label, char)
{
  if (!element.value.match(/^[0-9a-zA-Z]+$/)) {
    if (!char) char = '半角英数字';
    alert_Char(element, label, char);
    return false;
  }
  return true;
}

// 桁数制限
function pattern_InRange(element, label, min, max, char)
{
  if (min != '' && max != '') {
    if (!(element.value.length >= min && element.value.length <= max)) {
      alert(label + "は " + min + "～" + max + " 文字の" + char + "でご記入ください");
      element.focus();
      return false;
    }
    return true;
  }
  if (min != '') {
    if (!element.value.length <= min) {
      alert(label + "は " + min + " 文字以上の" + char + "でご記入ください");
      element.focus();
      return false;
    }
    return true;
  }
  if (max != '') {
    if (!element.value.length >= max) {
      alert(label + "は " + max + " 文字以下の" + char + "でご記入ください");
      element.focus();
      return false;
    }
    return true;
  }
}

// 数値の範囲
function pattern_IntInRange(element, label, min, max, char)
{
  if (!char) char = '数値';

  if (min != '' && max != '') {
    if (!(eval(element.value) >= min && eval(element.value) <= max)) {
      alert(label + "は " + min + "～" + max + " の範囲の" + char + "をご記入ください");
      element.focus();
      return false;
    }
   return true;
  }
  if (min != '') {
    if (!eval(element.value) <= min) {
      alert(label + "は " + min + " 以上の" + char + "をご記入ください");
      element.focus();
      return false;
    }
   return true;
  }
  if (max != '') {
    if (!eval(element.value) >= max) {
      alert(label + "は " + max + " 以下の" + char + "をご記入ください");
      element.focus();
      return false;
    }
   return true;
 }
}

// メールアドレス
function pattern_Email(element, label, char)
{
  if (!(pattern_Email_standard(element.value) || pattern_Email_vodafone(element.value))) {
    alert_Format(element, label, char);
    return false;
  }
  return true;
}

// メールアドレス 標準
function pattern_Email_standard(input)
{
  return input.match(/^[0-9a-zA-Z]+([.0-9a-zA-Z_-])*@[0-9a-zA-Z]+([.0-9a-zA-Z_-])*(\.[a-zA-Z]{2,6}){1,3}$/i);
}

// メールアドレス vodafone
function pattern_Email_vodafone(input)
{
  return input.match(/^[\/?+.0-9a-zA-Z_-]+@([a-zA-Z]\.vodafone\.ne\.jp|jp-[a-zA-Z]\.ne\.jp)$/i);
}

// URL
function pattern_URL(element, label, char)
{
  if (!element.value.match(/^(http(s)?:\/\/[\!-;\=\?-\~]+)$/i)) {
    alert_Format(element, label, char);
    return false;
  }
  return true;
}

// 電話番号
function pattern_Telnumber(element, label, char)
{
  // Q2
  if (element.value.match(/^0990/)) {
    alert(label + "にはダイヤルＱ２の番号を指定できません");
    element.focus();
    return false;
  }

  var number = element.value.replace(/-/g, '');

  if (element.value.match(/^\d+(-)?\d+(-)?\d+$/) && (
    // 携帯電話・IP電話
    number.match(/^0[7895]0\d{8}$/) ||
    // フリーダイアル
    number.match(/^(0120|0800)\d{6}$/) ||
    // 固定電話
    number.match(/^0\d{8,9}$/) ||
    // 公共電話
    number.match(/^0\d{1,5}(-)?\d{3}$/)
   )
  ) return true;

  alert_Format(element, label, char);
  return false;
}

// 郵便番号
function pattern_Zipcode(element, label, char)
{
  if (!element.value.match(/^\d{3}(-)?\d{4}$/)) {
    alert_Format(element, label, char);
    return false;
  }
  return true;
}

// 日付
function pattern_Date(element, label, char)
{
  if (!element.value.match(/^\d{4}[./-]?\d{1,2}[./-]?\d{1,2}( \d{2}:\d{2})*$/)) {
    alert_Format(element, label, char);
    return false;
  }
  return true;
}

// 年
function pattern_Year(element, label)
{
  if (!pattern_Number(element, label)) return false;

  var now = new Date();
  var min = now.getFullYear() - 150;
  var max = now.getFullYear() + 150;

  return pattern_IntInRange(element, label, min, max);
}

// 月
function pattern_Month(element, label, char)
{
  if (!pattern_Number(element, label)) return false;

  return pattern_IntInRange(element, label, 1, 12);
}

// 日
function pattern_Day(element, label, char)
{
  if (!pattern_Number(element, label)) return false;

  return pattern_IntInRange(element, label, 1, 31);
}

// 金額
function pattern_Money(element, label, char)
{
  if (!element.value.match(/^[0-9,\.]+$/)) {
    alert_Format(element, label, char);
    return false;
  }
  return true;
}

// 必須項目 Radio/Checkbox
function isChecked(element)
{
  var checked = false;

  for (var i = 0; i < element.length; i++) {
    if (element[i].checked) {
      checked = true;
      break;
    }
  }

  if (!checked) return false;

  return true;
}

// Alert:必須項目
function alert_Blank(element, label)
{
  alert(label + "は必須項目です");
  element.focus();
}

// Alert:未選択
function alert_NotChecked(element, label)
{
  alert(label + "を選択してください");
  element[0].focus();
  return false;
}

// Alert:未選択 select
function alert_NotSelected(element, label)
{
  alert(label + "を選択してください");
  element.focus();
  return false;
}

// Alert:フォーマット
function alert_Format(element, label, char)
{
  var message = label + "の形式をご確認ください";

  if (char != '') message += ('\n' + char);

  alert(message);
  element.focus();
}

// Alert:文字種
function alert_Char(element, label, char)
{
  alert(label + "に" + char + "以外の文字が含まれています");
  element.focus();
}


