//====================================================================
// 各種文字列変換スクリプト
//====================================================================
var cstr_hankaku = 
	" !\"#$%&'()*+,-./0123456789:;<=>?@" +
	"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`" +
	"abcdefghijklmnopqrstuvwxyz{|}~" +
	"ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰﾞﾟ､｡｢｣";
var cstr_zenkaku = 
	"　！”＃＄％＆’（）＊＋，−．／０１２３４５６７８９：；＜＝＞？＠" +
	"ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￥］＾＿‘" +
	"ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝〜" +
	"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー゛°、。「」";
var cstr_LCaseHankakuKana = "ｧｨｩｪｫｬｭｮｯｰ";
var cstr_UCaseHankakuKana = "ｱｲｳｴｵﾔﾕﾖﾂ-";

/*
'------------------------------------------------------------------------------
' 関数名	:cnvToHankaku
' 機能		:指定文字列を半角文字に変換します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 機能説明:なし
' 備考		:なし
*/
function cnvToHankaku(val) {
	var rval, chr, idx, i;

	rval = "";
	for (i = 0; i < val.length; i++) {
		chr = val.charAt(i);
		idx = cstr_zenkaku.indexOf(chr, 0);
		if (idx >= 0) { chr = cstr_hankaku.charAt(idx); }
		rval += chr;
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:cnvToZenkaku
' 機能		:指定文字列を全角文字に変換します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 機能説明:なし
' 備考		:なし
*/
function cnvToZenkaku(val) {
	var rval, chr, idx, i;

	rval = "";
	for (i = 0; i < val.length; i++) {
		chr = val.charAt(i);
		idx = cstr_hankaku.indexOf(chr, 0);
		if (idx >= 0) { chr = cstr_zenkaku.charAt(idx); }
		rval += chr;
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:cnvToUCaseHankakuKana
' 機能		:指定文字列の拗音・促音・長音半角カナを通常半角カナ文字に変換します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 機能説明:なし
' 備考		:なし
*/
function cnvToUCaseHankakuKana(val) {
	var rval, chr, idx, i;

	rval = "";
	for (i = 0; i < val.length; i++) {
		chr = val.charAt(i);
		idx = cstr_LCaseHankakuKana.indexOf(chr, 0);
		if (idx >= 0) { chr = cstr_UCaseHankakuKana.charAt(idx); }
		rval += chr;
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:Trim
' 機能		:指定文字列の前後のスペースを削除します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 機能説明:なし
' 備考		:なし
*/
function Trim(val) {
	return(val.replace(/^\s+|\s+$/g, ""));
}
/*
'------------------------------------------------------------------------------
' 関数名	:DelCRLF
' 機能		:指定文字列の改行コードを削除します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 機能説明:なし
' 備考		:なし
*/
function DelCRLF(val) {
	return(val.replace(/\x0D\x0A|\x0D|\x0A/g, ""));
}
/*
'------------------------------------------------------------------------------
' 関数名	:AddComma
' 機能		:指定文字列をカンマ付にします
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 deccnt - (入)小数部桁数
' 機能説明:なし
' 備考		:数値文字列のみ対象
*/
function AddComma(val, deccnt) {
	var rval, wk, pos, minus;

	rval = DelComma(val);
	if (IsRealFormat(rval)) {
		if (parseFloat(rval) < 0) {
			minus = "-";
			rval = rval.substring(1);
		}
		else { minus = ""; }
		pos = rval.indexOf(".", 0);
		if (pos != -1) {
			wk = rval.substring(pos);
			rval = rval.substr(0, pos);
		} else { wk = ""; }
		while (rval.length > 3) {
			wk = "," + rval.substr(rval.length - 3, 3) + wk;
			rval = rval.substr(0, rval.length - 3);
		}
		rval = minus + rval + wk;
	} else {
		rval = val;
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:DelComma
' 機能		:指定文字列からカンマを削除します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 deccnt - (入)小数部桁数
' 機能説明:なし
' 備考		:数値文字列のみ対象
*/
function DelComma(val, deccnt) {
	var rval, pos;

	rval = val;
	if (rval != "") {
		pos = rval.indexOf(",");
		while (pos != -1) {
			rval = rval.substring(0, pos) + rval.substring(pos + 1);
			pos = rval.indexOf(",");
		}
		if (IsRealFormat(rval)) { 
			rval = "" + parseFloat(rval);
		}
		else { rval = val; }
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:PaddingToDecimalCount
' 機能		:指定文字列に小数部桁数を０サプレス付加します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 deccnt - (入)小数部桁数
' 				 maxlength - (入)最大文字列長
' 機能説明:なし
' 備考		:数値文字列のみ対象
*/
function PaddingToDecimalCount(val, deccnt, maxlength) {
	var rval, pos, wk, padding_count;

	rval = val;
	if (val.length > 0 && deccnt != 0) {
		pos = rval.indexOf(".", 0);
		if (pos == -1) {
			//小数点なし
			if (val.length < (maxlength - 1)) {
				padding_count = maxlength - val.length - 1;
				if (padding_count > deccnt) { padding_count = deccnt; }
				rval = val + "." + PaddingToString("", padding_count, "0");
			}
		} else {
			//小数点あり
			if (val.length < maxlength) {
				padding_count = deccnt - (val.length - pos - 1);
				if (padding_count > 0) {
					rval = val + PaddingToString("", padding_count, "0");
				}
			}
		}
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:AddSlash
' 機能		:指定文字列をスラッシュ付にします
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 maxlength - (入)最大文字列長（4:年月 or 6:年月日）
' 機能説明:なし
' 備考		:日付文字列のみ対象
*/
function AddSlash(val, maxlength) {
	var rval, wk;

	rval = DelSlash(val);
	if (maxlength < 6) {
		if (!IsJapaneseYearMonthFormat(rval, false)) { return val; }
	} else {
		if (!IsJapaneseDateFormat(rval, false)) { return val; }
	}
	wk = "";
	while (rval.length > 2) {
		wk = "/" + rval.substr(rval.length - 2, 2) + wk;
		rval = rval.substr(0, rval.length - 2);
	}
	return rval + wk;
}
/*
'------------------------------------------------------------------------------
' 関数名	:DelSlash
' 機能		:指定文字列からスラッシュを削除します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 maxlength - (入)最大文字列長（4:年月 or 6:年月日）
' 機能説明:なし
' 備考		:日付文字列のみ対象
*/
function DelSlash(val, maxlength) {
	var rval, pos;

	rval = val;
	if (rval != "") {
		pos = rval.indexOf("/");
		while (pos != -1) {
			rval = rval.substring(0, pos) + rval.substring(pos + 1);
			pos = rval.indexOf("/");
		}
		if (maxlength < 6) {
			if (!IsJapaneseYearMonthFormat(rval, false)) { return val; }
		} else {
			if (!IsJapaneseDateFormat(rval, false)) { return val; }
		}
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:AddSlashMonthDay
' 機能		:指定文字列をスラッシュ付にします
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 maxlength - (入)最大文字列長（4:月日）
' 機能説明:なし
' 備考		:日付文字列のみ対象
*/
function AddSlashMonthDay(val, maxlength) {
	var rval, wk;

	rval = DelSlash(val);
	if (!IsMonthDayFormat(rval, false)) { return val; }
	wk = "";
	while (rval.length > 2) {
		wk = "/" + rval.substr(rval.length - 2, 2) + wk;
		rval = rval.substr(0, rval.length - 2);
	}
	return rval + wk;
}
/*
'------------------------------------------------------------------------------
' 関数名	:DelSlashMonthDay
' 機能		:指定文字列からスラッシュを削除します
' 返り値	:変換後文字列
' 引き数	:val - (入)指定文字列
' 				 maxlength - (入)最大文字列長（4:月日）
' 機能説明:なし
' 備考		:日付文字列のみ対象
*/
function DelSlashMonthDay(val, maxlength) {
	var rval, pos;

	rval = val;
	if (rval != "") {
		pos = rval.indexOf("/");
		while (pos != -1) {
			rval = rval.substring(0, pos) + rval.substring(pos + 1);
			pos = rval.indexOf("/");
		}
		if (!IsMonthDayFormat(rval, false)) { return val; }
	}
	return rval;
}
/*
'------------------------------------------------------------------------------
' 関数名	:PaddingToString
' 機能		:指定値を指定文字数の長さを持つ文字列に変換する
' 返り値	:変換後文字列
' 引き数	:val - (入)指定値
' 				 length - (入)指定文字数
' 				 fill_char - (入)埋草文字
' 機能説明:なし
' 備考		:なし
*/
function PaddingToString(val, length, fill_char) {
	var rval, padding_count, i;

	rval = "";
	switch(arguments.length) {
		case 1:
			length = rval.length;
		case 2:
			fill_char = "0";
		case 3:
			rval = val.toString();
			if (rval.length < length) {
				padding_count = length - rval.length;
				for (i = 0; i < padding_count; i++) {
					rval = fill_char + rval;
				}
			}
			break;
		default:
			alert("Error[PaddingToString]: Invalid Arguments Count !!!");
	}
	return rval;
}
/*------<< EOF >>------*/

