function echappe(chaine)
{
	echap = chaine.replace(/\&/gi, '&amp;');
	echap = chaine.replace(/\+/gi, '&plus;');
	return escape(echap);
}
function buildData(element)
{
	var data = "";
	var i = 0;
	var nombre = element.childNodes.length;
	while (i < nombre)
	{
		sElement = element.childNodes[i];
		if (sElement.name)
		{
			if (sElement.type == "checkbox")
			{
				if (sElement.checked)
					data += sElement.name + "=1&";
				else
					data += sElement.name + "=0&";
			}
			else if (sElement.type == "select-one")
			{
				data += sElement.name + "=" + echappe(sElement.options[sElement.selectedIndex].value) + "&";
			}
			else if (sElement.type == "radio")
			{
				if (sElement.checked)
					data += sElement.name + "=" + echappe(sElement.value) + "&";
			}
			else if (sElement.value != undefined)
				data += sElement.name + "=" + echappe(sElement.value) + "&";
		}
		else
			data += buildData(sElement);
		i++;
	}
	return data
}
function ajax(url, form)
{
	var data = buildData(form);
	var xhr;
	if (window.XMLHttpRequest)
		xhr = new XMLHttpRequest();
	else if (window.ActiveXObject)
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return;
	xhr.open("POST", url, true);
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4)
		{
			retour = xhr.responseText;
			mess = retour.match(/<message>([\s\S]*)<\/message>/i);
			if (mess)
				alert(mess[1]);
			else
				alert("Erreur de traitement");
		}
	}
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send(data);
}
function messages_ajour()
{
	var xhr;
	if (window.XMLHttpRequest)
		xhr = new XMLHttpRequest();
	else if (window.ActiveXObject)
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return;
	xhr.open("GET", './discussion.php?texte=1', true);
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4)
		{
			message = xhr.responseText.match(/<message>([\s\S]*)<\/message>/i);
			if (message)
			{
				var messages = document.getElementById("messages");
				messages.innerHTML = message[1];
				messages.scrollTop = messages.scrollHeight - messages.clientHeight;
				setTimeout('messages_ajour()', 1000);
			}
			else
				alert("Erreur de traitement");
		}
	}
	xhr.send(null);
}
function afficheTemps()
{
	var date = new Date();
	var annee = date.getYear();
	if ((navigator.appName == "Microsoft Internet Explorer") && (annee < 2000))
		annee = "19" + annee;
	if (navigator.appName == "Netscape")
		annee = 1900 + annee;
	var months = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aoùt", "Septembre", "Octobre", "Novembre", "Décembre");
	var mois = months[date.getMonth()];
	var jour = date.getDate();
	if (jour == 1)
		jour += "er";
	var heures = date.getHours();
	var minutes = date.getMinutes();
	var secondes = date.getSeconds();
	if (minutes <= 9)
		minutes = "0" + minutes;
	if (secondes <= 9)
		secondes = "0" + secondes;
	if (heures <= 9)
		heures = "0" + heures;
	var temps = document.getElementById("temps");
	temps.innerHTML = jour + " " + mois + " " + annee + " " + heures + ":" + minutes + ":" + secondes;
	setTimeout("afficheTemps()", 1000);
}
function change(liste, valeur, nom)
{
	var url;
	var courriel;
	var citation;
	if (liste)
	{
		valeur = liste.options[liste.selectedIndex].text.toLowerCase();
		liste.selectedIndex = 0;
	}
	var avant = '<' + valeur + '>';
	var apres = '</' + valeur + '>';
	if (valeur == "taille")
		avant = '<taille pourcentage="' + prompt("Taille (en pourcents):") + '">';
	else if (valeur == "flottement gauche")
	{
		avant = '<flottement cote="gauche">';
		apres = '</flottement>';
	}
	else if (valeur == "flottement droit")
	{
		avant = '<flottement cote="droit">';
		apres = '</flottement>';
	}
	else if (valeur == "arial" || valeur=="arial black" || valeur=="comic sans ms" || valeur=="courier new" || valeur=="georgia" || valeur=="impact" || valeur=="times new roman" || valeur=="trebuchet ms" || valeur=="verdana")
	{
		avant = '<police type="' + valeur + '">';
		apres = '</police>';
	}
	else if (valeur == "sondage")
	{
		avant += prompt("Veuillez donner l'id du sondage");
	}
	else if (valeur == "séparateur" || valeur == "lecteur")
	{
		avant = '<' + valeur + ' />';
		apres = '';
	}
	else if (valeur == "nouvelle ligne")
	{
		avant = '<\ligne />';
		apres = '';
	}
	else if (valeur == "jour de lecture")
	{
		avant = 'jour-lecture()';
		apres = '';
	}
	else if (valeur == "heure de lecture")
	{
		avant = 'heure-lecture()';
		apres = '';
	}
	else if (valeur == "date de lecture complète")
	{
		avant = 'date-lecture()';
		apres = '';
	}
	else if (valeur == "jour d'écriture")
	{
		avant = 'jour-ecriture()';
		apres = '';
	}
	else if (valeur == "heure d'écriture")
	{
		avant = 'heure-ecriture()';
		apres = '';
	}
	else if (valeur == "date d'écriture complète")
	{
		avant = 'date-ecriture()';
		apres = '';
	}
	else if (valeur == "code (autre)")
	{
		avant = '<code>';
		apres = '</code>';
	}
	else if (valeur == "xcode")
	{
		avant = '<code langage="xCode">';
		apres = '</code>';
	}
	else if (valeur == "langages du web")
	{
		avant = '<code langage="Web">';
		apres = '</code>';
	}
	else if (valeur == "c / c++")
	{
		avant = '<code langage="C">';
		apres = '</code>';
	}
	else if (valeur == "basic")
	{
		avant = '<code langage="Basic">';
		apres = '</code>';
	}
	else if (valeur == "ms-dos / batch")
	{
		avant = '<code langage="Batch">';
		apres = '</code>';
	}
	else if (valeur == "lien")
	{
		if ((url = prompt('URL:')) != null)
		{
			avant = '<lien>' + url + '</lien>';
			apres = '';
		}
		else
		{
			avant = '';
			apres = '';
		}
	}
	else if (valeur == "lien textuel")
	{
		if ((url = prompt('URL:')) != null)
		{
			avant = '<lien vers="' + url + '">';
			apres = '</lien>';
		}
		else
		{
			avant = '';
			apres = '';
		}
	}
	else if (valeur == "lien externe")
	{
		if ((url = prompt('URL:')) != null)
		{
			avant = '<lien-externe vers="' + url + '">';
			apres = '</lien>';
		}
		else
		{
			avant = '';
			apres = '';
		}
	}
	else if (valeur == "citation")
	{
		if ((auteur = prompt('Auteur de la citation:')) != null)
		{
			avant = '<citation de="' + auteur + '">';
			apres = '</citation>';
		}
		else
		{
			avant = '';
			apres = '';
		}
	}
	else if (valeur == "courriel")
	{
		if ((courriel = prompt('Adresse de courriel:')) != null)
		{
			avant = '<courriel>' + courriel;
			apres = '</courriel>';
		}
		else
		{
			avant = '';
			apres = '';
		}
	}
	else if (valeur == "membres")
	{
		avant = '<restriction membre="connecte">';
		apres = '</restriction>';
	}
	else if (valeur == "groupe...")
	{
		avant = '<restriction groupe="' + prompt('Nom du groupe:') + '">';
		apres = '</restriction>';
	}
	else if (valeur == "hiragana" || valeur == "katakana")
	{
		avant = '<symboles categorie="' + valeur + '">';
		apres = '</symboles>';
	}
	else if (valeur == "tabule")
	{
		avant = '	';
		apres = '';
	}
	if (liste)
		var input = document.getElementById("xcode_" + liste.className);
	else
		var input = document.getElementById("xcode_" + nom);
	input.focus();
	if (typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = avant + insText + apres;
		range = document.selection.createRange();
		if (insText.length)
			range.moveStart('character', avant.length + insText.length + apres.length);
		else
			range.move('character', -apres.length);
		range.select();
	}
	else if (typeof input.selectionStart != 'undefined')
	{
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + avant + insText + apres + input.value.substr(end);
		var pos;
		if (insText.length == 0)
			pos = start + avant.length;
		else
			pos = start + avant.length + insText.length + apres.length;
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
}
function apercu(nom)
{
	var input = document.getElementById("xcode_" + nom);
	var stringT = new String(input.value);
	stringT = stringT.replace(/&/gi, '&amp;');
	stringT = stringT.replace(/"/gi, '&quot;');
	stringT = stringT.replace(/</gi, '&lt;');
	stringT = stringT.replace(/>/gi, '&gt;');
	stringT = stringT.replace(/&lt;courriel&gt;([\s\S]*?)@([\s\S]*?)\.([\s\S]*?)&lt;\/courriel&gt;/gi, '<a href="./ecrire_$1_$2_$3.html"><img src="./courriel_$1_$2_$3.jpg" /></a>');
	stringT = stringT.replace(/date-ecriture\(\)/gi, "12/03/2010 01:08:34");
	stringT = stringT.replace(/jour-ecriture\(\)/gi, "12/03/2010");
	stringT = stringT.replace(/heure-ecriture\(\)/gi, "01:08:34");
	stringT = stringT.replace(/&lt;restriction membre=&quot;connecte&quot;&gt;([\s\S]*?)&lt;/gi, "");
	stringT = stringT.replace(/&lt;restriction groupe=&quot;([\s\S]*?)&quot;&gt;([\s\S]*?)&lt;\/restriction&gt;/gi, '$1');
	stringT = stringT.replace(/&lt;code&gt;([\s\S]*?)&lt;\/code&gt;/gi, function (tout, code)
	{
		code = code.replace(/ /gi, "&#160;");
		code = code.replace(/	/gi, "&#160;&#160;&#160;&#160;&#160;&#160;");
		code = code.replace(/\(/gi, "&(;");
		code = code.replace(/\)/gi, "&);");
		code = code.replace(/&lt;/gi, "&ltlt;");
		code = code.replace(/&gt;/gi, "&gtgt;");
		return '<fieldset class="code"><legend>Code</legend>' + code + '</fieldset>';
	});
	stringT = stringT.replace(/&lt;code langage=&quot;(.*?)&quot;&gt;([\s\S$]*?)&lt;\/code&gt;/gi, function (tout, langage, code)
	{
		code = code.replace(/ /gi, "&#160;");
		code = code.replace(/	/gi, "&#160;&#160;&#160;&#160;&#160;&#160;");
		var langag = langage.toLowerCase();
		if (langag == "xcode")
		{
			code = code.replace(/(jour-lecture|heure-lecture|date-lecture)\(\)/gi, '<span style="color: #707070;">$1</span>()');
			code = code.replace(/&lt;([^!?]*?)&gt;/gi, function (tout, balise)
			{
				balise = balise.replace(/(^\/|\/$)/gi, '<span style="color: #0000FF;">/</span>');
				balise = balise.replace(/&#160;(.*)=&quot;(.*)&quot;/gi, '&#160;<span style="color: #0000FF;">$1="<span style="color: #808080;">$2</span>"</span>');
				balise = balise.replace(/^(\/?)(.*)(&#160;|$)/gi, '$1<span style="color: #00BB00;">$2</span>$3');
				return '<span style="color: #FF0000;">&ltlt;</span>' + balise + '<span style="color: #FF0000;">&gtgt;</span>';
			});
		}
		else if (langag == "web")
		{
			code = code.replace(/(&lt;script[\s\S]*?&gt;)([\s\S]*?)(&lt;\/script&gt;)/i, function (tout, avant, javascript, apres)
			{
				javascript = javascript.replace(/\\'/gi, '&sepapo;');
				javascript = javascript.replace(/\\\&quot;/gi, '&sepgui;');
				javascript = javascript.replace(/(&quot;|')([\s\S]*?)\1/gi, '<span style="color: #808080;">$1$2$1</span>');
				javascript = javascript.replace(/&sepapo;/gi, '\\\'');
				javascript = javascript.replace(/&sepgui;/gi, '\\&quot;');
				javascript = javascript.replace(/([^a-zA-Z0-9_])(abstract|boolean|break|byte|case|catch|char|class|const|continue|debugger|default|delete|do|double|else|enum|export|extends|final|finally|float|for|function|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|super|switch|synchronized|this|throw|throws|transient|try|typeof|var|void|volatile|while|with|true|false|prototype)([^a-zA-Z0-9_])/gi, '$1<span style="color: blue; font-weight: bold;">$2</span>$3');
				javascript = javascript.replace(/([a-zA-Z][a-zA-Z0-9_]*)([ 	\r\n(&#160;)(&#160;)]*\(.*?\))/gi, '<span style="color: #0000AA;">$1</span>$2');
				return avant + javascript + apres;
			});
			code = code.replace(/&lt;([^¦?]*?)&gt;/gi, function (tout, balise)
			{
				balise = balise.replace(/(^\/|\/$)/gi, '<span style="color: #0000FF;">/</span>');
				balise = balise.replace(/&#160;(.*)=&quot;(.*)&quot;/gi, '&#160;<span style="color: #0000FF;">$1="<span style="color: #808080;">$2</span>"</span>');
				balise = balise.replace(/^(\/?)(.*)(&#160;|$)/gi, '$1<span style="color: #00BB00;">$2</span>$3');
				return '<span style="color: #FF0000;">&ltlt;</span>' + balise + '<span style="color: #FF0000;">&gtgt;</span>';
			});
			code = code.replace(/&lt;\?[\s\S]*?&gt;/gi, function (php)
			{
				php = php.replace(/\\'/gi, '&sepapo;');
				php = php.replace(/\\\&quot;/gi, '&sepgui;');
				php = php.replace(/(['\"])([\s\S]*?)(['\"])/gi, '<span style="color: #808080;">$1$2$3</span>');
				php = php.replace(/&sepapo;/gi, '\\\'');
				php = php.replace(/&sepgui;/gi, '\\&quot;');
				php = php.replace(/(&lt;\?php|\?&gt;)/gi, '<span style="font-weight: bold; color: #FF0000; background-color: #FFEEFF;">$1</span>');
				php = php.replace(/([^a-zA-Z0-9_])(as|break|case|cfunction|class|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|for|foreach|function|global|if|include|include_once|isset|list|new|old_function|print|require|require_once|return|static|switch|unset|use|var|while|__function__|__class__|php_version|php_os|default_include_path|pear_install_dir|pear_extension_dir|php_extension_dir|php_bindir|php_libdir|php_datadir|php_sysconfdir|php_localstatedir|php_config_file_path|php_output_handler_start|php_output_handler_cont|php_output_handler_end|e_error|e_warning|e_parse|e_notice|e_core_error|e_core_warning|e_compile_error|e_compile_warning|e_user_error|e_user_warning|e_user_notice|e_all|true|false|bool|boolean|int|integer|float|double|real|string|array|object|resource|null|class|extends|parent|stdclass|directory|__sleep|__wakeup|interface|implements|abstract|public|protected|private)([^a-zA-Z0-9_])/gi, '$1<span style="color: blue; font-weight: bold;">$2</span>$3');
				php = php.replace(/([a-z][a-z0-9_]*)([ 	\r\n(&#160;)(&#160;)]*\(.*?\))/gi, '<span style="color: #0000AA;">$1</span>$2');
				php = php.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/gi, '<span style="color: #00FF00;">\$$1</span>$2');
				return php;
			});
			code = code.replace(/(&lt;!\-\-[\s\S]*?\-\-&gt;)/gi, '<span style="color: #EFEFEF;">$1</span>');
			code = code.replace(/(&lt;.*DOCTYPE.*&gt;)/gi, '<span style="color: #0000FF">$0</span>');
		}
		else if (langag == "c" || langag == "c++" || langag == "c#" || langag == "java")
		{
			code = code.replace(/([^'].*)([0-9]+)(.*[^'])/gi, '$1<span style="color: #FFAA77;">$2</span>$3');
			code = code.replace(/(\s)(.*)(\(.*\))/gi, '$1<span style="color: #000055;">$2</span>$3');
			code = code.replace(/([^a-zA-Z0-9_])(if|else|switch|case|default|break|goto|return|for|while|do|continue|typedef|sizeof|NULL|new|delete|throw|try|catch|namespace|operator|this|const_cast|static_cast|dynamic_cast|reinterpret_cast|true|false|null|using|typeid|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq|void|struct|union|enum|char|short|int|long|double|float|signed|unsigned|const|static|extern|auto|register|volatile|bool|class|private|protected|public|friend|inline|template|virtual|asm|explicit|typename)([^a-zA-Z0-9_])/gi, '$1<span style="color: blue; font-weight: bold;">$2</span>$3');
			code = code.replace(/(\/\/.*(\n|$))/gi, '<span style="color: #116622;">$1</span>');
		}
		else if (langag == "basic")
		{
			code = code.replace(/([^'].*)([0-9]+)(.*[^'])/gi, '$1<span style="color: #FFAA77;">$2</span>$3');
			code = code.replace(/([^a-zA-Z0-9_])(addhandler|addressof|andalso|alias|and|ansi|as|assembly|attribute|auto|begin|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdec|cdbl|char|cint|class|clng|cobj|compare|const|continue|cshort|csng|cstr|ctype|currency|date|decimal|declare|default|delegate|dim|do|double|each|else|elseif|end|enum|erase|error|event|exit|explicit|false|finally|for|friend|function|get|gettype|global|gosub|goto|handles|if|implement|implements|imports|in|inherits|integer|interface|is|let|lib|like|load|long|loop|lset|me|mid|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|nothing|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|rem|removehandler|rset|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|true|try|type|typeof|unload|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor)([^a-zA-Z0-9_])/gi, '$1<span style="color: blue; font-weight: bold;">$2</span>$3');
			code = code.replace(/(\s)(.*)(\(.*\))/gi, '$1<span style="color: #000055;">$2</span>$3');
		}
		else if (langag == "batch")
		{
			code = code.replace(/([^'].*)([0-9]+)(.*[^'])/gi, '$1<span style="color: #FFAA77;">$2</span>$3');
			code = code.replace(/([^a-zA-Z0-9_])(rem|set|if|else|exist|errorlevel|for|in|do|break|call|chcp|cd|chdir|choice|cls|country|ctty|date|del|erase|dir|echo|exit|goto|loadfix|loadhigh|mkdir|md|move|path|pause|prompt|rename|ren|rmdir|rd|shift|time|type|ver|verify|vol|com|con|lpt|nul|defined|not|errorlevel|cmdextversion)([^a-zA-Z0-9_])/gi, '$1<span style="color: blue; font-weight: bold;">$2</span>$3');
			code = code;replace(/(\s)(.*)(\(.*\))/gi, '$1<span style="color: #000055;">$2</span>$3');
		}
		code = code.replace(/\(/gi, "&(;");
		code = code.replace(/\)/gi, "&);");
		code = code.replace(/&lt;/gi, "&ltlt;");
		code = code.replace(/&gt;/gi, "&gtgt;");
		return '<fieldset class="code"><legend>Code: ' + langage + '</legend>' + code + '</fieldset>';
	});
	stringT = stringT.replace(/&lt;module&gt;([\s\S]*?)&lt;\/module&gt;/gi, "<div>$1</div>");
	stringT = stringT.replace(/<div>&lt;titre&gt;([\s\S]*?)&lt;\/titre&gt;([\s\S]*?)<\/div>/gi, "<div><h3>$1</h3>$2</div>");
	stringT = stringT.replace(/&lt;police type=&quot;([\s\S]*?)&quot;&gt;([\s\S]*?)&lt;\/police&gt;/gi, '<span style="font-family: $1, serif;">$2</span>');
	stringT = stringT.replace(/&lt;taille pourcentage=&quot;([\s\S]*?)%?&quot;&gt;([\s\S]*?)&lt;\/taille&gt;/gi, '<span style="font-size: $1%;">$2</span>');
	stringT = stringT.replace(/&lt;gras&gt;([\s\S]*?)&lt;\/gras&gt;/gi, '<span style="font-weight: bold;">$1</span>');
	stringT = stringT.replace(/&lt;italique&gt;+([\s\S]*?)&lt;\/italique&gt;/gi, '<span style="font-style: italic;">$1</span>');
	stringT = stringT.replace(/&lt;souligne&gt;+([\s\S]*?)&lt;\/souligne&gt;/gi, '<span style="text-decoration: underline;">$1</span>');
	stringT = stringT.replace(/&lt;barre&gt;+([\s\S]*?)&lt;\/barre&gt;/gi, '<span style="text-decoration: line-through;">$1</span>');
	stringT = stringT.replace(/&lt;sur-ligne&gt;+([\s\S]*?)&lt;\/sur-ligne&gt;/gi, '<span style="text-decoration: overline;">$1</span>');
	stringT = stringT.replace(/&lt;surligne&gt;+([\s\S]*?)&lt;\/surligne&gt;/gi, '<span style="text-decoration: overline underline;">$1</span>');
	stringT = stringT.replace(/&lt;clignote&gt;+([\s\S]*?)&lt;\/clignote&gt;/gi, '<span style="text-decoration: blink;">$1</span>');
	stringT = stringT.replace(/&lt;exposant&gt;+([\s\S]*?)&lt;\/exposant&gt;/gi, '<sup>$1</sup>');
	stringT = stringT.replace(/&lt;minorant&gt;+([\s\S]*?)&lt;\/minorant&gt;/gi, '<sub>$1</sub>');
	function affiche_image(tout, arguments, adresse)
	{
		if (arguments)
		{
			style = "";
			largeur = arguments.replace(/^.*largeur=&quot;([0-9]*)&quot;.*$/gi, "$1");
			hauteur = arguments.replace(/^.*hauteur=&quot;([0-9]*)&quot;.*$/gi, "$1");
			if (largeur.match(/^[0-9]+$/))
				style += "width: " + largeur + "; ";
			if (hauteur.match(/^[0-9]+$/))
				style += "height: " + hauteur + "; ";
			if (style)
				return '<a href="' + adresse + '"><img src="' + adresse + '" alt="" style="' + style + '" /></a>';
			else
				return '<a href="' + adresse + '"><img src="' + adresse + '" alt="Image utilisateur" /></a>';
		}
		else
			return '<a href="' + adresse + '"><img src="' + adresse + '" alt="Image utilisateur" /></a>';
	}
	stringT = stringT.replace(/&lt;image(.*)&gt;([\s\S]*?)&lt;\/image&gt;/gi, affiche_image);
	stringT = stringT.replace(/&lt;son&gt;([\s\S]*?)&lt;\/son&gt;/gi, '&lt;$1&gt;');
	stringT = stringT.replace(/lt;flash&gt;([\s\S]*?)&lt;\/flash&gt;/gi, '<object type="application/x-shockwave-flash" data="$1" width="425" height="350"><param name="movie" value="$1" /><param name="wmode" value="transparent" /></object>');
	stringT = stringT.replace(/&lt;gauche&gt;([\s\S]*?)&lt;\/gauche&gt;/gi, '<div style="border: none; text-align: left;">$1</div>');
	stringT = stringT.replace(/&lt;centre&gt;([\s\S]*?)&lt;\/centre&gt;/gi, '<div style="border: none; text-align: center;">$1</div>');
	stringT = stringT.replace(/&lt;droite&gt;([\s\S]*?)&lt;\/droite&gt;/gi, '<div style="border: none; text-align: right;">$1</div>');
	stringT = stringT.replace(/&lt;flottement cote=&quot;gauche&quot;&gt;([\s\S]*?)&lt;\/flottement&gt;/gi, '<div style="border: none; float: left; text-align: left;">$1</div>');
	stringT = stringT.replace(/&lt;flottement cote=&quot;droit&quot;&gt;([\s\S]*?)&lt;\/flottement&gt;/gi, '<div style="border: none; float: right; text-align: right;">$1</div>');
	stringT = stringT.replace(/&lt;lien&gt;([\s\S]*?)&lt;\/lien&gt;/gi, '<a href="$1">$1</a>');
	stringT = stringT.replace(/&lt;lien vers=&quot;([\s\S]*?)&quot;&gt;([\s\S]*?)&lt;\/lien&gt;/gi, '<a href="$1">$2</a>');
	stringT = stringT.replace(/&lt;lien-externe vers=&quot;([\s\S]*?)&quot;&gt;([\s\S]*?)&lt;\/lien&gt;/gi, '<a href="javascript:open(\'$1\', \'\', \'\');stop();">$2</a>');
	stringT = stringT.replace(/&lt;lecteur \/&gt;/gi, 'visiteur');
	stringT = stringT.replace(/&lt;titre&gt;([\s\S]*?)&lt;\/titre&gt;/gi, "<h4>$1</h4>");
	stringT = stringT.replace(/&lt;citation de=&quot;([\s\S]*?)&quot;&gt;([\s\S]*?)&lt;\/citation&gt;/gi, '<fieldset><legend>De $1:</legend>$2</fieldset>');
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/((&lt;liste&gt;|&lt;liste-organisée&gt;)(&lt;element&gt;[\s\S]*?&lt;\/element&gt;([ 	\r\n(<br />)])*)*)([ 	\r\n(<br />)])+((&lt;element&gt;[\s\S]*?&lt;\/element&gt;([ 	\r\n(<br />)])*)*(&lt;\/liste&gt;|&lt;\/liste-organisée&gt;))/gi, '$1$6');
	}
	stringT = stringT.replace(/&lt;liste&gt;((&lt;element&gt;[\s\S]*?&lt;\/element&gt;)+)&lt;\/liste&gt;/gi, '<ul>$1</ul>');
	stringT = stringT.replace(/&lt;liste-organisée&gt;((&lt;element&gt;[\s\S]*?&lt;\/element&gt;)+)&lt;\/liste-organisée&gt;/gi, '<ol>$1</ol>');
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/((<ul>|<ol>)(<li>[\s\S]*?<\/li>)*)&lt;element&gt;([\s\S]*?)&lt;\/element&gt;((&lt;element&gt;[\s\S]*?&lt;\/element&gt;)*(<\/ul>|<\/ol>))/gi, '$1<li>$4</li>$5');
	}
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/(&lt;tableau&gt;(&lt;ligne&gt;[\s\S]*?&lt;\/ligne&gt;([ 	\r\n(<br />)])*)*)([ 	\r\n(<br />)])+((&lt;ligne&gt;[\s\S]*?&lt;\/ligne&gt;([ 	\r\n(<br />)])*)*&lt;\/tableau&gt;)/gi, '$1$5');
	}
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/(&lt;ligne&gt;(&lt;cellule&gt;[\s\S]*?&lt;\/cellule&gt;([ 	\r\n(<br />)])*)*)([ 	\r\n(<br />)])+((&lt;cellule&gt;[\s\S]*?&lt;\/cellule&gt;([ 	\r\n(<br />)])*)*&lt;\/ligne&gt;)/gi, '$1$5');
	}
	stringT = stringT.replace(/&lt;tableau&gt;((&lt;ligne&gt;(&lt;cellule&gt;[\s\S]*?&lt;\/cellule&gt;)+&lt;\/ligne&gt;)+)&lt;\/tableau&gt;/gi, '<table>$1</table>');
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/(<table>(<tr>[\s\S]*?<\/tr>)*)&lt;ligne&gt;((&lt;cellule&gt;[\s\S]*?&lt;\/cellule&gt;)+)&lt;\/ligne&gt;((&lt;ligne&gt;[\s\S]*?&lt;\/ligne&gt;)*<\/table>)/gi, '$1<tr>$3</tr>$5');
	}
	var stringTemp = "";
	while (stringTemp != stringT)
	{
		stringTemp = stringT;
		stringT = stringT.replace(/(<tr>(<td>[\s\S]*?<\/td>)*)&lt;cellule&gt;([\s\S]*?)&lt;\/cellule&gt;((&lt;cellule&gt;[\s\S]*?&lt;\/cellule&gt;)*<\/tr>)/gi, '$1<td>$3</td>$4');
	}
	stringT = stringT.replace(/jour-lecture\(\)/gi, '12/03/2010');
	stringT = stringT.replace(/heure-lecture\(\)/gi, '01:08:34');
	stringT = stringT.replace(/date-lecture\(\)/gi, '12/03/2010 01:08:34');
	stringT = stringT.replace(/\r\n/gi, '<br />');
	stringT = stringT.replace(/\n/gi, '<br />');
	stringT = stringT.replace(/&lt;ligne \/&gt;/gi, '<br />');
	stringT = stringT.replace(/&lt;séparateur \/&gt;/gi, '<hr />');
	stringT = stringT.replace(/&lt;symboles categorie=&quot;(hiragana|katakana)&quot;&gt;(.*?)&lt;\/symboles&gt;/gi, function (tout, type, symboles)
	{
		var longueur = symboles.length;
		var resultat = "";
		var i = 0;
		var image = "";
		var car1 = "";
		var car2 = "";
		var car3 = "";
		var son = "";
		symboles = symboles.toLowerCase();
		while (i < longueur)
		{
			son = "";
			car1 = symboles.substring(i, i + 1);
			if (car1 == "â")
			{
				car1 = "a";
				son = "a";
			}
			else if (car1 == "ê")
			{
				car1 = "e";
				son = "i";
			}
			else if (car1 == "ô")
			{
				car1 = "o";
				son = "u";
			}
			else if (car1 == "û")
			{
				car1 = "u";
				son = "u";
			}
			if (car1 == " ")
			{
				i += 1;
			}
			else if (car1 == "a" || car1 == "i" || car1 == "u" || car1 == "e" || car1 == "o" || car1 == "." || car1 == "," || (type == "katakana" && car1 == "-"))
			{
				image = car1;
				i += 1;
			}
			else if (car1 == "k" || car1 == "g" || car1 == "s" || car1 == "j" || car1 == "z" || car1 == "t" || car1 == "c" || car1 == "d" || car1 == "n" || car1 == "h" || car1 == "f" || car1 == "b" || car1 == "p" || car1 == "m" || car1 == "y" || car1 == "r" || car1 == "w")
			{
				car2 = symboles.substring(i + 1, i + 2);
				if (car2 == "â")
				{
					car2 = "a";
					son = "a";
				}
				else if (car2 == "ê")
				{
					car2 = "e";
					son = "i";
				}
				else if (car2 == "ô")
				{
					car2 = "o";
					son = "u";
				}
				else if (car2 == "û")
				{
					car2 = "u";
					son = "u";
				}
				if (car1 == car2)
				{
					image = "mtsu";
					i += 1;
				}
				else if ((car1 != "j" || car2 == "i") && (car1 != "f" || car2 == "u") && (car1 != "w" || car2 == "a" || car2 == "o") && (car2 == "a" || (car2 == "i" && car1 != "t" && car1 != "c" && car1 != "y") || (car2 == "u" && car1 != "t" && car1 != "h")  || (car2 == "e" && car1 != "y") || car2 == "o"))
				{
					image = car1 + car2;
					i += 2;
				}
				else if (car1 == "j" && (car2 == "a" || car2 == "u" || car2 == "o"))
				{
					image = "";
					resultat += '<img src="./images/symboles/' + type + '/ji.png" alt="" /><img src="./images/symboles/' + type  + '/my' + car2 + '.png" alt="" />';
					i += 2;
				}
				else
				{
					car3 = symboles.substring(i + 2, i + 3);
					if (car3 == "â")
					{
						car3 = "a";
						son = "a";
					}
					else if (car3 == "ê")
					{
						car3 = "e";
						son = "i";
					}
					else if (car3 == "ô")
					{
						car3 = "o";
						son = "u";
					}
					else if (car3 == "û")
					{
						car3 = "u";
						son = "u";
					}
					if ((car1 == "t" && car2 == "s" && car3 == "u") || (car1 == "c" && car2 == "h" && car3 == "i") || (car1 == "s" && car2 == "h" && car3 == "i"))
					{
						image = car1 + car2 + car3;
						i += 3;
					}
					else if ((car1 == "k" || car1 == "n" || car1 == "h" || car1 == "m" || car1 == "r" || car1 == "g" || car1 == "b" || car1 == "p") && car2 == "y" && (car3 == "a" || car3 == "u" || car3 == "o"))
					{
						image = "";
						resultat += '<img src="./images/symboles/' + type + '/' + car1 + 'i.png" alt="" /><img src="./images/symboles/' + type + '/my' + car3 + '.png" alt="" />';
						i += 3;
					}
					else if ((car1 == "s" || car1 == "c") && car2 == "h" && (car3 == "a" || car3 == "u" || car3 == "o"))
					{
						image = "";
						resultat += '<img src="./images/symboles/' + type + '/' + car1 + 'hi.png" alt="" /><img src="./images/symboles/' + type + '/my' + car3 + '.png" alt="" />';
						i += 3;
					}
					else if (car1 == "n")
					{
						image = car1;
						i += 1;
					}
					else
					{
						image = "erreur";
						i += 1;
					}
				}
			}
			else
			{
				image = "erreur";
				i += 1;
			}
			if (image)
				resultat += '<img src="./images/symboles/' + type + '/' + image + '.png" alt="" />';
			if (son)
				resultat += '<img src="./images/symboles/' + type + '/' + son + '.png" alt="" />';
		}
		return resultat;
	});
	stringT = stringT.replace(/&\(;/gi, '(');
	stringT = stringT.replace(/&\);/gi, ')');
	stringT = stringT.replace(/&ltlt;/gi, '&lt;');
	stringT = stringT.replace(/&gtgt;/gi, '&gt;');
	var apercu = document.getElementById("apercu_" + nom);
	apercu.innerHTML = stringT;
	setTimeout("apercu('" + nom + "')", 1000);
}
function charge()
{
	var xhr;
	if (window.XMLHttpRequest)
		xhr = new XMLHttpRequest();
	else if (window.ActiveXObject)
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return;
	xhr.open("GET", "refresh.html", true);
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4)
		{
			if (xhr.responseText.match(/<message>(.*)<\/message>/gi))
			{
				var message = document.getElementById("message");
				message.innerHTML = '<a href="./messagerie.html"><span style="color: #FF0000;">Message</span></a>';
				alert("Vous avez reçu un nouveau message !");
			}
			else
				setTimeout("charge()", 10000);
		}
	}
	xhr.send(null);
}
function shuffle()
{
	tableau = this.split('');
	var funct = function ()
	{
		var dt = new Date();
		return Math.floor((1000 * Math.random() + dt.getTime()) % 3 - 1);
	};
	tableau = tableau.sort(funct);
	return tableau.join('');
}
String.prototype.shuffle = shuffle;
function melanger_texte(texteamelanger)
{
	var textemelange = document.getElementById("textemelange");
	textemelange.innerHTML = texteamelanger.replace(/([a-záéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ])([a-záéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ]*)([a-záéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ])/gi, function (total, a, b, c) { return a + b.shuffle() + c; });
}
function convertir()
{
	code = new String(document.forms[0].code1.value) ;
	type1 = document.forms[0].tcode1.value;
	type2 = document.forms[0].tcode2.value;
	switch(type1)
	{
		case 'bbcode':
			switch(type2)
			{
				case 'xcode':
					code = code.replace(/\[b\]/gi, '<gras>', code);
					code = code.replace(/\[\/b\]/gi, '</gras>', code);
					code = code.replace(/\[u\]/gi, '<souligne>', code);
					code = code.replace(/\[\/u\]/gi, '</souligne>', code);
					code = code.replace(/\[i\]/gi, '<italique>', code);
					code = code.replace(/\[\/i\]/gi, '</italique>', code);
					code = code.replace(/\[img\]/gi, '<image>', code);
					code = code.replace(/\[\/img\]/gi, '</image>', code);
					code = code.replace(/\[url=(.*)\]/gi, '<lien vers="$1">', code);
					code = code.replace(/\[\/url\]/gi, '</lien>', code);
					code = code.replace(/\[email](.*)\[email\]/gi, '<courriel>$1</courriel>', code);
					code = code.replace(/\[quote=(.*)\]/gi, '<citation de="$1">', code);
					code = code.replace(/\[\/quote\]/gi, '</citation>', code);
					code = code.replace(/\[list\]/gi, '<liste>', code);
					code = code.replace(/\[\/list\]/gi, '</liste>', code);
					code = code.replace(/\[element\]/gi, '<element>', code);
					code = code.replace(/\[\/element\]/gi, '</element>', code);
					break;
				case 'zcode':
					code = code.replace(/\[b\]/gi, '<gras>', code);
					code = code.replace(/\[\/b\]/gi, '</gras>', code);
					code = code.replace(/\[u\]/gi, '<souligne>', code);
					code = code.replace(/\[\/u\]/gi, '</souligne>', code);
					code = code.replace(/\[i\]/gi, '<italique>', code);
					code = code.replace(/\[\/i\]/gi, '</italique>', code);
					code = code.replace(/\[img\]/gi, '<image>', code);
					code = code.replace(/\[\/img\]/gi, '</image>', code);
					code = code.replace(/\[url=(.*)\]/gi, '<lien url="$1">', code);
					code = code.replace(/\[\/url\]/gi, '</lien>', code);
					code = code.replace(/\[email](.*)\[email\]/gi, '<email nom="$1">$1</email>', code);
					code = code.replace(/\[quote=(.*)\]/gi, '<citation nom="$1">', code);
					code = code.replace(/\[\/quote\]/gi, '</citation>', code);
					code = code.replace(/\[list\]/gi, '<liste>', code);
					code = code.replace(/\[\/list\]/gi, '</liste>', code);
					code = code.replace(/\[element\]/gi, '<puce>', code);
					code = code.replace(/\[\/element\]/gi, '</puce>', code);
					break;
			}
			break;
		case 'xcode':
			switch(type2)
			{
				case 'bbcode':
					code = code.replace(/<gras>/gi, '[b]', code);
					code = code.replace(/<\/gras>/gi, '[/b]', code);
					code = code.replace(/<souligne>/gi, '[u]', code);
					code = code.replace(/<\/souligne>/gi, '[/u]', code);
					code = code.replace(/<italique>/gi, '[i]', code);
					code = code.replace(/<\/italique>/gi, '[/i]', code);
					code = code.replace(/<image>/gi, '[img]', code);
					code = code.replace(/<\/image>/gi, '[/img]', code);
					code = code.replace(/<lien vers="(.*)">/gi, '[url="$1"]', code);
					code = code.replace(/<\/lien>/gi, '[/url]', code);
					code = code.replace(/<courriel>(.*)<\/courriel>/gi, '[email]$1[/email]', code);
					code = code.replace(/<citation de="(.*)">/gi, '[quote="$1"]', code);
					code = code.replace(/<\/citation>/gi, '[/quote]', code);
					code = code.replace(/<liste>/gi, '[list]', code);
					code = code.replace(/<\/liste>/gi, '[/list]', code);
					break;
				case 'zcode':
					code = code.replace(/<:\)>/gi, ':)', code);
					code = code.replace(/<:D>/gi, ':D', code);
					code = code.replace(/<;\)>/gi, ';)', code);
					code = code.replace(/<:P>/gi, ':P', code);
					code = code.replace(/<:\(>/gi, ':(', code);
					code = code.replace(/<element>/gi, '<puce>', code);
					code = code.replace(/<\/element>/gi, '</puce>', code);
					code = code.replace(/<citation de="(.*)">(.*)<\/citation>/gi, '<citation nom="$1">$2</citation>', code);
					code = code.replace(/<lien vers="(.*)">(.*)<\/lien>/gi, '<lien url="$1">$2</lien>', code);
					code = code.replace(/<courriel>(.*)<\/mail>/gi, '<email nom="$1">$1</mail>', code);
					code = code.replace(/<gauche>(.*)<\/gauche>/gi, '<position valeur="gauche">$1</position>', code);
					code = code.replace(/<centre>(.*)<\/centre>/gi, '<position valeur="centre">$1</position>', code);
					code = code.replace(/<droite>(.*)<\/droite>/gi, '<position valeur="droite">$1</position>', code);
					code = code.replace(/<police type="(.*)">(.*)<\/police>/gi, '<police nom="$1">$2</police>', code);
					break;
			}
			break;
		case 'zcode':
			switch(type2)
			{
				case 'bbcode':
					code = code.replace(/<gras>/gi, '[b]', code);
					code = code.replace(/<\/gras>/gi, '[/b]', code);
					code = code.replace(/<italique>/gi, '[i]', code);
					code = code.replace(/<\/italique>/gi, '[/i]', code);
					code = code.replace(/<souligne>/gi, '[u]', code);
					code = code.replace(/<\/souligne>/gi, '[/u]', code);
					code = code.replace(/<image>/gi, '[img]', code);
					code = code.replace(/<\/image>/gi, '[/img]', code);
					code = code.replace(/<lien url="(.*)">/gi, '[url="$1"]', code);
					code = code.replace(/<\/lien>/gi, '[/url]', code);
					code = code.replace(/<email nom="(.*)">(.*)<\/email>/gi, '[email]$1[/email]', code);
					code = code.replace(/<citation nom="(.*)">/gi, '[quote="$1"]', code);
					code = code.replace(/<\/citation>/gi, '[/quote]', code);
					code = code.replace(/<liste>/gi, '[list]', code);
					code = code.replace(/<\/liste>/gi, '[/list]', code);
					break;
				case 'xcode':
					code = code.replace(/:\)/gi, '<:)>', code);
					code = code.replace(/:D/gi, '<:D>', code);
					code = code.replace(/;\)/gi, '<;)>', code);
					code = code.replace(/:P/gi, '<:P>', code);
					code = code.replace(/:\(/gi, '<:(>', code);
					code = code.replace(/<puce>/gi, '<element>', code);
					code = code.replace(/<\/puce>/gi, '</element>', code);
					code = code.replace(/<citation nom="(.*)">(.*)<\/citation>/gi, '<citation de="$1">$2</citation>', code);
					code = code.replace(/<lien url="(.*)">(.*)<\/lien>/gi, '<lien vers="$1">$2</lien>', code);
					code = code.replace(/<email nom="(.*)">(.*)<\/email>/gi, '<courriel>$1</courriel>', code);
					code = code.replace(/<position valeur="justifie">(.*)<\/position>/gi, '<gauche>$1</gauche>', code);
					code = code.replace(/<position valeur="gauche">(.*)<\/position>/gi, '<gauche>$1</gauche>', code);
					code = code.replace(/<position valeur="centre">(.*)<\/position>/gi, '<centre>$1</centre>', code);
					code = code.replace(/<position valeur="droite">(.*)<\/position>/gi, '<droite>$1</droite>', code);
					code = code.replace(/<police nom="(.*)">(.*)<\/police>/gi, '<police type="$1">$2</police>', code);
					break;
			}
			break;
	}
	document.forms[0].code2.value = code;
}
