function OpenWindowNews(Url, Scroll, Status) {
  //Define posição da janela no centro da tela
  PosX = ((screen.availWidth - 630)/2);
  PosY = ((screen.availHeight - 450)/2);
  if (!Scroll) {Scroll = 0;}
  if (!Status) {Status = 0;}
  AdminWindow=window.open(Url,"Newsletter","toolbar= 0,location= 0,directories=0,status=" + Status + ",menubar=0,scrollbars=" + Scroll + ",resizable= 0,copyhistory=0,width=630,height=450,left=" + PosX + ",top=" + PosY + ",screenX=" + PosX + ",screenY=" + PosY);
  AdminWindow.focus();
}

function OpenWindowNewsView(Url, Scroll, Status) {
  //Define posição da janela no centro da tela
  PosX = ((screen.availWidth - 700)/2);
  PosY = ((screen.availHeight - 450)/2);
  if (!Scroll) {Scroll = 0;}
  if (!Status) {Status = 0;}
  AdminWindow=window.open(Url,"NewsletterView","toolbar= 0,location= 0,directories=0,status=" + Status + ",menubar=0,scrollbars=" + Scroll + ",resizable=1,copyhistory=0,width=700,height=450,left=" + PosX + ",top=" + PosY + ",screenX=" + PosX + ",screenY=" + PosY);
  AdminWindow.focus();
}

//Variáveis de controle.
var Formulario;   	//Objeto do formulário
var Contador;		//Objeto do contador de envios
var Indice;   		//Controla qual o item que está sendo enviado
var Total;  		//Quantidade total de itens
var Pausa;    		//Controla se o sistema está em pausa ou não
var Iniciou;  		//Controla se o sistema foi iniciado ou não
var TipoEnvio;   	//Controla o tipo de envio (0:MassMail ou 1:Individual)
var MassMailOK;   	//Controla se é permitido (1) Mass Mail (se existe o componente) ou não (0)
var MassMailQtd; 	//Quantidade de emails que serem enviado por vez no modo MassMail
var Threads=3; 		//Quantidade de frames para envio de mensagens
var MaxThreads=3;	//Quantidade máxima de threads
var PausaMaxEmails=0 //Quantidade de emails a serem enviados entre as pausas de envio.
var PausaTimer=0     //contador para controle da pausa do envio.
var PausaIndice=0 	 //contador para registrar a quantidade de envios antes de qualquer pausa.

//Função que reseta as variáveis de controle
function ResetaVars() {
	Formulario = document.forms.FormEnviarEmail;
	Contador = document.getElementById('sContador');
	Acao = "";
	Indice = 0;
	Total = Formulario.Total.value;
	Primeiro = Formulario.Primeiro.value / 1;
	Pausa = false;
	Iniciou = false;
	Formulario.Testar.disabled = false;
	Formulario.Iniciar.disabled = false;
	Formulario.Pausar.disabled = true;
	Formulario.BarraProgresso.width = 0;
	MassMailQtd = Formulario.MassMailQtd.value / 1;
	PausaMaxEmails = Formulario.PausaMaxEmails.value * 1;
	PausaTimer = Formulario.PausaTimer.value * 1;
	PausaIndice=0;
}

//Função executada ao clicar no botão Iniciar, iniciando a execução do script
function CliqueIniciar() {

	//Seta variáveis
	ResetaVars();
	Contador.innerHTML = "Enviados " + Indice + "/" + Total;
	Iniciou = true;
	Formulario.Testar.disabled = true;
	Formulario.Iniciar.disabled = true;
	Formulario.Pausar.disabled = false;
	for (i=0; i< Threads; i++) {
		document.frames[i].SendMail();
	}
}

//Função executada ao clicar no botão Pausar, que altera as variáveis de controle
function CliquePausar() {
	if (Iniciou) {
		if (Pausa) {
			Formulario.Pausar.value = 'Pausar';
			Pausa = false;
			for (i=0; i< Threads; i++) {
				document.frames[i].SendMail();
			}
		}
		else {
			Formulario.Pausar.value = 'Continuar';
			Pausa = true;
		}
	}
}

//Função executada ao clicar no botão Sair
function CliqueSair() {
	var Pausou;
	
	if (!Pausa) {CliquePausar(); Pausou=true;}

	if (confirm('Deseja realmente sair?'))
		window.close();
	else
		if (Pausou) CliquePausar();
}

//Função para atualizar a barra de andamento
function AtualizaBarra() {
	var TamBarra;
	var Fator;
	var NovoTam;
	TamBarra = 200;
	Fator = Indice / Total;
	NovoTam = parseInt(Fator * TamBarra);
	Formulario.BarraProgresso.width = NovoTam;
	if (Indice<=Total) {
		Contador.innerHTML = "Enviados " + Indice + "/" + Total;
	}
	else {
		Contador.innerHTML = "Enviados " + Total + "/" + Total;
	}
	//verifica se deve efetuar pausa no envio
	CheckPausa();
}

//função para controlar a pausa e reínicio de envio dos emails
function CheckPausa(){

	if (PausaMaxEmails>0){
		var Count = parseInt(Indice / PausaMaxEmails);
		
		if((Count>PausaIndice) && (Indice < Total) && (PausaTimer > 0)) {
			PausaIndice = Count;
			Pausa = false;
			CliquePausar();
			var Now = new Date();
			PausaStartOn(Now.getTime());
		}
	}	
}
//função para exibir texto de atualização
function PausaStartOn(HoraInicio){
	var Now = new Date();
	var HoraFinal = Now.getTime();
	
	//calcula tempo para atualização
	var atualizarEm = ((HoraFinal - HoraInicio ) / 1000) * 1;
	atualizarEm = PausaTimer - parseInt(atualizarEm)
	
	if((atualizarEm>=1) && (atualizarEm<=PausaTimer)){
		Formulario.Pausar.value = "Continuar (" + atualizarEm + ")";
		Formulario.Pausar.disabled = true;
		setTimeout('PausaStartOn('+ HoraInicio +')',1000);
	}
	else{
		//executa função para reiniciar o envio de emails e oculta timer
		Pausa = true;
		CliquePausar();
		Formulario.Pausar.value = "Pausar";
		Formulario.Pausar.disabled = false;
	}
}

//Função para enviar email de teste
function TestMail() {
	var ParaNome, ParaEmail, MensagemID, LogTipo;

	//Restaura variáveis
	ParaNome = Formulario.TesteNome.value;
	ParaEmail = Formulario.TesteEmail.value;
	MensagemID = Formulario.MensagemID.value;

	if (ParaEmail) {
		//Seta variáveis
		ResetaVars();
		Acao = "Teste";
		LogTipo = "";
	
		//Se não estiver em pausa e o item a ser enviado for menor que o total de contatos, envia mensagem através da página no iframe
		document.frames(0).location = 'mensagemenviar.asp?Acao=' + Acao + '&MensagemID=' + MensagemID + '&ParaNome=' + ParaNome + '&ParaEmail=' + ParaEmail + '&LogTipo=' + LogTipo;
	}
	else {
		alert("Informe o email para envio de mensagem de teste");
		Formulario.TesteEmail.focus();
	}
}


//Função executada por cada thread ao finalizar o envio das mensagens
//Quando todos estiverem concluido, exibe mensagem
function SendOK(Status) {
	var Concluido = document.frames(0).Concluido;
	for (i=1; i< Threads; i++) {
		Concluido = Concluido && document.frames[i].Concluido;
	}

	if (Concluido) {
		alert(Status);
		ResetaVars();
	}
	
}

//Função de retorno executada pela página secundária. 
function SendError(Infos) {
	ResetaVars();
	alert(Infos);
	document.location.reload();
}



//Função para alteração do tipo de envio
function ChangeTipoEnvio(Tipo) {
	var Pos;
	Threads=MaxThreads;
	switch (Tipo){
		case 0: 
			if (MassMailOK==1) {
				TipoEnvio=0;
				Threads=1;
			} 
			else {
				TipoEnvio=2;
				alert("Não é possível utilizar este tipo de envio.\n\nO componente não está instalado.");
			}
			break;

		case 1: 
			TipoEnvio = Tipo;
			break;
	
		case 2: 
			TipoEnvio = Tipo;
			Threads=1;
			break;
	}
	Formulario.TipoEnvio[TipoEnvio].checked = true;
}


