/*
 * MosP - Mind Open Source Project    http://www.mosp.jp/
 * Copyright (C) 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_CO_BANK_CODE , LEN_CO_BANK_CODE   );
	setMaxLength(PRM_TXT_BANK_CODE    , LEN_BANK_CODE      );
	setMaxLength(PRM_TXT_BRANCH_CODE  , LEN_BRANCH_CODE    );
	setMaxLength(PRM_TXT_ACCOUNT_NO   , LEN_ACCOUNT_NO     );
	// 一覧背景色設定
	setTableColor("list");
	// 登録/更新判定
	if (MODE == 0) {
		setDisabled("btn2", true);
		setConditionButtons();
		// フォーカス設定
		setFocus(PRM_TXT_CO_BANK_CODE);
	} else if (MODE == 1) {
		setDisabled("btn1", true);
		setConditionButtons();
		// 読取専用設定
		setReadOnly(PRM_TXT_CO_BANK_CODE  , true);
		// フォーカス設定
		setFocus(PRM_TXT_BANK_CODE);
	}
	setOnChangeHandler(getObject(PRM_TXT_BANK_CODE  ), setBankName  );
	setOnChangeHandler(getObject(PRM_TXT_BRANCH_CODE), setBranchName);
	// 背景色設定
	setFieldsBgColor(PRM_LBL_BANK_NAME  , COLOR_TABLE_BACKGROUND);
	// 背景色設定
	setFieldsBgColor(PRM_LBL_BRANCH_NAME  , COLOR_TABLE_BACKGROUND);
	
	
}

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

/**
 * 入力チェック
 * @param 無し
 * @return チェック結果(true：OK、false：NG)
 * @throws 実行時例外
 */
function validate() {
	// フィールド背景色設定
	setFieldsBgColor(ARY_FIELDS_ID, COLOR_FIELD_NORMAL);
	// 入力チェック
	var aryMessage = new Array();
	// 必須確認
	checkRequired(PRM_TXT_CO_BANK_CODE, NAM_CO_BANK_CODE, aryMessage);
	checkRequired(PRM_TXT_BANK_CODE , NAM_BANK_CODE , aryMessage);
	checkRequired(PRM_TXT_BRANCH_CODE , NAM_BRANCH_CODE , aryMessage);
	checkRequired(PRM_PLT_ACCOUNT_TYPE , "預金区分" , aryMessage);
	checkRequired(PRM_TXT_ACCOUNT_NO , NAM_ACCOUNT_NO , aryMessage);
	checkRequired(PRM_PLT_DELETE , NAM_DELETE , aryMessage);
	// コード確認
	checkCode    (PRM_TXT_CO_BANK_CODE , NAM_CO_BANK_CODE , aryMessage);
	checkNumber  (PRM_PLT_DELETE       , NAM_DELETE       , aryMessage);
	// 数字確認
	checkNumeric(PRM_TXT_BANK_CODE, NAM_BANK_CODE, aryMessage    );
	checkNumeric(PRM_TXT_BRANCH_CODE, NAM_BRANCH_CODE, aryMessage);
	checkNumeric(PRM_TXT_ACCOUNT_NO, NAM_ACCOUNT_NO, aryMessage  );
	if (aryMessage.length == 0) {
		return true;
	} else {
		showMessage(aryMessage);
		return false;
	}
}

/**
 * 編集画面用ボタン設定
 * @param 無し
 * @return 無し
 * @throws 実行時例外
 */
function setConditionButtons() {
	setFunction("btn1", "U5252");
	setInnerHtml("btn1", "登録");
	setFunction("btn2", "U5253");
	setInnerHtml("btn2", "更新");
	setFunction("btn3", "U5251");
	setInnerHtml("btn3", "新規");
	setWidth("btn1", "80px");
	setWidth("btn2", "80px");
	setWidth("btn3", "60px");
}

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

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

/**
 * 金融機関情報取得
 * @param e
 * @return なし
 * @throws 実行時例外
 */
function setFainanceObject(e) {
	// 銀行コード取得
	objTarget = getSrcElement(e);
	// 対象オブジェクトの親ノードを取得
	var nodeParent = objTarget.parentNode;
	// 祖先ノード
	var nodeGrandParent = nodeParent.parentNode;
	// 祖先の子オブジェクトを取得
	for (var j in nodeGrandParent.childNodes) {
		if (
			objBankCode   == null ||
			objBankName   == null ||
			objBranchCode == null ||
			objBranchName == null 
		) {
			var obj1 = nodeGrandParent.childNodes[j];
			if(obj1!=null && obj1.nodeName == "TD"){
				for (var k in obj1.childNodes) {
					var obj2 = obj1.childNodes[k];
					if(obj2!=null && obj2.id == PRM_TXT_BANK_CODE){
						// 銀行コードオブジェクトを取得する。
						objBankCode = obj2;
						continue;
					}
					if(obj2!=null && obj2.id == PRM_LBL_BANK_NAME){
						// 銀行名コードオブジェクトを取得する。
						objBankName = obj2;
						continue;
					}
					if(obj2!=null && obj2.id == PRM_TXT_BRANCH_CODE){
						// 支店コードオブジェクトを取得する。
						objBranchCode = obj2;
						continue;
					}
					if(obj2!=null && obj2.id == PRM_LBL_BRANCH_NAME){
						// 支店支店名オブジェクトを取得する。
						objBranchName = obj2;
						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);
		}
		
	}
	// 背景色設定
	setFieldsBgColor(PRM_LBL_BANK_NAME  , COLOR_TABLE_BACKGROUND);
	// 背景色設定
	setFieldsBgColor(PRM_LBL_BRANCH_NAME  , COLOR_TABLE_BACKGROUND);
}

