/*
 * lib_message.js :	Sending a message
 *
*/

var OMCHAT_MESSAGE_TYPE_USER = 1;			// messages between users
var OMCHAT_MESSAGE_TYPE_FORUM_THREAD = 2;
var OMCHAT_MESSAGE_TYPE_FORUM_THREAD_REPLY = 3;
var OMCHAT_MESSAGE_TYPE_USER_WALL = 4;		// wall post
var OMCHAT_MESSAGE_TYPE_USER_RATING = 7;	// user rating

function message_send_window_float_show(em, refid_to, type, username_to)
{
	getElement('omchat_message_send'+type+'_progress').style.display = 'none';

	var username_to_em = getElement('omchat_message_send'+type+'_username_to');
	username_to_em.innerHTML = username_to;
	username_to_em.href = '/profile/'+refid_to;
	getElement('omchat_message_send'+type+'_refid_to').value = refid_to;

	window_float_show_under('omchat_window_float_message_send'+type, em, -8);
	var em = getElement('omchat_window_float_message_send'+type);
	var em_pos = get_pos(em);
	scrollToView(em_pos.top, em.clientHeight);

	var title_em = document.getElementById('omchat_message_send'+type+'_title');
	if( title_em != null ) title_em.focus();
}

function message_send_form_submit(type)
{
	var progress_em_id = 'omchat_message_send'+type+'_progress';
	var refid_to = getElement('omchat_message_send'+type+'_refid_to').value;
	if( refid_to == 0 ) return;

	var title = '';
	var title_em = document.getElementById('omchat_message_send'+type+'_title');
	if( title_em != null ) title = title_em.value;

	var description_em = getElement('omchat_message_send'+type+'_description');
	var description = description_em.value;
	var progress = getElement(progress_em_id);

	if( description.length == 0 )
	{
		progress.innerHTML = 'Please enter the message.';
		progress.style.display = 'inline';
		return false;
	}
	else
	{
		switch( type )
		{
			case OMCHAT_MESSAGE_TYPE_USER: 
				progress.innerHTML = 'Sending message...';
				break;
			case OMCHAT_MESSAGE_TYPE_USER_WALL: 
				if( !description_em.getAttribute('typed') ) return false;
				progress.innerHTML = 'Posting message...';
				break;
			case OMCHAT_MESSAGE_TYPE_FORUM_THREAD: case OMCHAT_MESSAGE_TYPE_FORUM_THREAD_REPLY: 
				progress.innerHTML = 'Posting message...';
				break;
			case OMCHAT_MESSAGE_TYPE_USER_RATING: 
				progress.innerHTML = 'Rating...';
				break;
			default: 
				progress.innerHTML = 'Posting comment...';
				break;
		}
	}

	// if walltowall, send walltowall var to XML processing file
	var walltowall = false;
	if( type == OMCHAT_MESSAGE_TYPE_USER_WALL )
		walltowall = getElement('omchat_message_send_walltowall').value == '1';

	// asynchronously send the message
	xmlhttp_request('/CMS/php/xml_message_send.php', 'refid_to='+refid_to+'&type='+type+'&title='+encodeURIComponent(title)+'&description='+encodeURIComponent(description)+(walltowall?'&walltowall=1':''), 'POST', message_send_processxml, xmlhttp_error, true, true);
	
	progress.style.display = 'inline';

	return true;
}

// process resulting xml from `/xml_message_send.php`
function message_send_processxml(xml)
{
	/*
	 * XML output format
	 *
	 *	<?xml version="1.0" ?>
	 *	<items>
     *		<item>
     *			<error></error>
     *			<msg></msg>
     *			<messageid></messageid>
     *			<type></type>
     *			<refid_to></refid_to>
     *			<referto></referto>
     *			<html></html>
	 *		</item>
	 *	</items>
	*/

	// get the items in the xml document
	var items = xml.documentElement.getElementsByTagName('item');

	var error = parseInt(getNodeValue(items.item(0), 'error'));
	var msg = getNodeValue(items.item(0), 'msg');
	var messageid = getNodeValue(items.item(0), 'messageid');
	var type = getNodeValue(items.item(0), 'type');
	var refid_to = getNodeValue(items.item(0), 'refid_to');
	var progress_em_id = 'omchat_message_send'+type+'_progress';
	var referto = getNodeValue(items.item(0), 'referto');

	var progress = getElement(progress_em_id);
	progress.innerHTML = msg;

	// Message sent, dynamically add the message to the page or redirect to a certain page
	if( type == OMCHAT_MESSAGE_TYPE_FORUM_THREAD )
	{
		if( error == 0 ) location.href = referto;
	}
	else
	{
		var title = document.getElementById('omchat_message_send'+type+'_title');
		if( title != null ) title.value = '';
		getElement('omchat_message_send'+type+'_description').value = '';
		if( error == 0 )
		{
			var container_messages = document.getElementById('omchat_messages_container'+type);
			if( container_messages != null )
			{
				var html = getNodeValue(items.item(0), 'html');
				container_messages.innerHTML = html;
			}

			if( type != OMCHAT_MESSAGE_TYPE_USER && type != OMCHAT_MESSAGE_TYPE_USER_WALL )
				location.href = '#m'+messageid;
		}
	}

	form_submit_enable_set('message_send'+type, true);
}

function message_delete(messageid, progress_em)
{
	if( confirm('Are you sure?') )
	{
		progress_em.innerHTML = 'Deleting...';

		xmlhttp_request('/CMS/php/xml_message_delete.php', 'messageid='+messageid, 'POST', message_delete_processxml, xmlhttp_error, true, true);
	}
}

// process resulting xml from `/xml_message_delete.php`
function message_delete_processxml(xml)
{
	/*
	 * XML output format
	 *
	 *	<?xml version="1.0" ?>
	 *	<items>
     *		<item>
     *?			<referto></referto>
     *			<messageid></messageid>
     *			<message_type></message_type>
     *			<message_html></message_html>
	 *		</item>
	 *	</items>
	*/

	// get the items in the xml document
	var items = xml.documentElement.getElementsByTagName('item');

	var messageid = getNodeValue(items.item(0), 'messageid');
	var message_type = parseInt(getNodeValue(items.item(0), 'message_type'));

	// Message deleted, hide message (or show deleted version)
	var side_em = getElement('omchat_message_dt'+messageid);
	var body_em = getElement('omchat_message_dd'+messageid);
	if( message_type == OMCHAT_MESSAGE_TYPE_FORUM_THREAD_REPLY )
	{
		body_em.innerHTML = getNodeValue(items.item(0), 'message_body_html');
	}
	else if( message_type == OMCHAT_MESSAGE_TYPE_FORUM_THREAD )
	{
		var referto = getNodeValue(items.item(0), 'referto');
		location.href = referto;
	}
	else
	{
		side_em.style.display = 'none';
		body_em.style.display = 'none';
	}
}

function message_emoticon_click(shortcut, textbox_em_id)
{
	var textbox_em = getElement(textbox_em_id);

	textbox_em.value += shortcut;
}

function message_emoticons_showhide(em, text_show, text_hide)
{
	var container = getElement('omchat_form_emoticons_container');

	if( container.style.display == 'none' )
	{
		container.style.display = 'block';
		em.innerHTML = text_hide;
	}
	else
	{
		container.style.display = 'none';
		em.innerHTML = text_show;
	}
}