//
//	WebShopping Ver.5用JavaScript外部ファイル 入力長チェック・必須チェックなど制限長関連関数群
//	■length.js■
//	2000/09/05	Ver 0.05
//	2002/03/07	Ver 0.06 入力禁止文字チェックを追加 (v6.2.2修正個所)
//
//------------------------------------------------------------------
// Hissu_chk
// 必須チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"重量"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Hissu_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 + " is a mandatory field.");
		chk_flg = false;
	}
	if (chk_flg == false){
		str = chkTarget + ".focus()";
		str = eval(str);

		//selectタグの場合は、select()属性はないため、制御
		var type = eval(chkTarget + ".type");
		if (type.indexOf("select") < 0) {

			str = chkTarget + ".select()";
			str = eval(str);
		}
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ketasuu_chk
// 入力最大桁数チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：ketasuu			（I）有効桁数（バイト数）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ （未入力はtrueとする）
//------------------------------------------------------------------
function Ketasuu_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, ketasuu, 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 (getLength(str) > ketasuu){			
			window.alert ("The " + hyouji_name + " field can accept up to" + ketasuu + " digits in half width characters.");
			chk_flg = false;
			str = chkTarget + ".focus()";
			str = eval(str);

			//selectタグの場合は、select()属性はないため、制御
			var type = eval(chkTarget + ".type");
			if (type.indexOf("select") < 0) {

				str = chkTarget + ".select()";
				str = eval(str);
			}
		}
	}
	return chk_flg;
}
//------------------------------------------------------------------
// Ketasuu_chk
// 入力最大桁数チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：ketasuu			（I）有効桁数（バイト数）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ （未入力はtrueとする）
//------------------------------------------------------------------
function Ketasuu_chk2(argFormName, argFormIndex, argTargetName, argTargetIndex, ketasuu, 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 (getLength(str) > ketasuu){
			window.alert ("The " + hyouji_name + " field can accept up to" + ketasuu/2 + "digits in full width characters.");
			chk_flg = false;
			str = chkTarget + ".focus()";
			str = eval(str);
			str = chkTarget + ".select()";
			str = eval(str);
		}
	}
	return chk_flg;
}

//add hayashi
//------------------------------------------------------------------
// Ketasuu_chk3
// 入力最大桁数チェック
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：ketasuu			（I）有効桁数（全角半角関係なく1文字とする）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"住所"など）
// 戻り値：true チェックＯＫ　false チェックＮＧ （未入力はtrueとする）
//------------------------------------------------------------------
function Ketasuu_chk3(argFormName, argFormIndex, argTargetName, argTargetIndex, ketasuu, 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 (str.length > ketasuu){
			window.alert ("The " + hyouji_name + " field can accept up to" + ketasuu + "digits in half width characters.");
			chk_flg = false;
			str = chkTarget + ".focus()";
			str = eval(str);
			str = chkTarget + ".select()";
			str = eval(str);
		}
	}
	return chk_flg;
}
//add hayashi

//------------------------------------------------------------------
// getLength
// ターゲットのバイト数を求める
// 引数　：moji		（I）ターゲット文字列
// 戻り値：文字列のバイト数
// 備考　：機種依存文字については計算結果が保証できない。
//			半角カタカナ：ＩＥ→2バイト　　ＮＮ→1バイト
//			○つき数字　：ＩＥ→2バイト　　ＮＮ→1バイト
//			今後必要があれば対応を考える。
//------------------------------------------------------------------
function getLength(argTarget) { 
	var i,cnt = 0; 
	for(i=0; i<argTarget.length; i++) {
		if (escape(argTarget.charAt(i)).length >= 4 ) {
			cnt+=2; 
		}else{
			cnt++; 
		}
	}
	return cnt;
} 
//------------------------------------------------------------------
// Moji_chk_Original
// 入力禁止文字チェック (V6.2.2修正個所)
// 引数　：argFormName		（I）チェックするフォームの名前
// 　　　：argFormIndex		（I）チェックするフォームのインデックス（配列でないときはnullか0）
// 　　　：argTargetName	（I）チェックするテキストの名前
// 　　　：argTargetIndex	（I）チェックするテキストのインデックス（配列でないときはnullか0）
// 　　　：hyouji_name		（I）メッセージに表示する項目の名称（"重量"など）
// 　　　：okChar			（I）入力許可される文字なので、禁止文字から外す文字設定。
// 戻り値：true チェックＯＫ　false チェックＮＧ
//------------------------------------------------------------------
function Moji_chk_Original(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, okChar){
	var chk_flg = true;
	var chkTarget = makeEvalStr(argFormName, argFormIndex, argTargetName, argTargetIndex);
	var str = eval(chkTarget + ".value");

	//okCharは禁止文字から外す。
	//var moji = "!\"&';+/<>[\\]{}";
	var moji = "!\"&';+<>[\\]{}";
	if (okChar != null && okChar != "") {
		//moji = moji.replace(okChar, '');
		moji = replaceAll(moji, okChar, "");
	}

	//----入力禁止項目
	for (i=0; i<moji.length; i++){
		if (str.indexOf(moji.charAt(i),0) >= 0){
			chk_flg = false;
			break;
		}
	}

	if (chk_flg == false){
		window.alert ("You cannot use the following characters in the " + hyouji_name + " field: \n " + moji);
		str = chkTarget + ".focus()";
		str = eval(str);
		str = chkTarget + ".select()";
		str = eval(str);
	}
	return chk_flg;
}
//入力禁止文字チェック
//シングルクォーテーション(')は外してチェック
function Moji_chk_OnlySingleQuotOK(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	return Moji_chk_Original(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, '\'');
}
 
//入力禁止文字チェック
//既存のMoji_chk
function Moji_chk(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name){
	return Moji_chk_Original(argFormName, argFormIndex, argTargetName, argTargetIndex, hyouji_name, null);
}



function trim(str){   
     var leftI = 0;
     var rightI = 0;
        for(i = 0; i<str.length;i++){
            if(str.substring(i,i+1)==" " || str.substring(i,i+1)=="　"){//半角、全角
            leftI++;
            }else{
                break;
            }
        }
    str = str.substring(leftI,str.length);
        for(j=str.length; j>0;j--){
            if(str.substring(j-1,j)==" " || str.substring(j-1,j)=="　"){//半角、全角
            rightI++;
            }else{
                break;
            }
        }
  
    str = str.substring(0,str.length - rightI);
  
    return str;
}
