/*┌─────────────────────────────┐
  │  妥当性確認チェック                                      │
  │  Copyright(C)  http://www.aqualeaf.co.jp                 │
  └─────────────────────────────┘*/

/* テキストが空白の場合 */
function TextCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.value == "") {
		window.alert(MSG);
		F.focus();
		return false;
	}
}

/* セレクトが選択されていない場合 */
function SelectCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.selectedIndex < 0) {
		window.alert(MSG);
		F.focus();return false;
	}
	if (F.options[F.selectedIndex].value == "") {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* チェックボックスが選択されていない場合 */
function CheckBoxCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.checked == false) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* ラジオボタンが選択されていない場合 */
function RadioCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	var Valid = false;
	for (var i=0; i<F.length; i++) {
		if (F[i].checked) {
			Valid = true;
		}
	}
	if (Valid == false) {
		window.alert(MSG);
		F[0].focus();
		return false;
	}
}

/* 半角数字のみ */
function NumericCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.value.match(/[^0-9]/g)) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* 半角英数字のみ */
function AlphamericCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.value.match(/[^0-9a-zA-Z]/g)) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* メールアドレスの検証 */
function EmailCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	check = F.value.match(/^[\w._-]+@[\w._-]+\.[-\w]+$/);
	if (!check) {
		window.alert(MSG);
		F.focus();
		return false
	}
}

/* ＵＲＬの検証 */
function UrlCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	check = F.value.match(/^(http|https)\:\/\/\S+\.\S+$/);
	if (!check) {
		window.alert(MSG);
		F.focus();
		return false
	}
}

/* ユーザーＩＤなど(半角英数字と.と_と-はＯＫ) */
function UseridCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.value.match(/[^0-9a-zA-Z@!._-]/g)) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* 電話番号と郵便番号(半角数字と()と-はＯＫ) */
function PhonePostalCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	if (F.value.match(/[^0-9()-]/g)) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* 値が異なる場合 */
function EqCheck(FN,FN2,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	F2 = document.forms[FORM].elements[FN2];
	if (F.value != F2.value) {
		window.alert(MSG);
		F.focus();
		return false;
	}
}

/* 値のバイト数 */
function LengthCheck(FN,MSG,FORM,LENG1,LENG2) {
	F = document.forms[FORM].elements[FN];
	if (F.value.length < LENG1 || F.value.length > LENG2) {
		window.alert(MSG);
		F.focus();return false;
	}
}

/* 全角でない場合(全角のみＯＫにする場合) */
function ZenkakuCheck(FN,MSG,FORM) {
	F = document.forms[FORM].elements[FN];
	for (var i = 0; i < F.value.length; ++i) {
		c = F.value.charCodeAt(i);
		if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) {
			window.alert(MSG);
			F.focus();
			return false;
		}
	}
}

/**********************************************************************
 *  全角英数字・記号を半角に置換
 *  Copyright (c) 2003 AOK <soft@aokura.com>
 **********************************************************************/
function z2h_ascii(src) {
    var str = new String;
    var len = src.length;
    for (var i = 0; i < len; i++) {
        var c = src.charCodeAt(i);
        if (c >= 65281 && c <= 65374 && c != 65340) {
            str += String.fromCharCode(c - 65248);
        } else if (c == 8217) {
            str += String.fromCharCode(39);
        } else if (c == 8221) {
            str += String.fromCharCode(34);
        } else if (c == 12288) {
            str += String.fromCharCode(32);
        } else if (c == 65507) {
            str += String.fromCharCode(126);
        } else if (c == 65509) {
            str += String.fromCharCode(92);
        } else {
            str += src.charAt(i);
        } 
    }
    return str;
}

/**********************************************************************
 *  半角カナと全角ひらがなを全角カタカナに統一
 *  Copyright (c) 2003 AOK <soft@aokura.com>
 **********************************************************************/
var zen_table = new Array(
    "。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ",
    "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ",
    "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ",
    "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ",
    "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ",
    "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ",
    "ン", "゛", "゜"
);
function iskana(c)   { return (c >= 65377 && c <= 65439); }
function is_ka_to(c) { return (c >= 65398 && c <= 65412); }
function is_ha_ho(c) { return (c >= 65418 && c <= 65422); }
function is_hira(c)  { return ((c >= 12353 && c <= 12435) || c == 12445 || c == 12446); }

function toZenKata(src) {
    var i, code, next;
    var str = new String;
    var len = src.length;
    for (i = 0; i < len; i++) {
        var c = src.charCodeAt(i);
        if (iskana(c)) {
            code = zen_table[c - 65377];
            if (i < len - 1) {
                next = src.charCodeAt(i+1);
                if (next == 65438 && c == 65395) {
                    code = "ヴ";
                    i++;
                } else if (next == 65438 && (is_ka_to(c) || is_ha_ho(c))) {
                    code = String.fromCharCode(code.charCodeAt(0)+1);
                    i++;
                } else if (next == 65439 && is_ha_ho(c)) {
                    code = String.fromCharCode(code.charCodeAt(0)+2);
                    i++;
                }
            }
            str += code;
        } else if (is_hira(c)) { 
            str += String.fromCharCode(c + 96);
        } else {
            str += src.charAt(i);
        }
   }
   return str;
}

/**********************************************************
 *  全角英数字（+ ＿）⇔ 半角英数字（+ _）
 *  Copyright (c) 2005 AOK <soft@aokura.com>
 **********************************************************/

/* 全角英数字を半角英数字に置換する */
function z2h_word(src) {
  return src.replace(/([Ａ-Ｚａ-ｚ０-９＿])/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) - 65248);
    });
}

/* 半角英数字を全角英数字に置換する */
function h2z_word(src) {
  return src.replace(/(\w)/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) + 65248);
    });
}
