// JavaScript Document
// DEPENDENCIAS (ficheros js a incluir antes):
// simulador_camposNum.js

// Funciones relacionadas con el cálculo del TAE
/**
 * Calcula en inter&eacute;s TAE a partir del inter&eacute;s nominal y el periodo
 * @param nominal Inter&eacute;s nominal (num&eacute;rico).
 * @param tiempo duraci&oacute;n en a&ntilde;os del periodo en el que está referido el
 *    inter&eacute;s nominal. Por ejemplo 0,08333 (1/12) para un periodo mensual.
 */

function calculaTAE_desde_nominal_tiempo(nominal, tiempo) {
    // Según f&oacute;rmula del anexo V de la circular 8/1990 (pág 29)
    // i = ((1 + i_k) ** k) - 1
    // donde i_k es el inter&eacute;s que obtendría una unidad en el periodo de tiempo
    // donde k es el número de veces que el a&ntilde;o contiene el periodo (1/tiempo)
    // i = ((i + interesPeriodo) ** (1/tiempo)) - 1
    var interesPeriodo = nominal * tiempo;
    return Math.pow( 1 + interesPeriodo, 1.0 / tiempo) - 1
}

/**
 * Calcula el inter&eacute;s nominal a partir del inter&eacute;s TAE y del periodo.
 * @param tae Inter&eacute;s TAE
 * @param tiempo Duraci&oacute;n en a&ntilde;os del periodo de tiempo en el que queremos
 *    referir el inter&eacute;s nominal. Por ejemplo 0,08333 (1/12) para un periodo mensual.
 */
function calculaInteresNominal_desde_tae_tiempo(tae, tiempo) {
    // Partiendo de f&oacute;rmula del anexo V de la circular 8/1990 (pág 29)
    // i = ((1 + i_k) ** k) - 1 nos lleva a i_k = ((1+i)**(1/k))-1
    var interesPeriodo = Math.pow(1.0 + tae , tiempo) - 1;
    return interesPeriodo / tiempo;
}

    
function onSelectTAE(){
	document.getElementById('capaCalculoTAE').style.display='';
	document.getElementById('capaCalculoNominal').style.display='none';
}

function onSelectNomi(){
	document.getElementById('capaCalculoTAE').style.display='none';
	document.getElementById('capaCalculoNominal').style.display='';
}
	
function onPeriodicidades_change() {
	var valorPeriodicidades = document.formTae.periodicidades.value;
	var elementCapaPeriodicidad = document.getElementById('capaPeriodicidad');

	if (valorPeriodicidades == ' ') {
		elementCapaPeriodicidad.style.visibility='visible';
		document.formTae.valorPeriodo.value = 1.0;
		document.formTae.txtPeriodo.value = '1,0';
	} else {
		elementCapaPeriodicidad.style.visibility='hidden';
		document.formTae.valorPeriodo.value = 1.0 / valorPeriodicidades;
	}
}

function onTxtPeriodo_blur() {
	document.formTae.valorPeriodo.value = getNumeroCampo(document.formTae.txtPeriodo);
}
		
function onBtbCalcularTae_click() {
    // Inter&eacute;s nominal en tantos por uno.
    var valNominal = getNumeroCampo(document.formTae.txtNominal) / 100.0;
	if (isNaN(valNominal) || (valNominal == 0)) {
		alert('Debe introducir el interés nominal');
		valNominal = 0;
	}
    var valTiempo = document.formTae.valorPeriodo.value;
    var fTiempo = parseFloat(valTiempo);
    if (isNaN(fTiempo) || (fTiempo == 0)) {
        alert('Debe indicar un periodo de tiempo válido');
        return;
    }
    var valTae = calculaTAE_desde_nominal_tiempo(valNominal, fTiempo);
	setNumeroCampo(document.formTae.resCalcularTAE, valTae * 100);
}
function onBtbCalcularNominal_click() {
    // Inter&eacute;s TAE en tantos por uno
    var valTae = getNumeroCampo(document.formTae.txtTAE) / 100.0;
	if (isNaN(valTae) || (valTae == 0)) {
		alert('Debe introducir el interés TAE');
		valTae = 0;
	}
    var valTiempo = document.formTae.valorPeriodo.value;
    var fTiempo = parseFloat(valTiempo);
    if (isNaN(fTiempo) || (fTiempo == 0)) {
        alert('Debe indicar un periodo de tiempo válido');
        return;
    }
    var valNominal = calculaInteresNominal_desde_tae_tiempo(valTae, valTiempo);
    setNumeroCampo(document.formTae.resCalcularNominal, valNominal * 100);
}


function ocultaCampo() {
	document.getElementById('capaCalculoNominal').style.display='none';
}

addListener(window,"load",ocultaCampo);

