addEventHandler(window,'error',supressError);
addEventHandler(window,'load',init);

function supressError()
{
	return true;
}

function init()
{
	
	if (gebI('friendlist')){
	
	skipNotifies = true;
	skipFriends = true;
	skipRooms = true;
	
	getMyRooms();
	getMyFriends(false);
	getNotifies();
	
	addEventHandler(gebI('mynotifies'),'mouseover',function(){
		if (document.getElementById('notifies').parentNode.scrollTop == 0){
		document.getElementById('notifies').parentNode.scrollTop = document.getElementById('notifies').parentNode.scrollHeight; }});
		
	}
	
	appendTooltip('header_home','Menu Principal','Retorna ao Menu Principal, onde você pode criar uma sala ou entrar numa já existente.');
	appendTooltip('header_back','Retornar à Sala','Volta à última sala de chat da qual você participou.');
	appendTooltip('header_options','Opções','Fornece opções para alterar configurações e personalizar a funcionalidade do site.');
	appendTooltip('header_search','Buscar Sala','Localiza uma sala com base em parâmetros escolhidos.');
	appendTooltip('header_logout','Sair','Finaliza a sessão atual, permitindo que outras pessoas façam login.');
	appendTooltip('header_notifies','Resumo do Perfil','Clique para exibir um resumo do seu perfil e as últimas mensagens não lidas.');
	appendTooltip('header_mail','Mensagens','Permite enviar e ler mensagens recebidas de outros usuários, além de notificações do sistema.');
	appendTooltip('header_myfriends','Meus Amigos','Clique para exibir ou ocultar um submenu que permite adicionar, remover, enviar mensagens a amigos ou entrar em salas que eles estejam.');
	appendTooltip('header_myrooms','Minhas Salas','Clique para exibir ou ocultar um submenu com todas as salas de que participa. <br /> Entrar numa sala fará com que você automaticamente deixe qualquer outra de que esteja participando.');
	appendTooltip('header_start','Página Inicial','Retorna para a página inicial do site.');
	
	appendTooltip('header_credits','Créditos','Indica a quantidade de créditos para recursos extras. Clique para comprar créditos.');
	appendTooltip('header_premium','Recursos Extras','Libera recursos extras, utilizando créditos.');

}



function getLibraryText(sessionId,itemId)
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=getLibraryText&sid=" + escape(sessionId) + "&lid=" + escape(itemId);
	
	request.open("GET",url,true);
	
	request.onreadystatechange = displayLibraryItem;
	
	request.send(null);
}

function getMacro(sessionId,itemId)
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=getMacro&sid=" + escape(sessionId) + "&mid=" + escape(itemId);
	
	request.open("GET",url,true);
	
	request.onreadystatechange = function(e){
	
		if (request.readyState == 4 && request.status == 200) 
		{
		
			gebI('macroDescription').innerHTML = request.responseText;
		
		}
	};
	
	request.send(null);
}

function addMacro()
{
	var output = gebI('macroText').firstChild.nodeValue;
	var fieldctn = gebI('macroFieldCtn').firstChild.nodeValue;
	var pattern = '';
	
	for(var p = 1; p <= fieldctn; p++)
	{
		pattern = new RegExp('{['+p+']}','g');
		output = output.replace(pattern, gebI('macrofld' + p).value);
	}
	
	gebI('messagetext').value = output;
	addmessage();

}

function pasteLibrary()
{
	var output = gebI('libraryTrueText').value.substring(0,1024);
	gebI('messagetext').value = output;
}

function mapMapChatBG(fileId, sessionId, loop)
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=makeMapChatBG&sid=" + escape(sessionId) + "&file=" + escape(fileId);
	
	request.open("GET",url,true);
	
	request.onreadystatechange = function(){};
	
	request.send(null);
}

function playSoundInChat(soundId, sessionId, loop)
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=playSoundInChat&sid=" + escape(sessionId) + "&sound=" + escape(soundId) + "&loop=" + escape(loop);
	
	request.open("GET",url,true);
	
	request.onreadystatechange = function(){};
	
	request.send(null);
}

function displayLibraryItem()
{
	if (request.readyState == 4){
		if (request.status == 200) {
			var libraryText = document.getElementById("libraryText");
			var libraryTrueText = document.getElementById("libraryTrueText");
			var libraryTitle = document.getElementById("libraryTitle");
			
			var libraryTextEdit = document.getElementById("library_text");
			var libraryTitleEdit = document.getElementById("library_title");
			var libraryIdEdit = document.getElementById("library_id");
			var libraryTextButton = document.getElementById('library_paste_button')
			
			var libraryXML = request.responseXML;
			
			libraryTitle.innerHTML = libraryXML.getElementsByTagName('library')[0].getElementsByTagName('title')[0].firstChild.nodeValue;
		
			if (libraryTitleEdit)
				libraryTitleEdit.value = libraryXML.getElementsByTagName('library')[0].getElementsByTagName('title')[0].firstChild.nodeValue;
			
			libraryText.innerHTML = libraryXML.getElementsByTagName('library')[0].getElementsByTagName('text')[0].firstChild.nodeValue.replace(/\n/g,'<br />');
			
			if (libraryTrueText)
			libraryTrueText.value = libraryXML.getElementsByTagName('library')[0].getElementsByTagName('text')[0].firstChild.nodeValue;
			
			if (libraryTextEdit)
			libraryTextEdit.value = libraryXML.getElementsByTagName('library')[0].getElementsByTagName('text')[0].firstChild.nodeValue;
			
			if (libraryIdEdit)
			libraryIdEdit.value = libraryXML.getElementsByTagName('library')[0].getAttribute('id');
			
			if (libraryTextButton)
			libraryTextButton.style.display = '';
		}
	}
		
}

function getMyRooms(noNewTimeout)
{
	if(skipRooms) {return false;}

	var MyRoomsrequest = createRequest();
	
	if (MyRoomsrequest == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=getMyRooms";
	
	MyRoomsrequest.open("GET",url,true);
	
	MyRoomsrequest.onreadystatechange = function(){
	
		if(MyRoomsrequest.readyState==4 && MyRoomsrequest.status==200)
		{
			gebI('roomlist').innerHTML = MyRoomsrequest.responseText;
			if (!noNewTimeout)
			{
				setTimeout(getMyRooms,30000);
			}
		}
		
		};
	
	MyRoomsrequest.send(null);
 
}

function getMyFriends(noNewTimeout)
{
	if(skipFriends) { return false;}
	
	var MyFriendsrequest = createRequest();
	
	if (typeof(noNewTimeout) == 'undefined') {noNewTimeout=false;}
	
	if (MyFriendsrequest == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var url = "?screen=getMyFriends";
	
	MyFriendsrequest.open("GET",url,true);
	
	MyFriendsrequest.onreadystatechange = function(ev){
	
		if(MyFriendsrequest.readyState==4 && MyFriendsrequest.status==200)
		{
			gebI('friendlist').innerHTML = MyFriendsrequest.responseText;
			
			if (!noNewTimeout)
			{
				setTimeout(function(){getMyFriends(false)},10000);
			}
		}
		
		};
	
	MyFriendsrequest.send(null);
 
}

function addFriend(user, deny)
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	if (deny)
	{ var denystring = '&deny=true'; } else { var denystring = ''; }
	
	var url = "?screen=addFriend&fid=" + user + denystring;

	
	request.open("GET",url,true);
	
	
	request.onreadystatechange = function()
	{
		if (request.readyState == 4 && request.status == 200)
		{
			
			if(request.responseText == "1")
			{
				gebI('addFriendStatus').firstChild.nodeValue = 'Erro ao adicionar (1)';
			}
			else
			{
				gebI('addFriendStatus').firstChild.nodeValue = 'Adicionado com sucesso';
			}
		
			getMyFriends(true);
		}
	}
	
	request.send(null);
	
}


function getNotifies()
{	
	if (typeof(lastNotifyId) == 'undefined')
	{
		lastNotifyId = 0;
	}

	  new Ajax.Request( 'index.php?screen=getMyNotifies&id='+lastNotifyId, {
		onSuccess: function( transport ) {
		  var messages = transport.responseXML.getElementsByTagName( 'message' );
		  	  		  
		  if (messages.length > 0 && typeof(firstNotifyCheckDone)!='undefined')
		  {
			 DHTMLSound('notify');
		  }
		  			
			var odd = false;
			var oddt = odd ? 'od' : 'ev';
			
		  for( var i = 0; i < messages.length; i++ )
		  {
			
			var message = messages[i].firstChild.nodeValue;
			var from = messages[i].getAttribute('from');
			var id = parseInt( messages[i].getAttribute('id') );
			var time = messages[i].getAttribute('time');
			var sender = messages[i].getAttribute('sender');
			
			if ( id > lastNotifyId )
			{				
			  var elTR = $('notifies').insertRow( -1 );
			  
			  elTR.className = oddt;
			  var elTD2 = elTR.insertCell( -1 );
			  
			  elTD2.className = 'notifies_sender';
			  
			  if(!from)
			  {
				from = "Sistema";
			  }
			  
			  
			  elTD2.innerHTML = from ;			  
						
			  var elTD2 = elTR.insertCell( -1 );
			  
			  
			  var elA = document.createElement('a');
			  elA.href= '?screen=viewmail&m=' + id;
			  elA.innerHTML = message;
			  elTD2.appendChild(elA);
			  
			  
			  lastNotifyId = id;
			  firstNotifyCheckDone = 1;
			  
			}
		  }
		  
		  window.setTimeout( getNotifies, 20000 );
		}
	  } );
}
	
function sendNotify()
{
	var request = createRequest();
	
	if (request == null)
	{
		alert ("Não foi possível criar o objeto de solicitação");
		return;
	}
	
	var text = gebI('newNotifyText').value;
	var user = gebI('newNotifyTo').value;
	
	var url = "?screen=sendNotify&fid=" + user + "&text=" + text;
	
	request.open("GET",url,true);
	
	
	request.onreadystatechange = function()
	{
		if (request.readyState == 4 && request.status == 200)
		{
			
			if(request.responseText == "1")
			{
				gebI('newNotifyStatus').firstChild.nodeValue = 'O usuário selecionado não existe';
			}
			else if(request.responseText == "2")
			{
				gebI('newNotifyStatus').firstChild.nodeValue = 'Só é possível enviar mensagens a amigos';
			}
			else
			{
				gebI('newNotifyStatus').firstChild.nodeValue = 'Enviado com sucesso';
				gebI('newNotifyText').value = '';
				gebI('newNotifyTo').value = '';
			}
			
			setTimeout(function(){gebI('newNotifyStatus').firstChild.nodeValue = '';},5000);
		
			getMyFriends(true);
		}
	}
	
	request.send(null);
	
}

function userProfile(userid)
{
	window.open('?screen=profile&u=' + userid, 'profile', "height=700,width=740,status=0,toolbar=0" );
}
