function balise(id_champ, balise1, balise2) {
	var champ = document.getElementById(id_champ);
	var scroll_position = champ.scrollTop;
	champ.focus();
	if(balise2 == '') { balise1 = ' '+balise1+' '; }
	if(typeof document.selection != 'undefined') {
		var range = document.selection.createRange();
		var chaine_select = range.text;
		range.text = balise1 + chaine_select + balise2;

		range = document.selection.createRange();
		if(chaine_select.length == 0) {
			range.move('character', -balise2.length);
		} else {
			range.moveStart('character', balise1.length + chaine_select.length + balise2.length);
		}
		range.select();
	} else if(typeof champ.selectionStart != 'undefined') {
		var curseur_debut = champ.selectionStart;
		var curseur_fin = champ.selectionEnd;
		var chaine_debut = champ.value.substr(0, curseur_debut);
		var chaine_fin = champ.value.substr(curseur_fin);
		var chaine_select = champ.value.substring(curseur_debut, curseur_fin);
		champ.value = chaine_debut + balise1 + chaine_select + balise2 + chaine_fin;

		var curseur_position;
		if (chaine_select.length == 0) {
			curseur_position = curseur_debut + balise1.length;
			champ.selectionStart = curseur_position;
	    	champ.selectionEnd = curseur_position;
		} else {
			champ.selectionStart = curseur_debut + balise1.length;
	    	champ.selectionEnd = curseur_debut + balise1.length + chaine_select.length;
		}
	} else {
		champ.value += balise1 + balise2;
	}
	champ.scrollTop = scroll_position;
	apercu(id_champ, id_champ+'_apercu');
}

function liste(id_input) {
	var list = '';
	while((puce = prompt('Entrez le contenu d\'une puce : (cliquez sur Annuler pour arręter)', '')) != null) {
		list += '<puce>'+puce+'</puce>\n';
	}
	balise(id_input, '<liste>\n'+list, '</liste>');
}

function citation(id_input) {
	var citation = prompt('Auteur de la citation :', '');
	if(citation != '' && citation != null) {
		balise(id_input, '<citation:'+citation+'>', '</citation>');
	} else {
		balise(id_input, '<citation>', '</citation>');
	}
}

function lien(id_input) {
	var url = prompt('Veuillez entrer l\'adresse de votre lien :', 'http://');
	if(url != '' && url != null && url != 'http://') {
		balise(id_input, '<lien:'+url+'>', '</lien>');
	}
}

function email(id_input) {
	var email = prompt('Veuillez entrer l\'adresse de l\'email :', '');
	if(email != '' && email != null) {
		balise(id_input, '<email:'+email+'>', '</email>');
	}
}

function image(id_input) {
	var img = prompt('Veuillez entrer l\'adresse de l\'image :', 'http://');
	if(img != '' && img != null && img != 'http://') {
		balise(id_input, '<image:'+img+'>', '');
	}
}

function smilies(id_input,img)
{
	balise(id_input, '' + img + '', '');
}


function balise_masque(id_groupe_balise, button_plus) {
	var groupe = document.getElementById(id_groupe_balise);
	var boutton = document.getElementById(button_plus);
	if(groupe.style.display == 'none') {
		groupe.style.display = 'inline';
		boutton.value = '-';
	} else {
		groupe.style.display = 'none';
		boutton.value = '+';
	}
}

function active_apercu(id_apercu) {
	if(document.getElementById(id_apercu).style.display == 'block' || document.getElementById(id_apercu).style.display == '') {
		document.getElementById(id_apercu).style.display = 'none';
	} else {
		document.getElementById(id_apercu).style.display = 'block';
	}
}



function apercu(id_input, id_apercu) {
	var input = document.getElementById(id_input);
	var input_contenu = input.value;

	input_contenu = input_contenu.replace(/</g, '&lt;');
	input_contenu = input_contenu.replace(/>/g, '&gt;');
	input_contenu = input_contenu.replace(/\n/g, '<br />');

	input_contenu = input_contenu.replace(/&lt;lien:((https?|ftp):\/\/\S+[a-zA-Z0-9]\/?)&gt;(.+?)&lt;\/lien&gt;/g, '<a href="$1">$3</a>');
	input_contenu = input_contenu.replace(/&lt;email:([a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-_.-]+\.[a-z]{2,4})&gt;(.+?)&lt;\/email&gt;/g, '<a href="mailto:$1">$2</a>');
	
	input_contenu = input_contenu.replace(/&lt;separation&gt;<br \/>/g, '&lt;separation&gt;');	
	input_contenu = input_contenu.replace(/&lt;separation&gt;/g, '<div class="separation"></div>');

	while(input_contenu.search(/&lt;html&gt;(.+?)&lt;\/html&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;/g, '<');
		input_contenu = input_contenu.replace(/&gt;/g, '>');
		input_contenu = input_contenu.replace(/<br \/>/g, '\n');
	}
	
	while(input_contenu.search(/&lt;police:(arial|times|courier|impact|verdana)&gt;(.+?)&lt;\/police&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;police:(arial|times|courier|impact|verdana)&gt;(.+?)&lt;\/police&gt;/g, '<span class="$1">$2</span>');
	}
	while(input_contenu.search(/&lt;taille:(minuscule|petit|moyenpetit|moyengrand|grand|enorme)&gt;(.+?)&lt;\/taille&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;taille:(minuscule|petit|moyenpetit|moyengrand|grand|enorme)&gt;(.+?)&lt;\/taille&gt;/g, '<span class="$1">$2</span>');
	}
	input_contenu = input_contenu.replace(/&lt;\/aligner&gt;<br \/>/g, '&lt;\/aligner&gt;');
	while(input_contenu.search(/&lt;aligner:(gauche|droite|centre|justifie)&gt;(.+?)&lt;\/aligner&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;aligner:(gauche|droite|centre|justifie)&gt;(.+?)&lt;\/aligner&gt;/g, '<div class="$1">$2</div>');
	}
	input_contenu = input_contenu.replace(/&lt;\/flottant&gt;<br \/>/g, '&lt;\/flottant&gt;');
	while(input_contenu.search(/&lt;flottant:(fgauche|fdroite)&gt;(.+?)&lt;\/flottant&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;flottant:(fgauche|fdroite)&gt;(.+?)&lt;\/flottant&gt;/g, '<div class="$1">$2</div>');
	}
	while(input_contenu.search(/&lt;style:(gras|italique|souligne|barre|suligne|surligne|encadre)&gt;(.+?)&lt;\/style&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;style:(gras|italique|souligne|barre|suligne|surligne|encadre)&gt;(.+?)&lt;\/style&gt;/g, '<span class="$1">$2</span>');
	}
	while(input_contenu.search(/&lt;couleur:(#[a-zA-Z0-9]+)&gt;(.+?)&lt;\/couleur&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;couleur:(#[a-zA-Z0-9]+)&gt;(.+?)&lt;\/couleur&gt;/g, '<span style="color:$1">$2</span>');
	}
	while(input_contenu.search(/&lt;titre:(1|2)&gt;(.+?)&lt;\/titre&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;titre:(1|2)&gt;(.+?)&lt;\/titre&gt;/g, '<span class="titre$1">$2</span>');
	}

	input_contenu = input_contenu.replace(/&lt;liste&gt;<br \/>/g, '&lt;liste&gt;');
	input_contenu = input_contenu.replace(/&lt;\/liste&gt;<br \/>/g, '&lt;/liste&gt;');
	input_contenu = input_contenu.replace(/&lt;\/puce&gt;<br \/>/g, '&lt;/puce&gt;');
	while(input_contenu.search(/&lt;liste&gt;(.+?)&lt;\/liste&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;liste&gt;(.+?)&lt;\/liste&gt;/g, '<ul>$1</ul>');
	}
	while(input_contenu.search(/&lt;puce&gt;(.+?)&lt;\/puce&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;puce&gt;(.+?)&lt;\/puce&gt;/g, '<li class="puce">$1</li>');
	}

	input_contenu = input_contenu.replace(/&lt;\/citation&gt;<br \/>/g, '&lt;/citation&gt;');
	while(input_contenu.search(/&lt;citation:(.+?)&gt;(.+?)&lt;\/citation&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;citation:(.+?)&gt;(.+?)&lt;\/citation&gt;/g, '<div class="citation_auteur">Citation : $1</div><div class="citation">$2</div>');
	}
	while(input_contenu.search(/&lt;citation&gt;(.+?)&lt;\/citation&gt;/g) != -1) {
		input_contenu = input_contenu.replace(/&lt;citation&gt;(.+?)&lt;\/citation&gt;/g, '<div class="citation_auteur">Citation : Auteur inconnu</div><div class="citation">$1</div>');
	}

	input_contenu = input_contenu.replace(/:D/g, ' <img src="scode/smilies/heureux.png" alt="heureux" /> ');
	input_contenu = input_contenu.replace(/:\)/g, ' <img src="scode/smilies/smile.png" alt="smile" /> ');
	input_contenu = input_contenu.replace(/;\)/g, ' <img src="scode/smilies/clin.png" alt="clin d oeil" /> ');
	input_contenu = input_contenu.replace(/\^\^/g, ' <img src="scode/smilies/hihi.png" alt="hihi" /> ');
	input_contenu = input_contenu.replace(/\:lol\:/g, ' <img src="scode/smilies/rire.gif" alt="rire" /> ');
	input_contenu = input_contenu.replace(/o_O/g, ' <img src="scode/smilies/blink.gif" alt="blink" /> ');
	input_contenu = input_contenu.replace(/\:o/g, ' <img src="scode/smilies/huh.png" alt="huh" /> ');
	input_contenu = input_contenu.replace(/\:p/g, ' <img src="scode/smilies/langue.png" alt="langue" /> ');
	input_contenu = input_contenu.replace(/\:-°/g, ' <img src="scode/smilies/siffle.png" alt="siffle" /> ');
	input_contenu = input_contenu.replace(/\:\(/g, ' <img src="scode/smilies/triste.png" alt="triste" /> ');
	input_contenu = input_contenu.replace(/\:euh\:/g, ' <img src="scode/smilies/unsure.gif" alt="unsure" /> ');
	input_contenu = input_contenu.replace(/\:colere\:/g, ' <img src="scode/smilies/mechant.png" alt="mechant" /> ');
	input_contenu = input_contenu.replace(/\:furieu\:/g, ' <img src="scode/smilies/angry.gif" alt="angry" /> ');
	
	input_contenu = input_contenu.replace(/&lt;image:((https?|ftp):\/\/\S+[a-zA-Z0-9]\/?)&gt;/g, ' <img src="$1" alt="Image Bmx" /> ');
	
	document.getElementById(id_apercu).innerHTML = input_contenu;
	var pourcentage_actuel_input = Math.round((100*input.scrollTop)/input.scrollHeight);
	var hauteur_apercu = Math.round((pourcentage_actuel_input*document.getElementById(id_apercu).scrollHeight)/100);
	document.getElementById(id_apercu).scrollTop = hauteur_apercu;
}

function lauch_apercu() {
	var textareas = document.getElementsByTagName('textarea');
	for(i = 0; i < textareas.length; i++) {
		if(textareas[i].getAttribute('onkeyup') != '') {
			apercu(textareas[i].getAttribute('id'), textareas[i].getAttribute('id')+'_apercu');
		}
	}
}

document.onload = setTimeout('lauch_apercu()', 100);
