//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.prestacoes.resultado.value=""
	}
}
//Fim de Verifica Campos Anos


//Define Campos
var tipocalc="1"
function TipoCalc(form){
	tipocalc=form.tipocalc.options[form.tipocalc.selectedIndex].value
	var opcao = form.opcao.value

	switch (tipocalc) {
	   case "1" :
		   form.vatual.value=""
		   form.nprest.value=""
		   form.taxa.value=""
		   form.vprest.value="#######################"
		   form.vatual.disabled=false
		   form.nprest.disabled=false
		   form.taxa.disabled=false
		   form.vprest.disabled=true
	      break;
	   case "2" :
		   form.vatual.value="#######################"
		   form.nprest.value=""
		   form.taxa.value=""
		   form.vprest.value=""
		   form.vatual.disabled=true
		   form.nprest.disabled=false
		   form.taxa.disabled=false
		   form.vprest.disabled=false
	      break;
	   case "3" :
		   form.vatual.value="#######################"
		   form.nprest.value=""
		   form.taxa.value=""
		   form.vprest.value=""
		   form.vatual.disabled=true
		   form.nprest.disabled=false
		   form.taxa.disabled=false
		   form.vprest.disabled=false
	      break;
	   case "4" :
		   form.vatual.value=""
		   form.nprest.value=""
		   form.taxa.value="#########"
		   form.vprest.value=""
		   form.vatual.disabled=false
		   form.nprest.disabled=false
		   form.taxa.disabled=true
		   form.vprest.disabled=false
	      break;
	   case "5" :
		   form.vatual.value=""
		   form.nprest.value="#########"
		   form.taxa.value=""
		   form.vprest.value=""
		   form.vatual.disabled=false
		   form.nprest.disabled=true
		   form.taxa.disabled=false
		   form.vprest.disabled=false
	      break;
	}
	form.resultado.value=""
	if (opcao==2) {
		form.ventrad.value=""
	}
}
//Fim de Define Campos


//Calcular Resultados
var result="";
var resultmemo="";
function CalcPrest(form){
	var vatual = parseFloat(form.vatual.value);
	var op = form.opcao.value
	var ventrad = (form.ventrad.value=="")? 0 : parseFloat(form.ventrad.value);
	var nprest = parseInt(form.nprest.value);
	var taxa = parseFloat(form.taxa.value)/100;
	var vprest = parseFloat(form.vprest.value);
	var moeda = document.config.moeda.value;
	var formtipo = document.config.formato.selectedIndex;
	resultmemo = ""
	var resultado="";
	var expo, vfuturo, vfutent;
	
	var verif = parseFloat(form.nprest.value)-nprest
	if (!isNaN(nprest) && verif!=0) {form.nprest.value=nprest}
	
	if (!loaded) {
		switch (tipocalc) {
			case "1" :
				if (!isNaN(vatual) && !isNaN(nprest) && !isNaN(taxa) && nprest>=1 && taxa>0) {
					if (op==2 && !isNaN(ventrad)) {
						vatual = vatual-ventrad
					}
					
					expo = Math.pow((1+taxa), nprest);
					vprest = Math.round(100*vatual*((taxa*expo)/(expo-1)))/100;
					resultmemo = vprest;
					vprest = Formata(vprest, formtipo);
					
					var txt = (nprest>1)? "das prestações" : "da prestação"
					resultado = "Valor "+txt+": "+moeda+vprest;
					result = "O valor "+txt+" ser&aacute; de "+moeda+" "+vprest;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "2" :
				if (!isNaN(vprest) && !isNaN(nprest) && !isNaN(taxa) && nprest>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nprest);
					if (op==1) {
						vfuturo = Math.round(100*vprest*((expo-1)/taxa))/100;
					}
					else if (op==2 && !isNaN(ventrad)) {
						vfutent = expo*ventrad;
						vfuturo = Math.round(100*(vfutent+vprest*((expo-1)/taxa)))/100;
					}
					resultmemo = vfuturo;					
					vfuturo = Formata(vfuturo, formtipo);
							
					resultado = "O valor futuro será de "+moeda+vfuturo;
					result = "O valor futuro do bem será equivalente a "+moeda+" "+vfuturo;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "3" :
				if (!isNaN(vprest) && !isNaN(nprest) && !isNaN(taxa) && nprest>=1 && taxa>0) {
					expo = Math.pow((1+taxa), nprest);
					vatual = Math.round(100*vprest*((expo-1)/(taxa*expo)))/100;
					if (op==2 && !isNaN(ventrad)) {
						vatual = vatual+ventrad
					}
					resultmemo = vatual;
					vatual = Formata(vatual, formtipo);
							
					resultado = "O valor atual é "+moeda+vatual;
					result = "O valor atual do bem (a vista) é "+moeda+" "+vatual;
					form.resultado.value = resultado
				}
				else {alert("Existe(m) campo(s) com valor inválido ou nulo")}
			break;
			case "4" :
				if (!isNaN(vprest) && !isNaN(nprest) && !isNaN(vatual) && nprest>=1) {
					if (op==2 && !isNaN(ventrad)) {
						vatual = vatual-ventrad
					}
					var i = (vprest/vatual)-((vatual/vprest)*(1/(nprest*nprest)));
					var cont=0;
					var bk=false
					var j;
					
					if (i>0) {
						do {
							var parc1 = 1-Math.pow((1+i), -1*nprest)-((vatual*i)/vprest);
							var parc2 = ((Math.pow((1+i), -1*nprest))*(1+(nprest/(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 prestações 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 "5" :
				if (!isNaN(vprest) && !isNaN(vatual) && !isNaN(taxa) && taxa>0) {
					if (op==2 && !isNaN(ventrad)) {
						vatual = vatual-ventrad
					}				
					var parc1 = Math.log(1/1-(vatual*taxa/vprest));
					var parc2 = Math.log(1+taxa);
					nprest = Math.abs(Math.round(100*(parc1/parc2))/100);
					resultmemo = nprest;
					
					var denom = 1-(vatual*taxa/vprest)
					var txt = (nprest>1)? " prestações: " : " prestação: "
					resultado = "Quantidade de"+txt+nprest;
					if (denom==0) {resultado="Quantidade infinita de prestações"; resultmemo="";}
					if (isNaN(nprest)) {resultado="Valor da prestação 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.nprest.disabled=false
	form.taxa.disabled=false
	form.vprest.disabled=true
	tipocalc="1"
}
//Fim de Restaura Valores


//Transporta Taxa
function Transport(form){
	if (form.taxatotal.value!="" && tipocalc!="4") {
		document.prestacoes.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("prestacoes_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.")}
}
