//------------------------------------------------------------------------------
// MiniChat 2.0
//------------------------------------------------------------------------------
// Writing started by: Fabien
//------------------------------------------------------------------------------

function minichat_messages_box_increase()
{
	if( document.getElementById('minichat-messages-box') )
	{
		document.getElementById('minichat-messages-box').style.height = parseInt(document.getElementById('minichat-messages-box').style.height) + 30 + 'px';
	}
}

function minichat_messages_box_decrease()
{
	if( document.getElementById('minichat-messages-box') )
	{
		var height = parseInt(document.getElementById('minichat-messages-box').style.height) - 30;
		
		if( height <= 100 )
		{
			document.getElementById('minichat-messages-box').style.height = '100px';
		}
		else
		{
			document.getElementById('minichat-messages-box').style.height = height + 'px';
		}
	}
}

function minichat_messages_refresh()
{
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			return;
		}

		//----------------------------------
		// INIT
		//----------------------------------
		var xml = xmlobj.xmlhandler.responseXML;
		var xml_result = false;
		var xml_message = '';
		
		//----------------------------------
		// Parse xml reponse
		//----------------------------------
		if( xml && xml.firstChild
		&& xml.childNodes.length == 1
		&& xml.firstChild.tagName == 'minichat'
		&& xml.childNodes[0].childNodes.length == 6 )
		{
			xml_result = xml.childNodes[0].childNodes[0].firstChild.nodeValue == "1" ? true : false;
			xml_message = xml.childNodes[0].childNodes[1].firstChild.nodeValue;
		}
		
		if( xml_result == true )
		{
			xml_last_id = xml.childNodes[0].childNodes[2].firstChild.nodeValue;
			xml_order = xml.childNodes[0].childNodes[3].firstChild.nodeValue;
			xml_messages_id = xml.childNodes[0].childNodes[4].firstChild.nodeValue;
			xml_html = xml.childNodes[0].childNodes[5].firstChild.nodeValue;
			
			document.getElementById('minichat-messages-box').innerHTML = xml_html + "\n" + document.getElementById('minichat-messages-box').innerHTML;
			
			minichat_last_msg_id = xml_last_id;
			
			var count = 0;
			var id = 0;
			for( var i=0 ; i < document.getElementById('minichat-messages-box').childNodes.length ; i++ )
			{
				if( document.getElementById('minichat-messages-box').childNodes[i].nodeType != 1 )
				{
					continue;
				}
				
				if( ! ( id = document.getElementById('minichat-messages-box').childNodes[i].id.match(/minichat-message-(\d+)/) ) )
				{
					continue;
				}
				
				count++;
				
				if( xml_messages_id.indexOf( ',' + id[1] + ',' ) != -1 )
				{
					ipsclass.fade_in_element( document.getElementById('minichat-messages-box').childNodes[i].id );
				}
				
				if( count > ipsclass.settings['minichat_limit'] )
				{
					document.getElementById('minichat-messages-box').removeChild( document.getElementById('minichat-messages-box').childNodes[i] );
				}
			}
			
			return false;
		}
		else
		{
			return false;
		}
	}
	
	var url_query = (typeof(window['minichat_in_portal']) != 'undefined' && minichat_in_portal == 1) ? '&portal=1' : '';

	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	xmlobj.process( ipb_var_base_url + 'autocom=minichat&code=ajax&do=get-new-messages&id=' + minichat_last_msg_id + url_query, 'GET' );

	return false;
}

function minichat_add_message( form )
{
	//----------------------------------
	// Init
	//----------------------------------
	var fields = new Array();

	//----------------------------------
	// Using fancy js?
	//----------------------------------
	if ( ! use_enhanced_js )
	{
		return true;
	}

	//----------------------------------
	// Fields
	//----------------------------------
	fields['message'] = form.elements['message'].value;
	fields['name'] = form.elements['name'] ? form.elements['name'].value : '';
	//fields['archives'] = form.elements['archives'] ? form.elements['archives'].value : '';
	fields['st'] = form.elements['st'] ? form.elements['st'].value : '';

	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			return false;
		}

		//----------------------------------
		// INIT
		//----------------------------------
		var xml = xmlobj.xmlhandler.responseXML;
		var xml_result = false;
		var xml_message = '';
		
		//----------------------------------
		// Parse xml reponse
		//----------------------------------
		if( xml && xml.firstChild
		&& xml.childNodes.length == 1
		&& xml.firstChild.tagName == 'minichat'
		&& xml.childNodes[0].childNodes.length == 2 )
		{
			xml_result = xml.childNodes[0].childNodes[0].firstChild.nodeValue == "1" ? true : false;
			xml_message = xml.childNodes[0].childNodes[1].firstChild.nodeValue;
		}
		
		if( xml_result == true )
		{
			document.getElementById('minichat-form').elements['message'].value = '';
			
			minichat_messages_refresh();
			
			show_inline_messages_instant( 'mc_message_added' );
		}
		else
		{
			if( xml_message == 'no_perm' )
			{
				show_inline_messages_instant( 'no_permission' );
			}
			else if( xml_message == 'no_message' )
			{
				show_inline_messages_instant( 'mc_no_message' );
			}
			else
			{
				show_inline_messages_instant( 'error' );
			}
		}
	}
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	xmlobj.process( ipb_var_base_url + 'autocom=minichat&code=ajax&do=add-message', 'POST', xmlobj.format_for_post(fields) );
	
	return false;
}

function minichat_get_messages()
{
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			return;
		}

		//----------------------------------
		// INIT
		//----------------------------------
		var xml = xmlobj.xmlhandler.responseXML;
		var xml_result = false;
		var xml_message = '';
		
		//----------------------------------
		// Parse xml reponse
		//----------------------------------
		if( xml && xml.firstChild
		&& xml.childNodes.length == 1
		&& xml.firstChild.tagName == 'minichat'
		&& xml.childNodes[0].childNodes.length == 5 )
		{
			xml_result = xml.childNodes[0].childNodes[0].firstChild.nodeValue == "1" ? true : false;
			xml_message = xml.childNodes[0].childNodes[1].firstChild.nodeValue;
		}
		
		if( xml_result == true )
		{
			xml_last_id = xml.childNodes[0].childNodes[2].firstChild.nodeValue;
			xml_order = xml.childNodes[0].childNodes[3].firstChild.nodeValue;
			xml_html = xml.childNodes[0].childNodes[4].firstChild.nodeValue;
			
			document.getElementById('minichat-messages-box').innerHTML = xml_html;
			
			minichat_last_msg_id = xml_last_id;
		}
	}
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	xmlobj.process( ipb_var_base_url + 'autocom=minichat&code=ajax&do=get-messages', 'GET' );

	return false;
}

function minichat_delete_message( form )
{
	//----------------------------------
	// Init
	//----------------------------------
	var fields = new Array();
	
	//----------------------------------
	// Using fancy js?
	//----------------------------------
	if ( ! use_enhanced_js )
	{
		return true;
	}
	
	//----------------------------------
	// MiniChat Archives?
	//----------------------------------
	if( typeof(window['minichat_last_msg_id']) == 'undefined' )
	{
		return true;
	}
	/*
	if ( form.elements['url'].value.indexOf('autocom=minichat') != -1
	|| form.elements['url'].value.indexOf('act=component&amp;module=minichat') != -1 )
	{
		return true;
	}
	*/
	
	//----------------------------------
	// Fields
	//----------------------------------
	fields['id'] = form.elements['id'].value;
	fields['name'] = form.elements['name'] ? form.elements['name'].value : '';
	fields['st'] = form.elements['st'] ? form.elements['st'].value : '';
	
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			return false;
		}
		
		//----------------------------------
		// INIT
		//----------------------------------
		var xml = xmlobj.xmlhandler.responseXML;
		var xml_result = false;
		var xml_message = '';
		
		//----------------------------------
		// Parse xml reponse
		//----------------------------------
		if( xml && xml.firstChild
		&& xml.childNodes.length == 1
		&& xml.firstChild.tagName == 'minichat'
		&& xml.childNodes[0].childNodes.length == 2 )
		{
			xml_result = xml.childNodes[0].childNodes[0].firstChild.nodeValue == "1" ? true : false;
			xml_message = xml.childNodes[0].childNodes[1].firstChild.nodeValue;
		}
		
		if( xml_result == true )
		{
			minichat_get_messages();
			
			show_inline_messages_instant( 'mc_message_deleted' );
		}
		else
		{
			if( xml_message == 'no_perm' )
			{
				show_inline_messages_instant( 'no_permission' );
			}
			else
			{
				show_inline_messages_instant( 'error' );
			}
		}
	}
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	xmlobj.process( ipb_var_base_url + 'autocom=minichat&code=ajax&do=delete-message', 'POST', xmlobj.format_for_post(fields) );
	
	return false;
}

function minichat_show_smileys()
{
	if( use_enhanced_js )
	{
		if( document.getElementById('minichat-smileys-box').innerHTML == '' )
		{
			do_request_function = function()
			{
				//----------------------------------
				// Ignore unless we're ready to go
				//----------------------------------
				if ( ! xmlobj.readystate_ready_and_ok() )
				{
					return;
				}
				
				//----------------------------------
				// INIT
				//----------------------------------
				var xml = xmlobj.xmlhandler.responseXML;
				var xml_result = false;
				var xml_message = '';
				
				//----------------------------------
				// Parse xml reponse
				//----------------------------------
				if( xml && xml.firstChild
				&& xml.childNodes.length == 1
				&& xml.firstChild.tagName == 'minichat'
				&& xml.childNodes[0].childNodes.length == 3 )
				{
					xml_result = xml.childNodes[0].childNodes[0].firstChild.nodeValue == "1" ? true : false;
					xml_message = xml.childNodes[0].childNodes[1].firstChild.nodeValue;
				}
				
				if( xml_result == true )
				{
					xml_html = xml.childNodes[0].childNodes[2].firstChild.nodeValue;
					document.getElementById('minichat-smileys-box').innerHTML = xml_html;
				}
			}
			
			xmlobj = new ajax_request();
			xmlobj.onreadystatechange( do_request_function );
			xmlobj.process( ipb_var_base_url + 'autocom=minichat&code=ajax&do=emoticons', 'GET' );
		}
		
		if( document.getElementById('minichat-smileys-box').style.display == 'none' )
		{
			//document.getElementById('minichat-smileys-wrap').className = 'borderwrap';
			document.getElementById('minichat-smileys-box').style.display = '';
			//document.getElementById('minichat-smileys-box').innerHTML = 'hello';
		}
		else
		{
			document.getElementById('minichat-smileys-box').style.display = 'none';
		}
	}
	else
	{
		window.open( ipb_var_base_url + "autocom=minichat&code=emoticons","Legends","width=250,height=500,resizable=yes,scrollbars=yes" );
	}
}

function minichat_add_smilie(code, id, ajax)
{
	if( ajax == 1 )
	{
		var form = document.getElementById('minichat-form');
	}
	else
	{
		var form = window.opener.document.getElementById('minichat-form');
	}
	
	if( form.elements['message'].value == minichat_default_message )
	{
		form.elements['message'].value = '';
	}
	
	form.elements['message'].value += ' ' + code + ' ';
}

function minichat_show_bbcodes()
{
	window.open( ipb_var_base_url + "autocom=minichat&code=bbcodes","Legends","width=700,height=500,resizable=yes,scrollbars=yes" );
}
