/////////////////////////////////////////
// validation du message à ameliorer.
// integration smiley
//////////////////////////////////////////
/*INITIALISATION DES VARIABLES*/

var chatbox_var = {
	nb_messages : 30,
	id_dernier_msg : 'p0',
	temps_rafraichissement : 4096,
	temps_ini_rafraichissement : 4096,
	temps_der_msg : 0
};	



/*INITIALISATION DE LA CHATBOX*/

function chatbox_initialisation(){
	chatbox_rafraichissement();		
}

/*ENVOI DU MESSAGE*/
function chatbox_envoi_msg2(){
	alert('coucou');
	return false
}
function chatbox_envoi_msg() {

	if ( $('chatbox_msg').value != '' && chatbox_anti_flood() == 0 && containLongString($('chatbox_msg').value) == 0){	

	chatbox_msg = 'chatbox_msg='+ encodeURIComponent($('chatbox_msg').value);
	
	var url = 'modules/chatbox/ajax_envoi_msg.php';
	var parametres = chatbox_msg;
	//alert (chatbox_msg);
	
	var ajax = new Ajax.Request(
		url,        // URL
		{                // options
			method:'post',
			parameters: parametres,
			onComplete: chatbox_update_dernier_msg
		});	
		
		//On vide le contenu du formulaire.
		$('chatbox_msg').value=''		
	}
	return false
}

function chatbox_anti_flood(){

	chatbox_temps_actuel = new Date();
	
	if (chatbox_temps_actuel < chatbox_var.temps_der_msg + 5000){
		alert ('Flood détecté. Merci de faire une pause entre chaque message.');
		var chatbox_flood = true;
	}
	else{
		chatbox_var.temps_der_msg = chatbox_temps_actuel.getTime();
		var chatbox_flood = false;
	}
	
	return chatbox_flood;
}
/* RAFRAICHISSEMENT DE LA CHATBOX*/

function chatbox_rafraichissement(){

	chatbox_update_dernier_msg();
	setTimeout("chatbox_rafraichissement()",chatbox_var.temps_rafraichissement); 

}

function chatbox_tps_rafraichissement(multiplicateur){
	if (multiplicateur == 0){
		chatbox_var.temps_rafraichissement = chatbox_var.temps_ini_rafraichissement;
	}
	else if (chatbox_var.temps_rafraichissement < 30000){
		chatbox_var.temps_rafraichissement = chatbox_var.temps_rafraichissement * multiplicateur;
	}	
}

/*RECUPERATION ID DERNIER MSG*/

function chatbox_id_dernier_msg(){
	chatbox_var.id_dernier_msg = $('chatbox_messages').lastChild.id;
}

/*UPDATE DES DERNIERS MESSAGES*/
function chatbox_update_dernier_msg(){

	var url = 'modules/chatbox/xml_chatbox.php';
	var parametres = 'id_dernier_msg=' + chatbox_var.id_dernier_msg +'&nb_messages='+ chatbox_var.nb_messages +'&mep=1';

	var ajax = new Ajax.Request(
		url,        // URL
		{                // options
			method:'get',
			parameters: parametres,
			onComplete: chatbox_afficher_msg
		});
		
	//alert('requete');	

}

/*AFFICHAGE DES MESSAGES*/

function chatbox_afficher_msg(requete){

	postList = requete.responseXML.getElementsByTagName('message');	
	
	if (postList.length == 0){
		chatbox_tps_rafraichissement(1.5);
	}
	else{
	
		for (var i = postList.length - 1; i > -1; i--){	

			/*  Create elements */
			li= document.createElement('li');
			q= document.createElement('q');
			cite= document.createElement('cite');
			/*  Get infos post */
			postId = postList[i].getAttribute('id');
			postDate = postList[i].getElementsByTagName('date')[0].firstChild.nodeValue;
			postPseudo = postList[i].getElementsByTagName('pseudo')[0].firstChild.nodeValue;
			postMessage = postList[i].getElementsByTagName('contenu')[0].firstChild.nodeValue;
			
			
			/*  Create texts node */
			message = document.createTextNode(postMessage);
			pseudo= document.createTextNode(postPseudo+': ');
			
			/* Creation des puce*/
			$('chatbox_messages').appendChild(li);
			
			/* Set infos post */
			li.setAttribute('id', 'p'+postId);
			li.appendChild(cite);
			cite.appendChild(pseudo);
			cite.setAttribute('title', postDate);
			li.appendChild(q);
			q.appendChild(message);
			
			messagePost = $('p'+postId).getElementsByTagName('q')[0].innerHTML;
			$('p'+postId).getElementsByTagName('q')[0].innerHTML = multiConverter(messagePost);
			
			new Effect.Highlight($('p'+postId))
			
			chatbox_sup_old_msg();
			
		}
		
		//On descend la scrollbar en bas de la tchat box
		$('chatbox_messages').scrollTop = 10000;

		chatbox_id_dernier_msg();
		chatbox_tps_rafraichissement(0);
	}
}	

function chatbox_sup_old_msg(){
	if($('chatbox_messages').childNodes.length > chatbox_var.nb_messages)
	{
		var noeud= $('chatbox_messages').firstChild;
		$('chatbox_messages').removeChild(noeud);

	}	
}

function multiConverter(res){
	var regex = /((http|https|ftp):\/\/[^ ]*)/gi;
	res = res.replace(regex, "<a href=\"$1\" target=\"_blank\">&laquo;lien&raquo;</a>");
	
	var regex = /([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+(\.[-a-z0-9]+)*\.[a-z]{2,6})/gi;
	res = res.replace(regex,"<a href=\"mailto:$1\">&laquo;email&raquo;</a>");
	
	
	return res;
}

function containLongString(string)
{
	
	/* Delete links and emails */
	var regex = /((http|https|ftp):\/\/[^ ]*)/gi;
	string = string.replace(regex, "");
	var regex = /([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+(\.[-a-z0-9]+)*\.[a-z]{2,6})/gi;
	string = string.replace(regex,"");
	
	/* Analyze every words */
	var strings = string.split(' ');
	var answer = false;

	for (var i=0; i < strings.length; i++)
	{
		if (strings[i].length > 18){
			answer = true;
			alert('Votre message contient un ou plusieurs mots d\'une longueur excessive.');
		}	
	}
	
	return answer;
}
