/*
 * Copyright (C) 2019 TVLink Transmissão Online. All Rights Reserved.
 *
 * @author Adalberto P. Marques <contato@tvlink.com.br>
 *
 */

var socket;
var eventoRecebido = "a";
var tentativasConexaoChat = 0;
var primeiraConexaoChat = true;
var salaSocket = "a";
var urlChat = "a";
var nome = "oculto";

function airParaSocket_inicieSocket(nomeDaSala, urlDoChat){
	salaSocket = nomeDaSala;
	urlChat = urlDoChat;
	conectSocket();
}

function conectSocket(){
	salaSocket = salaSocket;
	socket = io(urlChat);
	socket.emit('salaSocket', salaSocket, nome);
	socket.removeAllListeners('connect');
	
	socket.on("connect", function() {		
		socket.removeAllListeners('connect');
		//enviaParaAS3ConectouSocket("socketConectado");
		tentativasConexaoChat = 0;
		if(primeiraConexaoChat == true){
			primeiraConexaoChat = false;
		}
	});
	
	socketParaAir_Conectou("socketConectado")

	socket.on('relacaoNomes', function(msg){
		//eventoRecebido = "alguem_entrou_na_sala";
		socketParaAir_AlguemEntrou("Alguem entrou ou saiu");
	});

	socket.on('closedCaption', function(msg) {
		eventoRecebido = "closedCaption = "+msg;
		socketParaAir_Eventos(eventoRecebido);
	});
	
	socket.on('numeroDeCameras', function(msg){
		eventoRecebido = "numeroDeCameras = "+msg;
		socketParaAir_Eventos(eventoRecebido);
	});

	socket.on('resolucaoTransmissao', function(msg){
		eventoRecebido = "resolucaoTransmissao = "+msg;
		socketParaAir_Eventos(eventoRecebido);
	});	

	socket.on('reuniaoOnLine', function(msg){
		eventoRecebido = "reuniaoOnLine = "+msg;
		socketParaAir_Eventos(eventoRecebido);
	});	

	socket.on('sobreposicaoDeCameras', function(msg){
		eventoRecebido = "sobreposicaoDecameras = "+msg;
		socketParaAir_Eventos(eventoRecebido);
	});		
	socket.on('connect_failed', function(e) {
		eventoRecebido = "Conexão falhou = "+e;
		socketParaAir_Eventos(eventoRecebido);
	});

	socket.on('reconnect', function(e){
		socket.emit("salaSocket", salaSocket, nome);
		eventoRecebido = "Reconectou"
		socketParaAir_Reconectou(eventoRecebido);
	});

	socket.on('disconnect', function(e){
		eventoRecebido = "Desconectou = "+e;
		socketParaAir_Desconectou(eventoRecebido);
	});
	
	socket.on('error', function(e){
		eventoRecebido = 'error = '+e;
		socketParaAir_Eventos(eventoRecebido);
	});

	socket.on('connect_error', function(e){
		if(primeiraConexaoChat == true & tentativasConexaoChat < 3){
			tentativasConexaoChat +=1;
			eventoRecebido = "Erro na conexao: error = "+e;
			socketParaAir_Eventos(eventoRecebido);			
		}else if(primeiraConexaoChat == true & tentativasConexaoChat >= 3){
			socket.close();
			//socket.disconect();
			eventoRecebido = "Problemas na conexao, socket fechado";
			socketParaAir_ErroNaConexao(eventoRecebido);			
		}
	});

}

function airParaSocket_numerodeCameras(numeroDeCameras)
{
	socket.emit('numeroDeCameras', numeroDeCameras);
}

function airParaSocket_envieResolucaoDeTransmissao(telaDetransmissao)
{
	socket.emit('resolucaoTransmissao', telaDetransmissao);
}

function airParaSocket_envieSobreposicaodeTresCameras(sobreposicao)
{
	socket.emit('sobreposicaoDeCameras', sobreposicao);
}

function airParaSocket_reuniaoOnLine(simNao)
{
	socket.emit('reuniaoOnLine', simNao);
}

function airParaSocket_ClosedCaption(statusTransmissao)
{
	socket.emit('closedCaption', statusTransmissao);
}

function airParaSocket_FecharSocket(){
	primeiraConexaoChat = true;
	socket.close();
}

//envia mensagem para o chat se quiser usar um dia
function airParaSocket_enviaMensagem(minhaMensagem){
	socket.emit('message', nome+": "+minhaMensagem);
}