var mimUIContainer=Array();
var mimBlinkerSync=1;
var mimDebug=false;
var mimListaSync=1;
var mimAjaxReversoSync=1;
var mimBlinkMsg="";

function mimAddTela(valor) {
	getTela("MIMFloat").innerHTML+='<table class="floatPanel" cellspacing="0" cellpadding="0" border="0">'
	+'<tr height="250px">'
	+'<td valign="bottom">'
	+'		<div id="'+valor+'" value="0">'
	+'	</td>'
	+'</tr>'
	+'</table>';
}

function mimStart() {
	try {
		var tela = getTela("mimStatus");
		getTela("MIMFloat").innerHTML='<div id="mimAjax" style="display:none"/>';
		getTela("MIMLista").innerHTML='';

		if (tela.value==0) {
			// Ligar
			tela.value="1";
			tela.src = "images/site/3/portal/bola-1.png";

			mimSetup();

			mimStartDebug();
			mimLogin();
			mimStartBlinker(1);
			mimStartLista(1);
			mimEnviarNaoLidas();
			mimAjaxReversoStart(1);
		} else {
			// Desligar
			tela.value="0";
			tela.src = "images/site/3/portal/bola-2.png";

			mimSetup();
			mimLogoff();
		}
	} catch(e) {
	}
}

function mimSetup() {
	mimUIContainer=Array();
	mimBlinkerSync=1;
	mimListaSync=1;
	mimAjaxReversoSync=1;
	document.title=mimBlinkMsg;
	mimBlinkMsg="";
}

function mimStartDebug() {
	if (mimDebug) {
		mimAddTela("mimDebug");
		getTela("mimDebug").style.height="200px";
		getTela("mimDebug").style.width="200px";
		getTela("mimDebug").style.border="1px red dashed";
		getTela("mimDebug").style.overflow="auto";
		getTela("mimDebug").style.background="white";
	}
}

function rolar(tela) {
	var objDiv = getTela(tela);
	objDiv.scrollTop = objDiv.scrollHeight;
}

function mimlog(valor) {
	if (mimDebug) {
		getTela("mimDebug").innerHTML+=valor+'<br>';
		rolar("mimDebug");
	}
}

function mimAjaxReversoStart(mutex) {
	if (mimDebug) {
		getTela("mimAjax").style.top="0px";
		getTela("mimAjax").style.left="0px";
		getTela("mimAjax").style.height="200px";
		getTela("mimAjax").style.width="500px";
		getTela("mimAjax").style.border="1px blue dashed";
		getTela("mimAjax").style.overflow="auto";
		getTela("mimAjax").style.background="white";
		getTela("mimAjax").style.display="block";
	}
	mimAjaxReverso(mutex);
}

function mimAjaxReverso(mutex) {
	if (mimStatus()) {
		if (mimAjaxReversoSync==mutex) {
			var utmp = Math.random();
			mimAjaxReversoSync=utmp;

			mimAjaxReversoExecute();

			// 10 segundos
			setTimeout('ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=ping","mimAjax","mimAjaxReverso(' +utmp +')",false)',1000*10);
		}
	}
}

function mimAjaxReversoExecute() {
	//mimlog("len -  " + getTela("mimAjax").innerHTML.length);
	if (getTela("mimAjax").innerHTML.length > 3) { // Sem esse IF trava o browser. == Sempre traz 2 colchetes se não tiver mensagens
		try {
			var comando = JSON.parse(getTela("mimAjax").innerHTML);

			//mimlog("comando.length: " + comando.length);
			
			if (!mimDebug)
				getTela("mimAjax").innerHTML='';

			if (comando.length > 0)
				comando.reverse();

			while (comando.length > 0) {
				var msg = comando.pop();

				if (msg.status==0) {
					// Do usuario - remetente
					mimChat(msg.remetente.id, msg.remetente.username, msg.remetente.nome);
					mimChatPrint(msg.remetente.id, msg.msg, msg.remetente.nome, "black", msg.dataString );

					// Mostrar imagem
					// WelcomeModel
					if (msg.imagem!=null && msg.imagem.length > 0) {
						mimChatPrint(msg.remetente.id, '<a href="http://www.maquina.inf.br/maquinaNet/upload/recados/'+ msg.imagem +'" target="_new">Imagem</a>', msg.remetente.nome, "black", msg.dataString );
					}

					mimblink(msg.remetente.id);
					mimMsgCheck(msg.id);
				} else {
					// MSG Erro - destino
					mimChat(msg.destino.id, msg.destino.username, msg.destino.nome);
					if (msg.status==1) {
						//MSG_OFFLINE=1;
						mimChatPrint(msg.destino.id, "<i><small>offline</small></i>", msg.destino.nome, "red", msg.dataString );
					} else if (msg.status==2) {
						//MSG_IDLE=2;
						mimChatPrint(msg.destino.id, "<i><small>idle</small></i>", msg.destino.nome, "gray", msg.dataString );
					} else {
						//MSG_ERRO=3;
						mimChatPrint(msg.destino.id, "Não entregue - " + ((msg.msg.length > 40) ? msg.msg.substring(0,39)+"..." : msg.msg), msg.destino.nome, "red", msg.dataString );
					}
//				mimblink(msg.destino.id);
				}
			}
		} catch (e) {
			mimlog("AjaxEx [e]: " + e);
		}
	}
}

function mimMsgCheck(idmsg) {
	mimlog("Check: " + idmsg);
	ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=check&id="+ idmsg,"blank",null,false);
}

function mimChatPrint(iduser, msg, user, color, date) {
	if (color==undefined)
		color="blue";
	if (date==undefined)
		date= mimFormatDate(new Date());
	if (user==undefined)
		user="Eu";
	getTela("mimChat_" + iduser).innerHTML+='<span style="color:'+ color +';">'+ date +' <b>'+ user +':</b> ' + msg + '</span><br>';
}

function mimSend(iduser,user) {
	mimlog("Conversa: " + user);
	var msg = getTela("mimMsg_" + iduser);
	ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=msg&user="+ user + '&msg=' + msg.value,"blank",null,false);
	mimChatPrint(iduser, msg.value);
	msg.value='';
	rolar("mimChat_" + iduser);
	msg.focus();
}

function mimLogin() {
	mimlog("Login");
	ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=login","blank",null,false);
}

function mimLogoff() {
	mimlog("Logoff");
	ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=logoff","blank",null,false);
}

function mimFormatDate(date) {
	var month = (date.getMonth()+1)+"";
	var day = date.getDay();
	var hora = date.getHours();
	var min = date.getMinutes();
	return month + "/" + day + " " + hora + ":" + min;
}

function mimChat(iduser,user,nome) {
	if (getTela("mimTela_" + iduser)==null) {
		mimAddTela("mimTela_" + iduser);
		getTela("mimTela_" + iduser).innerHTML+='<div style="cursor:pointer;" onclick="mimChatMin('+iduser+');" value="0" id="mimChatStatus_' + iduser + '" class="mimChatPanelStatus">'
				+ '<a href="javascript:mimChatClose('+ iduser +');" style="float:right;margin:2px;"><img src="images/elementoDinamico/fechar.gif" border="0"></a>'
				//+ '<a href="javascript:mimChatMin('+iduser+');" style="float:right;margin:2px;"><img src="images/elementoDinamico/minimizar.gif" border="0"></a>'
				+ nome
				+'</div>';

		// value == minimizar
		getTela("mimTela_" + iduser).innerHTML+='<div value="0" id="mimChat_'+iduser+'" class="mimChatPanel" onclick="mimblink('+ iduser +', false)" />';
		getTela("mimTela_" + iduser).innerHTML+='<input onFocus="mimblink('+ iduser +', false)" type="text" size="30" id="mimMsg_'+ iduser +'" />';
		getTela("mimTela_" + iduser).innerHTML+='&nbsp; <input onFocus="mimblink('+ iduser +', false)" maxlength="255" type="button" value="->" onclick="mimSend('+ iduser +',\''+ user +'\');" />';
		mimUIContainer.push(iduser);
	} else {
		getTela("mimTela_" + iduser).style.display="block";
	}
}

function mimChatClose(iduser) {
	getTela("mimTela_" + iduser).style.display="none";
}

function mimChatMin(iduser) {
	if (getTela("mimChat_" + iduser).value==0) {
		getTela("mimChat_" + iduser).value=1;
		getTela("mimTela_" + iduser).style.overflow="hidden";
		getTela("mimTela_" + iduser).style.height="20px";
	} else {
		getTela("mimChat_" + iduser).value=0;
		getTela("mimTela_" + iduser).style.overflow="auto";
		getTela("mimTela_" + iduser).style.height="auto";
	}
}

function mimblink(iduser,bool) {
	try {
		if (bool == undefined || bool == null)
			bool = true;
		getTela("mimTela_" + iduser).value=(bool) ? "1" : "0"; //TO Blink
	} catch (e) {
	}
}

function mimStartBlinker(mutex) {
	if (mutex==1)
		mimBlinkMsg=document.title;
	if (mimStatus()) {
		if (mimBlinkerSync==mutex) {
			var utmp = Math.random();
			mimBlinkerSync=utmp;

			// Correr a tela do MIM
			getTela("MIMFloat").style.bottom=document.body.scrollTop*-1;
			
			var isblink=false;
			if (mimUIContainer.length > 0) {
				for (i=0;i<mimUIContainer.length;i++) {
					if (getTela("mimTela_" + mimUIContainer[i])!=null) {
						if (getTela("mimTela_" + mimUIContainer[i]).value==1) {
							// Esta blinkando
							isblink=true;
							if (getTela("mimChatStatus_" + mimUIContainer[i]).value==0) {
								getTela("mimChatStatus_" + mimUIContainer[i]).value=1;
								getTela("mimChatStatus_" + mimUIContainer[i]).style.background="orange";
								getTela("mimChat_" + mimUIContainer[i]).style.border="1px orange solid";
							} else {
								getTela("mimChatStatus_" + mimUIContainer[i]).value=0;
								getTela("mimChatStatus_" + mimUIContainer[i]).style.background="blue";
								getTela("mimChat_" + mimUIContainer[i]).style.border="1px blue solid";
								// Mesmo em baixo
							}
						} else {
							getTela("mimChatStatus_" + mimUIContainer[i]).value=0;
							getTela("mimChatStatus_" + mimUIContainer[i]).style.background="blue";
							getTela("mimChat_" + mimUIContainer[i]).style.border="1px blue solid";
							// Mesmo em cima
						}
					}
				}
			}

			// Blinkar browser
			if (isblink) {
				// document.focus(); // blink no browser -- rouba foco
				try {
					if (document.title=='MIM') {
						document.title=mimBlinkMsg;
					} else {
						document.title="MIM";
					}
				} catch (e) {
				}
			} else {
				try {
					document.title=mimBlinkMsg;
				} catch (e) {
				}
			}

			// 1 segundods
			setTimeout("mimStartBlinker("+utmp+")",1000);
		}
	}
}

function mimEnviarNaoLidas() {
	mimlog('Start enviar nao lidas');
	ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=naolidas","blank",null,false);
}

function mimStartLista(mutex) {
	mimlog('Lista');

	if (mimStatus()) {
		if (mimListaSync==mutex) {
			var utmp = Math.random();
			mimListaSync=utmp;
			// 2 minutos
			ChamaPaginaArray("/maquinaNet/techEngine?sid=MaquinaNet&command=mim&action=lista","MIMLista","setTimeout('mimStartLista("+utmp+")',1000*60*2)",false);
		}
	}
}

function mimStatus() {
	try {
		return getTela("mimStatus").value==1;
	} catch (e) {
		return false;
	}
}

function getTela(tela) {
	return document.getElementById(tela);
}
