function storeCaret(id_textarea)
	{ 
	champ = document.getElementById(id_textarea);
		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 (champ.curseur)
		{
		champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
		}
		else if (champ.selectionStart != 'undefined' && champ.selectionEnd != 'undefined')
		{
		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;
	}

	function parse(id_textarea, id_prev)
	{
	var champ = document.getElementById(id_textarea);
	var div_prev = document.getElementById(id_prev);
	var contenu = champ.value;
	
		if (document.body.scrollTop)
		var scroll = document.body.scrollTop;
		else
		var scroll = window.pageYOffset;
	
		if (champ.selectionStart != 'undefined' && !champ.curseur)
		{
		var pos = champ.selectionStart;
		contenu = remplace(remplace(contenu.substring(0, pos),'>','&gt;'),'<','&lt;') + '<a href="#" name="prev_ancre_suivi" id="prev_ancre_suivi"></a>' + remplace(remplace(contenu.substring(pos),'>','&gt;'),'<','&lt;');
		}
		else
		contenu = remplace(remplace(contenu,'>','&gt;'),'<','&lt;');
	
	contenu = remplace(contenu, "\n", '<br />');
	
	contenu = contenu.replace(/&lt;code=(html|php|sql|c|c\+\+|javascript|actionscript|java|vb)&gt;([\s\S]+?)&lt;\/code&gt;/g, '<span class="code">Code</span><div class="code2 $1">$2</div>');
	contenu = contenu.replace(/&lt;gras&gt;([\s\S]+?)&lt;\/gras&gt;/g, '<strong>$1</strong>');
	contenu = contenu.replace(/&lt;(souligne|italique)&gt;([\s\S]+?)&lt;\/\1&gt;/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/&lt;barre&gt;([\s\S]+?)&lt;\/barre&gt;/g, '<strike>$1</strike>');
	contenu = contenu.replace(/&lt;couleur=(orange|noir|marron|vertf|olive|marine|violet|bleugris|argent|gris|rouge|vertc|jaune|bleu|rose|turquoise|blanc)&gt;([\s\S]+?)&lt;\/couleur&gt;/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/&lt;police=(arial|times|courrier|impact|geneva|optima)&gt;([\s\S]+?)&lt;\/police&gt;/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/&lt;taille=(ttpetit|tpetit|petit|gros|tgros|ttgros)&gt;([\s\S]+?)&lt;\/taille&gt;/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/&lt;image&gt;(.+?)&lt;\/image&gt;/g, '<img src="$1" alt="Image" />');
	contenu = contenu.replace(/&lt;position=(gauche|droite|centrebb|justifie)&gt;([\s\S]+?)&lt;\/position&gt;/g, '<div class="$1">$2</div>');
	contenu = contenu.replace(/&lt;lien&gt;(.+?)&lt;\/lien&gt;/g, '<a href="$1">$1</a>');
	contenu = contenu.replace(/&lt;lien=(.+?)&gt;(.+?)&lt;\/lien&gt;/g, '<a href="$1">$2</a>');
	contenu = contenu.replace(/&lt;email&gt;(.+?)&lt;\/email&gt;/g, '<a href="mailto:$1">$1</a>');
	contenu = contenu.replace(/&lt;email=(.+?)&gt;(.+?)&lt;\/email&gt;/g, '<a href="mailto:$1">$2</a>');
	contenu = contenu.replace(/&lt;(information|attention|erreur|question)&gt;([\s\S]+?)&lt;\/\1&gt;/g, '<div class="rmq $1">$2</div>');
	contenu = contenu.replace(/&lt;liste&gt;\s*(<br \/>)?\s*([\s\S]+?)\s*(<br \/>)?\s*&lt;\/liste&gt;/g, '<ul>$2</ul>');
	contenu = contenu.replace(/&lt;puce&gt;([\s\S]+?)&lt;\/puce&gt;\s*(<br \/>)?\s*/g, '<li>$1</li>');
	contenu = contenu.replace(/&lt;flash=(\d+)\*(\d+)&gt;(.+?)&lt;\/flash&gt;/g, '<object  type="application/x-shockwave-flash" data="$3" width="$1" height="$2"><param name="movie" value="$3" /><param name="quality" value="high" />Animation flash</object>');

	var i = 0;
		while (contenu.indexOf("&lt;citation") != -1 && contenu.indexOf("&lt;/citation&gt;") != -1 && (contenu.indexOf("&lt;citation") < contenu.indexOf("&lt;/citation&gt;")) && i < 30)
		{
		contenu = contenu.replace(/&lt;citation=(.*?)&gt;([\s\S]+?)&lt;\/citation&gt;/g, '<span class="citation">Citation : $1</span><div class="citation2">$2</div>');
		i++;
		}
	
	contenu = remplace(contenu, ':)', '<img src="/images/smilies/smile.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':D', '<img src="/images/smilies/heureux.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ';)', '<img src="/images/smilies/clin.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':p', '<img src="/images/smilies/langue.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':lol:', '<img src="/images/smilies/rire.gif" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':euh:', '<img src="/images/smilies/unsure.gif" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':(', '<img src="/images/smilies/triste.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':o', '<img src="/images/smilies/huh.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':colere:', '<img src="/images/smilies/mechant.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, 'o_O', '<img src="/images/smilies/blink.gif" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, '^^', '<img src="/images/smilies/hihi.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':-*', '<img src="/images/smilies/siffle.png" alt="Smiley" class="smilies" />');
	contenu = remplace(contenu, ':worthy:', '<img src="/images/smilies/worthy.gif" alt="Smiley" class="smilies" />');
	
	div_prev.innerHTML = contenu;
		if (document.getElementById('prev_ancre_suivi'))
		document.getElementById('prev_ancre_suivi').focus();
	document.getElementById(id_textarea).focus();
	}
	
	function remplace(data, search, replace)
	{
	var temp = data;
	var longueur = search.length;
		while (temp.indexOf(search) > -1)
		{
		pos= temp.indexOf(search);
		temp = (temp.substring(0, pos) + replace + temp.substring((pos + longueur), temp.length));
		}
	return temp;
	}
	
	function add_bal(nom, id_liste, id_textarea, id_prev)
	{
	bal = document.getElementById(id_liste).value;
	balise('<'+nom+'='+bal+'>','</'+nom+'>', id_textarea);parse(id_textarea, id_prev);
	document.getElementById(id_liste).options[0].selected = true;
	}
	
	function add_bal2(nom, id_textarea, id_prev)
	{
	var texte = '';
		if (nom == 'citation')
		texte = 'Veuillez renseigner l\'auteur de la citation';
		else if (nom == 'lien')
		texte = 'Veuillez indiquer le lien';
		else if (nom == 'email')
		texte = 'Veuillez indiquer l\'email';
	bal = prompt(texte);
		if (!bal && nom == 'citation')
		bal = 'Pas de titre';
		if (bal)
		balise('<'+nom+'='+bal+'>','</'+nom+'>', id_textarea);parse(id_textarea, id_prev);
	document.getElementById(nom).options[0].selected = true;
	}
	
	function add_liste(id_textarea, id_prev)
	{
	var texte = '';
		while (tmp = prompt('Saisir le contenu d\'une puce (si vous voulez arreter ici, cliquez sur annuler)'))
		texte += '<puce>'+tmp+'</puce>'+"\n";
	balise('<liste>'+"\n"+texte,'</liste>', id_textarea);parse(id_textarea, id_prev);
	}
	function ouvrir_page(page,nom,x,y)
	{
		window.open(page,nom,'toolbar=false,personalbar=false,titlebar=false,location=false,directories=false,width='+x+',height='+y+',scrollbars=yes,resizable=yes');
	}
