//
//	WebShopping Ver.5用JavaScript外部ファイル 半角文字のチェック関数群
//	■hankaku.js■
//	2000/09/05	Ver 0.05
//
//------------------------------------------------------------------
// shohin_Value_chk
// 商品コード妥当性チェック（英数字、ハイフン、アンダーバー以外を入力されたらエラー）
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 　　　：NullFlg			（I）true：未入力を許可する false：未入力をエラーとする
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function shohin_Value_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, NullFlg){
	var ret;
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//必須チェック
	if (!Null_chk(str)){
		//必須の場合はエラー
		if (NullFlg==false){
			window.alert (hyouji_name + "は必須項目です。");
			chk_flg = false;
		}
		//未入力ＯＫの場合はそのまま抜ける
		else{
			return true;
		}
	}
	else{
		// ハイフンとアンダーバーは許可する
		ret=1
		while (ret != -1){
			str = str.replace('-','0');		//ハイフン
			ret = str.indexOf('-',0);		//ハイフン
		}
		ret=1
		while (ret != -1){
			str = str.replace('_','0');		//アンダーバー
			ret = str.indexOf('_',0);		//アンダーバー
		}

		if (!Hankaku_Eisu_chk(str)){
			window.alert (hyouji_name+"は\n半角英数字、-(ハイフン)、_(アンダーバー)のいずれかで入力してください。");
			chk_flg = false;
			}
	}
	if (chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}

//------------------------------------------------------------------
// Hissu_Hankaku_chk
// 半角必須項目
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Hissu_Hankaku_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var ret;
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//----半角必須項目
	if (!Null_chk(str)){
		window.alert (hyouji_name + "は必須項目です。");
		chk_flg = false;
	}
	else if (!Hankaku_chk(str)){
		window.alert (hyouji_name + "は半角で入力してください。");
		chk_flg = false;
	}
	if (chk_flg == false){
		ret = eval(chkTarget + ".focus()");			// エラーの項目にセットフォーカス
		ret = eval(chkTarget + ".select()");		// エラーが発生した項目を選択状態にする
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ninni_Hankaku_chk
// 半角項目
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Ninni_Hankaku_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var ret;
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//----半角項目
	if (!Null_chk(str)){
	}
	else if (!Hankaku_chk(str)){
		window.alert (hyouji_name + "は半角で入力してください。");
		chk_flg = false;
	}
	if (chk_flg == false){
		ret = eval(chkTarget + ".focus()");
		ret = eval(chkTarget + ".select()");
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Hissu_Num_chk
// 半角数字必須項目
// 引数　：argFormName			（I）チェックするフォームの名前
// 　　　：argFormIndex			（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName		（I）チェックするテキストの名前
// 　　　：argTargetIndex		（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name			（I）メッセージに表示する項目の名称（"重量"など）
// 　　　：（省略可）minusflg	（I）true：マイナス符号を可 false：マイナス不可（ディフォルト）
// 　　　：（省略可）piriodflg	（I）true：ピリオドを可 false：ピリオド不可（ディフォルト）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Hissu_Num_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, minusflg, piriodflg){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget +".value");


	//----半角必須項目
	if (!Null_chk(str)){
		window.alert (hyouji_name + "は必須項目です。");
		chk_flg = false;
	}
	else if (!Num_chk(str,"",minusflg,piriodflg)){
		window.alert (hyouji_name + "は半角数字を入力してください。");
		chk_flg = false;
	}
	if (chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ninni_Num_chk
// 半角数字妥当性チェック
// 引数　：argFormName			（I）チェックするフォームの名前
// 　　　：argFormIndex			（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName		（I）チェックするテキストの名前
// 　　　：argTargetIndex		（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name			（I）メッセージに表示する項目の名称（"重量"など）
// 　　　：（省略可）minusflg	（I）true：マイナス符号を可 false：マイナス不可（ディフォルト）
// 　　　：（省略可）piriodflg	（I）true：ピリオドを可 false：ピリオド不可（ディフォルト）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Ninni_Num_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, minusflg, piriodflg){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//----数値妥当性チェック
	if (!Null_chk(str)){
	}
	else if (!Num_chk(str,"",minusflg,piriodflg)){
		window.alert (hyouji_name + "は数値を入力してください。");
		chk_flg = false;
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Hissu_KanaNum_chk
// 半角カタカナ＋半角数値妥当性＆必須チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"名義人カナ"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Hissu_KanaNum_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//---カタカナ＋数値チェック（必須）
	if (!Null_chk(str)) {
		window.alert (hyouji_name + "は必須項目です。");
		chk_flg = false;
	}
	else if (!KanaNum_chk(str)) {
		window.alert (hyouji_name + "はカタカナと英数字で入力してください。");
		chk_flg = false;
	}
	if (chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ninni_KanaNum_chk
// ＡＮＫ妥当性チェック（未入力可）
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"ＦＡＸ番号"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Ninni_KanaNum_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget +".value");

	//桁数チェック（未入力はOK）
	if (!Null_chk(str)){
	}
	//---カタカナ＋数値チェック（必須ではない）
	else if (!KanaNum_chk(str)){
		window.alert (hyouji_name + "は、\nカタカナと英数字で入力してください。");
		chk_flg = false;
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Hissu_Hankaku_Eisu_chk
// 半角英数字の必須入力チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Hissu_Hankaku_Eisu_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget +".value");

	//----半角必須項目
	if (!Null_chk(str)){
		window.alert (hyouji_name + "は必須項目です。");
		chk_flg = false;
	}
	else if (!Hankaku_Eisu_chk(str)){
		window.alert (hyouji_name + "は半角英数字で入力してください。");
		chk_flg = false;
	}
	if ( chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ninni_Hankaku_Eisu_chk
// 半角英数字の妥当性チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Ninni_Hankaku_Eisu_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget +".value");

	//----半角必須項目
	if (!Null_chk(str)){
	}
	else if (!Hankaku_Eisu_chk(str)){
		window.alert (hyouji_name + "は半角英数字と「-」と「_」で入力してください。");
		chk_flg = false;
	}
	if ( chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Hankaku_chk（メッセージなし）
// 半角チェック
//------------------------------------------------------------------
function Hankaku_chk(str){
	chk_flg = true;
	for (i=0;i<=str.length-1;i++){
		b  = str.substring(i,i+1);
		xb = escape(b);
		if(xb.length==3){
			xb2 = xb.substring(1,3);
			if((("80"<=xb2)&(xb2<"A1"))|("DF" < xb2)){	//アスキーコードによる判定(nn4.05以下）
				chk_flg=false;
				break;
			}
		}else{
			if(xb.length==6){
				f_code = xb.substring(0,2);
				if (f_code == "%u") {				  //ユニコードによる判定(ie4.x)
					xb2=xb.substring(2,6);
					if((xb2<"FF61")|("FF9F" < xb2)){
						chk_flg=false;
						break;
					}
				}else{								  //アスキーコードによる判定(nn4.05以上） 
					xb2 = xb.substring(1,3);
					if((("80"<=xb2)&(xb2<"A1"))|("DF" < xb2)){
						chk_flg=false;
						break;
					}
				}
			}else{
				if(xb.length == 4){
					xb2=xb.substring(1,3);
					if((("80"<=xb2)&(xb2<"A1"))|("DF" < xb2)){	//アスキーコードによる判定(nn4.05以上）全角数字等の対応
						chk_flg=false;
						break;
					}
				}else{ 
					if(xb.length!=1){
						window.alert("ロジックエラー");
						chk_flg = false;
						break;
					}
				}
			}
		}
	}
	return chk_flg;
}
//------------------------------------------------------------------
// KanaNum_chk（メッセージなし）
// カタカナ＋数値チェック
//------------------------------------------------------------------
function KanaNum_chk(str){
	var chk_flg = true;
	var checkOK = "　アァイィウゥエェオォカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツッヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤャユュヨョラリルレロワヲンヴー−1234567890-０１２３４５６７８９ＡａＢｂＣｃＤｄＥｅＦｆＧｇＨｈＩｉＪｊＫｋＬｌＭｍＮｎＯｏＰｐＱｑＲｒＳｓＴｔＵｕＶｖＷｗＸｘＹｙＺｚABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz． ";
	var checkStr = str;
	var allValid = true;
	var allNum = "";

	for (i = 0;	 i < checkStr.length; i++){
		ch = checkStr.charAt(i);
		for (j = 0;	 j < checkOK.length;  j++){
			if (ch == checkOK.charAt(j)){
				break;
			}
		}
		if (j == checkOK.length){
			allValid = false;
			break;
		}
		if (ch != ","){
			allNum += ch;
		}
	}
	if (!allValid){
		chk_flg= false;
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Hankaku_Eisu_chk（メッセージなし）
// 半角＋数値チェック
//------------------------------------------------------------------
function Hankaku_Eisu_chk(str){
	var chk_flg = true;
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
	var checkStr = str;
	var allValid = true;
	var allNum = "";
	for (i = 0; i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length;  j++){
			if (ch == checkOK.charAt(j)){
				break;
			}
		}
		if (j == checkOK.length){
			allValid = false;
			break;
		}
		if (ch != ","){
			allNum += ch;
		}
	}
	if (!allValid){
		chk_flg= false;
	}
	return chk_flg;
}
