//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.aplic.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.vaplic.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vaplic.disabled=true
		break;
		case "2" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vaplic.value=""
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vaplic.disabled=false
		break;
		case "3" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value=""
			form.nper.value=""
			form.vaplic.value="#######################"
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vaplic.disabled=true
		break;
		case "4" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value=""
			form.nper.value=""
			form.vaplic.value="#######################"
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vaplic.disabled=true
		break;
		case "5" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value="#######################"
			form.nper.value=""
			form.vaplic.value=""
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=true
			form.nper.disabled=false
			form.vaplic.disabled=false
		break;
		case "6" :
			form.vatual.value=""
			form.taxa.value="#########"
			form.vfuturo.value=""
			form.nper.value=""
			form.vaplic.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=true
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vaplic.disabled=true
		break;
		
		//---Código Não Utilizado----
		case "7" :
			form.vatual.value="#######################"
			form.taxa.value="#########"
			form.vfuturo.value=""
			form.nper.value=""
			form.vaplic.value=""
			form.vatual.disabled=true
			form.taxa.disabled=true
			form.vfuturo.disabled=false
			form.nper.disabled=false
			form.vaplic.disabled=false
		break;
		//----------------------------
		
		case "8" :
			form.vatual.value=""
			form.taxa.value=""
			form.vfuturo.value=""
			form.nper.value="#########"
			form.vaplic.value="#######################"
			form.vatual.disabled=false
			form.taxa.disabled=false
			form.vfuturo.disabled=false
			form.nper.disabled=true
			form.vaplic.disabled=true
		break;		
		case "9" :
			form.vatual.value="#######################"
			form.taxa.value=""
			form.vfuturo.value=""
			form.nper.value="#########"
			form.vaplic.value=""
			form.vatual.disabled=true
			form.taxa.disabled=false
			form.vfuturo.disabled=false
			form.nper.disabled=true
			form.vaplic.disabled=false
		break;
		
	}
	form.resultado.value=""
}
//Fim de Define Campos


//Calcular Resultados
var result="";
var resultmemo="";
function CalcResult(form){
	var op = form.opcao.value
	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 vaplic = parseFloat(form.vaplic.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 a resgatar: "+moeda+vfuturo;
					result = "Valor futuro a resgatar: "+moeda+" "+vfuturo;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;	
			case "2" :
				if (!isNaN(vaplic) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {				
					if (op==1) {
						expo = Math.pow((1+taxa), (nper+1));
						vfuturo = Math.round(100*vaplic*((expo-(1+taxa))/taxa))/100;
					}
					if (op==2) {
						expo = Math.pow((1+taxa), nper);
						vfuturo = Math.round(100*vaplic*((expo-1)/taxa))/100;
					}
					resultmemo = vfuturo;
					vfuturo = Formata(vfuturo, formtipo);				
							
					resultado = "Valor a resgatar: "+moeda+vfuturo;
					result = "Valor futuro a resgatar: "+moeda+" "+vfuturo;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "3" :
				if (!isNaN(vfuturo) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					var txtaplic = ""
					if (op==1) {
						expo = Math.pow((1+taxa), (nper+1));
						vaplic = Math.round(100*vfuturo*(taxa/(expo-(1+taxa))))/100;
						txtaplic = " (no in&iacute;cio de cada per&iacute;odo)"
					}
					if (op==2) {
						expo = Math.pow((1+taxa), nper);
						vaplic = Math.round(100*vfuturo*(taxa/(expo-1)))/100;
						txtaplic = " (no final de cada per&iacute;odo)"
					}
					resultmemo = vaplic;
					vaplic = Formata(vaplic, formtipo);
					
					var txt = (nper>1)? "das aplicações periódicas" : "da aplicação"
					resultado = "Valor "+txt+": "+moeda+vaplic;
					result = "Valor "+txt+": "+moeda+" "+vaplic+txtaplic;
					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 Aplicado: "+moeda+vatual;
					result = "Valor atual Aplicado: "+moeda+" "+vatual;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;		
			case "5" :
				if (!isNaN(vaplic) && !isNaN(nper) && !isNaN(taxa) && nper>=1 && taxa>0) {
					if (op==1) {
						expo = Math.pow((1+taxa), nper);
						var expo1 = Math.pow((1+taxa), (nper-1));
						vatual = Math.round(100*vaplic*((expo-1)/(taxa*expo1)))/100;
					}
					if (op==2) {
						expo = Math.pow((1+taxa), nper);
						vatual = Math.round(100*vaplic*((expo-1)/(taxa*expo)))/100;
					}
					resultmemo = vatual;
					vatual = Formata(vatual, formtipo);
						
					resultado = "Valor atual equivalente: "+moeda+vatual;
					result = "Valor atual equivalente: "+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 "8" :
				if (!isNaN(vatual) && !isNaN(vfuturo) && !isNaN(taxa) && taxa>0) {				
					var parc1 = Math.log(vfuturo/vatual);
					var parc2 = Math.log(1+taxa);
					nper = Math.abs(Math.round(100*(parc1/parc2))/100);
					resultmemo = nper;
									
					var txt = (nper>1)? " períodos: " : " período: "
					resultado = "Quantidade de"+txt+nper;
					if (vfuturo<vatual) {resultado="Valor Futuro menor que Valor Aplicado. Verifique os dados"; resultmemo="";}
					result = resultado
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;		
			case "9" :
				if (!isNaN(vaplic) && !isNaN(vfuturo) && !isNaN(taxa) && taxa>0) {
				var parc1, parc2;
					if (op==1) {
						parc1 = Math.log((vfuturo*taxa/vaplic)+(1+taxa));
						parc2 = Math.log(1+taxa);
						nper = Math.abs(Math.round(100*((parc1/parc2)-1))/100);
					}
					if (op==2) {
						parc1 = Math.log((vfuturo*taxa/vaplic)+1);
						parc2 = Math.log(1+taxa);
						nper = Math.abs(Math.round(100*((parc1/parc2)))/100);
					}
					resultmemo = nper;
									
					var txt = (nper>1)? " aplicações: " : " aplicação: "
					resultado = "Quantidade de"+txt+nper;
					if (vfuturo<vaplic) {resultado="Valor Futuro menor que valor das aplicações.  Verifique os dados"; 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.vaplic.disabled=true
	form.opcao.value = 2
	tipocalc = "1"
}
//Fim de Restaura Valores


//Transporta Taxa
function Transport(form){
	if (form.taxatotal.value!="" && tipocalc!="6" && tipocalc!="7") {
		document.aplic.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("aplic_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.")}
}
