// JavaScript Document
// DEPENDENCIAS (ficheros js a incluir antes):
// simulador_camposNum.js
// simulador_matFin.js
// simulador_tablas.js

/**
 * Calcula una tabla de amortización para un escenario de un cambio de tipo de interés,
 *   dentro de un pago de renta temporal constante.
 * @param a_capital Capital inicial del préstamo.
 * @param a_numCuotas Número de cuotas (mensuales) que se pagan.
 * @param a_interes0 Interés inicial (tantos por uno por periodo cuota).
 * @param a_cuotaCambio Número de cuota para la cual cambia el tipo de interés.
 *   Si el número es 0 o nulo, se considera que no hay cambio de interés.
 * @param a_interesF Interés posterior al cambio (tantos por uno por periodo cuota)
 * @param a_listaIntereses
 * @param a_listaCapPte
 * @param a_listaCuotas
 */
function calcularTablaAmortizacion(a_capital, a_numCuotas, a_interes0, a_cuotaCambio, a_interesF) {
	// Rellenar la lista de intereses conforme corresponda.
	var l_tabla = null;
	if ((a_cuotaCambio) == null || (a_cuotaCambio <= 0)) {
		l_tabla = calculaTablaRufm(a_numCuotas, a_interes0, a_capital);
	} else {
		l_tabla = calculaTablaRufmCambioInteres(a_numCuotas, a_interes0, a_capital, a_cuotaCambio, a_interesF);
	}
	return l_tabla;
}

function doCalcular(tipoCalculo){
        // Comprobaciones de datos.
        var l_sigo = true;
		if (document.miForm.dat_capital.value == '') {
			document.miForm.dat_capital.value = '0,00';
		}
		if (document.miForm.dat_interes.value == '') {
			document.miForm.dat_interes.value = '0,000';
		}
		if (document.miForm.dat_plazo.value == '') {
			document.miForm.dat_plazo.value = '0';
		}
		if (document.miForm.dat_interes2.value == '') {
			document.miForm.dat_interes2.value = '0,000';
		}
		if (document.miForm.dat_plazo2.value == '') {
			document.miForm.dat_plazo2.value = '0';
		}
        var capIni = getNumeroCampo(document.miForm.dat_capital);
        if(capIni == 0){
                alert("Debe introducir el importe del Capital Inicial");
                document.miForm.dat_capital.focus();
                l_sigo = false;
        }
        
        var tInteres = getNumeroCampo(document.miForm.dat_interes);
        var tAmortizacion = getNumeroCampo(document.miForm.dat_plazo);

        // PENDIENTE COMPROBACIONES ACERCA DE PLAZOS ILEGALES.

        if (tipoCalculo == 2) {
			var tInteres2 = getNumeroCampo(document.miForm.dat_interes2);
			var tCambio = getNumeroCampo(document.miForm.dat_plazo2);
        } else {
			tInteres2 = 0.0;
			tCambio = 0;
        }
        
        var l_numCuotas = document.miForm.dat_plazo.value *
                        document.miForm.sel_plazo.value;
        var l_numCuotasCambio = tCambio * document.miForm.sel_plazo2.value;
		if (l_numCuotas == 0) {
			alert("Debe introducir un plazo de amortización");
			document.miForm.dat_plazo.focus();
			l_sigo = false;
		} else if (l_numCuotasCambio >= l_numCuotas) {
			window.alert('El momento de cambio indicado es posterior a la finalización del préstamo');
			l_sigo = false;
        }

    // Realizo el calculo si y sólo si los datos de entrada eran válidos.
        var l_cuota = 0;
        var l_cuota2 = 0;
        var l_capitalPte = 0;
    if (l_sigo) {
		ta_tabla = calcularTablaAmortizacion(capIni, l_numCuotas, tInteres, l_numCuotasCambio, tInteres2,
						l_interesesPorMes, l_capitalesPtesPorMes, l_cuotasPorMes);
		var l_interesesPorMes = ta_tabla[TA_INTERESES];
		var l_capitalesPtesPorMes = ta_tabla[TA_CAPITALPENDIENTE];
		var l_cuotasPorMes = ta_tabla[TA_CUOTA];

		l_cuota = l_cuotasPorMes[1];
		l_cuota2 = l_cuotasPorMes[l_numCuotasCambio + 1];
		l_capitalPte = l_capitalesPtesPorMes[l_numCuotasCambio];

		setNumeroCampo(document.miForm.res_cuota, l_cuota);
		setNumeroCampo(document.miForm.res_cuota2, l_cuota2);
		setNumeroCampo(document.miForm.res_capitalPte, l_capitalPte);
		
		setNumeroCampo(document.miForm.dat_interes2, tInteres2);
		setNumeroCampo(document.miForm.dat_plazo2, tCambio);
                
		if (document.getElementById){
			document.getElementById('divCambio').style.display = 'block';
		}else if (document.all){
			document.all['divCambio'].style.display = 'block';
		}
		document.miForm.btn_tabla.disabled=false;
		document.miForm.btn_tabla2.disabled=false;
                
		window.location='#topForm1';
		if (tipoCalculo == 1) {
				document.miForm.btn_cal1.focus();
		} else {
				document.miForm.btn_cal2.focus();
		}
		// Formateo los campos.
		setNumeroCampo(document.miForm.dat_capital, capIni);
		setNumeroCampo(document.miForm.dat_interes, tInteres);
	
		setNumeroCampo(document.miForm.dat_interes2, tInteres2);
	}
    
}

var ta_tabla;

function mostrarTabla(tipoCalculo) {
	doCalcular(tipoCalculo);

	escribeDocumentoTabla(ta_tabla);
}

