function My_bbcode(startTag, endTag, textareaId, tagType, Valeur)
{
	var field = document.getElementById(textareaId); // On récupère la zone de texte
	var scroll = field.scrollTop; // On met en mémoire la position du scroll
	field.focus(); // On remet le focus sur la zone de texte, suivant les navigateurs, on perd le focus en appelant la fonction.
	
	
	/* === Partie 1 : on récupère la sélection === */
	if(window.ActiveXObject) // C'est IE
	{
		var textRange = document.selection.createRange();
		var currentSelection = textRange.text;
	}
	else // Ce n'est pas IE
	{
		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)
	{
        endTag = ''; startTag = '';
		switch(tagType)
		{
			case "lien": // Si c'est un lien
                // Perso : plus simple
				var URL = prompt("Quelle est l'url (l'adresse) ?", "http://");
                if(URL!=null && URL!='')
                {
                    endTag = "[/lien]";
                    startTag = "[lien url=\"" + URL + "\"]";
                }
				/*if(currentSelection) // Il y a une sélection
				{
					if(currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0)
					{
						// La sélection semble être un lien. On demande alors le libellé
						var label = prompt("Quel est le texte à afficher ?") || "";
						startTag = "[lien url=\"" + currentSelection + "\"]";
						currentSelection = label;
					}
					else // La sélection n'est pas un lien, donc c'est le libelle. On demande alors l'URL
					{
						var URL = prompt("Quelle est l'url ?", "http://");
						startTag = "[lien url=\"" + URL + "\"]";
					}
				}
				else // Pas de sélection, donc on demande l'URL et le libelle
				{
					var URL = prompt("Quelle est l'url ?", "http://") || "";
					var label = prompt("Quel est le texte à afficher ?") || "";
					startTag = "[lien url=\"" + URL + "\"]";
					currentSelection = label;
				}*/
			break;
            
            case "youtube":
                var id = prompt("Quelle est l'adresse de la vidéo Youtube ?", "");
                if(id!=null && id!='')
                {
                    endTag = "[/youtube]";
                    startTag = "[youtube="+id+"]Vidéo n° : Editer ce titre";
                }
            break;
            case "vimeo":
                var id = prompt("Quelle est l'adresse de la vidéo Vimeo ?", "");
                if(id!=null && id!='')
                {
                    endTag = "[/vimeo]";
                    startTag = "[vimeo="+id+"]Vidéo n° : Editer ce titre";
                }
                
            break;
            case "dailymotion":
                var id = prompt("Quelle est l'adresse de la vidéo Dailymotion ?", "");
                if(id!=null && id!='')
                {
                    endTag = "[/dailymotion]";
                    startTag = "[dailymotion="+id+"]Vidéo n° : Editer ce titre";
                }
            break;
			
			case "citation": // Si c'est une citation
				endTag = "[/citation]";
				if(currentSelection) // Il y a une sélection
				{
					if(currentSelection.length > 30) 
					{
						// La longueur de la sélection est plus grande que 30. C'est certainement la citation, le pseudo fait rarement 20 caractères
						var auteur = prompt("Quel est l'auteur de la citation ?") || "";
						startTag = "[citation nom=\"" + auteur + "\"]";
					}
					else // On a l'Auteur, on demande la citation
					{
						var citation = prompt("Quelle est la citation ?") || "";
						startTag = "[citation nom=\"" + 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 = "[citation nom=\"" + auteur + "\"]";
					currentSelection = citation;
				}			
			break;
			
			case "image": // Si c'est une image
                // On demande alors l'URL
				var URL = prompt("Quelle est l'url de l'image ?", "http://");
                if(URL!=null && URL!='')
                {
                    endTag = "";
                    startTag = "[image url=\"" + URL + "\"]";
                }

			break;
			
			/// Pour les contributions :
			case "img": // Image centrée
				endTag = "";
				startTag = "[img=\"\"]";
			break;
			
			case "img_c": // Image centrée
				endTag = "";
				startTag = "[img_c=\"\"]";
			break;
			
			case "img_g": // Image flottante à gauche
				endTag = "";
				startTag = "[img_g=\"\"]";
			break;
			
			case "img_d": // Image flottante à droite
				endTag = "";
				startTag = "[img_d=\"\"]";
			break;
			
			case "img_a_inclure": // Image à inclure
				endTag = "";
				startTag = "[img_c=\"" + Valeur + "\"]";
			break;
            
            case "audio_a_inclure": // Audio à inclure
				endTag = "";
				startTag = "[audio=\"" + Valeur + "\"]";
			break;
            
            case "fichier_a_inclure": // Fichier à inclure
				endTag = "";
				startTag = "[file=\"" + Valeur + "\"]";
			break;

            case "fichier_audio_a_inclure": // Fichier à inclure
				endTag = "";
				startTag = "[file_audio=\"" + Valeur + "\"]";
			break;

            case "fichier_video_a_inclure": // Fichier à inclure
				endTag = "";
				startTag = "[file_video=\"" + Valeur + "\"]";
			break;
			
			/*case "video_a_inclure": // Vidéos à inclure
				endTag = "Vidéo n° : Editer ce titre[/video]";
				startTag = "[video=\"" + Valeur + "\"]";
			break;*/
			//// D'autres par la suite.
		}
	}
	
	
	/* === Partie 3 : on insè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);
	}
	
	
	field.scrollTop = scroll; // et on redéfinit le scroll.
	
	
}




////////////////////////////////////////////////////
////////////////////////////////////////////////////
////////////////////////////////////////////////////
function AffPreview(id_div_preview, name_form, name_textarea, chemin_images, chemin_images_contrib)
{

	var le_div_preview = document.getElementById(id_div_preview);
	
	// On récupère le contenu de la textarea :
 	var contenu_texta = document.forms[name_form].elements[name_textarea].value;
	 
    ///
    $('textarea').click(function(){
        $(le_div_preview).slideUp('slow');
    });
 	
 	/// Si le div de Preview est caché, et si la textarea n'est pas vide, on affiche le div de Preview :
	if (le_div_preview.style.display == "none")
	{
		if(contenu_texta != "")
		{
			//le_div_preview.style.display = "";
            
            $(le_div_preview).slideDown('slow');
		}
	}
    else
    {
        //le_div_preview.style.display = "none";
        $(le_div_preview).slideUp('fast');
    }
	
	
 	/* ========== Regex ============ */
 	/// Généraux
 	contenu_texta = contenu_texta.replace(/</g, '&lt;').replace(/>/g, '&gt;');
 	contenu_texta = contenu_texta.replace(/"/g, '&quot;', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\n/g, '<br />').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
 	
 	contenu_texta = contenu_texta.replace(/\[g\]([\s\S]*?)\[\/g\]/g, '<strong>$1</strong>');
 	contenu_texta = contenu_texta.replace(/\[it\]([\s\S]*?)\[\/it\]/g, '<em>$1</em>');
 	contenu_texta = contenu_texta.replace(/\[souligne\]([\s\S]*?)\[\/souligne\]/g, '<span style="text-decoration:underline;">$1</span>');
 	
 	contenu_texta = contenu_texta.replace(/\[t1\]([\s\S]*?)\[\/t1\]/g, '<h2>$1</h2>');
 	contenu_texta = contenu_texta.replace(/\[t2\]([\s\S]*?)\[\/t2\]/g, '<h3>$1</h3>');
 	// Pour les <br /> en trop
 	contenu_texta = contenu_texta.replace(/<\/h2><br \/>/g, '</h2>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<\/h3><br \/>/g, '</h3>', contenu_texta);
 	
 	contenu_texta = contenu_texta.replace(/\[lien url=&quot;([\s\S]*?)&quot;\]([\s\S]*?)\[\/lien\]/g, '<a href="$1" title="$1" target="_blank">$2</a>');
 	contenu_texta = contenu_texta.replace(/\[image url=&quot;([\s\S]*?)&quot;\]/g, '<img style="max-width:600px;" src="$1" alt="Image" />');
	
	
 	
 	//liste à puces
 	contenu_texta = contenu_texta.replace(/\[liste_p\]([\s\S]*?)\[\/liste_p\]/g, '<ul>$1</ul>');
 	contenu_texta = contenu_texta.replace(/\[o\]([\s\S]*?)\[\/o\]/g, '<li>$1</li>');
 	
 	//liste à numérotée
 	contenu_texta = contenu_texta.replace(/\[liste_n\]([\s\S]*?)\[\/liste_n\]/g, '<ol>$1</ol>');
 	contenu_texta = contenu_texta.replace(/\[n\]([\s\S]*?)\[\/n\]/g, '<li>$1</li>');
 	// Pour les <br /> en trop
 	contenu_texta = contenu_texta.replace(/<\/ul><br \/>/g, '</ul>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<ul><br \/>/g, '<ul>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<\/ol><br \/>/g, '</ol>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<ol><br \/>/g, '<ol>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<\/li><br \/>/g, '</li>', contenu_texta);
 	contenu_texta = contenu_texta.replace(/<li><br \/>/g, '<li>', contenu_texta);
 	
 	
 	
 	/// Smileys
 	contenu_texta = contenu_texta.replace(/\[:wink:\]/g, '<img src="' + chemin_images + 'smileys/wink.gif" title="wink" alt="wink" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:cry:\]/g, '<img src="' + chemin_images + 'smileys/cry.gif" title="cry" alt="cry" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:biggrin:\]/g, '<img src="' + chemin_images + 'smileys/biggrin.gif" title="biggrin" alt="biggrin" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:cool:\]/g, '<img src="' + chemin_images + 'smileys/cool.gif" title="cool" alt="cool" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:redface:\]/g, '<img src="' + chemin_images + 'smileys/redface.gif" title="redface" alt="redface" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:lol:\]/g, '<img src="' + chemin_images + 'smileys/lol.gif" title="lol" alt="lol" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:ccool:\]/g, '<img src="' + chemin_images + 'smileys/ccool.gif" title="ccool" alt="ccool" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:confused:\]/g, '<img src="' + chemin_images + 'smileys/confused.gif" title="confused" alt="confused" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:eek:\]/g, '<img src="' + chemin_images + 'smileys/eek.gif" title="eek" alt="eek" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:rolleyes:\]/g, '<img src="' + chemin_images + 'smileys/rolleyes.gif" title="rolleyes" alt="rolleyes" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:toine:\]/g, '<img src="' + chemin_images + 'smileys/toine.gif" title="toine" alt="toine" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:aie:\]/g, '<img src="' + chemin_images + 'smileys/aie.gif" title="aie" alt="aie" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:question:\]/g, '<img src="' + chemin_images + 'smileys/question.gif" title="question" alt="question" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:exclaim:\]/g, '<img src="' + chemin_images + 'smileys/exclaim.gif" title="exclaim" alt="exclaim" />', contenu_texta);
 	contenu_texta = contenu_texta.replace(/\[:idea:\]/g, '<img src="' + chemin_images + 'smileys/idea.gif" title="idea" alt="idea" />', contenu_texta);
 	
 	// D'autres Smileys
 	// permet d'en rajouter autant qu'on veut
 	//contenu_texta = contenu_texta.replace(/\[:(\d+):\]/g, '<img src="' + chemin_images + 'smileys/$1.gif" alt="$1.gif" />');
 	
 	/// La boucle marche !
 	var nb_smileys = 62;
 	for(var i=1; i<nb_smileys+1; i++)
	{
		var MyReg = new RegExp('\\[:' + i + ':\\]', 'g');
    	contenu_texta = contenu_texta.replace(MyReg, "<img src=\"" + chemin_images + "smileys/" + i + ".gif\" />", contenu_texta);
    	//contenu_texta = contenu_texta.replace(/\[::\]/g, '<img src="' + chemin_images + 'smileys/'+i+'.gif" />', contenu_texta);
	}
	
	
	/// On renvoie le tout dans le
 	le_div_preview.innerHTML = contenu_texta;
}



