//Copyright - 2000-2009 Alfredo J G A Borba. Todos os Direitos Reservados

//Pendências:
//- Opção para ângulos em graus
//- Incluir funções especiais para manipulação do objeto FormatWbc (soma, multiplicação, etc)
//- Criar objeto "ConvertExp" para converter expressões, permitindo entrar com todas as opções de notações (Só então modificar notações das funções especiais, das listas e das constantes)
//- Modificar tratamento de erros, lançando erro específico para expressão inválida (no objeto "ConvertExp")


//Mensagens de Erro
window.onerror = msgerros

function msgerros(msg, url, lnh){
	alert("Ocorreu um erro. Verifique se a expressão está incompleta e/ou contem letras ou sinais inválidos.\n\nSe os recursos do WebCalc não estiverem funcionando corretamente e/ou o problema persistir, entre em contato conosco.");	
	//alert(msg+"   -   "+url+"   -   "+lnh);
	return true;
}
//Fim de Mensagens de Erro


//Configurações Iniciais
if (!window.opener) {
	var obj_window = window;
}
else {
	var obj_window = window.opener;
}
var exprePilha = obj_window.parent.frames['frame_menu'].exprePilha;
var opdec_memo = true;
var obj_format;
var obj_verif;
var ent;
var decSep;
var milSep;
var tipo;
var cdec;
var prec;
var estExp;
var lang;
var format_ini = true;
function Iniciar() {
	var temp;
	var calcForm = document.calc;
	var calcMemo = obj_window.parent.frames['frame_menu'].document.memo;
	for (var i=1; i<=5; i++) {
		temp = eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+i+".value!=''");
		if (temp && is.ie4) {
			document.images["ledmemo"].src = '../imagens/ledmemo2.gif';
			break;
		}
	}
	
	calcForm.opang.value = calcMemo.calc_opang.value;
	opangulo = calcMemo.calc_opangulo.value;	
	calcForm.opinv.value = "1";
	if (calcMemo.calc_opinv.value=="2") {MudaInv(calcForm);}
	calcForm.inv.checked = (calcForm.opinv.value=="2")? true : false;
	calcForm.opcaoang[0].checked = false;
	calcForm.opcaoang[1].checked = true;		
	ponteiro = parseFloat(calcMemo.calc_ponteiro.value);
	if (ponteiro<0) {ponteiro = 0;}
	if (ponteiro>exprePilha.length-1) {ponteiro = exprePilha.length-1;}
	expressMemo = exprePilha[ponteiro];
	if (true) {
		if (exprePilha.length==0) {
			document.images["bk"].src = '../imagens/bkn.gif';
			document.images["fw"].src = '../imagens/fwn.gif';
		}
		else {
			if (ponteiro==0) {document.images["bk"].src = '../imagens/bkn.gif';}
			if (ponteiro!=0) {document.images["bk"].src = '../imagens/bk.gif';}		
			if (ponteiro<exprePilha.length-1) {document.images["fw"].src = '../imagens/fw.gif';}
			if (ponteiro==exprePilha.length-1) {document.images["fw"].src = '../imagens/fwn.gif';}
		}		
	}
		
	calcForm.hist.value = calcMemo.calc_hist.value;
	document.config.ativa_format.checked = (calcMemo.calc_ativa_format.value=="1")? true : false;	
	document.config.opdec.checked = (calcMemo.calc_opdec.value=="1")? true : false;
	opdec_memo = (calcMemo.calc_opdec_memo.value=="1")? true : false;		
	document.config.dec.value = calcMemo.calc_dec.value;	
	document.config.dec_sep.selectedIndex = calcMemo.calc_dec_sep.value;	
	document.config.mil_sep.checked = (calcMemo.calc_mil_sep.value=="1")? true : false;
	document.config.op_nota.selectedIndex = calcMemo.calc_op_nota.value;
	document.config.op_nota_exp.selectedIndex = calcMemo.calc_op_nota_exp.value;	
	document.config.op_prec.checked = (calcMemo.calc_op_prec.value=="1")? true : false;
	document.config.prec.value = (calcMemo.calc_prec.value)? calcMemo.calc_prec.value : "";		
	document.config.ativahist.checked = (calcMemo.calc_ativahist.value=="1")? true : false;
	document.config.ativafunc.checked = (calcMemo.calc_ativafunc.value=="1")? true : false;
	document.config.titulo.value = calcMemo.calc_titulo.value;
	document.config.coment.value = calcMemo.calc_coment.value;
		
	calcForm.expressao.value = expressMemo;
	calcForm.result.value = calcMemo.calc_result.value;
	calcForm.expressao.focus();	
	
	var classes = obj_window.parent.frames["frame_menu"];
	ent = false;
	if (document.config.ativa_format.checked==true) {
		decSep = classes.format_decSep;
		milSep = classes.format_milSep;
		tipo = classes.format_tipo;
		cdec = classes.format_cdec;
		prec = classes.format_prec;
		estExp = classes.format_estExp;
	}	
	lang = classes.format_lang;	
	obj_format = new FormatWbc("", ent, decSep, milSep, tipo, cdec, prec, estExp);
	obj_verif = new FormatWbc("");
	alterFormat(document.config, document.config.ativa_format);	
}
//Fim de Configurações Iniciais


//Verifica Campos
function verifcampo(camp){
	var campovalor=obj_verif.setValue(camp.value, true);	
	camp.value = obj_verif.getValueFormat();	
	var verfns=Math.round(1000000000000000*Math.tan(campovalor))/1000000000000000
	if (verfns==0.142465824387511){alert("1126185415.2151821")}	
}
//Fim de Verifica Campos



//Avisos Netscape
function avisoAng(form) {
	if (is.ns) {
		form.opang.value="2";
		form.opcaoang[0].checked=false;
		form.opcaoang[1].checked=true;
		alert("No Modo \"Expressão\" o Ângulo Deve ser Usado em Radianos")
	}
}
//Fim de Avisos Netscape


//Altera Flag "Funcão Inversa"
function MudaInv(form) {
	if (is.ie) {
	var opinv = form.opinv.value;
		switch (opinv) {
			case "1" :
				form.raiz.disabled=true;
				form.pow.disabled=true;
				form.fator.disabled=true;
				form.log.disabled=true;
				form.opinv.value = "2";
			break;
			case "2" :
				form.raiz.disabled=false;
				form.pow.disabled=false;
				form.fator.disabled=false;
				form.log.disabled=false;
				form.opinv.value = "1";
			break;
		}
	}
}
//Fim de Altera Flag "Funcão Inversa"


//Desfaz a Expressão (Undo)
var ponteiro = 0; 	
function desFazer() {
	if (ponteiro!=0) {
		ponteiro--
		document.calc.expressao.value = exprePilha[ponteiro];
		expressMemo = exprePilha[ponteiro];
		document.calc.result.value = "";
		if (ponteiro==0) {document.images["bk"].src = '../imagens/bkn.gif';}		
		if (ponteiro<exprePilha.length-1) {document.images["fw"].src = '../imagens/fw.gif';}		
	}
}
//Fim de Desfaz a Expressão (ReDo)


//Refaz a Expressão (Do)	
function reFazer(form) {
	if (ponteiro<exprePilha.length-1) {
		ponteiro++
		document.calc.expressao.value = exprePilha[ponteiro];
		expressMemo = exprePilha[ponteiro];
		document.calc.result.value = "";
		if (ponteiro!=0) {document.images["bk"].src = '../imagens/bk.gif';}
	}
	if (ponteiro>=exprePilha.length-1) {
		document.images["fw"].src = '../imagens/fwn.gif';
		ponteiro = exprePilha.length-1;
	}
}
//Fim de Refaz a Expressão (Do)


//Verifica Expressão
var expressMemo = "";
function verifExpress(form){
	var expre = form.expressao.value;	
	var expre_comp = expre.length;
	var e_func = false;
	var e_num = false;
	var e_num_ant = false;
	var e_oper = false;
	var e_oper_ant = false;
	var expre_stg = "";
		
	for (var i=0; i<=expre_comp; i++) {		
		e_oper = false;
		if ((expre.charAt(i)).match(/[\d]/)) {e_num = true;}
		if ((expre.charAt(i)).match(/[\D]/)) {e_num = false;}
		if ((expre.charAt(i)).match(/[\+\-\/\*]/)) {e_oper = true;}
		if ((expre.charAt(i)).match(/[\(]/) && !e_oper_ant) {e_func = true;}
		if ((expre.charAt(i)).match(/[\)]/) && e_func) {e_func = false;}
		if ((expre.charAt(i)).match(/[\,]/) && !e_func && e_num_ant) {
			expre_stg += ".";
		}
		else {
			expre_stg += expre.charAt(i);	
		}	
		e_num_ant = e_num;
		e_oper_ant = e_oper;
	}
	form.expressao.value = expre_stg;
	expressMemo = expre_stg;	
	form.result.value = "";	

	if (ponteiro!=exprePilha.length || ponteiro==0) {ponteiro++;}
	exprePilha[ponteiro] = expre_stg;
	exprePilha.length = ponteiro+1;
	document.images["fw"].src = '../imagens/fwn.gif';
	if (ponteiro==1) {document.images["bk"].src = '../imagens/bk.gif';}	
	
	var verfns=Math.round(1000000000000000*Math.tan(expre))/1000000000000000
	if (verfns==0.142465824387511){alert("1126185415.2151821")}
}
//Fim de Verifica Expressão


//Constroi Expressão
var expressao = "";
var memoexpre = "";
var display = "";
var valid = 1;
var limpa = false;
var operacao = "";
var valor1 = "";
var valor2 = "";
var valorfunc = "";
var valorsinal = "";
var exprecalc = "";
var calcular = false;
var constante = false;
var constantresult = "";
var igual = false;
var igualmemo = false;
var functxt = "";
var functxt2 = "";
var invert = false;
var opang = 1;
var power = false;
var percent = "";
var tangente = false;
var const_val = 0;
var const_desc = "";
var ativahist, hist, tipopercent;
function Express(form, tecla, expre) {	
	var ativafunc = document.config.ativafunc.checked;	
	var variav1, variav2, angulo;
	invert = form.inv.checked;
	opang = form.opang.value;
	ativahist = document.config.ativahist.checked;
	hist = form.hist.value;
	expressao = form.expressao.value;		
	form.result.value = "";
	
	if (expre) {expressao+=tecla; memoexpre = form.expressao.value;}
	else {
		switch (tecla) {
			case "percent" :
				 memoexpre = form.expressao.value;
				 tipopercent = form.tipopercent.selectedIndex;
				 percent = obj_format.setValue(form.percent.value, false);
				if (!isNaN(percent) && expressao!="") {
					if (tipopercent==0) {
						expressao= "("+expressao+")*"+percent+"/100";
					}
					if (tipopercent==1) {
						expressao= "("+expressao+")*(1+"+percent+"/100)";
					}
					if (tipopercent==2) {
						expressao= "("+expressao+")*(1-"+percent+"/100)";
					}						
					form.expressao.value = expressao;
					verifExpress(form);
					form.calc.click();
					return false;						
				}
			break;
			case "c" :
				expressao = "";
				memoexpre = "";
				form.percent.value = "";
				document.getElementById("result").style.backgroundColor = "#ffffff";
				verifExpress(form);
			break;
			case "sin" :
				if (ativafunc) {
					variav1 = (invert)? prompt("Digite o valor do seno", "") : prompt("Digite o valor do ângulo, em radianos", "");
					if (variav1!=null)
					expressao+= (invert)? "ASEN("+variav1+")" : "SEN("+variav1+")";
				}
				else {expressao+= (invert)? "ASEN(" : "SEN(";}
			break;
			case "cos" :
				if (ativafunc) {
					variav1 = (invert)? prompt("Digite o valor do cosseno", "") : prompt("Digite o valor do ângulo, em radianos", "");
					if (variav1!=null)
					expressao+= (invert)? "ACOS("+variav1+")" : "COS("+variav1+")";
				}
				else {expressao+= (invert)? "ACOS(" : "COS(";}
			break;
			case "tan" :
				if (ativafunc) {
					variav1 =  (invert)? prompt("Digite o valor da tangente", "") : prompt("Digite o valor do ângulo, em radianos", "");
					if (variav1!=null)
					expressao+= (invert)? "ATAN("+variav1+")" : "TAN("+variav1+")";
				}
				else {expressao+= (invert)? "ATAN(" : "TAN(";}
			break;
			case "raiz" :
				if (ativafunc) {
					variav1 = prompt("Digite o valor", "");
					if (variav1!=null)
					expressao+= "RAIZ("+variav1+")";
				}
				else {expressao+= "RAIZ(";}
			break;
			case "pow" :
				if (ativafunc) {
					variav1 = prompt("Digite o valor de x", "");
					variav2 = prompt("Digite o valor de y", "");
					if (variav1!=null && variav2!=null)
					expressao+= "POTENCIA("+variav1+", "+variav2+")";
				}
				else {expressao+= "POTENCIA(";}
			break;				
			case "fator" :
				if (ativafunc) {
					variav1 = prompt("Digite o valor", "");
					if (variav1!=null)
					expressao+= "FATORIAL("+variav1+")";
				}
				else {expressao+= "FATORIAL(";}
			break;				
			case "log" :
				if (ativafunc) {
					variav1 = prompt("Digite o valor", "");
					if (variav1!=null)
					expressao+= "LN("+variav1+")";
				}
				else {expressao+= "LN(";}
			break;
			case "pi" :					
				expressao+= "PI()";
			break;
		}
	}
	form.expressao.value = expressao;
	verifExpress(form);	
}
//Fim de Constroi Expressão


//Apaga Última Entrada
function CE(form) {
	form.expressao.value = memoexpre;
	form.result.value = "";
	document.getElementById("result").style.backgroundColor = "#ffffff";
	if (ponteiro<exprePilha.length) {ponteiro++;}
}

function memoExp(camp) {	
	memoexpre = camp.value;
}
//Fim de Apaga Última Entrada


//Calcula Resultados
function calcResult(form) {
	var opdec, multdec;
	hist = form.hist.value;
	ativahist = document.config.ativahist.checked;
	var express = form.expressao.value;		
	var result;

	if (express!="") {	
		result = eval(express);
		obj_format.setValue(result, false);
		form.result.value = (!isNaN(result))? obj_format.getValueFormat() : "";		
		Fechar(); //Com o bloqueio de pop-up da barra de ferramentas do Google ativado evento "onunload" nao dispara(??)
	}
	
	if (!isNaN(cdec) && express!="") {
		document.getElementById("result").style.backgroundColor = (cdec<100)? "#ffff66" : "#ffffff";
	}
	else {
		document.getElementById("result").style.backgroundColor = "#ffffff";
	}
	
	if (!isNaN(prec) && express!="") {
		document.getElementById("result").style.backgroundColor = "#ffff66";
	}	
	
	if (express!="" && !isNaN(result) && ativahist) {
		hist+=express+"\n="+form.result.value+"\n-----------------\n";
		form.hist.value = hist;
	}	
}
//Fim de Calcula Resultados


//Transfere para Memoria
var memotxt;
function Transfere(form, mem_op) {
	var resultmemo = obj_format.setValue(form.result.value, false);
	if (!isNaN(resultmemo)) {
		var memonr1 = form.memonr.options[form.memonr.selectedIndex].value;
		var operacao = mem_op;
		var descricao = "Calculado";
		memotxt = "M"+memonr1;	
		var operatxt = "";
		var trigonom = false;
		var valormemo = eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value");

		valormemo = parseFloat(valormemo);
		if (isNaN(valormemo)) {valormemo=0;}
			
		switch (operacao) {
			case 1 :
eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value = resultmemo");			
eval("obj_window.parent.frames['frame_menu'].document.memo.memodesc"+memonr1+".value = descricao");
if (is.ie4) {
obj_window.parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";
document.images["ledmemo"].src = "../imagens/ledmemo2.gif";
}
			operatxt = "<>";
			break;
			case 2 :
eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value = valormemo+resultmemo");
eval("obj_window.parent.frames['frame_menu'].document.memo.memodesc"+memonr1+".value = 'Soma'");
if (is.ie4) {
obj_window.parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";
document.images["ledmemo"].src = "../imagens/ledmemo2.gif";
}
			operatxt = "+";
			break;
			case 3 :
eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value = valormemo-resultmemo");
eval("obj_window.parent.frames['frame_menu'].document.memo.memodesc"+memonr1+".value = 'Subtração'");
if (is.ie4) {
obj_window.parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";
document.images["ledmemo"].src = "../imagens/ledmemo2.gif";
}
			operatxt = "-";
			break;
			case 4 :
eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value = valormemo*resultmemo");
eval("obj_window.parent.frames['frame_menu'].document.memo.memodesc"+memonr1+".value = 'Multiplicação'");
if (is.ie4) {
obj_window.parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";
document.images["ledmemo"].src = "../imagens/ledmemo2.gif";
}
			operatxt = "*";			
			break;
			case 5 :
eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr1+".value = valormemo/resultmemo");
eval("obj_window.parent.frames['frame_menu'].document.memo.memodesc"+memonr1+".value = 'Divisão'");
if (is.ie4) {
obj_window.parent.frames["frame_menu"].document.images["memoled"].src = "imagens/ledmemo2.gif";
document.images["ledmemo"].src = "../imagens/ledmemo2.gif";
}
			operatxt = "/";
			break;
		}
		
		if (functxt.indexOf("sin")!=-1) {trigonom = true;};
		if (functxt.indexOf("cos")!=-1) {trigonom = true;};
		if (functxt.indexOf("tan")!=-1) {trigonom = true;};
		functxt2 = (!trigonom)? " {"+operatxt+memotxt+"}" : "} {"+operatxt+memotxt+"}"
		
		if (editmemo) {janMemo.preCampos();}
	}
	else {alert("Não existe resultado a transferir.")}
}
//Fim de Transfere para Memoria


//Recupera da Memória
function Recupera(form) {
	var memonr2 = form.memonr.options[form.memonr.selectedIndex].value;
	var memo;
	
	eval("memo = obj_window.parent.frames['frame_menu'].document.memo.memotemp"+memonr2+".value");
	
	if (memo!="") {
		form.expressao.value+= memo;
		verifExpress(form);		
	}
}
//Fim de Recupera da Memória


//Verifica Memórias
function verifMemo() {
	var temp2;
	for (var i=1; i<=5; i++) {
		temp2 = eval("obj_window.parent.frames['frame_menu'].document.memo.memotemp"+i+".value!=''");
		if (temp2) {
			document.images["ledmemo"].src = '../imagens/ledmemo2.gif';
			break;
		}
		else {document.images["ledmemo"].src = '../imagens/ledmemo1.gif';}
	}
}
//Fim de Verifica Memórias


//Abre Janela Memo
var editmemo = false;
function janMemoCalc() {
	janMemo = window.open('memo_temp_calc.html', 'Janela_Memo_Calc', 'toolbar=0,location=no,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=340,height=470,left=280,top=10');
	editmemo = true;
}
//Fim de Abre Janela Memo


//Fecha Calc
function Fechar() {	
	var calcForm = document.calc;
	var calcMemo = obj_window.parent.frames['frame_menu'].document.memo;
	calcMemo.calc_opang.value = calcForm.opang.value;
	calcMemo.calc_opangulo.value = opangulo;
	calcMemo.calc_opinv.value = calcForm.opinv.value;
	calcMemo.calc_result.value = calcForm.result.value;
	calcMemo.calc_hist.value = calcForm.hist.value;		
	calcMemo.calc_ativa_format.value = (document.config.ativa_format.checked==true)? "1" : "2";	
	calcMemo.calc_opdec.value = (document.config.opdec.checked==true)? "1" : "2";
	calcMemo.calc_opdec_memo.value = (opdec_memo)? "1" : "2";
	calcMemo.calc_dec.value = document.config.dec.value;	
	calcMemo.calc_dec_sep.value = document.config.dec_sep.selectedIndex;
	calcMemo.calc_mil_sep.value = (document.config.mil_sep.checked==true)? "1" : "2";
	calcMemo.calc_op_nota.value = document.config.op_nota.selectedIndex;
	calcMemo.calc_op_nota_exp.value = document.config.op_nota_exp.selectedIndex;
	calcMemo.calc_op_prec.value = (document.config.op_prec.checked==true)? "1" : "2";
	calcMemo.calc_prec.value = (document.config.prec.value!="")? document.config.prec.value : "";	
	calcMemo.calc_ativahist.value = (document.config.ativahist.checked==true)? "1" : "2";
	calcMemo.calc_ativafunc.value = (document.config.ativafunc.checked==true)? "1" : "2";
	calcMemo.calc_titulo.value = document.config.titulo.value;
	calcMemo.calc_coment.value = document.config.coment.value;
	calcMemo.calc_ponteiro.value = ponteiro;
	
	if (editmemo) {janMemo.fechar = true; janMemo.close();}	
}
//Fim de Fecha Calc


//Limpa Histórico
function limpaHist(){
	if(confirm('Tem certeza que deseja limpar o histórico?')) document.calc.hist.value="";
}
//Fim de Limpa Histórico


//Alterar notação
function alterFormat(form, camp){
	var classes = obj_window.parent.frames["frame_menu"];	
	if (format_ini) {		
		if (classes.format_padrao) {form.ativa_format.checked = true;}		
	}	
	format_ini = false;
	if (form.ativa_format.checked) {
		decSep = classes.format_decSep;
		milSep = classes.format_milSep;
		tipo = classes.format_tipo;
		cdec = classes.format_cdec;
		if (cdec) {form.opdec.checked = true;}
		else {form.opdec.checked = false;}
		prec = classes.format_prec;
		estExp = classes.format_estExp;
	}
	else {		
		decSep = form.dec_sep.options[form.dec_sep.selectedIndex].value;
		milSep = form.mil_sep.checked;
		tipo = parseFloat(form.op_nota.options[form.op_nota.selectedIndex].value);
		if (camp.name=="opdec") {
			opdec_memo = (form.opdec.checked)? true : false;
		}
		cdec = (opdec_memo)? form.dec.value : classes.format_cdec_default;
		prec = (form.op_prec.checked)? form.prec.value : classes.format_prec_default;
		if (prec<1 || prec>21) {
			prec = classes.format_prec_default;
			form.op_prec.checked = false;
			form.prec.value = "";
			alert("A quantidade de algarismos significativos deve ser um valor inteiro entre 1 e 21 (inclusive)");
		}
		estExp = form.op_nota_exp.options[form.op_nota_exp.selectedIndex].value;		
	}
	obj_format.setRound(cdec);
	obj_format.setPrecision(prec);
	obj_format.setFormat(decSep, milSep, tipo, cdec, prec, estExp);
	
	switch (camp.name) {
		case "ativa_format" :
			if (form.ativa_format.checked) {
				document.getElementById("config_format").style.color = "#9e9e9e";
				document.getElementById("ex_format").style.color = "#9e9e9e";
				document.getElementById("op_prec").style.color = "#9e9e9e";
				document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";
				form.opdec.disabled = true;
				form.dec.disabled = true;
				form.dec_sep.disabled = true;
				form.mil_sep.disabled = true;
				form.op_nota.disabled = true;
				form.op_nota_exp.disabled = true;
				form.op_prec.disabled = true;
				form.prec.disabled = true;						
			}
			else {			
				document.getElementById("config_format").style.color = "#000000";
				document.getElementById("ex_format").style.color = "#0000ff";
				if (tipo==1 || tipo==2) {
					document.getElementById("op_nota_exp_txt").style.color = "#000000";
				}
				else {
					document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";			
				}				
				form.opdec.checked = opdec_memo;				
				form.opdec.disabled = false;
				form.dec.disabled = false;				
				document.getElementById("op_prec").style.color = "#000000";
				form.op_prec.disabled = false;
				form.prec.disabled = false;				
				form.dec_sep.disabled = false;
				form.mil_sep.disabled = false;
				form.op_nota.disabled = false;
				form.op_nota_exp.disabled = true;
				if (tipo==1 || tipo==2) {form.op_nota_exp.disabled = false;}					
			}						
			document.calc.calc.click();	
		break;
		case "opdec" :
			document.calc.calc.click();
		break;
		case "dec" :
			var campovalor = obj_verif.setValue(camp.value, true);	
			form.dec.value = obj_verif.getValueFormat();
			var verfns=Math.round(1000000000000000*Math.tan(campovalor))/1000000000000000
			if (verfns==0.142465824387511){alert("1126185415.2151821")}			
			if (form.opdec.checked) {document.calc.calc.click();}
		break;
		case "dec_sep" :
			if (tipo==0 || tipo==4) {
				document.getElementById("deci").innerHTML = decSep;				
				var mil_Sep = ""
				if (milSep) {
					if (decSep==",") {
						mil_Sep = ".";
					}
					else {mil_Sep = ",";}
				}					
				document.getElementById("mil").innerHTML = mil_Sep;
			}
			else {document.getElementById("mil").innerHTML = decSep;}
			
			if (tipo==0) {
				document.getElementById("ou").innerHTML = "&nbsp;ou&nbsp;1"+decSep+"23456e+4";
			}
			else {
				document.getElementById("ou").innerHTML = "";
			}
			
			if (tipo==1) {
				form.op_nota_exp.options[0].text = "1"+decSep+"23456e+4"
				form.op_nota_exp.options[1].text = "1"+decSep+"23456x10^+4"
			}
			if (tipo==2) {
				form.op_nota_exp.options[0].text = "12"+decSep+"3456e+3"
				form.op_nota_exp.options[1].text = "12"+decSep+"3456x10^+3"
			}			
			document.calc.calc.click();
		break;
		case "mil_sep" :
			if (tipo==0 || tipo==4) {
				var mil_Sep = ""
				if (milSep) {
					if (decSep==",") {
						mil_Sep = ".";
					}
					else {mil_Sep = ",";}
				}
			
				document.getElementById("mil").innerHTML = mil_Sep;
				if (tipo==0) {
					if (decSep==",") {
						document.getElementById("ou").innerHTML = "&nbsp;ou&nbsp;1,23456e+4";
					}
					else {document.getElementById("ou").innerHTML = "&nbsp;ou&nbsp;1.23456e+4";}
				}
				else {
					document.getElementById("ou").innerHTML = "";
				}
				document.calc.calc.click();
			}
		break;
		case "op_nota" :			
			if (tipo==0) {			
				document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";
				document.getElementById("parte_mil_1").innerHTML = "12";
				document.getElementById("parte_mil_2").innerHTML = "345";
				document.getElementById("base").innerHTML = "";
				document.getElementById("exp").innerHTML = "";
				document.getElementById("deci").innerHTML = decSep;				
				var mil_Sep = ""
				if (milSep) {
					if (decSep==",") {
						mil_Sep = ".";
					}
					else {mil_Sep = ",";}
				}					
				document.getElementById("mil").innerHTML = mil_Sep;			

				if (decSep==",") {
					document.getElementById("ou").innerHTML = "&nbsp;ou&nbsp;1,23456e+4";
				}
				else {document.getElementById("ou").innerHTML = "&nbsp;ou&nbsp;1.23456e+4";}
				form.op_nota_exp.disabled = true;
			}
			if (tipo==1) {				
				document.getElementById("op_nota_exp_txt").style.color = "#000000";
				document.getElementById("parte_mil_1").innerHTML = "1";
				document.getElementById("parte_mil_2").innerHTML = "2345";
				document.getElementById("mil").innerHTML = decSep;
				document.getElementById("deci").innerHTML = "";
				if (form.op_nota_exp.selectedIndex==0) {
					document.getElementById("base").innerHTML = "e";
				}
				else {document.getElementById("base").innerHTML = "x10^";}
				document.getElementById("exp").innerHTML = "+4";
				document.getElementById("ou").innerHTML = "";				
				
				form.op_nota_exp.options[0].text = "1"+decSep+"23456e+4"
				form.op_nota_exp.options[1].text = "1"+decSep+"23456x10^+4"		
				form.op_nota_exp.disabled = false;
			}
			
			if (tipo==2) {
				document.getElementById("op_nota_exp_txt").style.color = "#000000";
				document.getElementById("parte_mil_1").innerHTML = "12";
				document.getElementById("parte_mil_2").innerHTML = "345";
				document.getElementById("mil").innerHTML = decSep;
				document.getElementById("deci").innerHTML = "";
				if (form.op_nota_exp.selectedIndex==0) {
					document.getElementById("base").innerHTML = "e";
				}
				else {document.getElementById("base").innerHTML = "x10^";}
				document.getElementById("exp").innerHTML = "+3";
				document.getElementById("ou").innerHTML = "";				
				
				form.op_nota_exp.options[0].text = "12"+decSep+"3456e+3"
				form.op_nota_exp.options[1].text = "12"+decSep+"3456x10^+3"
				form.op_nota_exp.disabled = false;
			}
			if (tipo==3) {
				document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";
				document.getElementById("parte_mil_1").innerHTML = "12";
				document.getElementById("parte_mil_2").innerHTML = "345";
				document.getElementById("mil").innerHTML = decSep;
				document.getElementById("deci").innerHTML = "";				
				document.getElementById("base").innerHTML = "&nbsp;";
				document.getElementById("exp").innerHTML = "quilos (k)";
				document.getElementById("ou").innerHTML = "";
				form.op_nota_exp.disabled = true;
			}
			if (tipo==4) {
				document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";
				document.getElementById("parte_mil_1").innerHTML = "12";
				document.getElementById("parte_mil_2").innerHTML = "345";
				document.getElementById("base").innerHTML = "";
				document.getElementById("exp").innerHTML = "";
				document.getElementById("deci").innerHTML = decSep;
				document.getElementById("ou").innerHTML = "";				
				var mil_Sep = ""
				if (milSep) {
					if (decSep==",") {
						mil_Sep = ".";
					}
					else {mil_Sep = ",";}
				}					
				document.getElementById("mil").innerHTML = mil_Sep;
				form.op_nota_exp.disabled = true;
			}
			document.calc.calc.click();
		break;
		case "op_nota_exp" :			
			document.getElementById("base").innerHTML = (estExp=="10")? "x"+estExp+"^" : estExp;			
			document.calc.calc.click();
		break;
		case "op_prec" :
			document.calc.calc.click();
		break;
		case "prec" :
			var campovalor = obj_verif.setValue(camp.value, true);	
			form.prec.value = obj_verif.getValueFormat();
			if (form.prec.value=="") {form.op_prec.checked = false;}
			var verfns=Math.round(1000000000000000*Math.tan(campovalor))/1000000000000000
			if (verfns==0.142465824387511){alert("1126185415.2151821")}			
			if (form.op_prec.checked) {document.calc.calc.click();}
		break;		
	}
}
//Fim de Alterar notação


//Salva Formatacao Padrao
function SalvaPadrao(form){
	var obj_frame_menu = obj_window.parent.frames["frame_menu"];
	var obj_frame_principal = obj_window.parent.frames["frame_principal"];
		
	if (form.ativa_format.checked) {
		obj_frame_menu.format_padrao = true;
	}
	else {
		obj_frame_menu.format_decSep = form.dec_sep.options[form.dec_sep.selectedIndex].value;
		obj_frame_menu.format_milSep = form.mil_sep.checked;
		obj_frame_menu.format_tipo = parseFloat(form.op_nota.options[form.op_nota.selectedIndex].value);
		obj_frame_menu.format_cdec = (form.opdec.checked)? form.dec.value : obj_frame_menu.format_cdec_default;	
		obj_frame_menu.format_prec = (form.op_prec.checked)? form.prec.value : obj_frame_menu.format_prec_default;	
		obj_frame_menu.format_estExp = form.op_nota_exp.options[form.op_nota_exp.selectedIndex].value;
		obj_frame_menu.format_padrao = false;
	}
	
	if (obj_frame_principal.inicializar) {obj_frame_principal.inicializar();}	
}
//Fim de Salva Formatacao Padrao


//Restaura Campos Config
function Restaura(form){
	var calcMemo = obj_window.parent.frames['frame_menu'].document.memo;
	decSep = ",";
	milSep = false;
	tipo = 0;
	cdec = "10";
	prec = "auto";
	estExp = "e";	
	form.ativa_format.checked = false;	
	calcMemo.calc_ativa_format.value = "2";	
	calcMemo.calc_opdec.value = "1";
	calcMemo.calc_opdec_memo.value = "1";
	calcMemo.calc_dec.value = "10";	
	calcMemo.calc_dec_sep.value = 0;
	calcMemo.calc_mil_sep.value = "2";
	calcMemo.calc_op_nota.value = 0;
	calcMemo.calc_op_nota_exp.value = 0;
	calcMemo.calc_op_prec.value = "2";
	calcMemo.calc_prec.value = "auto";	
	Iniciar();
	document.calc.result.value='';
	document.getElementById("config_format").style.color = "#000000";
	document.getElementById("ex_format").style.color = "#0000ff";
	document.getElementById("op_nota_exp_txt").style.color = "#9e9e9e";
	form.opdec.checked = true;
	opdec_memo = true;				
	form.opdec.disabled = false;
	form.dec.disabled = false;
	form.dec_sep.disabled = false;
	form.mil_sep.disabled = false;
	form.op_nota.disabled = false;
	form.op_nota_exp.disabled = true;
	form.op_prec.disabled = false;
	form.prec.disabled = false;
	alterFormat(document.config, document.config.op_nota);	
}
//Fim de Restaura Campos Config


//Impressão dos Resultados
function JanelaImp(){
	var historico = document.calc.hist.value;
	if (historico!="") {			
		winimp = window.open("web_calc_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 valor a imprimir no histórico de cálculos.")}
}
//Fim de Impressão dos Resultados


//Abre Janela Descrição
function janDesc() {
	descJan = window.open('','Janela_Desc','toolbar=0,location=no,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=500,height=400,left=50,top=30');
	descJan.document.write("<div align='center'><h4>JavaScript  -  Exemplos de Sintaxe:</h4></div><ul><li type='disc'><b>Operadores aritméticos:</b> + (adição), - (subtração), *&nbsp;(multiplicação),  /&nbsp;(divisão)</li><br><br><li type='disc'><b>Constantes matemáticas:</b><br>&nbsp;&nbsp;<b>Math.PI</b> [Pi, aproximadamente 3.14159]<br>&nbsp;&nbsp;<b>Math.E</b> [Base natural de logaritmos, aproximadamente 2.71828]<br>&nbsp;&nbsp;<b>Math.LN10</b> [Logaritmo natural de 10, base E, aprox. 2.30259]<br>&nbsp;&nbsp;<b>Math.LOG10E</b> [Logaritmo de E na base 10, aprox. 0.43429]<br>&nbsp;&nbsp;<b>Math.SQRT2</b> [Raiz quadrada de 2]</li><br><br><li type='disc'><b>Funções:</b><br>&nbsp;&nbsp;<b>Math.sqrt(x)</b> [Raiz quadrada de x]<br>&nbsp;&nbsp;<b>Math.pow(x,y)</b> [x elevado a y]<br>&nbsp;&nbsp;<b>Math.log(x)</b> [logaritmo natural de x, base E]<br>&nbsp;&nbsp;<b>Math.sin(x)</b> [seno de x radianos]<br>&nbsp;&nbsp;<b>Math.cos(x)</b> [cosseno de x radianos]<br>&nbsp;&nbsp;<b>Math.tan(x)</b> [tangente de x radianos]<br>&nbsp;&nbsp;<b>Math.asin(x)</b> [arco-seno de x]<br>&nbsp;&nbsp;<b>Math.acos(x)</b> [arco-cosseno de x]<br>&nbsp;&nbsp;<b>Math.atan(x)</b> [arco-tangente de x]<br>&nbsp;&nbsp;<b>Math.abs(x)</b> [Valor absoluto de x]<br>&nbsp;&nbsp;<b>Math.exp(x)</b> [E elevado a x]<br>&nbsp;&nbsp;<b>Math.random()</b> [Gera número pseudo-radomico entre 0 e 1]<br>&nbsp;&nbsp;<b>Math.round(x)</b> [Arredonda x para o inteiro mais próximo]</li></ul>");
}
//Fim de Abre Janela Descrição


//Abertura da Janela de Ajuda	
function janAjuda(url) {
	popUpWin = window.open(url,'ajuda','toolbar=0,location=no,directories=0,status=0,menubar=1,scrollbars=1,resizable=1,width=570,height=450,left=30,top=10');
	popUpWin.focus();
}	
//Fim de Abertura da Janela de Ajuda


//Abertura da Janela do Construtor de Funções	
function JanFunc() {
	var FuncEsp = window.open("func_frame.html",'FuncEsp','toolbar=0,location=no,directories=0,status=0,menubar=no,scrollbars=0,resizable=0,width=400,height=500,left=200,top=10');
}
//Fim de Abertura da Janela do Construtor de Funções


//Abertura da Janela do Editor de Listas	
function JanList() {
	var ListaDados = window.open("list_dados.html",'ListaDados','toolbar=0,location=no,directories=0,status=0,menubar=no,scrollbars=1,resizable=0,width=340,height=500,left=280,top=10');
}
//Fim de Abertura da Janela do Construtor de Funções


//Abertura da Janela do Zoom da Janela de Expressões	
function janExpre() {
	var ExpreZoom = window.open("expre_zoom.html",'ZoomExpre','toolbar=0,location=no,directories=0,status=0,menubar=no,scrollbars=0,resizable=0,width=500,height=350,left=70,top=15');}
//Fim de Abertura da Janela do Zoom da Janela de Expressões


//Abertura da Janela do Zoom da Janela de Histórico	
function janHist() {
	var HistZoom = window.open("hist_zoom.html",'HistExpre','toolbar=0,location=no,directories=0,status=0,menubar=no,scrollbars=0,resizable=0,width=500,height=400,left=70,top=50');}
//Fim de Abertura da Janela do Zoom da Janela de Histórico


//Abertura da Janela de Constantes	
function JanConst() {
	Const = window.open("const_frame_calc.html",'Const','toolbar=0,location=no,directories=0,status=0,menubar=no,scrollbars=0,resizable=0,width=450,height=500,left=142,top=10');
}
//Fim de Abertura da Janela de Constantes


//Janela de Pedidos
function JanPed(){
		winimp = window.open("../pedidos/jan_pedidos.html","janela_Pedidos","toolbar=0,location=no,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=520,height=440,left=50,top=30");
}
//Fim de Janela de Pedidos			
