
/**
 *
 */
function smile_onclick( smile_text ) {

	var f = $("chat_message");
	if ( f ) {
		f.value = f.value + " " + smile_text;	
		f.focus();
	}
	
}

/**
 *
 */
MLP.Chat = {

	/**
	 * timeouts for updating user and message lists
	 */
	user_timeout: 10000,
	message_timeout: 1000,

	/**
	 *
	 */
	send_message_lock: false,
	view_messages_lock: false,

	/**
	 *
	 */
	ip_view: "off",

	/**
	 *
	 */
	smile_menu_view: "off",

	/**
	 *
	 */
	display_messages: function() {

		if ( $("last_chat_message_id") ) {

			var last_id = parseInt( $("last_chat_message_id").innerHTML, 10 );

			new Ajax.Request(
				'/chat?get_messages&last_message_id=' + last_id,
				{
					method: 'post',
					onSuccess: function(transport) {

						var msg = transport.responseText;

						var new_last_id = parseInt( msg.substr( 0, msg.indexOf( ';', 0 ) ), 10);
						msg = msg.substr( msg.indexOf( ';', 0 )+1 );

						if ( new_last_id ) {
							$("last_chat_message_id").update( new_last_id );
						}

						if ( msg ) {
							$("chat_messages").update( msg + $("chat_messages").innerHTML );
						}

					}
				}
			);

		}
	},

	/**
	 *
	 */
	keyup_handler: function( code ) {

		if ( 13 == code ) {
			MLP.Chat.send_message();
			return false;
		}

	},

	/**
	 *
	 */
	send_message: function() {

		var f = $("chat_message");
		if ( !f ) {
			return false;	
		}

		var text = f.value;

		if ( !text ) {
			return false;	
		}

		var params = "send_message=1&ajax=1&message=" + encodeURIComponent(text) + "&rnd=" + Math.floor(Math.random() * 1000000);

		new Ajax.Request(
			'/chat',
			{
				parameters: params,

				onSuccess: function( transport ) {

					if ( "OK" == transport.responseText ) {

						if ( $("chat_message") ) {
							$("chat_message").value = "";
							$("chat_message").focus();
						}

						MLP.Chat.display_messages();

					} else {
						alert(MLP.Lang.get(transport.responseText));
					}

					return false;
				}
			}
		);

		f.focus();

		return false;
	},

	/**
	 *
	 */
	display_users: function() {

		new Ajax.Request(
			'/chat?get_users',
			{
				method: 'post',
				onSuccess: function( transport ) {
					
					if ( transport.responseText && $("chat_users") ) {
						$("chat_users").update( transport.responseText );
					}

					return false;
				}
			}
		
		);

	},

	/**
	 *
	 */
	toggle_smile_menu: function() {
		
		var view = ( "off" == MLP.Chat.smile_menu_view ) ? "on" : "off";

		var smile_menu = $("chat_smile_menu");
		if ( smile_menu ) {
			if ( "off" == MLP.Chat.smile_menu_view ) {
				smile_menu.show();
			} else {
				smile_menu.hide();	
			}
		}

		MLP.Chat.smile_menu_view = view;

		return false;
	}

};

/**
 *
 */
Event.observe(window, 'load', function() {
	var users_t = setInterval( MLP.Chat.display_users, MLP.Chat.user_timeout );
	var msg_t = setInterval( MLP.Chat.display_messages, MLP.Chat.message_timeout );
});
