function mostra_contato_sel(campo){
	if(document.getElementById('mostra_contatos_sel').style.display=='block'){
		document.getElementById('mostra_contatos_sel').style.display='none';
	} else {
		document.getElementById('mostra_contatos_sel').style.display='block';
		topo		= posicao_elemento(campo).top+document.getElementById(campo).clientHeight+1;
		esquerda	= posicao_elemento(campo).left;
		largura		= document.getElementById(campo).offsetWidth;
		document.getElementById('mostra_contatos_sel').style.left	= esquerda+'px';
		document.getElementById('mostra_contatos_sel').style.top	= topo+'px';
		document.getElementById('mostra_contatos_sel').style.width	= largura+'px';
		document.getElementById('mostra_contatos_sel').style.height	= '100px';
		ajaxGet('sel_contatos.php?campo='+campo, document.getElementById('mostra_contatos_sel'), true, '<BR><BR><center><img src="img/carregando.gif" width="126"></center>');
		
	}
}

function exibe_lateral(divexibe) {
	document.getElementById('sheep_conteudo_pastas').style.display = 'none';
	document.getElementById('sheep_calendario_esq').style.display = 'none';
	document.getElementById('sheep_criapasta_esq').style.display = 'none';
	document.getElementById(divexibe).style.display = 'block';
}

function check_contato_sel(campo, recepiente, busca){
	if(document.getElementById(campo).checked){
		document.getElementById(recepiente).value += document.getElementById(campo).value;
	} else {
		quebrado	= document.getElementById(recepiente).value.split(';');
		novo_valor	= '';
		i			= 0;
		for(i=0;i<quebrado.length;i++){
			if(!quebrado[i].match(busca)){
				novo_valor	+=quebrado[i]+';';	
			}
		}
		document.getElementById(recepiente).value = novo_valor;
	}
}

function posicao_elemento(elemID){
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}

function abre_auto_resposta(){
	if(document.getElementById('ativa_resp').checked == true){
		document.getElementById('mostra_auto_resp').style.display = 'block';
	} else {
		document.getElementById('mostra_auto_resp').value = '';
		document.getElementById('mostra_auto_resp').style.display = 'none';
	}
}

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function mostra_cc_cco(){
	document.getElementById('exibir_cc_cco').style.display = 'none';
	document.getElementById('cc_cco').style.display = 'block';
}

function esconde_cc_cco(){
	document.getElementById('exibir_cc_cco').style.display = 'block';
	document.getElementById('cc_cco').style.display = 'none';
	document.getElementById('txt_cc').value				= '';
	document.getElementById('txt_cco').value			= '';
}

function abre_alerta_n_msg(pasta){
	titulo_atual = document.title;
	document.getElementById('alerta_nova_mensagem').style.display = 'block';
	var pesq1 = new RegExp("^{NOVO}.*"); // Caracteres permitidos
	if(!titulo_atual.match(pesq1)){
		document.title = "{NOVO} "+titulo_atual;
	}
}

function fecha_alerta_n_msg(){
	document.getElementById('alerta_nova_mensagem').style.display = 'none';
	window.clearInterval(intervalo_alerta);
}

function abre_alerta_n_agenda(dia, mes, ano){
	titulo_atual = document.title;
	document.getElementById('alerta_nova_agenda').style.display = 'block';
	var pesq1 = new RegExp("^{AGENDA}.*"); // Caracteres permitidos
	if(!titulo_atual.match(pesq1)){
		document.title = "{AGENDA} "+titulo_atual;
	}
}

function fecha_alerta_n_agenda(){
	document.getElementById('alerta_nova_agenda').style.display = 'none';
}

function abre_pesquisa(pasta){
	parent.document.getElementById('pesquisa').style.display = 'block';
	parent.document.getElementById('txt_pesquisa').value	 = 'Digite o que procura';
	parent.document.getElementById('txt_pesquisa').focus();
	nome_pasta = parent.document.getElementById("nome_pasta_atu").value;
	if(nome_pasta=='' || nome_pasta=='Pesquisa'){
		parent.document.getElementById('cad_pesquisa_texto').innerHTML = 'Pesquisar na Caixa de entrada';
	} else {
		parent.document.getElementById('cad_pesquisa_texto').innerHTML = 'Pesquisar na pasta '+nome_pasta;
	}
	
}

function fecha_pesquisa(){
	parent.document.getElementById('pesquisa').style.display = 'none';
}

function abre_cad_contato(nome, email){
	parent.document.getElementById('cad_contato').style.display = 'block';
	parent.document.getElementById('cont_cad_contato').src		= 'cad_contato.php?add_name='+nome+'&add_email='+email;
}

function abre_edt_contato(id){
	parent.document.getElementById('cad_contato').style.display = 'block';
	parent.document.getElementById('cont_cad_contato').src		= 'edit_contato.php?id='+id;
}

function fecha_cad_contato(){
	parent.document.getElementById('cad_contato').style.display = 'none';
}

function abre_cad_agenda(hora, minuto, dia, mes, ano){
	parent.document.getElementById('cad_agenda').style.display = 'block';
	parent.document.getElementById('cont_cad_agenda').src		= 'cad_agenda.php?hora='+hora+'&minuto='+minuto+'&dia='+dia+'&mes='+mes+'&ano='+ano;
}

function abre_edt_agenda(id){
	parent.document.getElementById('cad_agenda').style.display = 'block';
	parent.document.getElementById('cont_cad_agenda').src		= 'edit_agenda.php?id='+id;
}

function fecha_cad_agenda(){
	parent.document.getElementById('cad_agenda').style.display = 'none';
}

function fecha_envia_mail(){
	if(parent.document.getElementById('envia_mail').style.display=='block' && parent.document.getElementById('exib_alerta_fecha_env_mail').value=='1'){
		if(confirm('Você deseja realmente fechar a janela de edição de mensagem?\n')){ 
			parent.document.getElementById('envia_mail').style.display	= 'none';
			document.getElementById("sheep_manda_msg").src				= '';
		}
	} else {
		parent.document.getElementById('envia_mail').style.display	= 'none';
		document.getElementById("sheep_manda_msg").src				= '';
		parent.document.getElementById('exib_alerta_fecha_env_mail').value='1';
	}
}

//function to open a div and load (ajax) content in those div opened
function exibe_div(qualdiv, conteudo){
	esconde_tudo();
	document.getElementById(qualdiv).style.display 	= 'block';
	if(conteudo!=''){
		//ajaxGet(conteudo, document.getElementById(qualdiv), true, '<center><img src="img/carregando.gif" width="126"></center>');			
	}
}


//function to open the master DIV and load pages in the IFrame
function abre_div_princ(conteudo){
	esconde_tudo();
	document.getElementById('cont_sheep_conteudo').src 			= conteudo;
	sleep(500);
	document.getElementById('sheep_conteudo').style.display 	= 'block';
}


//hide all the divs
function esconde_tudo(){
	document.getElementById('sheep_menu_lista').style.display 		= 'none';
	document.getElementById('sheep_lista_msg').style.display 		= 'none';
	document.getElementById('sheep_msg').style.display 				= 'none';
	document.getElementById('sheep_conteudo').style.display 		= 'none';
	fecha_envia_mail();
	fecha_cad_contato();
	document.getElementById('alerta_nova_mensagem').style.display	= 'none';
	document.getElementById('sheep_menu_msg').style.display			= 'none';
}

function retorna(newURL){
	parent.mens_mensagem.location=newURL;
}

function sel() { 
 with(document.form_mail) { 
  for(i=0;i<elements.length;i++) { 
   thiselm = elements[i]; 
   if(thiselm.name.substring(0,8) == 'mensagem') {
	thiselm.checked = !thiselm.checked ;
   } 
  }
 } 
 muda_estilo_msgs();
}

function unsel() { 
 with(document.form_mail) { 
  for(i=0;i<elements.length;i++) { 
   thiselm = elements[i]; 
   if(thiselm.name.substring(0,8) == 'mensagem') {
	thiselm.checked = false;
   } 
  }
 } 
 muda_estilo_msgs();
}

function enviaform(i) {
	var pasta 	= document.getElementById("cont_pasta_atu").value;
	var uid 	= document.getElementById("cont_msg_atu").value;
	if (i==1){ 
		if(confirm('Deseja realmente mover todas mensagens selecionadas?')){
			document.form_mail.action="move_mail.php?multimail=sim&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==2){ 
		if(confirm('Deseja realmente copiar todas mensagens selecionadas?')){
			document.form_mail.action="copy_mail.php?multimail=sim&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==3){ 
		if(confirm('Deseja realmente (des)marcar todas mensagens selecionadas?')){
			document.form_mail.action="marca_mail.php?multimail=sim&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==4){ 
		if(confirm('Confirma a exclusão das mensagens selecionadas?')){
			document.form_mail.action="del_mail.php?multimail=sim&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==5){ 
		if(confirm('Deseja realmente marcar todas mensagens selecionadas como spam?')){
			document.form_mail.action="marca_spam.php?multimail=sim&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==6){ 
		document.getElementById("envia_mail").style.display		= "block";
		document.getElementById("sheep_manda_msg").src			= "cria_mail.php?acao=resp&uid="+uid+"&pasta="+pasta;		
	}
	if (i==7){ 
		document.getElementById("envia_mail").style.display		= "block";
		document.getElementById("sheep_manda_msg").src			= "cria_mail.php?acao=enc&uid="+uid+"&pasta="+pasta;		
	}
	if (i==8){ 
		if(confirm('Deseja realmente (des)marcar a mensagem selecionadas?')){
			document.form_mail.action="marca_mail.php?uid="+uid+"&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==9){ 
		if(confirm('Confirma a exclusão da mensagem selecionada?')){
			document.form_mail.action="del_mail.php?uid="+uid+"&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==10){ 
		document.form_mail.action="msg_imprimir.php?uid="+uid+"&pasta="+pasta;
		document.form_mail.target="_blank";
		document.form_mail.submit();
	}
	if (i==11){ 
		if(confirm('Deseja realmente marcar a mensagem como Não Lida?')){
			document.form_mail.action="marca_mail_nlida.php?uid="+uid+"&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==12){ 
		document.form_mail.action="anexo.php?uid="+uid+"&pasta="+pasta;
		document.form_mail.target="_blank";
		document.form_mail.submit();
	}
	if (i==13){ 
		if(confirm('Deseja realmente liberar este destinatário no anti-spam e tira-teima?')){
			document.form_mail.action="marca_mail_valido.php?uid="+uid+"&pasta="+pasta;
			document.form_mail.target="_self";
			document.form_mail.submit();
		}
	}
	if (i==14){ 
		document.getElementById("envia_mail").style.display		= "block";
		document.getElementById("sheep_manda_msg").src			= "cria_mail.php?acao=respall&uid="+uid+"&pasta="+pasta;		
	}

}

function nova_msg(){
	document.getElementById("envia_mail").style.display		= "block";
	document.getElementById("sheep_manda_msg").src			= "cria_mail.php";		
	
}
   
//function to update folders in left side
function atu_pastas(){
	ajaxGet('pastas.php', document.getElementById('sheep_conteudo_pastas'), false, '<center><img src="img/carregando.gif"></center>');
}

//function to update calendar in left side
function atu_calendario(dia, mes, ano){
	ajaxGet('calendario.php?dia='+dia+'&mes='+mes+'&ano='+ano, document.getElementById('sheep_calendario_esq'), false, '<center><img src="img/carregando.gif" width="126"></center>');
}

//function to change styles of list messages
function muda_estilo_msgs(linha){
	var msgs_abertas = 0;
	for(cont=0;cont<document.getElementById('qtde_msg').value;cont++){
		if(document.getElementById('mensagem_mail_'+cont).checked == true){
			document.getElementById("msg_tab_"+cont).className = "linha_msg_aberta";
			msgs_abertas++;
		} else {
			if(document.getElementById("msg_tab_"+cont).className == "linha_msg_aberta") {
				document.getElementById("msg_tab_"+cont).className = "linha_msg_lida";
			}
		}
	}
	if(document.getElementById("msg_tab_"+linha)){
		document.getElementById("msg_tab_"+linha).className 			= "linha_msg_aberta";
	}
	if(msgs_abertas>0){
		document.getElementById('pasta_sem_msg_sel').style.display 	= 'none';
		document.getElementById('pasta_com_msg_sel').style.display 	= 'block';
	} else {
		document.getElementById('pasta_sem_msg_sel').style.display 	= 'block';
		document.getElementById('pasta_com_msg_sel').style.display 	= 'none';
	}
}


function fecha_painel_msg(){
	abre_msg('');
	esconde_tudo();			
	document.getElementById('sheep_lista_msg').style.height 	= alturatotal+'px';
	document.getElementById('sheep_menu_lista').style.display 	= 'block';
	document.getElementById('sheep_lista_msg').style.display 	= 'block';
	document.getElementById('sheep_msg').style.display 			= 'none';
	document.getElementById('sheep_menu_msg').style.display 	= 'none';
	document.getElementById('pasta_sem_msg_sel').style.display 	= 'block';
	document.getElementById('pasta_com_msg_sel').style.display 	= 'none';
}

function expande_painel_msg(){
	esconde_tudo();
	nalturapainel = alturatotal-8;
	document.getElementById('sheep_msg').style.height 			= nalturapainel+'px';
	document.getElementById('sheep_menu_lista').style.display 	= 'none';
	document.getElementById('sheep_lista_msg').style.display 	= 'none';
	document.getElementById('sheep_msg').style.display 			= 'block';
	document.getElementById('sheep_menu_msg').style.display 	= 'block';
	document.getElementById('pasta_sem_msg_sel').style.display 	= 'none';
	document.getElementById('pasta_com_msg_sel').style.display 	= 'none';
    document.getElementById('btn_expande').innerHTML			= '<a class="barra_msgp" href="Javascript:reduz_painel_msg();"> <img src="img/icone_reduz.png" height="20" border="0" align="absmiddle"></a>';
}

function reduz_painel_msg(){
	document.getElementById('sheep_lista_msg').style.height		= alturalista+'px';
	document.getElementById('sheep_msg').style.height 			= alturapainel+'px';
	document.getElementById('sheep_menu_lista').style.display 	= 'block';
	document.getElementById('sheep_lista_msg').style.display 	= 'block';
	document.getElementById('sheep_msg').style.display 			= 'block';
	document.getElementById('sheep_menu_msg').style.display 	= 'block';
	document.getElementById('pasta_sem_msg_sel').style.display 	= 'none';
	document.getElementById('pasta_com_msg_sel').style.display 	= 'block';
    document.getElementById('btn_expande').innerHTML			= '<a class="barra_msgp" href="Javascript:expande_painel_msg();"> <img src="img/icone_expand.png" height="20" border="0" align="absmiddle"></a>';
}
















// ***************************** Valida digitação de DATAS (só aceita 0-9, (/) .... 
																			// ***************************** Valida digitação de datas em geral (só aceita 0-9 e /.... 
function valida_data(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9/]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9/]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: dd/mm/aaaa'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00/00/0000', event);		
	}
}

// ***************************** Valida digitação de horas em geral (só aceita 0-9 e :.... 
function valida_hora(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9:]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9:]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: hh:mm'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00:00', event);		
	}
}

// ***************************** Faz a confirmação se a data digitada está realmente no padrao válido dd/mm/aaaa
function confirma_data(campo, classerro){
    var dia = document.getElementById(campo).value;
	if(dia.length<10){
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>Data inválida.</b><BR>Esta data deve estar no formato dd/mm/aaaa.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
	} 
}

// ***************************** Faz a confirmação se a hora digitada está realmente no padrao válido hh:mm
function confirma_hora(campo, classerro){
    var dia = document.getElementById(campo).value;
	if(dia.length<5){
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>Hora inválida.</b><BR>Esta hora deve estar no formato hh:mm.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
	} 
}


// *************** Valida formularios
function valida_form(conf_senha){
	var campos  = document.getElementById('campos_valida').value.split(';');
	var valores = document.getElementById('valores_valida').value.split(';');
	var nomes   = document.getElementById('nomes_valida').value.split(';');
	for (i=0;i<campos.length;i++){
		if(valores[i] != 'checked'){
			if(document.getElementById(campos[i]).value == valores[i]) {
				//alert("O campo "+nomes[i]+" é obrigatório.\nPreencha o campo para prosseguir.");
				pos_alert_form(campos[i], '<b>Campo obrigatório.</b><BR>Este campo ('+nomes[i]+') é obrigatório.\nPreencha este campo para prosseguir.'); // chama função para mostrar balão no campo
				document.getElementById(campos[i]).focus();
				return false;
			}
		} else {
			if(!document.getElementById(campos[i]).checked) {
				//alert("O campo "+nomes[i]+" é obrigatório.\nSelecione o campo para prosseguir.");
				pos_alert_form(campos[i], '<b>Campo obrigatório.</b><BR>Este campo ('+nomes[i]+') é obrigatório.\nSelecione uma opção para prosseguir.'); // chama função para mostrar balão no campo
				document.getElementById(campos[i]).focus();
				return false;
			}
		}
	}
	if(conf_senha==1){
		if(document.getElementById('txt_senha').value != document.getElementById('txt_conf_senha').value) {
			//alert("O campo "+nomes[i]+" é obrigatório.\nPreencha o campo para prosseguir.");
			pos_alert_form('txt_senha', '<b>A senha não confere.</b><BR>A senha e a confirmação estão diferentes. Preencha estes campos novamente.'); // chama função para mostrar balão no campo
			document.getElementById('txt_senha').value='';
			document.getElementById('txt_conf_senha').value='';
			document.getElementById('txt_senha').focus();
			return false;
		}	
	}
	if(document.getElementById('btn_envia')){
		document.getElementById('btn_envia').disabled = true;
	}
}




// ************************  Função para formatacao generica de campos
function formataCampo(campo, Mascara, evento) { 
    var boleanoMascara; 
    
    var Digitato = evento.keyCode;
	var campo = document.getElementById(campo);
    exp = /\-|\:|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
    var posicaoCampo = 0;     
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;; 
    
    if (Digitato != 8) { // backspace 
        for(i=0; i<= TamanhoMascara; i++) { 
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/") || (Mascara.charAt(i) == ":")) 
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
            if (boleanoMascara) { 
                NovoValorCampo += Mascara.charAt(i); 
                  TamanhoMascara++;
            }else { 
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                posicaoCampo++; 
              }            
          }     
        campo.value = NovoValorCampo;
          return true; 
    }else { 
        return true; 
    }
}

// ***************************** Valida digitação de e-mail (antes do arroba) - campo=ID do campo (this.id) - event = tecla pressionada (event) - classerro = código da class para aplicar no caso de erro - classnormal = cód. da class qdo estiver normal o campo.... 
function valida_email(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[A-Za-z0-9@._-]*$"); // Caracteres permitidos
	var pesq2 = new RegExp("[@._-]{2}"); // Evitar dupla pontuação seguida pq também não pode
	var pesq3 = new RegExp("[^A-Za-z0-9@._-]|[@._-]{2}", "g"); // Caracteres PROIBIDOS

	if (!document.getElementById(campo).value.match(pesq1) || document.getElementById(campo).value.match(pesq2)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas letras (sem acentos), números, hífem (-), ponto (.) ou underline (_)'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
	}
}

// ***************************** Valida digitação de CEP (só aceita 0-9 e -)
function valida_cep(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9-]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9-]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: 99999-999'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00000-000', event);		
	}
}

// *************** Solicita confirmação ao clicar em algum link. pagina = URL // msg = mensagem para exibição
function valida_link(pagina, msg){
	if(confirm(msg)){ 
		window.location = pagina;
	}
}


// *************** Solicita confirmação ao clicar em algum link. pagina = URL // msg = mensagem para exibição
function valida_link_duplo(pagina, msg, msg2){
	if(confirm(msg)){ 
		if(confirm(msg2)){ 
			window.location = pagina;
		}
	}
}

// *************** Abre nova janela
function abre_janela(url, nome, larg, alt, barra){
	window.open(url, nome,"width="+larg+",height="+alt+",scrollbars="+barra) 
}

// ***************************** Valida digitação de senhas em geral (só aceita A-Za-z0-9.... 
function valida_nome_pasta(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[A-Za-z0-9_]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^A-Za-z0-9_]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 //pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas letras e números em sua senha'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}		
	}
}

// ***************************** Valida digitação de senhas em geral (só aceita A-Za-z0-9.... 
function valida_senha(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[A-Za-z0-9]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^A-Za-z0-9]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas letras e números em sua senha'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}		
	}
}

// ************************  Função para inserir ítens em um select
function inserir_select(meuselect, texto, valor){
    var x=document.getElementById(meuselect); //retorna o objeto select
    var options = x.getElementsByTagName("option"); //pega a lista de options do select
    
    if (x.selectedIndex>=0)
    {
        var y=document.createElement('option'); //cria um novo elemento option
        y.text=texto; //seta o texto do elemento option
        //y.value=options.length; 
		y.value=valor;//seta o valor do elemento option
        try {
            x.add(y,null); // adiciona um novo option no fim da lista para navegadores complacentes
        } catch(ex) {
            x.add(y); // adiciona um novo option no fim da lista para o IE
        }
    }
}
  
function remover_select(meuselect){
	var temp=document.getElementById(meuselect);
	for (m=temp.options.length;m>=0;m--) { 
		temp.options[m]=null 
	}
	temp.options[0] = new Option('/','0');  	
}

// ************************  Função para exibir a caixa de aviso de formulário
function pos_alert_form(camporef, texto){
	var el = document.getElementById(camporef); // Campo de referencia para localização
	var x = 0; //Lado
	var y = el.offsetHeight; // Topo
	var divexib = "alerta_form"; //DIV do alerta
	//Walk up the DOM and add up all of the offset positions.
	while (el.offsetParent && el.tagName.toUpperCase() != 'BODY'){ // Pegar posição do campo do form
		x += el.offsetLeft;
		y += el.offsetTop;
		el = el.offsetParent;
	}

	x += el.offsetLeft;
	y += el.offsetTop;
	document.getElementById(divexib).style.left 		= x + 'px';
	document.getElementById(divexib).style.top 			= (y-5) + 'px';
	document.getElementById(divexib).style.display 		= 'block';
	document.getElementById(divexib+'_texto').innerHTML	= '<font size=1 face=Verdana color=#000000>'+texto+'</font>';
}

// ************************  Função para REMOVER a caixa de alerta nos fomulários
function rem_alert_form(){
	var divexib = "alerta_form";
	document.getElementById(divexib).style.left 		= '0px';
	document.getElementById(divexib).style.top 			= '0px';
	document.getElementById(divexib).style.display 		= 'none';
	document.getElementById(divexib+'_texto').innerHTML	= '&nbsp;';
}


// Trocar estilo de campo
function muda_estilo(atual, status){ // Muda class dos campos (atual=campo, status=tipo da mudança (0 - Normal, 1 - aceso, 2 - erro, 3 - Invisível)
	//alert(atual);
	if(status==0){
		document.getElementById(atual).className = 'campo_normal';
	}
	if(status==1){
		document.getElementById(atual).className = 'campo_aceso';		
	}
	if(status==2){
		document.getElementById(atual).className = 'campo_erro';		
	}
	if(status==3){
		document.getElementById(atual).className = 'campo_invisivel';
	}
	if(status==4){
		document.getElementById(atual).className = 'campo_revelado';
	}
	if(status==5){
		document.getElementById(atual).className = 'campo_invisivel_alterado';
	}
	if(status==6){
		document.getElementById(atual).className = 'campo_invisivel_erro';
	}
	if(status==7){
		document.getElementById(atual).className = 'opaco';
	}
	if(status==8){
		document.getElementById(atual).className = 'transparente';
	}
	if(status==9){
		document.getElementById(atual).className = 'clicavel';
	}
	if(status==10){
		document.getElementById(atual).className = 'spam_parametro_desab';
	}
	if(status==11){
		document.getElementById(atual).className = 'spam_parametro';
	}
	if(status==12){
		document.getElementById(atual).className = 'spam_resultado';
	}
	if(status==13){
		document.getElementById(atual).className = 'campo_invisivel2';
	}
	if(status==14){
		document.getElementById(atual).className = 'campo_revelado2';
	}
	if(status==15){
		document.getElementById(atual).className = 'campo_invisivel_alterado2';
	}
	if(status==16){
		document.getElementById(atual).className = 'campo_invisivel_erro2';
	}

}

// FUNCOES DA PÁGINA DE ANTI-SPAM
function spam_limpar() {
	document.form1.txt_cond.disabled=false;
			document.getElementById('txt_cond_parametro').disabled=false;
		muda_estilo('txt_cond_parametro', '11');

	document.form1.txt_acao.disabled=false;
	document.form1.txt_acao_param.disabled=false;
	document.form1.txt_cond.value='';
	document.getElementById('txt_cond_parametro').value='';
	document.form1.txt_acao.value='';
	document.form1.txt_acao_param.value='';
	document.form1.txt_resultado.value='';
	document.getElementById('onde_incluir').value='fim';
	document.getElementById('txt_cond_parametro').disabled=true;
	document.form1.txt_acao_param.disabled=true;
}


// ***************************** Valida digitação do parametro de condição (só aceita A-Za-z0-9.... 
function valida_spam_cond_param(campo, event, classerro, classnormal){
	if(document.getElementById('txt_cond').value=='Menor_que' || document.getElementById('txt_cond').value=='Maior_que' || document.getElementById('txt_cond').value=='Ndest_maior_que' || document.getElementById('txt_cond').value=='Ndest_menor_que' || document.getElementById('txt_cond').value=='Rem_estranho' || document.getElementById('txt_cond').value=='Autenticado'){
		var pesq1 = new RegExp("^[0-9]*$"); // Caracteres permitidos
		var pesq3 = new RegExp("[^0-9]", "g"); // Caracteres proibidos
	} else {
		var pesq1 = new RegExp("^[A-Za-z0-9@._ -]*$"); // Caracteres permitidos
		var pesq3 = new RegExp("[^A-Za-z0-9@._ -]", "g"); // Caracteres proibidos	
	}

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido para este parâmetro.</b><BR>Verifique a Ajuda para informações detalhadas.'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		if(document.getElementById(campo).value!=''){
			muda_estilo('btn_add_cond', '7');
			muda_estilo('btn_add_cond', '9');
		} else {
			muda_estilo('btn_add_cond', '8');
		}
	}
}

function spam_muda_cond(status, paratipo, mensagem){
	if(status=='1'){
		document.getElementById('tb_cond_descricao').innerHTML = mensagem;
		document.getElementById('txt_cond_parametro').disabled=false;
		document.getElementById('tb_cond_parametro').innerHTML = 'Parâmetro:';
		muda_estilo('txt_cond_parametro', '11');
		document.getElementById('txt_cond_parametro').focus();	
		if(paratipo=='n'){
			pos_alert_form('txt_cond_parametro', '<b>Preencha o parâmetro: </b><br>Esta condição requer um parâmetro numérico.<BR>Leia a ajuda para informações detalhadas.');
		}
		if(paratipo=='t'){
			pos_alert_form('txt_cond_parametro', '<b>Preencha o parâmetro: </b><br>Esta condição requer um parâmetro alfa-numérico.<BR>Leia a ajuda para informações detalhadas.');
		}
		muda_estilo('btn_add_cond', '8');
	} else {
		document.getElementById('tb_cond_descricao').innerHTML = mensagem;
		document.getElementById('txt_cond_parametro').value='';
		document.getElementById('txt_cond_parametro').disabled=true;
		document.getElementById('tb_cond_parametro').innerHTML = '&nbsp;';
		muda_estilo('txt_cond_parametro', '10');
		muda_estilo('btn_add_cond', '7');
		muda_estilo('btn_add_cond', '9');
	}

}

function spam_sel_cond() {
	cabecalho = '<b>Ajuda: </b>';
	if(document.getElementById('txt_cond').value==''){
		spam_muda_cond('0', 't', '');
	}
	if(document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_basico"'){
		spam_muda_cond('0', 't', 'Use esta opção para ter uma proteção leve contra spams, sem precisar configurar mais nada.');
	}
	if(document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_medio"'){
		spam_muda_cond('0', 't', 'Use esta opção para ter uma proteção moderada contra spams, sem precisar configurar mais nada.');
	}
	if(document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_forte"'){
		spam_muda_cond('0', 't', 'Use esta opção para ter uma proteção forte contra spams, sem precisar configurar mais nada.');
	}
	if(document.getElementById('txt_cond').value=='nada'){
		spam_muda_cond('0', 't', 'Use esta opção para ir direto às condições. <BR> Esta opção normalmente é utilizada para liberar todas mensagens ainda não filtradas ou definir pontuação máxima.');
	}
	if(document.getElementById('txt_cond').value=='Find_str? "%f:'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) algum remetente. <BR>Você pode colocar um único e-mail (exemplo@dominio.com) ou todo um domínio como parâmetro (@dominio.com).<BR><b>Atenção:</b> Ao bloquear um domínio todo, automaticamente todos os usuários do domínio(site) bloqueado não poderão enviar e-mails para você.<BR><i>Esta condição requer parâmetros (e-mail ou domínio).</i>');
	}
	if(document.getElementById('txt_cond').value=='Find_to? "'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) algum destinatário. <BR>Você pode colocar um único e-mail (exemplo@dominio.com) ou todo um domínio como parâmetro (@dominio.com).<BR>Esta funcão é útil quando você deseja bloquear um e-mail que sempre é enviado com cópia para outra pessoa.<BR><i>Esta condição requer parâmetros (e-mail ou domínio).</i>');
	}
	if(document.getElementById('txt_cond').value=='Find_str? "%S:'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens pelo seu assunto. <BR>Você pode especificar um assunto completo ou somente parte dele. Esta função é útil para bloquear títulos comuns em spams, como <i>Losing weight</i> ou <i>Vigra</i>.<BR><i>Esta condição requer parâmetros (palavra ou sentença).</i>');
	}
	if(document.getElementById('txt_cond').value=='Attach? "'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens através do(s) seu(s) anexo(s). <BR>você pode especificar o nome todo do arquivo ou só uma parte dele (exemplo: cartao.exe ou .exe).<BR><i>Esta condição requer parâmetros (nome do arquivo ou extensão).</i>');
	}
	if(document.getElementById('txt_cond').value=='Itest? "%z<'){
		spam_muda_cond('1', 'n', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens pelo seu tamanho máximo. <BR>Esta condição é bastante útil em conexões onde você paga por dados transferidos (como conexões móveis).<BR><i>Esta condição requer parâmetros (tamanho em bytes - SOMENTE NÚMEROS).</i>');
	}
	if(document.getElementById('txt_cond').value=='Itest? "%z>'){
		spam_muda_cond('1', 'n', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens pelo seu tamanho mínimo. <BR>Esta condição é bastante útil para barrar mensagens com grandes anexos, que atrapalham o descarregamento da mesma. <BR><i>Esta condição requer parâmetros (tamanho em bytes - SOMENTE NÚMEROS).</i>');
	}
	if(document.getElementById('txt_cond').value=='Itest? "%n>'){
		spam_muda_cond('1', 'n', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens pelo número de destinatários que ela foi enviada. <BR>Com esta condição você pode filtrar mensagens enviadas para um grande número de pessoas ao mesmo tempo. <BR><i>Esta condição requer parâmetros (quantidade de destinatários - SOMENTE NÚMEROS).</i>');
	}
	if(document.getElementById('txt_cond').value=='Itest? "%n<'){
		spam_muda_cond('1', 'n', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens pelo número de destinatários que ela foi enviada. <BR>Com esta condição você pode filtrar mensagens enviadas somente para você, por exemplo. <BR><i>Esta condição requer parâmetros (quantidade de destinatários - SOMENTE NÚMEROS).</i>');
	}
	if(document.getElementById('txt_cond').value=='IP? "'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens através do número IP do servidor remetente. <BR>Com esta condição você pode filtrar mensagens enviadas através de um computador/rede específica. <BR><i>Esta condição requer parâmetros (endereço IPv4).</i>');
	}
	if(document.getElementById('txt_cond').value=='Find_str? "%e:'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens através do nome resolvido do servidor remetente. <BR>Esta função é útil para bloquear nomes de sevidores contendo algumas palavras-chave característicos de spam. <BR><i>Esta condição requer parâmetros (nome do servidor).</i>');
	}
	if(document.getElementById('txt_cond').value=='Find_str? "%h:'){
		spam_muda_cond('1', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens através do nome especificado no início da comunicação SMTP. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição requer parâmetros (nome).</i>');
	}
	if(document.getElementById('txt_cond').value=='Cnx_direta?'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso ela tenha sido entregue através de uma conexão direta entre o remetente e o servidor destinatário. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição NÃO requer parâmetros.</i>');
	}
	if(document.getElementById('txt_cond').value=='Auth?'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso o usuário tenha se autenticado no servidor. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
	if(document.getElementById('txt_cond').value=='!Auth?'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso o usuário não tenha se autenticado no servidor. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
	if(document.getElementById('txt_cond').value=='Itest? "%y=0"'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso servidor de envio não possua SPF definido em seu DNS. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
	if(document.getElementById('txt_cond').value=='Itest? "%y=1"'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso o servidor de envio esteja autorizado a enviar e-mail utilizando o domínio do remetente. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
	if(document.getElementById('txt_cond').value=='Itest? "%y=2"'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso o servidor de envio NÃO esteja autorizado a enviar e-mails utilizando o domínio do remetente, porém a instrução SPF não indica recusar a mensagem. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
	if(document.getElementById('txt_cond').value=='Itest? "%y=3"'){
		spam_muda_cond('0', 't', cabecalho+'<br> Você pode usar esta condição para filtrar (excluir/bloquear/aceitar/pontuar) mensagens caso o servidor de envio NÃO esteja autorizado a enviar e-mails utilizando o domínio do remetente, porém a instrução SPF indica que o usuário deve decidir recusar a mensagem. <BR>Esta é uma função avançada. Use apenas se você possuir conhecimentos no protocolo SMTP. <BR><i>Esta condição não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';
	}
}

// *************************************  Adiciona condição à regra do anti-spam
function spam_adiciona_cond() {
	if(document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_basico"' || document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_medio"' || document.getElementById('txt_cond').value=='Inc_rules! "/usr/local/sceo/asb/filtro_forte"'){
		document.getElementById('onde_incluir').value='fim';
		document.getElementById('txt_resultado').value += document.getElementById('txt_cond').value+" ";
		spam_adiciona_regra();
	} else {
		if(document.getElementById('txt_cond_parametro').className=='spam_parametro' && document.getElementById('txt_cond_parametro').value==''){
			pos_alert_form('txt_cond_parametro', '<b>Preencha o parâmetro: </b><br>A condição que você escolheu requer um parâmetro.<BR>Leia a ajuda para informações detalhadas.');
		} else { // Se estiver tudo preenchido corretamente, adiciona....
			if(document.getElementById('txt_cond').value!='nada'){
				if(document.getElementById('txt_cond_parametro').value!=''){
					document.getElementById('txt_resultado').value += document.getElementById('txt_cond').value+document.getElementById('txt_cond_parametro').value+"\" ";
				} else {
					document.getElementById('txt_resultado').value += document.getElementById('txt_cond').value+" ";
				}
			}
			document.getElementById('tb_cond_descricao').innerHTML = ''; // Limpra descrição da condição
			document.getElementById('txt_cond_parametro').value=''; //Limpa campo de parametro
			document.getElementById('txt_cond_parametro').disabled=true; // desabilita campo de parametro
			document.getElementById('tb_cond_parametro').innerHTML = '&nbsp;'; // limpa o label do parametro
			muda_estilo('txt_cond_parametro', '10'); // esconde o campo de parametro
			muda_estilo('btn_add_cond', '8'); // esconde o botao de inserir condição
			spam_traduz_regra();
			if(document.getElementById('txt_cond').value=='nada'){
				muda_estilo('tb_cond', '8'); // esconde tabela de condições
				document.getElementById('tb_acao').style.display = 'block'; // mostra tabela de ações
				pos_alert_form('txt_acao', '<b>Selecione uma ação:</b><br>Agora você deve selecionar o que o anti-spam deve fazer ao satisfazer a(s)condição(ões).');
			} else {	
				if(!confirm('Deseja inserir outra condição?\n\nVocê pode inserir quantas condições forem necessárias.\nSe você não quiser inserir mais condições nesta regra\npressione o botão cancelar.')){ // Se não deseja incluir outra condição, vai para as ações.
					muda_estilo('tb_cond', '8'); // esconde tabela de condições
					document.getElementById('tb_acao').style.display = 'block'; // mostra tabela de ações
					pos_alert_form('txt_acao', '<b>Selecione uma ação:</b><br>Agora você deve selecionar o que o anti-spam deve fazer ao satisfazer a(s)condição(ões).');
				} else {
					document.getElementById('txt_cond').value='';
				}
			}		
		}
	}
}		


function spam_traduz_regra(){
	var resultado = document.getElementById('txt_resultado').value;
	var resultado_visu = resultado;
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%y=0\"/, " e o servidor não possuir SPF");
	resultado_visu = resultado_visu.replace(/Itest[?] \"\%y=0\"/, "Quando o servidor de envio não possuir SPF");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%y=1\"/, " e o servidor passar no teste SPF");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%y=1\"/, "Quando o servidor de envio passar no teste SPF");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%y=2\"/, " e o servidor for neutro no teste SPF");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%y=2\"/, "Quando o servidor de envio for neutro no teste SPF");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%y=3\"/, " e o servidor for recusado no teste SPF");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%y=3\"/, "Quando o servidor de envio for recusado no teste SPF");
	resultado_visu = resultado_visu.replace(/( )+Auth[?]/, " e o usuário estiver autenticado");
	resultado_visu = resultado_visu.replace(/Auth[?]/, "Quando o usuário estiver autenticado");
	resultado_visu = resultado_visu.replace(/( )+!Auth[?]/, " e o usuário não estiver autenticado");
	resultado_visu = resultado_visu.replace(/!Auth[?]/, "Quando o usuário não estiver autenticado");
	resultado_visu = resultado_visu.replace(/( )+Find_str[?] \"%f:/, " e no remetente encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/Find_str[?] \"%f:/, "Quando no remetente encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/( )+Find_to[?] \"/, " e nos destinatários encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/Find_to[?] \"/, "Quando nos destinatários encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/( )+Find_str[?] \"%S:/, " e no assunto encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/Find_str[?] \"%S:/, "Quando no assunto encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/( )+Attach[?] \"/, " e no nome de algum anexo encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/Attach[?] \"/, "Quando no nome de algum anexo encontrar o termo \"");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%z</, " e o tamanho (em bytes) for menor que \"");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%z</, "Quando o tamanho (em bytes) for menor que \"");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%z>/, " e o tamanho (em bytes) for maior que \"");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%z>/, "Quando o tamanho (em bytes) for maior que \"");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%n>/, " e o número de destinatários for maior que \"");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%n>/, "Quando o número de destinatários for maior que \"");
	resultado_visu = resultado_visu.replace(/( )+Itest[?] \"%n</, " e o número de destinatários for menor que \"");
	resultado_visu = resultado_visu.replace(/Itest[?] \"%n</, "Quando o número de destinatários for menor que \"");
	resultado_visu = resultado_visu.replace(/( )+Ip[?]/, " e o Ip do servidor de envio conter");
	resultado_visu = resultado_visu.replace(/Ip[?]/, "Quando o Ip do servidor de envio conter");
	resultado_visu = resultado_visu.replace(/( )+Find_str[?] \"%e:/, " e o nome do servidor de envio conter \"");
	resultado_visu = resultado_visu.replace(/Find_str[?] \"%e:/, "Quando o nome do servidor de envio conter \"");
	resultado_visu = resultado_visu.replace(/( )+Find_str[?] \"%h:/, " e o nome fornecido no HELO/EHLO conter \"");
	resultado_visu = resultado_visu.replace(/Find_str[?] \"%h:/, "Quando o nome fornecido no HELO/EHLO conter \"");
	resultado_visu = resultado_visu.replace(/( )+Direct_cnx[?]/, " e a mensagem foi entregue com conexão direta");
	resultado_visu = resultado_visu.replace(/Direct_cnx[?]/, "Quando a mensagem foi entregue com conexão direta");

	resultado_visu = resultado_visu.replace(/( )+Accept!/, ", aceitar a mensagem imediatamente.");
	resultado_visu = resultado_visu.replace(/Accept!/, "Aceitar todas as mensagens ainda não filtradas.");
	resultado_visu = resultado_visu.replace(/( )+Junk!/, ", marcar a mensagem como spam imediatamente.");
	resultado_visu = resultado_visu.replace(/Junk!/, "Marcar todas as mensagens ainda não filtradas como spam.");
	resultado_visu = resultado_visu.replace(/( )+Drop!/, ", excluir a mensagem imediatamente.");
	resultado_visu = resultado_visu.replace(/Drop!/, "EXCLUI imediatamente todas as mensagens ainda não filtradas.");
	resultado_visu = resultado_visu.replace(/( )+Addnegscore!/, ", adicionar os pontos:");
	resultado_visu = resultado_visu.replace(/Addnegscore!/, "Todas as mensagens ainda não filtradas, recebem os pontos:");
	resultado_visu = resultado_visu.replace(/( )+Dest!/, ", mover a mensagem para a pasta:");
	resultado_visu = resultado_visu.replace(/Dest!/, "Mover todas as mensagens ainda não filtradas para a pasta:");
	
	resultado_visu = resultado_visu.replace(/Max!/, "Máximo de pontos para mensagens válidas:");
	resultado_visu = resultado_visu.replace(/( )+Inc_rules! \"\/usr\/local\/sceo\/asb\/tirateima\"/, ", acionar o Tira-teima.");			
	resultado_visu = resultado_visu.replace(/Inc_rules! \"\/usr\/local\/sceo\/asb\/tirateima\"/, "Acionar o Tira-teima para todas mensagens.");			
	resultado_visu = resultado_visu.replace(/Sched_rules! \"\/usr\/local\/sceo\/asb\/tirateima_agendado\"/, "Acionar o Tira-teima para todas mensagens ainda não filtradas.");			
	resultado_visu = resultado_visu.replace(/Inc_rules! \"\/usr\/local\/sceo\/asb\/filtro_basico\"/, "Usar o filtro com proteção básica pré-configurado da Hospedaria");			
	resultado_visu = resultado_visu.replace(/Inc_rules! \"\/usr\/local\/sceo\/asb\/filtro_medio\"/, "Usar o filtro com proteção média pré-configurado da Hospedaria");			
	resultado_visu = resultado_visu.replace(/Inc_rules! \"\/usr\/local\/sceo\/asb\/filtro_forte\"/, "Usar o filtro com proteção alta pré-configurado da Hospedaria");			

	resultado_visu = resultado_visu.replace(/nada/, "");
	document.getElementById('txt_resultado_visu').value=resultado_visu;
	if(resultado_visu!='' && resultado_visu!=' '){
		document.getElementById('tb_resultado').style.display = 'block';
	}
}


// ***************************** Valida digitação do parametro de condição de ação (só aceita A-Za-z0-9.... 
function valida_spam_acao_param(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9-]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9-]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido para este parâmetro.</b><BR>Verifique a Ajuda para informações detalhadas.'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		if(document.getElementById(campo).value!=''){
			muda_estilo('btn_add_acao', '7');
			muda_estilo('btn_add_acao', '9');
		} else {
			muda_estilo('btn_add_acao', '8');
		}
	}
}


function spam_muda_acao(status, paratipo, mensagem){
	if(status=='1'){
		document.getElementById('tb_acao_descricao').innerHTML = mensagem;
		document.getElementById('txt_acao_parametro').disabled=false;
		document.getElementById('tb_acao_parametro').innerHTML = 'Parâmetro:';
		muda_estilo('txt_acao_parametro', '11');
		document.getElementById('txt_acao_parametro').focus();	
		if(paratipo=='n'){
			pos_alert_form('txt_acao_parametro', '<b>Preencha o parâmetro: </b><br>Esta ação requer um parâmetro numérico.<BR>Leia a ajuda para informações detalhadas.');
		}
		if(paratipo=='t'){
			pos_alert_form('txt_acao_parametro', '<b>Preencha o parâmetro: </b><br>Esta ação requer um parâmetro alfa-numérico.<BR>Leia a ajuda para informações detalhadas.');
		}
		muda_estilo('btn_add_acao', '8');
	} else {
		document.getElementById('tb_acao_descricao').innerHTML = mensagem;
		document.getElementById('txt_acao_parametro').value='';
		document.getElementById('txt_acao_parametro').disabled=true;
		document.getElementById('tb_acao_parametro').innerHTML = '&nbsp;';
		muda_estilo('txt_acao_parametro', '10');
		muda_estilo('btn_add_acao', '7');
		muda_estilo('btn_add_acao', '9');
	}

}


function spam_sel_acao() {
	cabecalho = '<b>Ajuda: </b>';
	if(document.getElementById('txt_acao').value==''){
		spam_muda_acao('0', 't', cabecalho+'Selecione uma ação, em seguida complete seu parâmetro (se necessário) e clique no botão adicionar.');
	}
	if(document.getElementById('txt_acao').value!=''){
		spam_muda_acao('0', 't', cabecalho+'');
	}
	if(document.getElementById('txt_acao').value=='Accept!'){
		spam_muda_acao('0', 't', cabecalho+'<br> Esta ação aceita o e-mail quando as condições sejam satisfatórias.<BR><i>Esta Ação NÃO requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='ini';				
	}
	if(document.getElementById('txt_acao').value=='Junk!'){
		spam_muda_acao('0', 't', cabecalho+'<br> Esta ação marca o e-mail como spam, quando as condições sejam satisfatórias.<BR><i>Esta Ação NÃO requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='fim';				
	}
	if(document.getElementById('txt_acao').value=='Drop!'){
		spam_muda_acao('0', 't', cabecalho+'<br> Esta ação EXCLUI permanentemente o  e-mail quando as condições sejam satisfatórias.<BR><i>Esta Ação NÃO requer parâmetros. Os e-mail excluídos não poderão ser recuperados.</i>');
		document.getElementById('onde_incluir').value='fim';				
	}
	if(document.getElementById('txt_acao').value=='Addnegscore!'){
		spam_muda_acao('1', 'n', cabecalho+'<br> Esta ação adiciona pontos (negativos ou positivos) ao e-mail quando as condições sejam satisfatórias. Quanto MAIS pontos uma mensagem tem, mais chances ela tem de ser classificada como Spam.<BR><i>Esta Ação requer parâmetros (números positivos ou negativos).</i>');
	}
	if(document.getElementById('txt_acao').value=='Max!'){
		spam_muda_acao('1', 'n', cabecalho+'<br> Esta ação limita o número de pontos permitidos para mensagens válidas.<br> Qualquer mensagem que ultrapassar este limite será classificada como Spam.<BR><i>Esta Ação requer parâmetros (números positivos).</i>');
		document.getElementById('onde_incluir').value='ini';				
	}
	if(document.getElementById('txt_acao').value=='Inc_rules! "/usr/local/sceo/asb/tirateima"'){
		spam_muda_acao('0', 'n', cabecalho+'<br> Esta ação aciona o Tira-teima para todos e-mail quando as condições sejam satisfatórias.<BR><i>Esta ação não requer parâmetros.</i>');
		document.getElementById('onde_incluir').value='fim';				
	}
}
function spam_adiciona_acao() {
	if(document.getElementById('txt_acao_parametro').className=='spam_parametro' && document.getElementById('txt_acao_parametro').value==''){
		pos_alert_form('txt_acao_parametro', '<b>Preencha o parâmetro: </b><br>A ação que você escolheu requer um parâmetro.<BR>Leia a ajuda para informações detalhadas.');
	} else { // Se estiver tudo preenchido corretamente, adiciona....
		if(document.getElementById('txt_acao_parametro').value!=''){
			document.getElementById('txt_resultado').value += document.getElementById('txt_acao').value+" \""+document.getElementById('txt_acao_parametro').value+"\" ";
		} else {
			document.getElementById('txt_resultado').value += document.getElementById('txt_acao').value+" ";
		}
		document.getElementById('tb_acao_descricao').innerHTML = ''; // Limpra descrição da açao
		document.getElementById('txt_acao_parametro').value=''; //Limpa campo de parametro
		document.getElementById('txt_acao_parametro').disabled=true; // desabilita campo de parametro
		document.getElementById('tb_acao_parametro').innerHTML = '&nbsp;'; // limpa o label do parametro
		muda_estilo('txt_acao_parametro', '10'); // esconde o campo de parametro
		muda_estilo('btn_add_acao', '8'); // esconde o botao de inserir condição
		spam_traduz_regra();
		document.getElementById('tb_acao').style.display = 'none';
		muda_estilo('tb_acao', '8'); // esconde tabela de açoes
		muda_estilo('btn_add_total', '7');
		muda_estilo('btn_add_total', '9');
		pos_alert_form('btn_add_total', '<b>Inclua a regra: </b>Clique aqui para gravar a regra que você acabou de criar.');

	}
}		

function spam_adiciona_regra() {
	rem_alert_form();
	//alert("ADICIONA: "+document.getElementById('txt_resultado').value);
	document.nova_regra.submit();
}		



function spam_adiciona_regra_basica() {
	rem_alert_form();
	texto_resultado = '';
	if(document.getElementById('txt_cond_basica').value!=''){
		texto_resultado = 'Find_str? "%f:'+document.getElementById('txt_cond_basica').value+'"';
	}
	if(document.getElementById('txt_cond_basica2').value!=''){
		if(texto_resultado!=''){
			texto_resultado = texto_resultado+' Find_str? "%S:'+document.getElementById('txt_cond_basica2').value+'"';
		} else {
			texto_resultado = 'Find_str? "%S:'+document.getElementById('txt_cond_basica2').value+'"';
		}
	}
	
	if(document.getElementById('acao_basica_1').checked){
		document.getElementById('txt_resultado_basico').value = texto_resultado+document.getElementById('acao_basica_1').value;
	}
	if(document.getElementById('acao_basica_2').checked){
		document.getElementById('txt_resultado_basico').value = texto_resultado+document.getElementById('acao_basica_2').value;
	}
	//alert("ADICIONA: "+document.getElementById('txt_resultado').value);
	document.nova_regra_basica.submit();
}		


//Função para exibir elementos em FLASH sem a proteção do IE.
function flash(largura, altura, arquivo, transparencia, nome){
 document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+largura+'" height="'+altura+'" id="'+nome+'">');
 document.write('<param name="allowScriptAccess" value="sameDomain" /><param name="wmode" value="'+transparencia+'" /><param name="menu" value="false" />');
 document.write('<param name="movie" value="'+arquivo+'" /><param name="quality" value="best" /><embed src="'+arquivo+'" wmode="'+transparencia+'" menu="false" quality="best" width="'+largura+'" height="'+altura+'" name="'+nome+'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
 document.write('</object>');
}

//Função em AJAX que retorna o conteúdo de uma página em um objeto especificado.
function ajaxGet(url,elemento_retorno,exibe_carregando, texto_carregando){
/****** 
* ajaxGet - Coloca o retorno de uma url em um elemento qualquer
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* Versão: 1.2 - 20/04/2006
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* Parametros:
* url: string; elemento_retorno: object||string; exibe_carregando:boolean
*  - Se elemento_retorno for um elemento html (inclusive inputs e selects),
*    exibe o retorno no innerHTML / value / options do elemento
*  - Se elemento_retorno for o nome de uma variavel
*    (o nome da variável deve ser declarado por string, pois será feito um eval)
*    a função irá atribuir o retorno à variável ao receber a url.
*******/
     var ajax1 = pegaAjax();
     if(ajax1){
         url = antiCacheRand(url)
         ajax1.onreadystatechange = ajaxOnReady
         ajax1.open("GET", url ,true);
         //ajax1.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");
         ajax1.setRequestHeader("Cache-Control", "no-cache");
         ajax1.setRequestHeader("Pragma", "no-cache");
         if(exibe_carregando){ put(texto_carregando)    }
         ajax1.send(null)
         return true;
     }else{
         return false;
     }
     function ajaxOnReady(){
         if (ajax1.readyState==4){
             if(ajax1.status == 200){
                 var texto=ajax1.responseText;
                 if(texto.indexOf(" ")<0) texto=texto.replace(/\+/g," ");
                 //texto=unescape(texto); //descomente esta linha se tiver usado o urlencode no php ou asp
                 //alert("Vai no put: "+texto);
				 put(texto);
                 extraiScript(texto);
             }else{
                 //if(exibe_carregando){put("Falha no carregamento. " + httpStatus(ajax1.status));}
				 if(exibe_carregando){put("Falha no carregamento. Por favor verifique sua conexão com a internet.");}
             }
             ajax1 = null
         }else if(exibe_carregando){//para mudar o status de cada carregando
                 put(texto_carregando)
         }
     }
     function put(valor){ //coloca o valor na variavel/elemento de retorno
         if((typeof(elemento_retorno)).toLowerCase()=="string"){ //se for o nome da string
             if(valor!="Falha no carregamento"){ 
                 eval(elemento_retorno + '= unescape("' + escape(valor) + '")')
             }
         }else if(elemento_retorno.tagName.toLowerCase()=="input"){
             valor = escape(valor).replace(/\%0D\%0A/g,"")
             elemento_retorno.value = unescape(valor);
         }else if(elemento_retorno.tagName.toLowerCase()=="select"){        
             select_innerHTML(elemento_retorno,valor)
         }else if(elemento_retorno.tagName){
             elemento_retorno.innerHTML = valor;
             //alert(elemento_retorno.innerHTML)
         }    
     }
     function pegaAjax(){ //instancia um novo xmlhttprequest
         //baseado na getXMLHttpObj que possui muitas cópias na net e eu nao sei quem é o autor original
         if(typeof(XMLHttpRequest)!='undefined'){return new XMLHttpRequest();}
         var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];
         for(var i=0;i<axO.length;i++){ try{ return new ActiveXObject(axO[i]);}catch(e){} }
         return null;
     }
     function httpStatus(stat){ //retorna o texto do erro http
         switch(stat){
             case 0: return "Erro desconhecido de javascript";
             case 400: return "400: Solicita&ccedil;&atilde;o incompreensível"; break;
             case 403: case 404: return "404: N&atilde;o foi encontrada a URL solicitada"; break;
             case 405: return "405: O servidor n&atilde;o suporta o m&eacute;todo solicitado"; break;
             case 500: return "500: Erro desconhecido de natureza do servidor"; break;
             case 503: return "503: Capacidade m&aacute;xima do servidor alcançada"; break;
             default: return "Erro " + stat + ". Mais informa&ccedil;&otilde;es em http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; break;
         }
     }
     function antiCacheRand(aurl){
         var dt = new Date();
         if(aurl.indexOf("?")>=0){// já tem parametros
             return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());
         }else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}
     }
}
function select_innerHTML(objeto,innerHTML){
/****** 
* select_innerHTML - altera o innerHTML de um select independente se é FF ou IE
* Corrige o problema de não ser possível usar o innerHTML no IE corretamente
* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* Versão: 1.0 - 06/04/2006
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* Parametros:
* objeto(tipo object): o select a ser alterado
* innerHTML(tipo string): o novo valor do innerHTML
*******/
     objeto.innerHTML = ""
     var selTemp = document.createElement("micoxselect")
     var opt;
     selTemp.id="micoxselect1"
     document.body.appendChild(selTemp)
     selTemp = document.getElementById("micoxselect1")
     selTemp.style.display="none"
     if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
         innerHTML = "<option>" + innerHTML + "</option>"
     }
     innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")
     selTemp.innerHTML = innerHTML
     for(var i=0;i<selTemp.childNodes.length;i++){
         if(selTemp.childNodes[i].tagName){
             opt = document.createElement("OPTION")
             for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
                 opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))
             }
             opt.value = selTemp.childNodes[i].getAttribute("value")
             opt.text = selTemp.childNodes[i].innerHTML
             if(document.all){ //IEca
                 objeto.add(opt)
             }else{
                 objeto.appendChild(opt)
             }                    
         }    
     }
     document.body.removeChild(selTemp)
     selTemp = null
}

function extraiScript(texto){
//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum
//http://forum.imasters.com.br/index.php?showtopic=165277&
     // inicializa o inicio ><
     var ini = 0;
     // loop enquanto achar um script
     while (ini!=-1){
         // procura uma tag de script
         ini = texto.indexOf('<script', ini);
         // se encontrar
         if (ini >=0){
             // define o inicio para depois do fechamento dessa tag
             ini = texto.indexOf('>', ini) + 1;
             // procura o final do script
             var fim = texto.indexOf('</script>', ini);
             // extrai apenas o script
             codigo = texto.substring(ini,fim);
             // executa o script
             //eval(codigo);
             /**********************
             * Alterado por Micox - micoxjcg@yahoo.com.br
             * Alterei pois com o eval não executava funções.
             ***********************/
             novo = document.createElement("script")
             novo.text = codigo;
             document.body.appendChild(novo);
         }
     }
}


/* Função chamada ao clicar para enviar um anexo...  
	Desabilita o formulário de envio de novo anexo
	Desabilita o botão de enviar a mensagem
	Exibe a DIV "exibe_anexo"
	Chama a função que faz o upload assíncrono (micoxupload2)
*/ 
function envia_anexo(form_ativo){
	conteudo2 = "<img src='img/button_msgs_send.png' border='0' align='absmiddle'> Aguarde";
	document.getElementById('exibe_upload').style.display			= 'block';
	document.getElementById('exibe_carrega_upload').style.display	= 'block';
	document.getElementById('form_upload').style.display			= 'none';
	document.getElementById('btn_envia_msg').innerHTML		= conteudo2;
	micoxUpload2(form_ativo,'enviar_anexo.php','recebe_upload','','Erro ao anexar!'); 
	return false;
}

/* Função chamada ao clicar para enviar um anexo...  */
function anexo_enviado(){
    conteudo = '                <table width="100%" border="0" cellpadding="1" cellspacing="1">';
    conteudo += '        <tr valign="top"> ';
	conteudo += '            <td width="60" align="right" valign="middle" class="tx_msg_env">';
	conteudo += '				Anexos:';
    conteudo += '            </td>';
    conteudo += '            <td valign="middle">';
    conteudo += '                <input type="file" name="anexo" size="60" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; BACKGROUND-COLOR: #f5f5f5; FONT-SIZE: 10px; TEXT-TRANSFORM: none; COLOR: #000000; FONT-FAMILY: Verdana; FONT-VARIANT: normal" align="absmiddle" onChange="envia_anexo(this.form);">';
    conteudo += '                &nbsp;';
    conteudo += '                <input type="button" name="Anexar" value="Anexar" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; BACKGROUND-COLOR: #CCCCCC; FONT-SIZE: 10px; TEXT-TRANSFORM: none; COLOR: #000000; FONT-FAMILY: Verdana; FONT-VARIANT: normal" align="absmiddle" onClick="envia_anexo(this.form);">';
    conteudo += '          	</td>';
    conteudo += '      </tr>';
    conteudo += '    </table>';

	conteudo2 = "<a href=\"#\" onClick=\"Javascript:envia('email', '1'); return false;\" class=\"msgs_send\"><img src='img/button_msgs_send.png' border='0' align='absmiddle'> Enviar</a>";


	parent.document.getElementById('exibe_upload').style.display			= 'block';
	parent.document.getElementById('exibe_carrega_upload').style.display	= 'none';
	parent.document.getElementById('form_upload').style.display				= 'block';
	parent.document.getElementById('form_upload').innerHTML					= conteudo;
	parent.document.getElementById('btn_envia_msg').innerHTML				= conteudo2;
	return false;
}

function exclui_anexo(id){
	ajaxGet('enviar_anexo.php?del='+id, document.getElementById('recebe_upload'), true, '<center><img src="img/loading.gif"></center>');
}

/* Funções para fazer Upload Assíncrono (Parecido com AJAX) */
/* funçõezinhas padrão pra facilitar */
function $m(quem){
 //apelido só pra não ficar repetindo o document.getElementById
 return document.getElementById(quem)
}
function remove(quem){
 quem.parentNode.removeChild(quem);
}
function addEvent(obj, evType, fn){
 //o velho do elcio.com.br/crossbrowser
    if (obj.addEventListener)
        obj.addEventListener(evType, fn, true)
    if (obj.attachEvent)
        obj.attachEvent("on"+evType, fn)
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, fn );
  } else {
    obj.removeEventListener( type, fn, false ); }
} 
/* a que faz o serviço pesado */
function micoxUpload2(form,url_action,id_elemento_retorno,html_exibe_carregando,html_erro_http){
/******
* micoxUpload - Submete um form para um iframe oculto e pega o resultado. Consequentemente pode
*               ser usado pra fazer upload de arquivos de forma assíncrona.
* Use a vontade mas coloque meu nome nos créditos. Licença Creative Commons.
* Versão: 1.0 - 03/03/2007 - Testado no FF2.0 IE6.0 e OP9.1
* Autor: Micox - Náiron JCG - elmicox.blogspot.com - micoxjcg@yahoo.com.br
* Parametros:
* form - o form a ser submetido ou seu ID
* url_action - url pra onde deve ser submetido o form
* id_elemento_retorno - id do elemento que irá receber a informação de retorno
* html_exibe_carregando - Texto (ou imagem) que será exibido enquanto se carrega o upload
* html_erro_http - texto (ou imagem) que será exibido se der erro HTTP.
*******/

 //testando se passou o ID ou o objeto mesmo
 form = typeof(form)=="string"?$m(form):form;
 
 var erro="";
 if(form==null || typeof(form)=="undefined"){ erro += "O form passado no 1o parâmetro não existe na página.\n";}
 else if(form.nodeName!="FORM"){ erro += "O form passado no 1o parâmetro da função não é um form.\n";}
 if($m(id_elemento_retorno)==null){ erro += "O elemento passado no 3o parâmetro não existe na página.\n";}
 if(erro.length>0) {
  alert("Erro ao chamar a função micoxUpload:\n" + erro);
  return;
 }

 //criando o iframe
 var iframe = document.createElement("iframe");
 iframe.setAttribute("id","micox-temp");
 iframe.setAttribute("name","micox-temp");
 iframe.setAttribute("width","0");
 iframe.setAttribute("height","0");
 iframe.setAttribute("border","0");
 iframe.setAttribute("style","width: 0; height: 0; border: none;");
 /* Não usei display:none pra esconder o iframe
    pois tem uma lenda que diz que o NS6 ignora
    iframes que tenham o display:none */
 
 //adicionando ao documento
 form.parentNode.appendChild(iframe);
 window.frames['micox-temp'].name="micox-temp"; //ie sucks
 
 //adicionando o evento ao carregar
 var carregou = function() { 
   removeEvent( $m('micox-temp'),"load", carregou);
   var cross = "javascript: ";
   cross += "window.parent.$m('" + id_elemento_retorno + "').innerHTML = document.body.innerHTML; void(0); ";
   
   $m(id_elemento_retorno).innerHTML = html_erro_http;
   $m('micox-temp').src = cross;
   //deleta o iframe
   setTimeout(function(){ remove($m('micox-temp'))}, 250);
  }
 addEvent( $m('micox-temp'),"load", carregou)
 
 //setando propriedades do form
 form.setAttribute("target","micox-temp");
 form.setAttribute("action",url_action);
 form.setAttribute("method","post");
 form.setAttribute("enctype","multipart/form-data");
 form.setAttribute("encoding","multipart/form-data");
 //submetendo
 form.submit();
 
 //se for pra exibir alguma imagem ou texto enquanto carrega
 if(html_exibe_carregando.length > 0){
  $m(id_elemento_retorno ).innerHTML = html_exibe_carregando;
 }
 
}
//drag n drop de div ----------------------------------------------------
//by tmferreira - http://www.webly.com.br/tutorial/javascript-e-ajax/7045/drag-and-drop.htm
//corrigida 30/01/2008 por Micox - http://forum.ievolutionweb.com/index.php?s=&showtopic=7045&view=findpost&p=139679

var objSelecionado = null;
var mouseOffset = null;
function addEvent(obj, evType, fn) {
//Função adaptada da original de Christian Heilmann, em
//http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
if (typeof obj == "string") {
  if (null == (obj = document.getElementById(obj))) {
   throw new Error("Elemento HTML não encontrado. Não foi possível adicionar o evento.");
  }
}
if (obj.attachEvent) {
  return obj.attachEvent(("on" + evType), fn);
} else if (obj.addEventListener) {
  return obj.addEventListener(evType, fn, true);
} else {
  throw new Error("Seu browser não suporta adição de eventos. Senta, chora e pega um navegador mais recente.");
}
}
function mouseCoords(ev){    
    if(typeof(ev.pageX)!=="undefined"){
      return {x:ev.pageX, y:ev.pageY};
    }else{
        return {
          x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
          y:ev.clientY + document.body.scrollTop  - document.body.clientTop
        };
    }
}
function getPosition(e, ev){
    var ev = ev || window.event;
    if(e.constructor==String){ e = document.getElementById(e);}
    var left = 0, top  = 0;    
    var coords = mouseCoords(ev);    

    while (e.offsetParent){
      left += e.offsetLeft;
      top  += e.offsetTop;
      e     = e.offsetParent;
    }
    left += e.offsetLeft;
    top  += e.offsetTop;
    return {x: coords.x - left, y: coords.y - top};
}

function dragdrop(local_click, caixa_movida) {
//local click indica quem é o cara que quando movido, move o caixa_movida
    if(local_click.constructor==String){ local_click = document.getElementById(local_click);}
    if(caixa_movida.constructor==String){ caixa_movida = document.getElementById(caixa_movida);}
    
    local_click.style.cursor = 'move';
    if(!caixa_movida.style.position || caixa_movida.style.position=='static'){
        //caixa_movida.style.position='relative'
		//alert("entrou");
    }
    local_click.onmousedown = function(ev) {
        objSelecionado = caixa_movida;        
        mouseOffset = getPosition(objSelecionado, ev);
    };
    document.onmouseup = function() {
        objSelecionado = null;
    }
    document.onmousemove = function(ev) {
        if (objSelecionado) {
            var ev = ev || window.event;
            var mousePos = mouseCoords(ev);
            var pai = objSelecionado.parentNode;
            objSelecionado.style.left = (mousePos.x - mouseOffset.x - pai.offsetLeft) + 'px';
            objSelecionado.style.top = (mousePos.y - mouseOffset.y - pai.offsetTop) + 'px';
            objSelecionado.style.margin = '0px';
            return false;
        }
    }
}