/*
Auteur : Forissier Pierrick

Cr&eacute;er le 14 f&eacute;vrier 2007
Modifi&eacute; le 15 aout 2007
*/

function GereControle(Controleur, Controle, Controle2, Controle3 ) {
var objControleur = document.getElementById(Controleur);
var objControle = document.getElementById(Controle);
var objControle2 = document.getElementById(Controle2);
var objControle3 = document.getElementById(Controle3);
objControle.disabled=(objControleur.checked==true)?false:true;
objControle2.disabled=(objControleur.checked==true)?false:true;
objControle3.disabled=(objControleur.checked==true)?false:true;
return true;	
}
function GereControle2(Controleur, Controle) {
var objControleur = document.getElementById(Controleur);
var objControle = document.getElementById(Controle);
objControle.style.visibility=(objControleur.checked==true)?'visible':'hidden';
}

var antiflood = false;	
var last = 0;

var smilies = new Array(':magicien:',':colere:',':diable:',':ange:',':ninja:','&gt;_&lt;',':pirate:',':zorro:',':honte:',':soleil:',':\'\\(',':waw:',':\\)',':D',';\\)',
			':p',':lol:',':euh:',':\\(',':o',':colere2:','o_O','\\^\\^',':\\-°');
var smilies_url = new Array('magicien.png','mechant.gif','diable.png','ange.png','ninja.png','pinch.png','pirate.png','zorro.png','rouge.png','soleil.png',
			'pleure.png','waw.png','smile.gif','heureux.gif','clin.gif','langue.gif','rire.gif','unsure.gif','triste.gif','huh.gif','angry.gif',
			'blink.gif','hihi.gif','siffle.gif');

	function storeCaret(id_textarea)
	{ 
	champ = document.getElementById(id_textarea);
		if (champ.createTextRange)
		champ.curseur = document.selection.createRange().duplicate();
	}
	
	function balise(balise_debut, balise_fin, id_textarea)
	{
	var champ = document.getElementById(id_textarea);
	var scroll = champ.scrollTop;
	
	if(balise_fin == '')
		balise_debut = ' ' + balise_debut + ' ';

		if (champ.curseur)
		{
		champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
		}
		else if (champ.selectionStart >= 0 && champ.selectionEnd >= 0)
		{
		var debut = champ.value.substring(0, champ.selectionStart);
		var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
		var fin = champ.value.substring(champ.selectionEnd);
		champ.value = debut + balise_debut + entre + balise_fin + fin;
		champ.focus();
		champ.setSelectionRange(debut.length + balise_debut.length, champ.value.length - fin.length - balise_fin.length);
		}
		else
		{
		champ.value  += balise_debut + balise_fin;
		champ.focus();
		}
	champ.scrollTop = scroll;
	}
	
	function parse(id_textarea, id_prev)
	{
		if (document.getElementById('activ_'+id_textarea).checked)
		{
		clearTimeout(last);
		last = setTimeout('parse2(\''+id_textarea+'\',\''+id_prev+'\')',100);
		antiflood = true;
		}
	}

	function parse2(id_textarea, id_prev)
	{
	var champ = document.getElementById(id_textarea);
	var div_prev = document.getElementById(id_prev);
	var contenu = champ.value;
	antiflood = false;
		if (document.body.scrollTop)
		var scroll = document.body.scrollTop;
		else
		var scroll = window.pageYOffset;

	contenu = contenu.replace(/&/g,'&amp;');

		if (champ.selectionStart != 'undefined' && !champ.curseur)
		{
		var pos = champ.selectionStart;
		contenu = remplace(remplace(contenu.substring(0, pos),'>','&gt;'),'<','&lt;') + '<a href="#" name="prev_ancre_suivi" id="prev_ancre_suivi"></a>' + 
		remplace(remplace(contenu.substring(pos),'>','&gt;'),'<','&lt;');
		}
		else
		contenu = remplace(remplace(contenu,'>','&gt;'),'<','&lt;');

	var reg = '';
		for (i=0;i<smilies.length;i++)
		{
		eval('reg = /(\\s|\\r|^|&gt;)'+smilies[i]+'(\\s|\\r|$|&lt;)/g');
		contenu = contenu.replace(reg, '$1<img src="/include/images/smileys/'+smilies_url[i]+'" alt="Smiley" class="smilies" />$2');
		}

	contenu = remplace(contenu, "\n", '<br />');
/*
	var re = /([\s\S]+)&lt;code&gt;([\s\S]*?)&lt;\/code&gt;([\s\S]+)/;
	var smil = '';
		while (tableau = re.exec(contenu))
		{
			for (i=0;i<smilies.length;i++)
			{
			smil = '';
				for (j=0;j<smilies[i].length;j++)
				smil += '&#'+smilies[i].charCodeAt(j)+';';
			tableau[2] = remplace(tableau[2], smilies[i], smil);
			}
		contenu = tableau[1]+'<br /><span class="code">Code</span><div class="code2">'+remplace(tableau[2],'&lt;', '&#60;')+'</div>'+tableau[3];
		}

	re = /([\s\S]+)&lt;code type=\"(actionscript|csharp|matlab|qbasic|ada|mpasm|smarty|apache|css|nsis|sql|asm|delphi|objc|vbnet|asp|diff|oobas|vb|bash|d|oracle8|vhdl|caddcl|html|pascal|visualfoxpro|cadlisp|java|perl|xml|c_mac|javascript|php-brief|c|lisp|php|cpp|lua|python)\"&gt;([\s\S]*?)&lt;\/code&gt;([\s\S]+)/;
		while (tableau = re.exec(contenu))
		{
			for (i=0;i<smilies.length;i++)
			{
			smil = '';
				for (j=0;j<smilies[i].length;j++)
				smil += '&#'+smilies[i].charCodeAt(j)+';';
			tableau[3] = remplace(tableau[3], smilies[i], smil);
			}
		contenu = tableau[1]+'<br /><span class="code">Code : '+tableau[2]+'</span><div class="code2">'+remplace(tableau[3],'&lt;', '&#60;')+'</div>'+tableau[4];
		}
*/	
 	contenu = contenu.replace(/\[gras\]([\s\S]*?)\[\/gras\]/g, '<b>$1</b>');
	contenu = contenu.replace(/&lt;titre1&gt;([\s\S]*?)&lt;\/titre1&gt;/g, '<h3>$1</h3>');
	contenu = contenu.replace(/&lt;titre2&gt;([\s\S]*?)&lt;\/titre2&gt;/g, '<h4>$1</h4>');
	contenu = contenu.replace(/\[souligne\]([\s\S]*?)\[\/souligne\]/g, '<span class="souligne">$1</span>');
	contenu = contenu.replace(/\[italique\]([\s\S]*?)\[\/italique\]/g, '<span class="italique">$1</span>');
	contenu = contenu.replace(/\[barre\]([\s\S]*?)\[\/barre\]/g, '<strike>$1</strike>');
	contenu = contenu.replace(/\[couleur nom="(orange|noir|marron|vertf|olive|marine|violet|bleugris|argent|gris|rouge|vertc|jaune|bleu|rose|turquoise|blanc)"\]([\s\S]*?)\[\/couleur\]/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/\[police nom="(arial|times|courrier|impact|geneva|optima)"\]([\s\S]*?)\[\/police\]/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/\[taille valeur="(ttpetit|tpetit|petit|gros|tgros|ttgros)"\]([\s\S]*?)\[\/taille\]/g, '<span class="$1">$2</span>');
	contenu = contenu.replace(/\[image\]([^"]*?)\[\/image\]/g, '<img src="$1" alt="Image" />');
	contenu = contenu.replace(/\[image2 url="([\s\S]*?)"\]([\s\S]*?)\[\/image2\]/g, '<a href="$1" target="_blank"><img src="$2"alt="Image" border="0" class="marges"/></a>');
	contenu = contenu.replace(/\[image2\]([^"]*?)\[\/image2\]/g, '<img src="$1"alt="Image" /></a>');
	contenu = contenu.replace(/\[position valeur="(gauche|droite|centre|justifie)"\]([\s\S]*?)\[\/position\]/g, '<div class="$1">$2</div>');
	contenu = contenu.replace(/\[flottant valeur="(gauche|droite)"\]([\s\S]*?)\[\/flottant\]/g, '<div class="flot_$1">$2</div>');
	contenu = contenu.replace(/\[lien\]([\s\S]*?)\[\/lien\]/g, '<a href="$1">$1</a>');
	contenu = contenu.replace(/\[lien url="([\s\S]*?)"\]([\s\S]*?)\[\/lien\]/g, '<a href="$1">$2</a>');
	contenu = contenu.replace(/\[lien2 url2="([\s\S]*?)"\]([\s\S]*?)\[\/lien2\]/g, '<a href="afficher_image.php?id=$1">$2</a>');
	contenu = contenu.replace(/\[email\]([\s\S]*?)\[\/email\]/g, '<a href="mailto:$1">$1</a>');
	contenu = contenu.replace(/\[email nom="([\s\S]*?)"\]([\s\S]*?)\[\/email\]/g, '<a href="mailto:$1">$2</a>');
	contenu = contenu.replace(/&lt;(information|attention|erreur|question)&gt;([\s\S]*?)&lt;\/\1&gt;/g, '<div class="rmq $1">$2</div>');
	contenu = contenu.replace(/\[liste\]\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*\[\/liste\]/g, '<ul>$2</ul>');
	contenu = contenu.replace(/\[liste type="(disque|cercle|rectangle|rien)"\]\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*\[\/liste\]/g, '<ul class="liste_$1">$3</ul>');
	contenu = contenu.replace(/\[liste type="([1iIaA])"\]\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*\[\/liste\]/g, '<ol class="liste_$1">$3</ol>');
	contenu = contenu.replace(/\[puce\]([\s\S]*?)\[\/puce\]\s*(<br \/>)?\s*/g, '<li>$1</li>');
	contenu = contenu.replace(/&lt;acronyme valeur="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/acronyme&gt;/g, '<acronym title="$1">$2</acronym>');

	var i = 0;
		while ((contenu.search(/\[citation nom=\"(.*?)\"\]([\s\S]*?)\[\/citation\]/g) != -1 || contenu.search(/\[citation\]([\s\S]*?)\[\/citation\]/g) != -1)
		&& i < 20)
		{
		contenu = contenu.replace(/\[citation nom=\"(.*?)\"\]([\s\S]*?)\[\/citation\]/g, '<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>');
		contenu = contenu.replace(/\[citation\]([\s\S]*?)\[\/citation\]/g, '<br /><span class="citation">Citation</span><div class="citation2">$1</div>');
		i++;
		}
	
	div_prev.innerHTML = contenu;
		if (document.getElementById('prev_ancre_suivi'))
		document.getElementById('prev_ancre_suivi').focus();
	document.getElementById(id_textarea).focus();
	}
	
	function remplace(data, search, replace)
	{
	var temp = data;
	var longueur = search.length;
		while (temp.indexOf(search) > -1)
		{
		pos = temp.indexOf(search);
		temp = (temp.substring(0, pos) + replace + temp.substring((pos + longueur), temp.length));
		}
	return temp;
	}
	
	function add_bal(nom, val, id_liste, id_textarea, id_prev)
	{
	bal = document.getElementById(id_liste).value;
		if (bal != '')
		balise('['+nom+' '+val+'="'+bal+'"]','[/'+nom+']', id_textarea);
		else
		balise('['+nom+']','[/'+nom+']', id_textarea);
	parse(id_textarea, id_prev);
		if (document.getElementById(id_liste))
		document.getElementById(id_liste).options[0].selected = true;
	}
	
	function add_bal2(nom, val, id_textarea, id_prev)
	{
	var texte = '';
		if (nom == 'citation')
		texte = 'Veuillez renseigner l\'auteur de la citation';
		else if (nom == 'lien')
		texte = 'Veuillez indiquer le lien';
                else if (nom == 'lien2')
		texte = 'Veuillez indiquer le num&eacute;ro d\'identifiant';               
		else if (nom == 'email')
		texte = 'Veuillez indiquer l\'email';
	bal = prompt(texte);
		if (!bal && nom == 'citation')
		bal = 'Pas de titre';
		if (bal)
		balise('['+nom+' '+val+'="'+bal+'"]','[/'+nom+']', id_textarea);parse(id_textarea, id_prev);
	
		if (document.getElementById(nom))
		document.getElementById(nom).options[0].selected = true;
	}
	
	function add_liste(id_textarea, id_prev)
	{
	var texte = '';
		while (tmp = prompt('Saisir le contenu d\'une puce (si vous voulez arreter ici, cliquez sur annuler)'))
		texte += '[puce]'+tmp+'[/puce]'+"\n";
	balise('[liste]'+"\n"+texte,'[/liste]', id_textarea);parse(id_textarea, id_prev);
	}

	function ouvrir_page(page,nom,x,y)
	{
		window.open(page,nom,'toolbar=yes,personalbar=yes,titlebar=yes,location=yes,directories=yes,width='+x+',height='+y+',scrollbars=yes,resizable=yes');
	}
	
	function switch_activ(textarea,prev)
	{
	div = document.getElementById(prev);
		if (document.getElementById('activ_'+textarea).checked == true)
		{
		div.style.display = 'block';
		storeCaret(textarea);
		parse(textarea,prev);
		}
		else
		div.style.display = 'none';
	}

	function request_apercu(url,data,dir)
	{
		if(callInProgress(xmlhttp))
		setTimeout('request_apercu("' + url + '","' + data + '","' + dir + '")',100);
		
		else
		{
		data = escape(data);
		data = remplace(data, '+','%2B');
		return Xsend('POST',url,'texte=' + data +'&dir=' + escape(dir),true);
		}
	}

	function full_preview(id_textarea, id_prev_final, dir)
	{
	var button = document.getElementById('lancer_apercu_' + id_textarea);
	
	button.disabled = true;
	
	request_apercu('index2.php',document.getElementById(id_textarea).value, dir);
	
	xmlhttp.onreadystatechange = function()
		{
		if (xmlhttp.readyState == 4)
			{
			if (xmlhttp.status == 200)
				document.getElementById(id_prev_final).innerHTML = xmlhttp.responseText;
			else
				document.getElementById(id_prev_final).innerHTML = an_error;
			}
		}
	
	button.disabled = false;
	}