/********************************************************************************/
/* ENTER・TABキー動作制御                                                       */
/********************************************************************************/
function tab_press(id){
	if((event.keyCode == 13) || (event.keyCode == 9)){
		for(i=0;i<enter_tbl.length;i++){
			if (enter_tbl[i] == id.name){
				if (i == enter_tbl.length - 1){
					i = 0;
				}
				else{
					i = i + 1;
				};
				
				if (eval('document.forms[0].' + enter_tbl[i] + '.disabled')==true || eval('document.forms[0].' + enter_tbl[i] + '.readOnly')==true){
					for(n=i;n<enter_tbl.length;n++){
/*
						if (eval('document.forms[0].' + enter_tbl[n] + '.disabled')==false && eval('document.forms[0].' + enter_tbl[n] + '.readOnly')==false){
							i=n;
							break;
						};
*/
						if(eval('document.forms[0].' + enter_tbl[n] + '.disabled')==false){
							if (eval('document.forms[0].' + enter_tbl[n] + '.type')=='text' || eval('document.forms[0].' + enter_tbl[n] + '.type')=='textarea'){
								if(eval('document.forms[0].' + enter_tbl[n] + '.readOnly')==false){
									i=n;
									break;
								};
							}else{
								i=n;
								break;
							};
						};

					};
				};
				eval('document.forms[0].' + enter_tbl[i] + '.focus()');
/*
				if(event.keyCode==9){
*/
					event.returnValue=false;

/*
				};
*/
				break;
			};
		};
	};
};


function press(){
	if(event.keyCode==13){
		event.keyCode=0;
	};
};

var focus_id = '';
/* フォーカス時 */
function Box_Focus(id){
	focus_id = id.name;
	id.runtimeStyle.backgroundColor = '#FFBFDF';
	if(eval('document.forms[0].' + focus_id + '.type')=='text'){
		eval('document.forms[0].' + focus_id + '.select()');
	};

};

/* 数値項目へのフォーカス時 */
function Box_Focus_Num(id){
	id.value = Rm_Comma(id.value);
	Box_Focus(id);
};

/* ロストフォーカス時 */
function Box_Blur(id){
	id.runtimeStyle.backgroundColor = id.style.backgroundColor;
	focus_id = id.name;
};

/* 数値項目のロストフォーカス時 */
function Box_Blur_Num(id, format, comma){
	id.value = Rm_Comma(id.value);
	number_format(id, format, comma);
	id.runtimeStyle.backgroundColor = id.style.backgroundColor;
};

/* 数値項目のロストフォーカス時、数値以外はブランク  2005.4.27*/
function Box_Blur_Num_Blank(id, format, comma){
	if (Trim(id.value) == '' || isNaN(id.value)){
		id.value = '';
	} else{
		id.value = Rm_Comma(id.value);
		number_format(id, format, comma);
	};
	id.runtimeStyle.backgroundColor = id.style.backgroundColor;
};

/* 数値項目のフォーマット */
function number_format(id, format, comma){
/*
	id		:対象オブジェクト
	format	:表示フォーマット
			 '9'…整数部で指定可能。頭0は削除
			 ※整数部に1つでも'9'があれば、入力値のオーバーフローなし。また、頭0詰め機能は動作しない。
			 '.'…小数点の位置
			 '0'…整数部/小数点部で指定可能。0埋め込み
	comma  :1000の位カンマの表示有無
			 '1'…表示
			 '0'…非表示
*/
	/* 整数部のフォーマット取得 */
	if(format.indexOf('.', 0) != -1) {
		/* 整数部フォーマット */
		var Int_format = format.substring(0, format.indexOf('.', 0));
		/* 小数部のフォーマット */
		var Small_format = format.substring(format.indexOf('.', 0) + 1, format.length);
	}
	else {
		var Int_format = format;
		var Small_format = '';
	};
	/* 先頭0の除去 */
	var In_Data = StripHeadZero(id.value);
	if(In_Data.indexOf('.', 0) != -1) {
		/* 値の整数部 */
		var Int_value = In_Data.substring(0, In_Data.indexOf('.', 0));
		/* 値の小数部 */
		var Small_value = In_Data.substring(In_Data.indexOf('.', 0) + 1, In_Data.length);
	}
	else {
		var Int_value = In_Data;
		var Small_value = '';
	};

	/* マイナス値チェック、数値チェック（数値以外の場合は、０に置換）*/
	if(Int_format.indexOf('9', 0)!=-1){
		var minus = id.value.indexOf('-', 0);

		if(isNaN(Int_value)==true){
			Int_value=0;
		};
		if(isNaN(Small_value)==true){
			Small_value = '';
			for(i=0; i < Small_format.length; i++){
				Small_value = Small_value + '0';
			};
		};
	}else{
		var minus = -1;
	};

	/* 整数部の処理 */
	var w_Int_value = '';
	var cm_cnt = 0;
	var i = 0;
	if(Int_format.indexOf('9', 0) < 0){
		/* formatに'9'が含まれていなければ、formatの文字数分を頭0をつけて出力 */
		var j = Int_value.length -1;
		for(i=Int_format.length; i > 0 ;i--){
			if (j >= 0){
				/* カンマ付加 */
				if(comma == '1' && cm_cnt != 0 && (cm_cnt % 3) == 0){
					w_Int_value = ',' + w_Int_value;
				};
				w_Int_value = Int_value.substring(j, j + 1) + w_Int_value;
				cm_cnt = cm_cnt + 1;
			}
			else{
				w_Int_value = '0' + w_Int_value;
			};
			j = j - 1;
		};
	}
	else{
		/* formatに'9'が含まれてれば、全ての値を出力(頭ゼロなし) */
		Int_value = StripHeadZero(Int_value);
		/*先頭の-をカット*/
		if(Int_value.substring(0,1)=='-'){
			Int_value = Int_value.substring(1,Int_value.length);
		};
		if(Int_value.length==0){
			Int_value = '0';
		};
		for(i=Int_value.length - 1; i >= 0 ;i--){
			/* カンマ付加 */
			if(comma == '1' && cm_cnt != 0 && (cm_cnt % 3) == 0){
				w_Int_value = ',' + w_Int_value;
			};
			w_Int_value = Int_value.substring(i, i + 1) + w_Int_value;
			cm_cnt = cm_cnt + 1;
		};
	};

	/* 小数部の処理 */
	if ((Small_format.length - Small_value.length) > 0){
		var w_Small_value = Small_value;
		for(i=0; i < (Small_format.length - Small_value.length); i++){
			w_Small_value = w_Small_value + '0';
		};
	}
	else {
		var w_Small_value = '';
		for(i=0; i < Small_format.length; i++){
			w_Small_value = w_Small_value + Small_value.charAt(i);
		};
	};

	if(Small_format.length > 0){
		w_Int_value = w_Int_value + '.' + w_Small_value;
	};

	/* マイナス値の場合 */
	if(minus==0){
		if(w_Int_value!=0){
			w_Int_value = '-' + w_Int_value;
		};
	};

	id.value= w_Int_value;
};

function StripHeadZero(n){
	var m = '';
	var flg = 0;
	var i = 0;
	for(i=0; i < n.length; i++){
		chr = n.charAt(i);
		if(flg == 1){
			m = m + chr;
		}
		else if(chr == '.'){
			if(m.length == 0){
				m = '0.';
			}
			else {
				m = m + chr;
			};
			flg = 1;
		}
		else if (chr != '0'){
		/*else if (chr >= '1' && chr <= '9'){*/
			flg = 1;
			m = m + chr;
		};
	};
	return m;
};

/* カンマを取り除iいて、値を返す */
function Rm_Comma(id){
	/* id :文字列を指定 */
	var org = id;
	var buff = '';
	var i = 0;
	for(i=0; i < org.length; i++){
		if(org.charAt(i) != ','){
			buff = buff + org.charAt(i);
		};
	};
	return buff;
};

/* カンマを付ける */
function addComma(id){
	str = ''+id;
	cnt = 0;
	n   = '';
	for (i=str.length-1; i>=0; i--)	{
		n = str.charAt(i) + n;
		cnt++;
		if (((cnt % 3) == 0) && (i != 0)) n = ','+n;
	};
	return n;
};

/********************************************************************************/
/* 月末日を返す									*/
/*	Input:										*/
/*		year:年（指定されていない場合は今年）	*/
/*		month:月（指定されていない場合は今月）	*/
/*	Output:										*/
/*		day:日									*/
/********************************************************************************/
function MonthDayCount(year, month){
	var today = new Date();
	if(year == ''){
		year = today.getFullYear();
	};
	if(month == ''){
		month = today.getMonth() + 1;
	};
	/* 閏年：年が４で割り切れ、かつ１００で割り切れない年
	   しかし、４００で割り切れたら閏年 */
	var uruu = 0;
	if( year == Math.floor( year / 4 ) * 4 ){
		if( !( year == Math.floor( year / 100 ) * 100 ) ){
			uruu = 1;
		}else{
			if( year == Math.floor( year / 400 ) * 400 ){
				uruu = 1;
			};
		};
	};

	/* 対象月の月末日を求める */
	var month_daycount = 0;
	if( month == 2 ){
		month_daycount = uruu + 28;
	}else{
		if( month == 4 || month == 6 || month == 9 || month ==11 ){
			month_daycount = 30;
		}else{
			month_daycount = 31;
		};
	};

	return month_daycount;
};

/********************************************************************************/
/* メッセージ結合処理 2004.12.10 Y.Hida		*/
/*	Input:									*/
/*		Msg:メッセージ							*/
/*		AddMsg:新たに加えるメッセージ					*/
/*	Output:									*/
/*		Msg:メッセージ							*/
/********************************************************************************/
function MsgJoin(Msg, AddMsg){
	if(Msg != ''&&AddMsg != ''){
		Msg = Msg+ '\n';
	};
	Msg = Msg + AddMsg;

	return Msg;
};

/********************************************************************************/
/* 入力文字の両側空白カット・全角対応 2004.12.13 Y.Hida		*/
/*	Input:									*/
/*		strTemp:入力文字							*/
/*	Output:									*/
/*		strReturn:両側空白カット後の文字列							*/
/********************************************************************************/
function Trim(strTemp){
	var strRet, strFinal;
	/* LTRIM */
	strRet = LTrim(strTemp);
	/* RTRIM */
	strReturn = RTrim(strRet);

	return strReturn;
};

/********************************************************************************/
/* 入力文字の右側空白カット・全角対応 2004.12.13 Y.Hida		*/
/*	Input:									*/
/*		strTemp:入力文字							*/
/*	Output:									*/
/*		strReturn:右側空白カット後の文字列							*/
/********************************************************************************/
function RTrim(strTemp){
	var nLoop = 0;
	var strReturn = strTemp;
	while (nLoop < strTemp.length){
		if((strReturn.substring(strReturn.length - 1, strReturn.length) == " ") || (strReturn.substring(strReturn.length - 1, strReturn.length) == "　")){
			strReturn = strTemp.substring(0, strTemp.length - (nLoop + 1));
		}else{
			break;
		}
		nLoop++;
	}
	return strReturn;
};

/********************************************************************************/
/* 入力文字の左側空白カット・全角対応 2004.12.13 Y.Hida		*/
/*	Input:									*/
/*		strTemp:入力文字							*/
/*	Output:									*/
/*		strReturn:左側空白カット後の文字列							*/
/********************************************************************************/
function LTrim(strTemp){
	var nLoop = 0;
	var strReturn = strTemp;
	while (nLoop < strTemp.length)
	{
		if ((strReturn.substring(0, 1) == " ") || (strReturn.substring(0, 1) == "　")){
			strReturn = strTemp.substring(nLoop + 1, strTemp.length);
		}else{
			break;
		};
		nLoop++;
	};
	return strReturn;
};

/********************************************************************************/
/* 四捨五入（有効桁数指定） 2005.03.09 I.Yamamoto		*/
/*	Input:															*/
/*		p_num:対象（数値）									*/
/*		p_precision:有効桁数（数値）						*/
/*	Output:															*/
/*		有効桁数まで四捨五入した数値						*/
/********************************************************************************/
function round_to(p_num, p_precision){
	var res_num = '';

	/* 数値以外の場合、nullを返す */
	if(isNaN(p_num) || isNaN(p_precision)){
		return res_num;
	};

	/* 有効桁数に少数点があったら、四捨五入して整数にする */
	p_precision = Math.round(p_precision);

	if (p_precision>0){
		/* 正数の場合 */
		var pow_num = Math.pow(10, p_precision);
		var res_num = Math.round(p_num * pow_num) / pow_num;
	} else {
		/* 負数の場合 */
		var pow_num = Math.pow(10, Math.abs(p_precision));
		var res_num = Math.round(p_num / pow_num) * pow_num;
	};

	return res_num;
};
function TabMove(FormNm,thisObj){
	/* input変数の数 */
	var AllCount = new Number(document.forms[FormNm].length);
	/* 自分の位置 */
	var MyObjNm = 0;
	/* 次のfocus当てる位置 */
	var NextObjNm = 0;
	var FirstObjNm = -1;
	var Focus_Flg=0;
	if ((event.keyCode == 13) || (event.keyCode == 9)) {
		/* 自分の位置を知る */
		for(ObjNm=0; ObjNm<AllCount; ObjNm++){
			if(document.forms[FormNm].elements[ObjNm].name==thisObj){
				MyObjNm = ObjNm;
			};
			/* 最初の位置を知る */
			if(FirstObjNm == -1){
				var EleType = document.forms[FormNm].elements[ObjNm].type;
				switch(EleType){
					case 'text':
						if (document.forms[FormNm].elements[ObjNm].readOnly==true){
							break;
						}else{
							FirstObjNm = ObjNm;
							break;
						};
					case 'hidden':
						break;
					case 'password':
						FirstObjNm = ObjNm;
						break;
					case 'select-one':
						FirstObjNm = ObjNm;
						break;
					case 'select-multiple':
						FirstObjNm = ObjNm;
						break;
					case 'radio':
						FirstObjNm = ObjNm;
						break;
					case 'checkbox':
						if (document.forms[FormNm].elements[ObjNm].disabled){
							break;
						}else{
							FirstObjNm = ObjNm;
							break;
						};
					case 'textarea':
						break;
					case 'file':
						FirstObjNm = ObjNm;
						break;
					case 'button':
						break;
				};
			};
		};
		/* 次の位置を知る */
		for(ObjNm=MyObjNm; ObjNm<AllCount; ObjNm++){
			/* 自分の位置に1を足したものが(elements[0]から始まるので)input変数の数と同じなら最初に戻る */
			if((ObjNm+1)==AllCount){
				NextObjNm=0;
			}else{
				NextObjNm=ObjNm+1;
			};
			var EleType = document.forms[FormNm].elements[NextObjNm].type;
			switch(EleType){
				case 'text':
					if (document.forms[FormNm].elements[NextObjNm].readOnly==true){
						break;
					}else{
						Focus_Flg=1;
						break;
					};
				case 'hidden':
					break;
				case 'password':
					Focus_Flg=1;
					break;
				case 'select-one':
					Focus_Flg=1;
					break;
				case 'select-multiple':
					Focus_Flg=1;
					break;
				case 'radio':
					Focus_Flg=1;
					break;
				case 'checkbox':
					if (document.forms[FormNm].elements[NextObjNm].disabled){
						break;
					}else{
						Focus_Flg=1;
						break;
					};
				case 'textarea':
					Focus_Flg=1;
					break;
				case 'file':
					Focus_Flg=1;
					break;
				case 'button':
					break;
			};
			if (Focus_Flg==1){
				break;
			};
		};
		if (Focus_Flg==1){
			document.forms[FormNm].elements[NextObjNm].focus();
		}else{
			if(FirstObjNm!=-1){
				document.forms[FormNm].elements[FirstObjNm].focus();
			};
		};
	};
};

