function insertTag(startTag, endTag, textareaId, tagType) {
	var field = document.getElementById(textareaId); 
	field.focus();
        
	/* === Partie 1 : on r&eacute;cup&egrave;re la s&eacute;lection === */
	if (window.ActiveXObject) {
		var textRange = document.selection.createRange();            
		var currentSelection = textRange.text;
	} else {
		var startSelection   = field.value.substring(0, field.selectionStart);
		var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
		var endSelection     = field.value.substring(field.selectionEnd);               
	}
        
	/* === Partie 2 : on analyse le tagType === */
	if (tagType) {
		switch (tagType) {
		case "lien":
			endTag = "[/url]";
			if (currentSelection) { // Il y a une s&eacute;lection
				if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) {
					// La s&eacute;lection semble &ecirc;tre un lien. On demande alors le libell&eacute;
					var label = prompt("Quel est le libellé du lien ?") || "";
					startTag = "[url=" + currentSelection + "]";
					currentSelection = label;
				} else {
					// La s&eacute;lection n'est pas un lien, donc c'est le libelle. On demande alors l'URL
					var URL = prompt("Quelle est l'url ?");
					startTag = "[url=" + URL + "]";
				}
			} else { // Pas de s&eacute;lection, donc on demande l'URL et le libelle
				var URL = prompt("Quelle est l'url ?") || "";
				var label = prompt("Quel est le libellé du lien ?") || "";
				startTag = "[url=" + URL + "]";
				currentSelection = label;                     
			}
		break;
		case "citation":
			endTag = "[/quote]";
			if (currentSelection) { // Il y a une s&eacute;lection
				if (currentSelection.length > 30) { // La longueur de la s&eacute;lection est plus grande que 30. C'est certainement la citation, le pseudo fait rarement 20 caract&egrave;res
					var auteur = prompt("Quel est l'auteur de la citation ?") || "";
					startTag = "[quote=" + auteur + "]";
				} else { // On a l'Auteur, on demande la citation
					var citation = prompt("Quelle est la citation ?") || "";
					startTag = "[quote=" + currentSelection + "]";
					currentSelection = citation;    
				}
			} else { // Pas de selection, donc on demande l'Auteur et la Citation
				var auteur = prompt("Quel est l'auteur de la citation ?") || "";
				var citation = prompt("Quelle est la citation ?") || "";
				startTag = "[quote=" + auteur + "]";
				currentSelection = citation;    
			}
		break;
		case "progress":
			endTag = "[/progress]";
			if (currentSelection) { // Il y a une sélection
				if (currentSelection.length <= 3) { // La longueur de la sélection est plus grande que 3. C'est pas un pourcent, mais plus grand !!! pour mille !!!
					startTag = "[progress]";
				} else { //on previent l'utilisateur que ça va pas !!!
					alert('Il faut mettre une valeur comprise entre 0 et 100%');
					exit();
				}
			} else { // Pas de selection
					var pourcent = prompt("Quel est la valeur de la barre de progression ?") || "";
				if(pourcent.lenght <= 3 || pourcent <= 100)
				{
					startTag = "[progress]"+ pourcent;  
				} else {
					alert('Il faut mettre une valeur comprise entre 0 et 100%');
					exit();
				}
			}
		break;
		case "image":
			endTag = "[/img]";
			
			if (currentSelection) 
			{ // Il y a une sélection
				var adresse="";
				var titre= prompt("Titre de l'image");
			}
			else
			{
				var adresse = prompt("Adresse de l'image");
				var titre= prompt("Titre de l'image");
			}
			
			if(titre!=null){}
			else
				titre=" ";
			if(adresse!=null){}
			else
				adresse="";
			
			startTag="[img titre="+titre+"]"+adresse;
		break;
		case "miniature":
			endTag = "[/mini]";
			
			if (currentSelection) 
			{ // Il y a une sélection
				var adresse="";
				var titre= prompt("Titre de la miniature");
			}
			else
			{
				var adresse = prompt("Adresse de l'image");
				var titre= prompt("Titre de la miniature");
			}
			
			if(titre!=null){}
			else
				titre=" ";
				
			if(adresse!=null){}
			else
				adresse="";
			
			startTag="[mini titre="+titre+"]"+adresse;
		break;
		case "liste":
			endTag = "[/list]\n";
			if (currentSelection) 
			{ // Il y a une sélection
				startTag = "[list]";
				endTag = "\n" + endTag;
			} 
			else 
			{ // Pas de selection, donc on demande la valeur de la puce
				var puces = '';
				while(puce = prompt("Quel est le contenu de la puce ?") )
					{
					puces += puce+"\n";
				}
				startTag = "[list]";
				startTag += puces;
				endTag = "[/list]\n";
			}
			
		break;
		}
	}
        
	/* === Partie 3 : on ins&egrave;re le tout === */
	if (window.ActiveXObject) {
		textRange.text = startTag + currentSelection + endTag;
		textRange.moveStart("character", -endTag.length - currentSelection.length);
		textRange.moveEnd("character", -endTag.length);
		textRange.select();     
	} else {
		field.value = startSelection + startTag + currentSelection + endTag + endSelection;
		field.focus();
		field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
	}       
}
		
function liste(texte, id) {
	if(texte!="TITRE")//Si ce n'est pas le titre de la liste déroulante
	insertTag('[size=' + texte + ']', '[/size]', id);
}

function tags(start, end, message, type) {
	insertTag("[" + start + "]", "[" + end + "]", message, type);
}

function tags_ouverta(start, end, message, type) {
	insertTag("[" + start + "]", "[" + end + "]", message, type);
}

function defaut()
{
	document.getElementById("defaut").selected = true;
}
		
function recup_select(id) 
{
	var value_f = document.getElementById('code_texte').options[document.getElementById('code_texte').selectedIndex].value;
	tags('code='+value_f+'', '/code', id);
} 
function recup_color(id) 
{
	var value_f = document.getElementById('color').options[document.getElementById('color').selectedIndex].value;
	
	if(value_f != 'Couleur')
		tags('color='+value_f+'', '/color', id);
} 
function recup_float(id) 
{
	var value_f = document.getElementById('float').options[document.getElementById('float').selectedIndex].value;
	
	if(value_f != 'Flottant')
		tags('float='+value_f+'', '/float', id);
} 

function smiley(symbole,textareaId)
{
	var field = document.getElementById(textareaId); 
	field.focus();
	
	var startSelection   = field.value.substring(0, field.selectionStart);
	var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
	var endSelection     = field.value.substring(field.selectionEnd);               
	
	field.value = startSelection + symbole + endSelection;
	field.focus();
}