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;')  + 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="gras">Code : $1</span><div class="cadre">$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="gras">Citation : $1</span><div class="cadre">$2</div>');
	i++;
	}

contenu = remplace(contenu, ':)', '<img src="public/skins/default/images/smilies/smile.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':D', '<img src="public/skins/default/images/smilies/heureux.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ';)', '<img src="public/skins/default/images/smilies/clin.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':p', '<img src="public/skins/default/images/smilies/langue.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':lol:', '<img src="public/skins/default/images/smilies/rire.gif" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':euh:', '<img src="public/skins/default/images/smilies/unsure.gif" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':(', '<img src="public/skins/default/images/smilies/triste.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':o', '<img src="public/skins/default/images/smilies/huh.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':colere:', '<img src="public/skins/default/images/smilies/mechant.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, 'o_O', '<img src="public/skins/default/images/smilies/blink.gif" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, '^^', '<img src="public/skins/default/images/smilies/hihi.png" alt="Smiley" class="smilies" />');
contenu = remplace(contenu, ':-*', '<img src="public/skins/default/images/smilies/siffle.png" 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');
}
