function insertTag(startTag, endTag, textareaId, tagType) {
	var field = document.getElementById(textareaId);
	field.focus();
	
	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);
	}
	
	if (tagType) {
		switch (tagType) {
			case "lien":
					endTag = "[/url]";
					if (currentSelection) {
							if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) {
									var label = prompt("Quel est le libellé du lien ?") || "";
									startTag = "[url=" + currentSelection + "]";
									currentSelection = label;
							} else {
									var URL = prompt("Quelle est l'url ?");
									startTag = "[url=" + URL + "]";
							}
					} else {
							var URL = prompt("Quelle est l'url ?") || "";
							var label = prompt("Quel est le libellé du lien ?") || "";
							startTag = "[url=" + URL + "]";
							currentSelection = label;                     
					}
			break;
			case "img":
					endTag = "[/img]";
					if (currentSelection) {
							var URL = prompt("Quelle est l'adresse de l'image ?");
							startTag = "[img]" + URL + "";
					}else {
							var URL = prompt("Quelle est l'adresse de l'image ?") || "";
							//var label = prompt("Quel est le libellé du lien ?") || "";
							startTag = "[img]" + URL + "";
							//currentSelection = label;                     
					}
			break;
			case "mail":
					endTag = "[/mail]";
					if (currentSelection) {
							startTag = "[mail]";
					}else {
							var mail = prompt("Quelle est l'adresse email ?") || "";
							//var label = prompt("Quel est le libellé du lien ?") || "";
							startTag = "[mail]" + mail + "";
							//currentSelection = label;                     
					}
			break;
			case "liste_puce":
					endTag = "\n[/liste_p]";
					startTag = "[liste_p]\n[*]";
			break;
			case "liste_alpha":
					endTag = "\n[/liste_a]";
					startTag = "[liste_a]\n[a]";
			break;
			case "liste_num":
					endTag = "\n[/liste_n]";
					startTag = "[liste_n]\n[1]";
			break;
			case "citation":
					endTag = "[/quote]";
					if (currentSelection) {
							if (currentSelection.length > 30) {
									var auteur = prompt("Quel est l'auteur de la citation ?") || "";
									startTag = "[quote nom=\"" + auteur + "\"]";
							} else {
									var citation = prompt("Quelle est la citation ?") || "";
									startTag = "[quote nom=\"" + currentSelection + "\"]";
									currentSelection = citation;    
							}
					} else {
							var auteur = prompt("Quel est l'auteur de la citation ?") || "";
							var citation = prompt("Quelle est la citation ?") || "";
							startTag = "[quote nom=\"" + auteur + "\"]";
							currentSelection = citation;    
					}
			break;	
			case "table":
					startTag = "[table]\n";
					endTag = "[/table]";
					var lignes = prompt("Nombre de ligne ?") || "";
					var colonnes = prompt("Nombre de colonnes ?") || "";
					for(i=0; i<lignes; i++){
						currentSelection += "[tr]\n";
						for(j=0; j<colonnes; j++){
							currentSelection += "[td][/td]\n";
						}
						currentSelection += "[/tr]\n";
					}
			break;	
		}
	}
	
	if (window.ActiveXObject) {
		textRange.text = startTag + currentSelection + endTag;
		textRange.moveStart('character', -endTag.length-currentSelection.length);
		textRange.moveEnd('character', -endTag.length);
		textRange.select();  
	} else { // Ce n'est pas IE
		field.value = startSelection + startTag + currentSelection + endTag + endSelection;
		field.focus();
		field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
	}      
}
