/*
 * MosP - Mind Open Source Project         http://www.mosp.jp/
 * Copyright (C) 1987-2009 MIND Co., Ltd.  http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
var objBankCode;
var objBankName;
var objBranchCode;
var objBranchName;
/**
 * 画面読込時追加処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function onLoadExtra() {
	// 項目背景色設定
	setFieldsBgColor(ARY_FIELDS_ID,     COLOR_FIELD_NORMAL );
	setFieldsBgColor(ARY_ERR_FIELDS_ID, COLOR_FIELD_ERROR  );
	// 項目長設定
	setMaxLength(PRM_TXT_BANK_CODE , LEN_BANK_CODE   );
	setMaxLength(PRM_TXT_BANK_NAME , LEN_BANK_NAME   );
	setMaxLength(PRM_TXT_BANK_KANA , LEN_BANK_KANA   );
	setMaxLength(PRM_TXT_BRANCH_CODE , LEN_BRANCH_CODE );
	setMaxLength(PRM_TXT_BRANCH_NAME , LEN_BRANCH_NAME );
	setMaxLength(PRM_TXT_BRANCH_KANA , LEN_BRANCH_KANA );
	
	setMaxLength(PRM_TXT_SEARCH_BANK_CODE  , LEN_BANK_CODE   );
	setMaxLength(PRM_TXT_SEARCH_BANK_KANA  , LEN_BANK_KANA   );
	setMaxLength(PRM_TXT_SEARCH_BRANCH_CODE, LEN_BRANCH_CODE );
	setMaxLength(PRM_TXT_SEARCH_BRANCH_KANA, LEN_BRANCH_KANA );
	
	// 一覧背景色設定
	setTableColor("list");
	// 登録/更新判定
	if (MODE == 0) {
		setDisabled("btn2", true);
		setDisabled("btn4", true);
		setConditionButtons();
		// フォーカス設定
		setFocus(PRM_TXT_BANK_CODE);
	} else if (MODE == 1) {
		setDisabled("btn1", true);
		setDisabled("btn3", true);
		setConditionButtons();
		// 読取専用設定
		setReadOnly(PRM_TXT_BANK_CODE  , true);
		setReadOnly(PRM_TXT_BRANCH_CODE, true);
		// フォーカス設定
		setFocus(PRM_TXT_BANK_NAME);
	} else if (MODE == 2) {
		setDisabled("btn1", true);
		setDisabled("btn4", true);
		setConditionButtons();
		// 読取専用設定
		setReadOnly(PRM_TXT_BANK_CODE  , true);
		// フォーカス設定
		setFocus(PRM_TXT_BRANCH_CODE);
	}
}

/**
 * ファイル選択
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function onclickSelectFile() {
	try {
		getObject(PRM_FIL_PAYMENT).click();
	} catch (e) {
		handleException(e);
	}
}

/**
 * ファイル変更時処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function onChangeFile() {
	try {
		// 値コピー
		copyValue(PRM_FIL_PAYMENT, "txtFile");
	} catch (e) {
		handleException(e);
	}
}


/**
 * サーバー通信処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function submitForm1(objForm) {
	// 入力チェック
	if (validate()) {
	// サーバー通信(入力エラー無の場合)
		if (MODE == 0) {
			doSubmitMessage(objForm, 'U5281', 'QC0001', '');
		} else if (MODE == 1) {
			doSubmitMessage(objForm, 'U5281', 'QC0001', '');
		} else if (MODE == 2) {
			doSubmitMessage(objForm, 'U5281', 'QC0001', '');
		}
	}
	
	//if (validate()) {
	//	if (MODE == 0) {
	//		doSubmit(objForm, 'U5288');
	//	}
	//}
	//if (MODE == 1) {
	//	if (validate1()) {
	// サーバー通信(入力エラー無の場合)
	//		doSubmitMessage(objForm, 'U5281', 'QC0001', '');
	//	} 
	//} else if (MODE == 2) {
	//	if (validate1()) {
	//		doSubmitMessage(objForm, 'U5281', 'QC0001', '');
	//	}
	//} 
}

/**
 * サーバー通信処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function submitForm2(objForm) {
	// 入力チェック
	if (validate()) {
		// サーバー通信(入力エラー無の場合)
		if (MODE == 0) {
			doSubmitMessage(objForm, 'U5282', 'QC0001', '');
		} else if (MODE == 1) {
			doSubmitMessage(objForm, 'U5282', 'QC0001', '');
		} else if (MODE == 2) {
			doSubmitMessage(objForm, 'U5282', 'QC0001', '');
		}
	}
}

/**
 * サーバー通信処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function submitForm3(objForm) {
	// 入力チェック
	if (validate2()) {
		// サーバー通信(入力エラー無の場合)
		if (MODE == 0) {
			doSubmitMessage(objForm, 'U5283', 'QC0001', '');
		} else if (MODE == 1) {
			doSubmitMessage(objForm, 'U5283', 'QC0001', '');
		} else if (MODE == 2) {
			doSubmitMessage(objForm, 'U5283', 'QC0001', '');
		}
	}
	//if (MODE == 0) {
	//	doSubmit(objForm, 'U5283');
	//} else if (MODE == 1) {
	//	if (validate2()) {
		// サーバー通信(入力エラー無の場合)
	//		doSubmitMessage(objForm, 'U5283', 'QC0001', '');
	//	}
	//} else if (MODE == 2) {
	//	if (validate2()) {
	//		doSubmitMessage(objForm, 'U5283', 'QC0001', '');
	//	}
	//}
}

/**
 * サーバー通信処理
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function submitForm4(objForm) {
	// 入力チェック
	if (validate2()) {
		// サーバー通信(入力エラー無の場合)
		if (MODE == 0) {
			doSubmitMessage(objForm, 'U5284', 'QC0001', '');
		} else if (MODE == 1) {
			doSubmitMessage(objForm, 'U5284', 'QC0001', '');
		}else if (MODE == 2) {
			doSubmitMessage(objForm, 'U5284', 'QC0001', '');
		}
	}
}

function submitForm6(objForm) {
	// 入力チェック
	if (validate3()) {
		// サーバー通信(入力エラー無の場合)
			doSubmit(objForm, 'U5288');
	}
}


/**
 * 入力チェック(Bank)
 * @param 無し
 * @return チェック結果(true：OK、false：NG)
 * @throws 実行時例外
 */
function validate() {
	// フィールド背景色設定
	setFieldsBgColor(ARY_FIELDS_ID, COLOR_FIELD_NORMAL);
	// 入力チェック
	var aryMessage = new Array();
	// 半角変換
	convSbSpace(PRM_TXT_BANK_KANA);
	convSbKana (PRM_TXT_BANK_KANA);
	convSbSpace(PRM_TXT_SEARCH_BANK_KANA);
	convSbKana (PRM_TXT_SEARCH_BANK_KANA);

	// 必須確認
	checkRequired(PRM_TXT_BANK_CODE , NAM_BANK_CODE , aryMessage);
	// コード確認
	//checkCode(PRM_TXT_BANK_CODE , NAM_BANK_CODE , aryMessage);
	// 文字列長確認
	checkLength(PRM_TXT_BANK_CODE, NAM_BANK_CODE, aryMessage );
	checkLength(PRM_TXT_BANK_NAME, NAM_BANK_NAME, aryMessage );
	checkLength(PRM_TXT_BANK_KANA, NAM_BANK_KANA, aryMessage );
	// 数字確認
	checkNumeric(PRM_TXT_BANK_CODE, NAM_BANK_CODE, aryMessage);
	if (aryMessage.length == 0) {
		return true;
	} else {
		showMessage(aryMessage);
		return false;
	}
}

/**
 * 入力チェック(Branch)
 * @param 無し
 * @return チェック結果(true：OK、false：NG)
 * @throws 実行時例外
 */
function validate2() {
	// フィールド背景色設定
	setFieldsBgColor(ARY_FIELDS_ID, COLOR_FIELD_NORMAL);
	// 入力チェック
	var aryMessage = new Array();
	// 半角変換
	convSbSpace(PRM_TXT_BRANCH_KANA);
	convSbKana (PRM_TXT_BRANCH_KANA);
	convSbSpace(PRM_TXT_SEARCH_BANK_KANA);
	convSbKana (PRM_TXT_SEARCH_BANK_KANA);
	
	// 必須確認
	checkRequired(PRM_TXT_BANK_CODE , NAM_BANK_CODE, aryMessage);
	checkRequired(PRM_TXT_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	// コード確認
	//checkCode(PRM_TXT_BANK_CODE , NAM_BANK_CODE  , aryMessage);
	//checkCode(PRM_TXT_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	// 文字列長確認
	checkLength(PRM_TXT_BANK_CODE , NAM_BANK_CODE  , aryMessage);
	checkLength(PRM_TXT_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	checkLength(PRM_TXT_BRANCH_NAME, NAM_BRANCH_NAME, aryMessage);
	checkLength(PRM_TXT_BRANCH_KANA, NAM_BRANCH_KANA, aryMessage);
	// 数字確認
	checkNumeric(PRM_TXT_BANK_CODE , NAM_BANK_CODE  , aryMessage);
	checkNumeric(PRM_TXT_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	if (aryMessage.length == 0) {
		return true;
	} else {
		showMessage(aryMessage);
		return false;
	}
}

function validate3() {
	// 入力チェック
	var aryMessage = new Array();
	convSbSpace(PRM_TXT_SEARCH_BANK_KANA);
	convSbKana (PRM_TXT_SEARCH_BANK_KANA);
	convSbSpace(PRM_TXT_SEARCH_BRANCH_KANA);
	convSbKana (PRM_TXT_SEARCH_BRANCH_KANA);
	// 文字列長確認
	checkLength(PRM_TXT_SEARCH_BANK_CODE  , NAM_BANK_CODE  , aryMessage);
	checkLength(PRM_TXT_SEARCH_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	checkLength(PRM_TXT_SEARCH_BRANCH_KANA, NAM_BRANCH_KANA, aryMessage);

	// 数字確認
	checkNumeric(PRM_TXT_SEARCH_BANK_CODE  , NAM_BANK_CODE  , aryMessage);
	checkNumeric(PRM_TXT_SEARCH_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	
	if (aryMessage.length == 0) {
		return true;
	} else {
		showMessage(aryMessage);
		return false;
	}
}

/**
 * 編集画面用ボタン設定
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function setConditionButtons() {
	//setFunction("btn1", "U5281");
	if (MODE == 0) {
	//setFunction("btn1", "U5287");
		setInnerHtml("btn1", "銀行登録");
	} else {
	setFunction("btn1", "U5281");
		setInnerHtml("btn1", "銀行登録");
	}
	//setFunction("btn2", "U5282");
	if (MODE == 0) {
	setFunction("btn2", "U5281");
		setInnerHtml("btn2", "銀行更新");
	} else {
	setFunction("btn2", "U5282");
		setInnerHtml("btn2", "銀行更新");
	}
	//setFunction("btn3", "U5283");
	if (MODE == 0) {
	setFunction("btn3", "U5288");
		setInnerHtml("btn3", "支店登録");
	} else {
	setFunction("btn3", "U5283");
		setInnerHtml("btn3", "支店登録");
	}
	//setFunction("btn4", "U5284");
	if (MODE == 0) {
	setFunction("btn4", "U5283");
		setInnerHtml("btn4", "支店更新");
	} else {
	setFunction("btn4", "U5284");
		setInnerHtml("btn4", "支店更新");
	}
	setFunction("btn5", "U5286");
	setInnerHtml("btn5", "新規");
	setFunction("btn6", "U5288");
	setInnerHtml("btn6", "検索");
	setWidth("btn1", "80px");
	setWidth("btn2", "80px");
	setWidth("btn3", "80px");
	setWidth("btn4", "80px");
	setWidth("btn5", "60px");
}

/**
 * 銀行名設定
 * @param e
 * @return なし
 * @throws 実行時例外
 */
function setBankName(e) {
	// オブジェクト取得準備
	objBankCode   = null;
	objBankName   = null;
	objBankKana   = null;
	objBranchCode = null;
	objBranchName = null;
	objBranchKana = null;
	// 前ゼロ付与	
	setBeforeZeroObject(e, LEN_BANK_CODE)
	// オブジェクトの設定
	setFainanceObject(e);
	// 銀行名取得
	getBankName(objBankCode, objBankName);
	// 支店名取得
	getBranchName(objBankCode, objBranchCode, objBranchName);
}

/**
 * 支店名設定
 * @param e
 * @return なし
 * @throws 実行時例外
 */
function setBranchName(e) {
	// オブジェクト取得準備
	objBankCode   = null;
	objBankName   = null;
	objBankKana   = null;
	objBranchCode = null;
	objBranchName = null;
	objBranchKana = null;	
	// 前ゼロ付与	
	setBeforeZeroObject(e, LEN_BRANCH_CODE)
	// オブジェクトの設定
	setFainanceObject(e);
	// 支店名取得
	getBranchName(objBankCode, objBranchCode, objBranchName);
}

/**
 * 口座番号変更時
 * @param e
 * @return なし
 * @throws 実行時例外
 */
function onChangeAccountNo(e) {
	// 前ゼロ設定
	setBeforeZeroObject(e, LEN_ACCOUNT_NO)
}


/**
 * 前ゼロ付与オブジェクト設定
 * @param e
 * @param length
 * @return なし
 * @throws 実行時例外
 */
function setBeforeZeroObject(e, length) {
	// オブジェクトの設定
	var objTarget = getSrcElement(e);
	// 前ゼロ付与
	var befZero = setBeforeZero(objTarget, length);
	// 値の設定
	setFormValue(objTarget, befZero);
}


/**
 * 金融機関情報取得
 * @param e
 * @return なし
 * @throws 実行時例外
 */
function setFainanceObject(e) {
	// 銀行コード取得
	objTarget = getSrcElement(e);
	// 検索文字列設定(大文字小文字文字区別)
	var reg1 = new RegExp(PRM_LBL_PAID_BANK_NAME, "i");
	var reg2 = new RegExp(PRM_LBL_PAID_BRANCH_NAME, "i");
	
	
	// 対象オブジェクトの親ノードを取得
	var nodeParent = objTarget.parentNode;
	// 祖先ノード
	var nodeGrandParent = nodeParent.parentNode;
	// TBODY
	var nodeTbody = nodeGrandParent.parentNode;
	// TBODYのノード
	for (var i in nodeTbody.childNodes) {
		if (
			objBankCode   == null||
			objBankName   == null||
			objBranchCode == null||
			objBranchName == null	) {
			var obj1=nodeTbody.childNodes[i];
			if(obj1!=null && obj1.nodeName == "TR"){
				for (var j in obj1.childNodes) {
					if (
						objBankCode   == null ||
						objBankName   == null ||
						objBranchCode == null ||
						objBranchName == null 
					) {
						var obj2 = obj1.childNodes[j];
						if(obj2!=null && obj2.nodeName == "TD"){
							for (var k in obj2.childNodes) {
								var obj3 = obj2.childNodes[k];

								if(obj3!=null && obj3.name == PRM_TXT_PAID_BANK_CODE){
									// 銀行コードオブジェクトを取得する。
									objBankCode = obj3;
									continue;
								}
								if(obj3!=null && obj3.nodeName == "SPAN"){
									if (obj3.id.search(reg1) != -1) {
										// 銀行名コードオブジェクトを取得する。
										objBankName = obj3;
										continue;
									}
								}
								if(obj3!=null && obj3.name == PRM_LBL_PAID_BANK_NAME){
									// 銀行名コードオブジェクトを取得する。
									objBankName = obj3;
									continue;
								}
								if(obj3!=null && obj3.name == PRM_TXT_PAID_BRANCH_CODE){
									// 支店コードオブジェクトを取得する。
									objBranchCode = obj3;
									continue;
								}
								if(obj3!=null && obj3.nodeName == "SPAN"){
									if (obj3.id.search(reg2) != -1) {
										// 支店支店名オブジェクトを取得する。
										objBranchName = obj3;
										continue;
									}
								}
							}
						}
					}
				}			
			}
		}
	}
}

/**
 * 銀行名取得
 * @param objBankCode
 * @param objBankName
 * @return なし
 * @throws 実行時例外
 */
function getBankName(objBankCode, objBankName) {
	// 銀行名オブジェクト取得
	var bankCode = getFormValue(objBankCode);
	for (var i = 0; i < aryJsBankCode.length; i++) {
		if (bankCode == aryJsBankCode[i]) {
			if (objBankName != null) {
				setInnerHtml(objBankName, aryJsBankName[i]);
			}
			break;
		}
		// 不一致の場合はコード
		if (i == aryJsBankCode.length - 1) {
			setInnerHtml(objBankName, bankCode);
		}
	}
}

/**
 * 支店名取得
 * @param objBankCode
 * @param objBranchCode
 * @param objBranchName
 * @return なし
 * @throws 実行時例外
 */
function getBranchName(objBankCode, objBranchCode, objBranchName) {
	// 対象銀行コード
	var bankCode = getFormValue(objBankCode);
	// 対象支店コード
	var branchCode = getFormValue(objBranchCode);
	for (var i = 0; i < aryJsBranchCode.length; i++) {
		// 銀行コード確認
		if (bankCode == aryJsBraBankCode[i]) {
			// 支店コード確認
			if (branchCode == aryJsBranchCode[i]) {
				setInnerHtml(objBranchName, aryJsBranchName[i]);
				break;
			}
		}
		// 不一致の場合はコード
		if (i == aryJsBranchCode.length - 1) {
			setInnerHtml(objBranchName, branchCode);
		}
	}
}

/**
 * 前ゼロ付与
 * @param targetNo　　対象文字列
 * @param targetLength　項目長
 * @return
 */
function setBeforeZero(targetNo, targetLength) {
	// 設定準備
	var retString = "";
	// 対象が空じゃなければ前ゼロ設定
	if (getFormValue(targetNo) !="") {
		retString = getZero(getFormValue(targetNo), targetLength);
	}
	return retString;
	
}

/**
 * 引数に設定した文字列の先頭に0を挿入する。
 * @param wspace 設定文字列
 * @param i      設定桁数
 * @return       ゼロ挿入後文字列
 */
function getZero(wspace, i) {
	// 設定準備
	var lenString = 0;
	var targetString = "";
	lenString = i - wspace.length;
	if (lenString > 0) {
		for (var w = 0; w < lenString; w++) {
			targetString += "0";
		}
	}
	return targetString + wspace;
}
