

var		height = 486;
var		width = 810;
var		top = (screen.height - height) / 2;
var		left = (screen.width - width) / 2;
var		chat_window;

Evonux.Chat = {}

Evonux.Chat.open = function ()
{
    chat_window = window.open (U_ROOT + "/?module=user&state=chat&frame=1", "Chat", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, border=no, left=" + left + ", top=" + top + ", width=" + width + ", height=" + height);    
    chat_window.focus ();
}

Evonux.Chat.start = function (oid)
{
    chat_window = window.open (U_ROOT + "/?module=user&state=startChat&frame=1&x=1&oid=" + oid, "chat", "menubar=no, border=no, status=no, left=" + left + ", top=" + top + ", width=" + width + ", height=" + height);
    chat_window.focus ();
}

Evonux.Chat.sendMessage = function ()
{
    var		frm = $('frm-chat');
    var		num = (frm.tab.value ? frm.tab.value : 0);
    var		oid = $("tab_" + num + "_oid").value;

    document.title = "chat send";
    if ($('message_' + oid).value)
    { 
	Evonux.Page.get ('module=user&state=addChat&oid=' + oid + '&message=' + $('message_' + oid).value, '', function () { $('message_' + oid).value = ''; } );
    }    

    return false;
}
Evonux.Chat.sendMessage2 = function (login, time, msg)
{
    var		frm = $('frm-chat');
    var		num = (frm.tab.value ? frm.tab.value : 0);
    var		oid = $("tab_" + num + "_oid").value;

    if ($('message_' + oid).value)
    { 
	frm.oid.value = oid;
	frm.message.value = $('message_' + oid).value;
	
	Evonux.Page.post ('frm-chat', '', function () {
	    $('message_' + oid).value = '';
	    $('conversation_' + oid).innerHTML += '<li>' + time + ' <b>' + login + '</b> : ' + msg + '</li>';
	});
    }

    return false;
}

Evonux.Chat.openProfile = function (oid)
{
    window.opener.location = "/?module=user&state=view&oid=" + oid;
}

Evonux.Chat.close = function ()
{
    if (chat_window)
    {
	chat_window.close ();
    }
}

Evonux.Chat.reload = function (oid, time)
{
    setTimeout (function () { Evonux.Page.get ('module=user&state=getChat&oid=' + oid + '&date=' + time, 'conversation_' +  oid); }, 2000);
    $('window_' + oid).scrollTop = 10000;
    
}

/* --- NEW CHAT --- */

Evonux.Chat.reloadChat = function (time)
{
    var		frm = $('frm');

    setTimeout (function () { Evonux.Chat.selectUser (frm.to_oid.value, frm.to_login.value); Evonux.Chat.updateChat (time); Evonux.Chat.reloadChat (time); Evonux.Chat.selectUser (frm.to_oid.value, frm.to_login.value); }, 2000);
}

Evonux.Chat.updateChat = function (time)
{
    var		frm = $("frm");
    var		users = "";
    var		conversation = "";
    var		oid;
    var		login;

    Evonux.Page.get ('module=chat&state=updatechat&time=' + time, '', function (text, xml)
    {
	// Compute conversations
	this.response.xml.firstChild.getElements ('conversations').each (function (el)
	{
	    el.getElements ('conversation').each (function (el2) {
		var from_oid = el2.getElement ('from_oid').firstChild.nodeValue;
		var from_login = el2.getElement ('from_login').firstChild.nodeValue;
		var to_oid = el2.getElement ('to_oid').firstChild.nodeValue;
		var to_login = el2.getElement ('to_login').firstChild.nodeValue;
		var time = el2.getElement ('time').firstChild.nodeValue;
		var subject = el2.getElement ('subject').firstChild.nodeValue;
		var message = el2.getElement ('message').firstChild.nodeValue + 'x';

		// Compute normal messages
		if (subject == "NO")
		    login = (frm.from_oid.value == from_oid ? '<em class="me">@' + to_login + ' :</em>' : '<em>' + from_login + ' :</em>');
		else
		    {
			// Compute system messages
			login = "";
			if (subject == "CHAT_LEAVE")
			    message = from_login + " a quitt&eacute; le chat";
			if (subject == "PRIVATE_OPEN")
			    message = from_login + " a ouvert sa gallerie priv&eacute;e";
			if (subject == "PRIVATE_CLOSE")
			    message = from_login + " a ferm&eacute; sa gallerie priv&eacute;e";
			message = '<i>' + message + '</i>';
		    }

		// Add conversation
		if (subject != "CHAT_START")
		    {
			conversation += '<li>' + time + ' ' + login + ' ' + message + '</li>';
		    }
	    });
	});

	// Compute users
	this.response.xml.firstChild.getElements ('users').each (function (el) {
	    el.getElements ('user').each (function (el2) {
		oid = el2.getElement ('oid').firstChild.nodeValue;
		login = el2.getElement ('login').firstChild.nodeValue;
		var is_connected = el2.getElement ('is_connected').firstChild.nodeValue;
		
		// Set user class
		var c = (is_connected == 1 ? (frm.to_oid.value == oid ? 'class="on" ' : '') : 'class="disabled" ');											   
		var s = '<img src="http://www.ebenedate.com/pic/icon/bullet_' + (is_connected == 0 ? 'red' : 'green') + '.png" alt="" />';
		var d = '<img src="http://www.ebenedate.com/pic/icon/bullet_red.png" alt="" onclick="Evonux.Chat.quitConversation (' + oid + ');" />';
		
		// Format user line
		users += '<li ' + c + 'id="user-' + oid + '"' + (is_connected ? ' onclick="Evonux.Chat.selectUser (' + oid + ', \'' + login + '\');"' : '') + '>' + s + login + '</li>';
	    });
	});       

	// Update buffers content
	$('users').innerHTML = (users ? '<ul>' + users + '</ul>' : '<p>Aucun utilisateur</p>');
	$('conversation').innerHTML = (conversation ? '<ul>' + conversation + '</ul>' : '<p>Aucune conversation</p>');
	$('conversation').innerHTML = Evonux.Chat.evalSmileys ($('conversation').innerHTML);
	$('conversation').scrollTop = 100000;

	// Select default user if not set
	if (users)
	    {
		if (!frm.to_oid.value)
		    Evonux.Chat.selectUser (oid, login);
	    }
	else
	    $('message').disabled = true;
    });
}

Evonux.Chat.send = function ()
{
    if (!$('message').disabled && $('message').value && $('frm').to_oid.value)
    {
	Evonux.Page.post ($('frm'), 'log', function () {
	    /*	    var e = new Element ('li');
	    e.innerHTML = this.response.text;
	    e.injectAfter ($('conversation').getElement ('ul').getLast ());
	    */
	    $('message').value = '';
	    Evonux.Chat.updateChat ();
	    $('conversation').scrollTop = 100000;
	});
    }
}

Evonux.Chat.selectUser = function (oid, login)
{
    var		frm = $('frm');
    var         users = $$ ("div#users ul li");

    // Set hidden values for user
    $('frm').to_oid.value = oid;
    $('frm').to_login.value = login;

    // Deactivate users except user with provided oid 
    for (var i = 0; i < users.length; i++)
    {
	if (users[i].id.substr (5) == oid)
	    users[i].addClass ("on");
	else
	    users[i].removeClass ("on");
    }
    
    // Allo wsending messages
    $('message').disabled = false;
}

Evonux.Chat.quitConversation = function (oid)
{
    if (confirm ('Quitter cette conversation ?'))
    {
	Evonux.Page.get ('module=chat&state=leave&oid=' + oid, '', function () {
	    Evonux.Chat.updateChat ();
	});
    }
}

Evonux.Chat.evalSmileys = function (str)
{
    var r = new RegExp ('([img:([a-z]+)])', "g");

    return str.replace (r, '<img src="' + U_ROOT + '/pic/new/smileys/$2.png" alt="" />');
}

Evonux.Chat.insertSmiley = function (symbol)
{
    $('message').value += '[img:' + symbol + ']';
}
