/* Sur cette page, on créé les fonctions en JS qui servent pour diverses optionnalités qu'à le visiteur, en écrivant un message... */

 // Variables qui nous serviront plus loin, dans nos fonctions....
var ptag=String.fromCharCode(5,6,7);


 // Fonction qui est appelée lorsque le gars tape un message.... elle affiche, en direct, le message tapé par le gars , comme ca va s'afficher.... LIVRE D'OR -------------
function previsualisation_livre_or(e)
{
	// On chope juste les trucs dont on a besoin....
	var div_affiche_apercu = document.getElementById("apercu"); // Le div dans lequel on affichera le message
	var contenu_message = document.formulaire_bbcode.message; // Et le message
	var pseudo_cur = document.formulaire_bbcode.pseudo_cur.value; // Le pseudo
	var smiley_appreciation = document.formulaire_bbcode.smiley_appreciation; // Le smiley coché
	
	
	var smiley_appre = "<img src=\"/images/puce_42.gif\" width=\"10\" height=\"10\" alt=\"\" />"; // Valeur par défaut
	for(i=0;i<smiley_appreciation.length;i++)
	{
		if(smiley_appreciation[i].checked == true && smiley_appreciation[i].value != "") // Si on a un truc coché
		{
			smiley_appre = bbcode(smiley_appreciation[i].value);
		}
	}
	
	/* Traitement court... */
	if(e != '') // Au tout début (lors de bodyonload)
	{
		e = (!e) ? window.event : e; // Si e est vide, on lui donne la valeur de la dernière touche frappée par le gars
		code = (e.charCode)? e.charCode : ((e.keyCode)? e.keyCode : ((e.which)? e.which : 0)); // On affecte son code à la touche frappée
		if(e.type == "keyup")
		{
			if(code == 226) // Si la touche appuyée est '<', on stoppe la fonction en cours, en supprimant tous les '<' présents dans le message du gars...
			{
				pseudo_cur = pseudo_cur.replace('<', '');
				pseudo_cur = pseudo_cur.replace('&lt;', '');
				contenu_message.value = contenu_message.value.replace('<', '');
				contenu_message.value = contenu_message.value.replace('&lt;', '');
				return;
			}
			 // Sinon on continue
		}
	}
	
	// La date
	var today = new Date;
	var jour_cur = today.getDate();
	var mois_cur = today.getMonth();
	var annee_cur = today.getFullYear();
	var heure_cur = today.getHours();
	var minute_cur = today.getMinutes();
	var seconde_cur = today.getSeconds();
	var date_cur = jour_cur+"/"+mois_cur+"/"+annee_cur+" à "+heure_cur+":"+minute_cur+":"+seconde_cur;
	
	// On affiche ici le message... qui est très fidèle à comment il sera affiché en vrai....
	div_affiche_apercu.innerHTML = smiley_appre
									+" <span class=\"titrecommentaire\">"+pseudo_cur+", le "+date_cur+"</span>"
									+"<div class=\"commentaire\">"
									+bbcode(contenu_message.value,1)
									+"</div>";
	
}

 // COMMENTAIRES
function previsualisation_commentaire(e)
{
	// On chope juste les trucs dont on a besoin....
	var div_affiche_apercu = document.getElementById("apercu"); // Le div dans lequel on affichera le message
	var contenu_message = document.formulaire_bbcode.message; // Et le message
	var pseudo_cur = document.formulaire_bbcode.pseudo_cur.value; // Le pseudo
	
	/* Traitement court... */
	if(e != '') // Au tout début (lors de bodyonload)
	{
		e = (!e) ? window.event : e; // Si e est vide, on lui donne la valeur de la dernière touche frappée par le gars
		code = (e.charCode)? e.charCode : ((e.keyCode)? e.keyCode : ((e.which)? e.which : 0)); // On affecte son code à la touche frappée
		if(e.type == "keyup")
		{
			if(code == 226) // Si la touche appuyée est '<', on stoppe la fonction en cours, en supprimant tous les '<' présents dans le message du gars...
			{
				pseudo_cur = pseudo_cur.replace('<', '');
				pseudo_cur = pseudo_cur.replace('&lt;', '');
				contenu_message.value = contenu_message.value.replace('<', '');
				contenu_message.value = contenu_message.value.replace('&lt;', '');
				return;
			}
			 // Sinon on continue
		}
	}
	
	// La date
	var today = new Date;
	var jour_cur = today.getDate();
	var mois_cur = today.getMonth();
	var annee_cur = today.getFullYear();
	var heure_cur = today.getHours();
	var minute_cur = today.getMinutes();
	var seconde_cur = today.getSeconds();
	var date_cur = jour_cur+"/"+mois_cur+"/"+annee_cur+" à "+heure_cur+":"+minute_cur+":"+seconde_cur;
	
	// On affiche ici le message... qui est très fidèle à comment il sera affiché en vrai....
	div_affiche_apercu.innerHTML = " <table width=\"100%\"><tr><td colspan=\"2\" class=\"titrecommentaire\">Le "+date_cur+"</td></tr>"
									+"<tr><td width=\"20%\">"+pseudo_cur+"<br/>avatar</td><td class=\"commentaire\" width=\"80%\">"
									+bbcode(contenu_message.value,1)
									+"</td></tr></table>";
	
}

 // MAIL AUX ADMINS
function previsualisation_mail_admin()
{
	var div_affiche_apercu = document.getElementById("apercu"); // Le div dans lequel on affichera le message
	var contenu_message = document.formulaire_bbcode.message; // Le message
	var email_exp = document.formulaire_bbcode.email_exp.value; // L'e-mail
	var objet_mail = document.formulaire_bbcode.objet_mail.value; // L'objet du Mail
	
	
	// On affiche ici le message... qui est très fidèle à comment il sera affiché en vrai.... (donc modifier ici si on le fait aussi du côté du 'vrai' affichage ;))
	div_affiche_apercu.innerHTML = "Expéditeur : \""+email_exp+"\""
									+"<br/>Objet : \""+objet_mail+"\""
									+"<p>"
									+bbcode(contenu_message.value,1)
									+"</p>";
	
}

 // MAIL AUX MEMBRES
function previsualisation_mail()
{
	var div_affiche_apercu = document.getElementById("apercu"); // Le div dans lequel on affichera le message
	var contenu_message = document.formulaire_bbcode.message; // Le message
	var email_exp = document.formulaire_bbcode.email_exp.value; // L'e-mail
	var IP_exp = document.formulaire_bbcode.IP_exp.value; // L'IP
	var objet_mail = document.formulaire_bbcode.objet_mail.value; // L'objet du Mail
	
	
	// On affiche ici le message... qui est très fidèle à comment il sera affiché en vrai.... (donc modifier ici si on le fait aussi du côté du 'vrai' affichage ;))
	div_affiche_apercu.innerHTML = "Expéditeur : \""+email_exp+"\"(IP utilisée : "+IP_exp+")"
									+"<br/>Objet : \""+objet_mail+"\""
									+"<p>"
									+bbcode(contenu_message.value,1)
									+"</p>";
	
}

 // La fonction du bbcode...
function bbcode(txt, secure)
{
	if(secure == 1) // Si on veut sécuriser un peu ca...
	{
		txt = txt.replace('<', ''); // On supprime tous les '<' avant de faire quoi que ce soit
		txt = txt.replace('&lt;', '');
	}
	
	txt = nl2khol(txt); // Cf tout en bas, la fct...
	
	// On "importe" les données du fichier...
	 // SMILEYS
	if(smiley_bbcode_rac && smiley_bbcode_img) // Si on a bien les tableaux...
	{
		for(i=1;i<smiley_bbcode_rac.length;i++) // Tant qu'on a quelque chose dans le tableau...
		{
			do // Tant qu'il existe un smiley comme ca, on le modifie...
			{
				txt = txt.replace(smiley_bbcode_rac[i], "<img src=\"/images/smileys/"+smiley_bbcode_img[i]+"\" />");
			}
			while(txt.indexOf(smiley_bbcode_rac[i]) != -1)
		}
	}
	 // BALISES
	if(bbcode_rac && bbcode_balise)
	{
		for(i=1;i<bbcode_rac.length;i++)
		{
			rac = new String(bbcode_rac[i]).split('(.+)');
			rac_regex = new RegExp(bbcode_rac[i], "gi"); // La regex entière correspondant à la balise en cours...
			rac_d = new RegExp(rac[0], "gi"); // Le début du raccourci
			rac_f = new RegExp("("+rac[1]+")", "gi"); // La fin du raccourci
			
			// Pour la balise citation (imbrication des balises citation...)
			if(i == 7) // Si on est sur "citation" dans i
			{
				for(j=0;j<10;j++)
				{
					txt = deblaie(rac_f, txt);
					txt = remplace_tag(rac_regex, bbcode_balise[i], txt);
					txt = remblaie(txt);
				}
			}
			else
			{
				txt = deblaie(rac_f, txt); // On met un \n à la fin de la balise
				txt = remplace_tag(rac_regex, bbcode_balise[i], txt); // On remplace la regex de la balise par la(les) balise(s) correspondante(s) dans txt
				txt = remblaie(txt); // On l'enlève
			}
		}
	}
	
	 // Cf plus bas....
	txt = remblaie(txt);
	txt = unkhol(txt);
	txt = nl2br(txt);
	
	return txt;
}

 // La fonction qui met les balises autour de ce qu'on a selectionné...
function bbcode_b(bbdebut, bbfin)
{
	var input = document.formulaire_bbcode.message;
	input.focus();
	/* pour IE (toujous un cas à part lui ;) )*/
	if(typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = bbdebut + insText + bbfin;
		range = document.selection.createRange();
		if (insText.length == 0)
		{
			range.move('character', -bbfin.length);
		}
		else
		{
			range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
		}
		range.select();
	}
	/* pour les navigateurs plus récents que IE comme Firefox... */
	else if(typeof input.selectionStart != 'undefined')
	{
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
		var pos;
		if (insText.length == 0)
		{
			pos = start + bbdebut.length;
		}
		else
		{
			pos = start + bbdebut.length + insText.length + bbfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* pour les autres navigateurs comme Netscape... */
	else
	{
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos))
		{
			pos = prompt("insertion (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length)
		{
			pos = input.value.length;
		}
		var insText = prompt("Veuillez taper le texte");
		input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
	}
}

 // Insérer les Smileys dans le textarea du gars...
function insert_smileys(smiley_rac)
{
	var input = document.formulaire_bbcode.message;
	input.value += ''+smiley_rac+'';
	input.focus();
	
}

/* --- Fonctions de remplacement --- */
 // On met un saut de ligne (\n) juste après la fin de la balise dans laquelle on va travailler...
function deblaie(reg,t)
{
	m = new String(t);
	return m.replace(reg, "$1\n");
}
 // On fait l'inverse => on enlève le saut de ligne à la fin de la balise
function remblaie(t)
{
	m = new String(t);
	return m.replace(/\n/g,"");
}
 // On équivalent de la fonction PHP
function remplace_tag(reg,rep,t) // preg_replace()
{
	m = new String(t);
	return m.replace(reg,rep);
}
 // On remplace tous les sauts de ligne du champ de texte par l'entitié XHMTL correspondante (<br/>)
function nl2br(t)
{
	m = new String(t);
	return m.replace(/\n/g, "<br/>");
}
 // On remplace les \n par ptag
function nl2khol(t)
{
	m = new String(t);
	return m.replace(/\n/g,ptag);
}
 // On fait l'inverse...
function unkhol(t)
{
	m = new String(t);
	return m.replace(new RegExp(ptag,'g'), "\n");
}

/* Pour déterminer les navigateurs... *//*
function detnav() {
  var p,nav,ver; // variables locales
  result= new Array();
   with(navigator.userAgent){
     switch(navigator.appName){
      case "Microsoft Internet Explorer" :
        nav='IE'; p=indexOf("MSIE"); ver= parseFloat(substring(p+5,p+9));
        if (indexOf("Opera")>-1){nav='Opera'; p=indexOf("Opera"); ver= parseFloat(substring(p+6,p+10));}
        break;
      case "Netscape" :
        nav='Netscape'; ver= parseFloat(substring(8,12));
        if (indexOf("Opera")>-1){nav='Opera'; p=indexOf("Opera"); ver= parseFloat(substring(p+6,p+10));}
        if (indexOf("Gecko")>-1){nav='Mozilla'; p=indexOf("rv:"); ver= parseFloat(substring(p+3,p+7));}
        if (indexOf("Netscape6")>-1){nav='Netscape6'; p=indexOf("Netscape6"); ver= parseFloat(substring(p+10,p+14));}
        if (indexOf("Firefox")>-1){nav='Firefox'; p=indexOf("Firefox"); ver= parseFloat(substring(p+8,p+12));}
        break;
      case "Opera" :
        nav='Opera'; p=indexOf("/"); ver= parseFloat(substring(p+1,p+5));
        break;
      default :
        nav='inconnu'; ver='';
     }
  }
  result[0]=nav; result[1]=ver;
  return result;
}
var detnav = detnav();
var Navigateur = detnav[0];
var VersionNavigateur = detnav[1];*/