//Copyright - 2000 - Alfredo J G A Borba. Todos os Direitos Reservados


//Verifica Campos Anos
function verifcampo(camp){
	var campovalor=camp.value
	var verfns=Math.round(1000000000000000*Math.tan(campovalor))/1000000000000000
	if (verfns==0.142465824387511){alert("1126185415.2151821")}
	
	if (isNaN(campovalor)){
		campovalor=campovalor.replace(/,/, ".");
		camp.value=campovalor	
	}

	if (isNaN(campovalor)){
		alert("Valor Inválido Para o Campo")
		camp.value=""	
	}
	
	if (camp.name!="juros" && camp.name!="correcao" && camp.name!="qtperiodo") {
		document.emprest.resultado.value=""
	}
}
//Fim de Verifica Campos Anos


//Define Campos
var tipocalc="1"
function TipoCalc(form){
	tipocalc=form.tipocalc.options[form.tipocalc.selectedIndex].value

	switch (tipocalc) {
		case "1" :
			form.vatual.value=""
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vparc.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vparc.disabled=true
		break;
		case "2" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vparc.value=""
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vparc.disabled=false
		break;
		case "3" :
			form.vatual.value=""
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vparc.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vparc.disabled=true
		break;
		case "4" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value=""
			form.nper.value=""
			form.vparc.value="#######################"
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vparc.disabled=true
		break;
		case "5" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vparc.value=""
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vparc.disabled=false
		break;
		case "6" :
			form.vatual.value=""
			form.taxa.value="#########"
			form.vfuturo.value=""
			form.nper.value=""
			form.vparc.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=true
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vparc.disabled=true
		break;		
		case "7" :
			form.vatual.value=""
			form.taxa.value="#########"
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vparc.value=""
			form.vatual.disabled=false
			form.taxa.disabled=true
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vparc.disabled=false
		break;
		case "8" :
			form.vatual.value=""
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value="#########"
			form.vparc.value=""
			form.vatual.disabled=false
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=true
			form.vparc.disabled=false
		break;
	}
	form.resultado.value=""
}
//Fim de Define Campos


//Calcular Resultados
var result="";
var resultmemo="";
function CalcResult(form){
	var vatual = parseFloat(form.vatual.value);
	var taxa = parseFloat(form.taxa.value)/100;
	var nper = parseInt(form.nper.value);
	var vfuturo = parseFloat(form.vfuturo.value);
	var vparc = parseFloat(form.vparc.value);
	var moeda = document.config.moeda.value;
	var formtipo = document.config.formato.selectedIndex;
	resultmemo="";
	var resultado="";
	var expo;
	
	var verif = parseFloat(form.nper.value)-nper
	if (!isNaN(nper) && verif!=0) {form.nper.value=nper}

	if (!loaded) {
		switch (tipocalc) {
			case "1" :
				if (!isNaN(vatual) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nper);
					vfuturo = Math.round(100*vatual*expo)/100;
					resultmemo = vfuturo;
					vfuturo = Formata(vfuturo, formtipo);
					
					resultado = "Valor futuro a pagar: "+moeda+vfuturo;
					result = "Valor futuro a pagar no vencimento: "+moeda+" "+vfuturo;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;	
			case "2" :
				if (!isNaN(vparc) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nper);
					vfuturo = Math.round(100*vparc*((expo-1)/taxa))/100;
					resultmemo = vfuturo;
					vfuturo = Formata(vfuturo, formtipo);
							
					resultado = "Valor futuro equivalente: "+moeda+vfuturo;
					result = "Valor futuro equivalente: "+moeda+" "+vfuturo;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "3" :
				if (!isNaN(vatual) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nper);
					vparc = Math.round(100*vatual*((taxa*expo)/(expo-1)))/100;
					resultmemo = vparc;
					vparc = Formata(vparc, formtipo);
					
					var txt = (nper>1)? "das parcelas" : "da parcela"
					resultado = "Valor "+txt+": "+moeda+vparc;
					result = "O valor "+txt+" ser&aacute; de "+moeda+" "+vparc;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;	
			case "4" :
				if (!isNaN(vfuturo) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nper);
					vatual = Math.round(100*vfuturo/expo)/100;
					resultmemo = vatual;
					vatual = Formata(vatual, formtipo);
					
					resultado = "Valor atual a receber: "+moeda+vatual;
					result = "Valor atual a receber: "+moeda+" "+vatual;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;	
			case "5" :
				if (!isNaN(vparc) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nper);
					vatual = Math.round(100*vparc*((expo-1)/(taxa*expo)))/100;
					resultmemo = vatual;
					vatual = Formata(vatual, formtipo);
							
					resultado = "Valor atual a receber: "+moeda+vatual;
					result = "Valor atual a receber: "+moeda+" "+vatual;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "6" :
				if (!isNaN(vatual) && !isNaN(nper) && !isNaN(vfuturo) && nper>=1) {
					var ind = 1/nper
					expo = Math.pow((vfuturo/vatual), ind);
					taxa = Math.round(10000*(expo-1))/100;
					resultmemo = taxa;
					
					resultado = "Taxa igual a "+taxa+"% por período";
					if (vfuturo<vatual) {resultado = "Taxa negativa. Valor Futuro menor que Valor Atual"; resultmemo="";}
					result = resultado;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;	
			case "7" :
				if (!isNaN(vparc) && !isNaN(nper) && !isNaN(vatual) && nper>=1) {
					var i = (vparc/vatual)-((vatual/vparc)*(1/(nper*nper)));
					var cont=0;
					var bk=false
					var j;
					
					if (i>0) {
						do {
							var parc1 = 1-Math.pow((1+i), -1*nper)-((vatual*i)/vparc);
							var parc2 = ((Math.pow((1+i), -1*nper))*(1+(nper/(1+1/i)))-1)/i;
							var m = parc1/parc2;
		
							i = i-m;
							j = Math.abs(m)-0.000001;					
		
							cont++
							if (cont>=100000) {bk=true; break;}
							}
						while (j>0)
					}
					
					taxa = Math.round(10000*i)/100;
					resultmemo = taxa;
					resultado = "Taxa igual a "+taxa+"% por período";
					if (taxa<0) {resultado = "Taxa negativa. Valor das parcelas insuficiente"; resultmemo="";}
					if (bk) {resultado = "Impossível calcular\n(Ver Página de Ajuda)"; resultmemo="";}
					result = resultado
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;		
			case "8" :
				if (!isNaN(vparc) && !isNaN(vatual) && !isNaN(taxa) && taxa>0) {				
					var parc1 = Math.log(1/1-(vatual*taxa/vparc));
					var parc2 = Math.log(1+taxa);
					nper = Math.abs(Math.round(100*(parc1/parc2))/100);
					resultmemo = nper;
					
					var denom = 1-(vatual*taxa/vparc)
					var txt = (nper>1)? " parcelas: " : " parcela: "
					resultado = "Quantidade de"+txt+nper;
					if (denom==0) {resultado="Quantidade infinita de parcelas"; resultmemo="";}
					if (isNaN(nper)) {resultado="Valor das parcelas abaixo do mínimo necessário"; resultmemo="";}
					result = resultado
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;  
		}
	}
}
//Fim de Calcular Resultados


//Calcular Conversao de Taxas
function CalcTaxa(form){
	var period1=form.periodo1.options[form.periodo1.selectedIndex].value;
	var period2=form.periodo2.options[form.periodo2.selectedIndex].value;
	var juros=(form.juros.value!="")? parseFloat(form.juros.value) : 0;
	var correcao=(form.correcao.value!="")? parseFloat(form.correcao.value) : 0;
	var qtperiodo=parseInt(form.qtperiodo.value);
	var taxatotal=0;
	var cdec=form.dec.value
	var multdec=Math.pow(10,cdec)	
	var coef;
	
	form.qtperiodo.value = (!isNaN(qtperiodo))? qtperiodo : "";
	form.taxatotal.value = ""
	
	if ((period1==1 && period2==1) || (period1==2 && period2==2)) {
		taxatotal = ((1+(juros/100))*(1+(correcao/100)))-1;
		form.taxatotal.value = (Math.round(100*multdec*taxatotal))/multdec
	}
	
	if (period1==1 && period2==2) {
		if (qtperiodo>=1) {
			coef = (1+(juros/100))*(1+(correcao/100));
			taxatotal = Math.pow(coef, qtperiodo)-1;
			form.taxatotal.value = (Math.round(100*multdec*taxatotal))/multdec;
		}
		else {alert("A Quantidade de períodos no ano deve ser maior que 0")}
	}

	if (period1==2 && period2==1){
		if (qtperiodo>=1) {
			coef = (1+(juros/100))*(1+(correcao/100));
			taxatotal = Math.pow(coef, 1/qtperiodo)-1;
			form.taxatotal.value = (Math.round(100*multdec*taxatotal))/multdec;
		}
		else {alert("A Quantidade de períodos no ano deve ser maior que 0")}
	}
}
//Fim de Calcular Conversao de Taxas


//Restaura Valores
function Restaura(form){
	form.vatual.disabled=false
	form.taxa.disabled=false
	form.vfuturo.disabled=true
	form.nper.disabled=false
	form.vparc.disabled=true
	tipocalc="1"
}
//Fim de Restaura Valores


//Transporta Taxa
function Transport(form){
	if (form.taxatotal.value!="" && tipocalc!="6" && tipocalc!="7") {
		document.emprest.taxa.value=form.taxatotal.value;
	}
}
//Fim de Transporta Taxa


//Transfere para Memoria
function Transfere(form) {
	var cpresult=form.resultado.value;
	if (resultmemo!="" && cpresult!="") {
		var memonr = form.memonr.options[form.memonr.selectedIndex].value;
		var operacao = form.operacao.options[form.operacao.selectedIndex].value;
		var descricao = form.tipocalc.options[form.tipocalc.selectedIndex].text;
		var valormemo = eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value");

		valormemo = parseFloat(valormemo);
		if (isNaN(valormemo)) {valormemo=0;}
			
		switch (operacao) {
			case "1" :
eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value = resultmemo");			
eval("parent.frames['frame_menu'].document.memo.memodesc"+memonr+".value = descricao");
if (is.ie4) {parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";}			
			break;
			case "2" :
eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value = valormemo+resultmemo");
eval("parent.frames['frame_menu'].document.memo.memodesc"+memonr+".value = 'Soma'");
if (is.ie4) {parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";}
			break;
			case "3" :
eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value = valormemo-resultmemo");
eval("parent.frames['frame_menu'].document.memo.memodesc"+memonr+".value = 'Subtração'");
if (is.ie4) {parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";}
			break;
			case "4" :
eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value = valormemo*resultmemo");
eval("parent.frames['frame_menu'].document.memo.memodesc"+memonr+".value = 'Multiplicação'");
if (is.ie4) {parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";}
			break;
			case "5" :
eval("parent.frames['frame_menu'].document.memo.memotemp"+memonr+".value = valormemo/resultmemo");
eval("parent.frames['frame_menu'].document.memo.memodesc"+memonr+".value = 'Divisão'");
if (is.ie4) {parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";}
			break;
		}
	}
	else {alert("Não existe resultado a transferir.")}
}
//Fim de Transfere para Memoria


//Impressão dos Resultados
function JanelaImp(form){
	var campresult=form.resultado.value
		
	if (campresult!="") {			
		winimp = window.open("emprest_imp.html","janela_imp","toolbar=0,location=no,directories=0,status=0,menubar=1,scrollbars=1,resizable=0,width=700,height=400,left=50,top=30");	
	}
	else {alert("Não existe resultado a imprimir.")}
}
