function storeCaret(id_textarea)
{ 
	champ = document.getElementById(id_textarea);//FireFox
	//IE
	if (champ.createTextRange)
		champ.curseur = document.selection.createRange().duplicate();
} 

function balise(balise_debut, balise_fin, id_textarea)
{
	var champ = document.getElementById(id_textarea);
	var scroll = champ.scrollTop;

	if(balise_fin == '')
		balise_debut = ' ' + balise_debut + ' ';

	if (champ.curseur)
	{
		champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
	}
	else if (champ.selectionStart >= 0 && champ.selectionEnd >= 0)
	{
		var debut = champ.value.substring(0, champ.selectionStart);
		var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
		var fin = champ.value.substring(champ.selectionEnd);
		champ.value = debut + balise_debut + entre + balise_fin + fin;
		champ.focus();
		champ.setSelectionRange(debut.length + balise_debut.length, champ.value.length - fin.length - balise_fin.length);
	}
	else
	{
		champ.value  += balise_debut + balise_fin;
		champ.focus();
	}
	champ.scrollTop = scroll;
} //Voici les seules fonctions prise à karamilo, que je salue d'ailleurs  http://www.siteduzero.com/Templates/js/fr/form.js (double clique sur notepad ++ pour lancer la page); j'aurait pu créer le mien, mais j'aurais fait exactement pareil :P 

function show(idBloc, visibilite)
{
	//valeur de visibilite : true = visibility:hidden/visible ; false = display:none/bloc
	bloc = document.getElementById(idBloc);
	if (visibilite)
	{
		if (bloc.style.visibility == 'hidden')
		{
			bloc.style.visibility = 'visible'
		}
		else
		{
			bloc.style.visibility = 'hidden'
		}
	}
	else
	{
		if (bloc.style.display == 'bloc')
		{
			bloc.style.display = 'none'
		}
		else
		{
			bloc.style.display = 'bloc'
		}
	}
}
