var wsBlaze = null;
var WSInterval = null;

var JOGOS_RODANDO = [];

// var tokenBlaze = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ODQ1NzgwNiwiYmxvY2tzIjpbXSwiaWF0IjoxNjUwMDUwMjkwLCJleHAiOjE2NTUyMzQyOTB9.x5tzGNmryxckvvOMvnEwKsw0r1R4us7w6NZRSiv-MA0";
var ultimoDouble = '';

function ConectaBlaze(tokenBlaze){
	if (tokenBlaze == '') {
		console.log('TOKEN BLAZE NÃO INFORMADO');
		return false;
	}	
	JOGOS_RODANDO.push('blaze');
	wsBlaze = new WebSocket('wss://api-v2.blaze.com/replication/?EIO=3&transport=websocket','json');
		
	setTimeout(() => {
		WSInterval = setInterval(() => {
		  wsBlaze.send("2");
		}, 15e3);
	}, 1e3);
	
	wsBlaze.addEventListener('open', (message) => {
		console.log(`WebSocket BLAZE DOUBLE Conectado `); //, message); //'Conectado com: ' + event.target.url;
		console.log('###########################################');
		wsBlaze.send("420" + JSON.stringify(["cmd", { "id": "authenticate", "payload": { "token": tokenBlaze } }]));
		wsBlaze.send("422" + JSON.stringify(["cmd", { "id": "authenticate", "payload": { "token": tokenBlaze } }]));
		wsBlaze.send("423" + JSON.stringify(["cmd", { "id": "subscribe", "payload": { "room": "double_v2" } }]));
	});
	
	wsBlaze.addEventListener('close', () => {
		console.log('###########################################');
		console.log(`WebSocket BLAZE DOUBLE Desconectado`);
		
		if (JOGOS_RODANDO.includes('blaze')) {
			ConectaBlaze();
		} else {
			wsBlaze = null;
		}
		
	});
  
  wsBlaze.addEventListener('error', (error) => {
		console.log(`Erro do WebSocket BLAZE DOUBLE: ` + error); //.message);
	});
	
	wsBlaze.addEventListener('message', (mensagem) => {
    
		mensagem = mensagem.data;
		
		if (mensagem.includes('double.tick')) {
			mensagem = JSON.parse(mensagem.replace('42', ''));
			
			var num = mensagem[1].payload.roll;
			var cor = mensagem[1].payload.color;
			var status = mensagem[1].payload.status;
			var update = mensagem[1].payload.created_at;
			var data = new Date(update);
			var ano = data.getFullYear();
			var mes = data.getMonth() + 1; //months from 1-12
			var dia = data.getDate();
			var hora = data.getHours();         // 0-23
			var min = data.getMinutes();        // 0-59
			var seg = data.getSeconds();        // 0-59
			var texto = '';
			
			//if (num < 10){num = "0" + num;}
			if (mes < 10){mes = "0" + mes;}
			if (dia < 10){dia = "0" + dia;}
			if (hora < 10){hora = "0" + hora;}
			if (min < 10){min = "0" + min;}
			if (seg < 10){seg = "0" + seg;}
		
			texto = `${ano}-${mes}-${dia}|${hora}:${min}:${seg}|${num}`;

			if (status == 'rolling' && texto != ultimoDouble){				
				ultimoDouble = texto;
				if (cor == 0)
					cor = 'white'
				if (cor == 1)
					cor = 'red'
				if (cor == 2)
					cor = 'black'
				
        UltimoResultado({
          plataforma: 'blaze',
          jogo: 'double',
          cor: cor, 
          num: num, 
          data: `${dia}/${mes}/${ano} ${hora}:${min}:${seg}`,
        })
			}
		}
    
  });
	
	return true;
}

function stopBlaze() {
	JOGOS_RODANDO = JOGOS_RODANDO.filter((plataforma) => {
		return plataforma !== 'blaze';
	});

	clearInterval(WSInterval);

	if (wsBlaze !== null) {
		wsBlaze.close();
	}
}



/*****************************************************************************************************************/
/*****************************************************************************************************************/
/*****************************************************************************************************************/
var wsSmash = null;
var IntervalSmash = null
// var tokenSmash = '40/double,{"token":"n6Jq9tRs40QwoEdYTNjGcE"}';
var period = '';

function ConectaSmash(tokenSmash){
	if (tokenSmash == '') {
		console.log('TOKEN SMASH NÃO INFORMADO');
		return false;
	}	

	JOGOS_RODANDO.push('smash')
	wsSmash = new WebSocket('wss://br-socket.t1tcp.com/socket.io/?EIO=4&transport=websocket','json');
	
	wsSmash.addEventListener('connectFailed', function (error) {
		console.log('Connect Error SMASH DOUBLE: ' + error.toString());
	});

	wsSmash.addEventListener('open', (message) => {
		console.log('WebSocket SMASH DOUBLE Conectado'); //'Conectado com: ' + event.target.url;
		console.log('####################################')
		wsSmash.send(tokenSmash);
	});

	wsSmash.addEventListener('error', (error) => {
		console.log('Erro do WebSocket SMASH DOUBLE');
		console.log(error)
	});

	wsSmash.addEventListener('close', () => {
		console.log('####################################')
		console.log('WebSocket SMASH DOUBLE Desconectado');
		
		if (JOGOS_RODANDO.includes('smash')) {
			ConectaSmash();
		} else {
			wsSmash = null;
		}
		
	});
	
	wsSmash.addEventListener('message', (mensagem) => {
		
		mensagem = mensagem.data;

		if (mensagem == 2){
			wsSmash.send(3);
		}
		
		if (mensagem.includes('result')){
			mensagem = mensagem.replace('42/double,','');
			mensagem = mensagem.replace('["game",','');
			mensagem = mensagem.replace('"}]','"}');
			mensagem = JSON.parse(mensagem);
			//console.log(JSON.stringify(mensagem))
			
			if (mensagem.last != null && mensagem.last != undefined && mensagem.last != '' &&
			mensagem.last.result != null && mensagem.last.result != undefined && mensagem.last.result != ''){
				
				var num = mensagem.last.result.number;
				var cor = mensagem.last.result.color;
				var seed = mensagem.last.result.seed;
				var periodNow = mensagem.last.period;
				
				if (periodNow != period){
					
					var data = new Date(Number(mensagem.last.time+'000'));
					var dia = data.getDate();
					var mes = data.getMonth() + 1; //months from 1-12
					var ano = data.getFullYear();
					var hora = data.getHours();         // 0-23
					var min = data.getMinutes();        // 0-59
					var seg = data.getSeconds();        // 0-59
				
					// if (num < 10){num = "0" + num;}
					if (mes < 10){mes = "0" + mes;}
					if (dia < 10){dia = "0" + dia;}
					if (hora < 10){hora = "0" + hora;}
					if (min < 10){min = "0" + min;}
					if (seg < 10){seg = "0" + seg;}
					period = periodNow;
					
					UltimoResultado({
						plataforma: 'smash',
						jogo: 'double',
						cor: cor, 
						num: num, 
						data: `${dia}/${mes}/${ano} ${hora}:${min}:${seg}`,
					})
					
				}
			}
		}
		
	});
	
	IntervalSmash = setInterval(function() {
		wsSmash.send(tokenSmash);
	}, 1500);
		
	return true;
}

function stopSmash() {
	JOGOS_RODANDO = JOGOS_RODANDO.filter((plataforma) => {
		return plataforma !== 'smash';
	});

	clearInterval(IntervalSmash);

	if (wsSmash !== null) {
		wsSmash.close();
	}
}