function saveEntry() {

	var f = document.f2;
	var inputIndex = f.changeIndex.value;
	if (inputIndex == "") {
		inputIndex = -1;
	} else {
		inputIndex = parseInt(inputIndex);
	}

	var inputLoanIndex = $C(f.loanConfigIndexs);
	var inputLoanIndexValue = inputLoanIndex.value;

	var inputChangeType = $C(f.changeTypes);
	var inputChangeTypeValue = inputChangeType.value;

//	var inputChangeDate = f.changeDate;
//	if (inputChangeDate.value.length == 0) {
//		DialogUtils.showErrorDialog('変更日を入力してください。', 'エラー');
//		return;
//	}
//	var inputChangeDateValue = Date.parse(inputChangeDate.value);
//	if (isNaN(inputChangeDateValue)) {
//		DialogUtils.showErrorDialog('変更日の入力形式が不正です。', 'エラー');
//		return;
//	}
	var inputChangeYear = f.changeYear;
	var inputChangeMonth = f.changeMonth;
//	var inputChangeDay = f.changeDay;
	var inputChangeDateValue = new Date(inputChangeYear.value, inputChangeMonth.value - 1, 1);
	if (isNaN(inputChangeDateValue)) {
		DialogUtils.showErrorDialog('変更日の入力形式が不正です。', 'エラー');
		return;
	}

	//
	var f3 = document.f;
	var loanIndexes = $A(findElements(f3, "changeLoanIndex"));
	var changeTypes = $A(findElements(f3, "changeType"));
	var changeDates = $A(findElements(f3, "changeDate"));
/*
	alert(loanIndexes);
	var loanIndexes = $A(f3.changeLoanIndex);
	var changeTypes = $A(f3.changeType);
	var changeDates = $A(f3.changeDate);
*/

/*
	alert("f3.changeLoanIndex=" + f3.changeLoanIndex);
	for (var i = 0, n = f3.elements.length; i < n; i++) {
		var a = f3.elements[i];
		alert(a.tagName + ", " + a.name + ", " + a.form.name + ", " + f3.elements[a.name]);
	}
*/
	
	for (var i = 0, n = loanIndexes.length; i < n; i++) {
		if (i == inputIndex) {
			continue;
		}
		var loanIndex = loanIndexes[i];
		var changeDate = changeDates[i];
		var changeType = changeTypes[i];
/*
alert(
	loanIndex.value + ":" + inputLoanIndexValue + "\n" + 
//	new Date(changeDate.value) + ":" + inputChangeDateValue + "\n" + 
	Date.parse(changeDate.value) + ":" + Date.parse(inputChangeDateValue) + "\n" + 
	changeType.value + ":" +  inputChangeType.value
	);
*/

//		if ((loanIndex == null) || (changeDate == null) || (changeType == null)) {
//			continue;
//		}

		if ((inputChangeTypeValue == '1') || (inputChangeTypeValue == '2')) {
			if ((loanIndex.value == inputLoanIndexValue) 
					&& ((changeType.value == '1') || (changeType.value == '2'))
					&& (Date.parse(changeDate.value) == Date.parse(inputChangeDateValue))
					) {
				DialogUtils.showErrorDialog('繰上返済は月に一回のみ実行可能です。', 'エラー');
				return;
			}
		} else {
			if ((loanIndex.value == inputLoanIndexValue)
					&& (changeType.value == inputChangeTypeValue)
					&& (Date.parse(changeDate.value) == Date.parse(inputChangeDateValue))
					) {
				DialogUtils.showErrorDialog('既に存在しています。', 'エラー');
				return;
			}
		}
	}

	var param = {
		inputIndex: inputIndex,
		inputLoanIndex: inputLoanIndex.value, 
		inputChangeType: inputChangeType.value, 
		inputChangeDate: inputChangeDateValue,
//		inputChangeDate: inputChangeDateValue.getFullYear() + "/" + (inputChangeDateValue.getMonth() + 1) + "/01", 
//		inputChangeDate: inputChangeDateValue.getFullYear() + "/" + (inputChangeDateValue.getMonth() + 1) + "/" + inputChangeDateValue.getDate(), 
		changeConfigId: null
	}

	if ((inputChangeType.value == "1") || (inputChangeType.value == "2")) {
		if (f.prepaymentCapital.value.length == 0) {
			DialogUtils.showErrorDialog('繰上返済額を入力してください。', 'エラー');
			return;
		}
		param["prepaymentCapital"] = f.prepaymentCapital.value;
		param["prepaymentServiceFee"] = f.prepaymentServiceFee.value;
	} else if (inputChangeType.value == "3") {
		param["recalcRate"] = f.recalcRate.value;
		param["recalcServiceFee"] = f.recalcServiceFee.value;
		param["recalcPayType"] = $C(f.recalcPayType).value;
	} else {
		return;
	}
	createChangeElement(param);

	this.close();
}

function createChangeElement(param) {
	var p = $E("changeList");
	var divs = $T(p, "DIV");
	var pane = null;
	if ((param.inputIndex == null) || (param.inputIndex < 0)) {
		pane = document.createElement('DIV');
		pane.className = "changeEntry";
		p.appendChild(pane);
	} else {
		pane = divs.item(param.inputIndex);
//alert(pane);
		$RC(pane);
	}

	var table = document.createElement("TABLE");
/*	table.className = "changeEntry"; */
	pane.appendChild(table);

	var tbody = document.createElement("TBODY");
	table.appendChild(tbody);

	// LABEL
	var tr1 = document.createElement("TR");
	tbody.appendChild(tr1);

	var td1 = document.createElement("TD");
/*	td1.className = "changeTitlePane"; */
	tr1.appendChild(td1);

	if (param.inputLoanIndex == "0") {
		createChangeTitleElement(td1, "ローン(1)");
	} else if (param.inputLoanIndex == "1") {
		createChangeTitleElement(td1, "ローン(2)");
	}

	if (param.inputChangeType == "1") {
		createChangeTitleElement(td1, "繰上返済　期間短縮");
	} else if (param.inputChangeType == "2") {
		createChangeTitleElement(td1, "繰上返済　再計算");
	} else if (param.inputChangeType == "3") {
		createChangeTitleElement(td1, "返済方法変更");
	}

	createChangeTitleElement(td1, param.inputChangeDate.getFullYear() + "/" + (param.inputChangeDate.getMonth() + 1));

	// BUTTON
	var td1_2 = document.createElement("TD");
	td1_2.width = "60px";
	td1_2.vAlign = "middle";
	td1_2.noWrap = true;
//	td1_2.rowSpan = 2;
//	td1_2.className = "changeButtonPane";
	tr1.appendChild(td1_2);

	var editButton = document.createElement('A');
	editButton.appendChild(document.createTextNode("変更"));
/*
	editButton.type = "button";
	editButton.value = "変更";
	editButton.onclick = editEntry;
*/
/*	editButton.href = "javascript:editEntry()"; */
	editButton.href = "#";
	editButton.onclick = editEntry;
	td1_2.appendChild(editButton);

	var removeButton = document.createElement('A');
	removeButton.appendChild(document.createTextNode("削除"));
/*
	removeButton.type = "button";
	removeButton.value = "削除";
	removeButton.onclick = removeEntry;
*/
//	removeButton.href = "javascript:removeEntry()";
	removeButton.href = "#";
	removeButton.onclick = removeEntry;
	td1_2.appendChild(removeButton);


	// ITEM
/*
	var tr2 = document.createElement("TR");
	tbody.appendChild(tr2);

	var td2 = document.createElement("TD");
	td2.className = "changeItemPane";
	tr2.appendChild(td2);
*/

	td2 = td1;

	if ((param.inputChangeType == "1") || (param.inputChangeType == "2")) {
		createChangeItemElement(td2, "繰上返済額", param.prepaymentCapital);
		createChangeItemElement(td2, "手数料", param.prepaymentServiceFee);
	} else if (param.inputChangeType == "3") {
		createChangeItemElement(td2, "金利", param.recalcRate);

		var recalcPayTypeLabel = '';
		if (param.recalcPayType == '1') {
			recalcPayTypeLabel = '元利均等返済';
		} else if (param.recalcPayType == '2') {
			recalcPayTypeLabel = '元金均等返済';
		} else {
			recalcPayTypeLabel = '変更なし';
		}
		createChangeItemElement(td2, "返済方法", recalcPayTypeLabel);

		createChangeItemElement(td2, "手数料", param.recalcServiceFee);
	}

	// HIDDEN
	pane._loanIndexElement = createHidden(pane, "changeLoanIndex", param.inputLoanIndex);
	pane._changeDateElement = createHidden(pane, "changeDate", param.inputChangeDate.getFullYear() + "/" + (param.inputChangeDate.getMonth() + 1) + "/01");
	pane._changeTypeElement = createHidden(pane, "changeType", param.inputChangeType);
	pane._changeConfigIdElement = createHidden(pane, "changeConfigId", param.changeConfigId);

	if ((param.inputChangeType == "1") || (param.inputChangeType == "2")) {
		pane._prepaymentCapital = createHidden(pane, "prepaymentCapital", param.prepaymentCapital);
		pane._prepaymentServiceFee = createHidden(pane, "prepaymentServiceFee", param.prepaymentServiceFee);
		pane._recalcRateElement = createHidden(pane, "recalcRate", "");
		pane._recalcServiceFeeElement = createHidden(pane, "recalcServiceFee", "");
		pane._recalcPayTypeElement = createHidden(pane, "recalcPayType", "");
	} else if (param.inputChangeType == "3") {
		pane._prepaymentCapital = createHidden(pane, "prepaymentCapital", "");
		pane._prepaymentServiceFee = createHidden(pane, "prepaymentServiceFee", "");
		pane._recalcRateElement = createHidden(pane, "recalcRate", param.recalcRate);
		pane._recalcServiceFeeElement = createHidden(pane, "recalcServiceFee", param.recalcServiceFee);
		pane._recalcPayTypeElement = createHidden(pane, "recalcPayType", param.recalcPayType);
	}

}

function createChangeTitleElement(parent, value) {
	var element = document.createElement("SPAN");
	element.className = "changeTitle";
	element.appendChild(document.createTextNode(value));
	parent.appendChild(element);
}

function createChangeItemElement(parent, label, value) {

	var element = document.createElement("SPAN");
	element.className = "changeItemLabel";
	element.appendChild(document.createTextNode(label + ": "));
	parent.appendChild(element);

	var element = document.createElement("SPAN");
	element.className = "changeItemValue";
	element.appendChild(document.createTextNode(value));
	parent.appendChild(element);
}

function removeEntry() {
	var pane = this.parentNode.parentNode.parentNode.parentNode.parentNode;
	pane._loanIndexElement = null;
	pane._changeDateElement = null;
	pane._changeTypeElement = null;
	pane._changeConfigIdElement = null;
	pane._prepaymentCapital = null;
	pane._prepaymentServiceFee = null;
	pane._recalcRateElement = null;
	pane._recalcServiceFeeElement = null;
	pane._recalcPayTypeElement = null;
	pane.parentNode.removeChild(pane);
}
function editEntry() {
	var pane = this.parentNode.parentNode.parentNode.parentNode.parentNode;
	var f = document.f2;

	DialogUtils.showContainerDialog(document.getElementById('changePane'), '変更情報の入力', saveEntry);

	var children = pane.parentNode.getElementsByTagName('DIV');
	var pos = 0;
	for (var i = 0, n = children.length; i < n; i++) {
		if (children.item(i) == pane) {
			pos = i;
			break;
		}
	}
	f.changeIndex.value = pos;

	var loanIndex = pane._loanIndexElement.value;
	if (loanIndex == "0") {
		f.loanConfigIndexs[0].click();
	} else if (loanIndex == "1") {
		f.loanConfigIndexs[1].click();
	} else {
		alert("invalid loanIndex. " + loanIndex);
		return;
	}

	var changeType = pane._changeTypeElement.value;
	if (changeType == "1") {
		f.changeTypes[0].click();
	} else if (changeType == "2") {
		f.changeTypes[1].click();
	} else if (changeType == "3") {
		f.changeTypes[2].click();
	} else {
		alert("invalid changeType. " + changeType);
		return;
	}

	var changeDate = new Date(pane._changeDateElement.value);
	selectOption(f.changeYear, changeDate.getFullYear());
	selectOption(f.changeMonth, changeDate.getMonth() + 1);
	f.easyChangeDate.selectedIndex = -1;

	if ((changeType == "1") || (changeType == "2")) {
		f.prepaymentCapital.value = pane._prepaymentCapital.value;
		f.prepaymentServiceFee.value = pane._prepaymentServiceFee.value;

	} else if (changeType == "3") {
		f.recalcRate.value = pane._recalcRateElement.value;
		f.recalcServiceFee.value = pane._recalcServiceFeeElement.value;

		var payType = pane._recalcPayTypeElement.value;
		if (payType == "1") {
			f.recalcPayType[1].click();
		} else if (payType == "2") {
			f.recalcPayType[2].click();
		} else {
			f.recalcPayType[0].click();
		}
	}

//	f.inputChangeType.value = pane._changeTypeElement.value;
}
function createEntry() {
	var f = document.f2;

	f.changeIndex.value = "";
	f.loanConfigIndexs[0].click();
	f.changeTypes[0].click();
//	f.changeDate.value = "";

	var now = new Date();
	selectOption(f.changeYear, now.getFullYear());
	selectOption(f.changeMonth, now.getMonth() + 1);
//	selectOption(f.changeDay, now.getDate());
	f.easyChangeDate.selectedIndex = -1;

	f.prepaymentCapital.value = "1,000,000";
	f.prepaymentServiceFee.value = "0";

	f.recalcRate.value = "3.0";
	f.recalcServiceFee.value = "0";
	f.recalcPayType[0].click();

	DialogUtils.showContainerDialog(document.getElementById('changePane'), '変更情報の入力', saveEntry);
}

function doChangeType(value) {
/*
	var changeType = document.getElementById('changeType');
	var n = changeType.selectedIndex;
	if (n < 0) {
		return;
	}
//	alert(changeType.options[n].value);
	var value = changeType.options[n].value;
*/

	var changePrepaymentPane = document.getElementById('changePrepaymentPane');
	var changeRatePane = document.getElementById('changeRatePane');

	changePrepaymentPane.style.display = ((value == '1') || (value == '2')) ? 'block' : 'none';
	changeRatePane.style.display = (value == '3') ? 'block' : 'none';
}

