//  各種文字列チェックルーチン
var	_NO_INPUT = "をご入力下さい。";
var _NO_EMAIL = "に、メールアドレスを入力してください。";
var _NO_NUMBER = "には、数字を入力してください。";
var _NO_TEL = "には、電話番号を入力してください。\n（半角数字または（）−のみ入力できます。）";
var _NO_SEVEN = "に、半角カナが入力されています。\nカナ文字を入力するときは、全角カナを入力してください。";

//	半角カナ一覧
//	FTPアップする際は、注意してください
astrHalf=new Array('｡','｢','｣','､','･','ｦ','ｧ','ｨ','ｩ','ｪ','ｫ','ｬ','ｭ','ｮ','ｯ',
                   'ｰ','ｱ','ｲ','ｳ','ｴ','ｵ','ｶ','ｷ','ｸ','ｹ','ｺ','ｻ','ｼ','ｽ','ｾ',
                   'ｿ','ﾀ','ﾁ','ﾂ','ﾃ','ﾄ','ﾅ','ﾆ','ﾇ','ﾈ','ﾉ','ﾊ','ﾋ','ﾌ','ﾍ',
                   'ﾎ','ﾏ','ﾐ','ﾑ','ﾒ','ﾓ','ﾔ','ﾕ','ﾖ','ﾗ','ﾘ','ﾙ','ﾚ','ﾛ','ﾜ',
                   'ﾝ','ﾞ','ﾟ');

//	文字列長の取得（全角・半角ともに一文字）
function strLen(str)
{
	var i;
	var len;
	var moji;
	var xmoji;

	if (navigator.appName == "Microsoft Internet Explorer") {
		return (str.length);
	} else {
		len = 0;
		for (i = 0; i < str.length; i++) {
			moji = escape(str.charAt(i));
/* Add 2007/03/08 */
			moji = moji.replace('%u','');
			moji = moji.replace('%U','');
/* Add End */
			xmoji = eval("0x" + moji.charAt(1));
			if ((xmoji == 8) || (xmoji == 9) || (xmoji == 14) || (xmoji == 15)) {
				i++;
			}
			len++;
		}
		return (len);
	}
}

// 指定１文字取得(SJIS)
function getCharAt(str, pos)
{
	var i;
	var len;
	var moji;
	var emoji;
	var xmoji;

	if (navigator.appName == "Microsoft Internet Explorer") {
		return (str.charAt(pos));
	} else {
		len = 0;
		for (i = 0; i < str.length; i++) {
			moji = str.charAt(i);
			emoji = escape(moji);
/* Add 2007/03/08 */
			emoji = emoji.replace('%u','');
			emoji = emoji.replace('%U','');
/* Add End */
			xmoji = eval("0x" + emoji.charAt(1));
			if ((xmoji == 8) || (xmoji == 9) || (xmoji == 14) || (xmoji == 15)) {
/* Modify 2007/03/08 */
//				moji = moji + str.charAt(i + 1);
				moji = str.charAt(i + 1);
/* Modify End */
				i++;
			}
			if (pos == len) {
				break;
			}
			len++;
		}
		return (moji);
	}
}

//	半角カナが含まれているかの判定
function checkHalf(strCheck)
{
	var intHalf;
	var intStrLen;
	var intLoop;
	var intCheck;
	var strChk;


	intHalf = astrHalf.length;
	intStrLen = strLen(strCheck);
	
	for (intLoop = 0;intLoop < intStrLen;intLoop++) {
		strChk = getCharAt(strCheck, intLoop);
		for (intCheck = 0;intCheck < intHalf ;intCheck++) {
			if (strChk == astrHalf[intCheck] ) {
				return false;
			}
		}
	}
	return true;
}

// メールアドレスのチェック
function checkEMail(strCheck){
	var strnew = "";
	var booAt = false;
	var booDot = false;
	var intLen;

	intLen = strLen(strCheck);

	if (strCheck.indexOf("@") != -1) {
		booAt = true;
	} else if (strCheck.indexOf(".") != -1) {
		booDot = true;
	}
	for (var i = 0; i < intLen; i++) {
		ch = getCharAt(strCheck , i);
		if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z")
			|| (ch == "@") || (ch == ".") || (ch == "_")
			|| (ch == "-") || (ch >= "0" && ch <= "9")) {
			strnew += ch;
			if (ch == "@") {
				booAt=true;
			}
			if (ch == ".") {
				booDot=true;
			}
		}
	}
	if ((booAt == true) && (booDot == true)) {
		return true;
	} else {
		return false;
	}
}

// 電話番号のチェックのチェック
function checkTel(strCheck){
	var strnew = "";
	var booAt = false;
	var booDot = false;
	var intLen;

	intLen = strLen(strCheck);

	for (var i = 0; i < intLen; i++) {
		ch = getCharAt(strCheck , i);
		if ((ch == "("  || ch == ")" || ch == "-") == false ) {
			strnew += ch;
		}
	}

	if (isNaN(strnew) == false ) {
		return true;
	} else {
		return false;
	}

}

// 文字列入力チェック
// 機能		：入力された項目がそれぞれの指定されたタイプにより
//					正しく入力されているか判定する。
// 引数		：入力タイプ１						入力必須（true or false)
//				：入力タイプ２						入力タイプ	"E" = Ｅ−Ｍａｉｌ
//																							"N" = 数字
//																							"S" = 文字
//																							"T" = 電話番号
//				：入力チェック１					文字数（入力タイプ２が"S"の時のみ有効)
//				：項目オブジェクト
//				：項目オブジェクト名			エラー入力時に使用
//
// 戻り値	：チェックＯＫ時					true
//				：Ｏｕｔ時								Alertでメッセージを表示した後
//																	false
function checkInput(booInputType , chrInputType ,numInput, objInput , strName) 
{
	//	入力必須条件チェック
	if (strLen(objInput.value) == 0 ) {
		if (booInputType == false ) {
			//	文字がないときは何もしない
			return true;
		} else {
			//	必須条件で入力されていないときは、エラー
			alert(strName + _NO_INPUT);
			return false;
		}
	}

	//	数字項目か
	if (chrInputType == "N" ) {
		if (isNaN(objInput.value) == true ) {
			alert(strName + _NO_NUMBER);
			return false;
		}
	} else {
		if (chrInputType == "E" ) {
			//	その他確認（Ｅ−Ｍａｉｌ）
			if (checkEMail(objInput.value) == false ) {
				alert(strName + _NO_EMAIL);
				return false;
			}
		}
		if (chrInputType == "T" ) {
			//	その他確認（電話番号）
			if (checkTel(objInput.value) == false ) {
				alert(strName + _NO_TEL);
				return false;
			}
		}
		//	半角カナのチェック
		if (checkHalf(objInput.value)== false ) {
			alert(strName + _NO_SEVEN);
			return false;
		}
	}
	return true;
}

