var timerPrev = 0;
var ptag=String.fromCharCode(5,6,7);

function bbcode(bbdebut, bbfin)
{
	var input = $('texte');
	input.focus();
	// IE
	if(typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = bbdebut + insText + bbfin;
		range = document.selection.createRange();
		if (insText.length == 0)
		{
			range.move('character', -bbfin.length);
		}
		else
		{
			range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
		}
		range.select();
	}
	// navigateurs plus récents: Firefox...
	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) + bbdebut + insText + bbfin + input.value.substr(end);
		var pos;
		if (insText.length == 0)
		{
			pos = start + bbdebut.length;
		}
		else
		{
			pos = start + bbdebut.length + insText.length + bbfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* pour les autres navigateurs comme Netscape... */
	else
	{
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos))
		{
			pos = prompt("insertion (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length)
		{
			pos = input.value.length;
		}
		var insText = prompt("Veuillez taper le texte");
		input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
	}
}
// Smilies
function smilies(img)
{
	$('texte').value += '' + img + '';
}
// parse le bbcode
function code_to_html(t) 
{
	t=nl2khol(t);
	// balise Gras
	t=deblaie(/(\[\/g\])/g,t);;
	t=remplace_tag(/\[g\](.+)\[\/g\]/g,'<span style="font-weight: bold;">$1</span>',t);  
	t=remblaie(t);

	// balise Italique
	t=deblaie(/(\[\/i\])/g,t);
	t=remplace_tag(/\[i\](.+)\[\/i\]/g,'<span style="font-style: italic;">$1</span>',t);  
	t=remblaie(t);

	// balise marge
	t=deblaie(/(\[\/marge\])/g,t);
	t=remplace_tag(/\[marge\](.+)\[\/marge\]/g,'<blockquote>$1</blockquote>',t);  
	t=remblaie(t);

	// balise code
	t=remplace_tag(/\[code\](.+)\[\/code\]/g,'<code>$1</code>',t);  

	// balise Img
	t=deblaie(/(\[\/img\])/g,t);
	t=remplace_tag(/\[img\](.+)\[\/img\]/g,'<img src="public/images/$1"/>',t);
	t=remblaie(t);

	// balise URL
	t=deblaie(/(\[\/url\])/g,t);
	t=remplace_tag(/\[url=([\s\S]*?)\](.+)\[\/url\]/g,'<a href="$1" target="_blank">$2</a>',t);
	t=remblaie(t);

	// balise ancre
	t=deblaie(/(\[\/ancre\])/g,t);
	t=remplace_tag(/\[ancre=([\s\S]*?)\]\[\/ancre\]/g,'<a name="$1" target="_blank"></a>',t);
	t=remblaie(t);

	// balise page
	t=deblaie(/(\[\/urlancre\])/g,t);
	t=remplace_tag(/\[urlancre=#([\s\S]*?)\]\[\/urlancre\]/g,'<a href="#$1" target="_blank">$2</a>',t);
	t=remblaie(t);


	// balise Citation
	t=deblaie(/(\[\/citation\])/g,t);
	t=remplace_tag(/\[citation=([\s\S]*?)\](.+)\[\/citation\]/g,'<span class="entete3">Citation : $1</span><div class="citation">$2</div>',t);  
	t=remblaie(t);

	// balise information
	t=deblaie(/(\[\/info\])/g,t);
	t=remplace_tag(/\[info\](.+)\[\/info\]/g,'<p class="info_msg">$1</p>',t);
	t=remblaie(t);

	// balise question
	t=deblaie(/(\[\/question\])/g,t);
	t=remplace_tag(/\[question\](.+)\[\/question\]/g,'<p class="question_msg">$1</p>',t);
	t=remblaie(t);
	// balise erreur
	t=deblaie(/(\[\/erreur\])/g,t);
	t=remplace_tag(/\[erreur\](.+)\[\/erreur\]/g,'<p class="erreur">$1</p>',t);
	t=remblaie(t);

	// balise attention
	t=deblaie(/(\[\/attention\])/g,t);
	t=remplace_tag(/\[attention\](.+)\[\/attention\]/g,'<p class="attention_msg">$1</p>',t);
	t=remblaie(t);

	// balise souligner
	t=deblaie(/(\[\/souligner\])/g,t);
	t=remplace_tag(/\[souligner\](.+)\[\/souligner\]/g,'<span style="text-decoration: underline;">$1</span>',t);
	t=remblaie(t);

	// balise barrer
	t=deblaie(/(\[\/barrer\])/g,t);
	t=remplace_tag(/\[barrer\](.+)\[\/barrer\]/g,'<strike>$1</strike>',t);
	t=remblaie(t);
	
	// balise clip video format mpeg
	t=deblaie(/(\[\/clip\])/g,t);
	t=remplace_tag(/\[clip=(.+):([\d]{3}):([\d]{3}):(0|1):(false|true\s)*\](.+)\[\/clip\]/g,'<img src="public/images/bt-clip.gif"  title="Clip non affichable en pévisualisation" class="tips cursor-help" alt="Clip" />',t);
	t=remblaie(t);
	
	// balise Color
	t=deblaie(/(\[\/color\])/g,t);
	t=remplace_tag(/\[color=(#[a-fA-F0-9]{6})\](.+)\[\/color\]/g,'<font color="$1">$2</font>',t);
	t=remblaie(t);

	// balise flottant gauche
	t=deblaie(/(\[\/flottant\])/g,t);
	t=remplace_tag(/\[flottant= gauche\](.+)\[\/flottant\]/g,'<div id="flottant_gauche">$1</div>',t);
	t=remblaie(t);

	// balise flottant droite
	t=deblaie(/(\[\/flottant\])/g,t);
	t=remplace_tag(/\[flottant= droite\](.+)\[\/flottant\]/g,'<div id="flottant_droite">$1</div>',t);
	t=remblaie(t);

	// balise police
	t=deblaie(/(\[\/police\])/g,t);
	t=remplace_tag(/\[police valeur= (.+)\](.+)\[\/police\]/g,'<span style="font-family: $1;">$2</span>',t);
	t=remblaie(t);

	// balise title1 //class titre deja prise on met title
	t=deblaie(/(\[\/title\])/g,t);
	t=remplace_tag(/\[title= 1\](.+)\[\/title\]/g,'<h2 class="align_center"><span class="cours_titre">$1</span></h2>',t);
	t=remblaie(t);

	// balise title2
	t=deblaie(/(\[\/title\])/g,t);
	t=remplace_tag(/\[title= 2\](.+)\[\/title\]/g,'<h2 class="entete">$1</h2>',t);
	t=remblaie(t); 

	// balise title3
	t=deblaie(/(\[\/title\])/g,t);
	t=remplace_tag(/\[title= 3\](.+)\[\/title\]/g,'<h3 class="titre_liste">$1</h3>',t);
	t=remblaie(t);
	
	// balise position
	t=deblaie(/(\[\/position\])/g,t);
	t=remplace_tag(/\[position valeur= (.+)\](.+)\[\/position\]/g,'<div style="text-align: $1;">$2</div>',t);
	t=remblaie(t);

	// balise taille
	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= ttgrand\](.+)\[\/taille\]/g,'<span class="xxlarge">$1</span>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= tgrand\](.+)\[\/taille\]/g,'<span class="xlarge">$1</span>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= grand\](.+)\[\/taille\]/g,'<span class="large">$1</span>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= ttpetit\](.+)\[\/taille\]/g,'<span class="xxsmall">$1</span>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= tpetit\](.+)\[\/taille\]/g,'<span class="xsmall">$1</span>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/taille\])/g,t);
	t=remplace_tag(/\[taille valeur= petit\](.+)\[\/taille\]/g,'<span class="small">$1</span>',t);
	t=remblaie(t);

	// liste à puce
	t=deblaie(/(\[\/liste\])/g,t);
	t=remplace_tag(/\[liste\](.+)\[\/liste\]/g,'<ul>$1</ul>',t);
	t=remblaie(t);

	t=deblaie(/(\[\/puce\])/g,t);
	t=remplace_tag(/\[puce\](.+)\[\/puce\]/g,'<li>$1</li>',t);
	t=remblaie(t);

	// liste à puce numérotée
	t=deblaie(/(\[\/listnum\])/g,t);
	t=remplace_tag(/\[listnum\](.+)\[\/listnum\]/g,'<ol>$1</ol>',t);
	t=remblaie(t);

	// balise table
	t=deblaie(/(\[\/tabeau\])/g,t);
	t=remplace_tag(/\[tableau\](.+)\[\/tableau\]/g,'<table class="forum">$1</table>',t);
	t=remblaie(t);

	// balise tr
	t=deblaie(/(\[\/ligne\])/g,t);
	t=remplace_tag(/\[ligne\](.+)\[\/ligne\]/g,'<tr>$1</tr>',t);
	t=remblaie(t);

	// balise td
	t=deblaie(/(\[\/colonne\])/g,t);
	t=remplace_tag(/\[colonne\](.+)\[\/colonne\]/g,'<td>$1</td>',t);
	t=remblaie(t);

	t=remplace_tag(/:D/g,'<img src="public/images/smiley/smile.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:pleure:/g,'<img src="public/images/smiley/pleure.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:soleil:/g,'<img src="public/images/smiley/soleil.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:rouge:/g,'<img src="public/images/smiley/rouge.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:heureux:/g,'<img src="public/images/smiley/heureux.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/;-D/g,'<img src="public/images/smiley/clin.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:nah:/g,'<img src="public/images/smiley/langue.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:haha:/g,'<img src="public/images/smiley/rire.gif" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:heu:/g,'<img src="public/images/smiley/unsure.gif" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:snif:/g,'<img src="public/images/smiley/triste.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:huh:/g,'<img src="public/images/smiley/huh.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:mechant:/g,'<img src="public/images/smiley/mechant.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:blink:/g,'<img src="public/images/smiley/blink.gif" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:hihi:/g,'<img src="public/images/smiley/hihi.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:ange:/g,'<img src="public/images/smiley/ange.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:magicien:/g,'<img src="public/images/smiley/magicien.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:ninja:/g,'<img src="public/images/smiley/ninja.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:waw:/g,'<img src="public/images/smiley/waw.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:pinch:/g,'<img src="public/images/smiley/pinch.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:diable:/g,'<img src="public/images/smiley/diable.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:siffle:/g,'<img src="public/images/smiley/siffle.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:pirate:/g,'<img src="public/images/smiley/pirate.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:zorro:/g,'<img src="public/images/smiley/zorro.png" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=remplace_tag(/:angry:/g,'<img src="public/images/smiley/angry.gif" alt="" />',t);
	t=remblaie(t);
	t=unkhol(t);
	t=nl2br(t);

	t=unkhol(t);
	t=nl2br(t);
	return t;
}
function deblaie(reg,t) 
{
	texte=new String(t);
	return texte.replace(reg,'$1\n');
}
function remblaie(t) 
{
	texte=new String(t);
	return texte.replace(/\n/g,'');
}
function remplace_tag(reg,rep,t) 
{
	texte=new String(t);
	return texte.replace(reg,rep);
}
function nl2br(t)
{
	texte=new String(t);
	return texte.replace(/\n/g,'<br />');
}
function nl2khol(t) 
{
	texte=new String(t);
	return texte.replace(/\n/g,ptag);

}
function unkhol(t) 
{
	texte=new String(t);	
	return texte.replace(new RegExp(ptag,'g'),'\n');
}


// liste à puce
function code(texte) {
	var i = 1;
	var question = prompt(
			"Saisis le texte de  cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
			"Puce " + i);
	var codepuce = "";
	while (question) {
		i++;
		if (question) {

			var puce = "[puce]" + question + "[/puce]\n";
			codepuce = "" + codepuce + "" + puce + "";
			var question = prompt(
					"Saisis le texte de cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
					"Puce" + i);
		} else {
			break;
		}
	}
	codepuce = "\n[liste]\n" + codepuce + "[/liste]";
	bbcode(codepuce, '');
}
// liste numerique
function code2(texte) {
	var i = 1;
	var question = prompt(
			"Saisis le texte de  cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
			"Puce " + i);
	var codepuce = "";

	while (question) {
		i++;
		if (question) {
			var puce = "[puce]" + question + "[/puce]\n";
			codepuce = "" + codepuce + "" + puce + "";
			question = prompt(
					"Saisis le texte de cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
					"Puce" + i);
		} else {
			break;
		}
	}
	codepuce = "\n[listnum]\n" + codepuce + "[/listnum]";
	bbcode(codepuce, '');
}
function list(texte) {
	var i = 1;
	var question = prompt(
			"Saisis le texte de  cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
			"Puce " + i);
	var codepuce = "";
	while (question) {
		i++;
		if (question)// si il clique sur ok
		{
			var puce = "[puce]" + question + "[/puce]\n";

			codepuce = "" + codepuce + "" + puce + "";
			question = prompt(
					"Saisis le texte de cette puce : (Si vous voulez arrêter, cliquez sur ANNULER) ",
					"Puce" + i);
		} else {
			break;
		}
	}
	codepuce = "\n[liste]\n" + codepuce + "[/liste]";
	bbcode(codepuce, '');
}

function tableau(texte) {
	
	var nb_ligne = 0;
	var nb_col = 0;
	var balise = '';
	nb_ligne = prompt('Tapez le nombre de ligne que contiendra le tableau :','Nombre de ligne');
	nb_col = prompt('Tapez le nombre de colonne que contiendra le tableau :','Nombre de colonne');
	for ( var i = 0; i < nb_ligne; i++) {
		balise += "[ligne]\n";
		var j;
		for (j = 1; j <= nb_col; j++) 
		{			
			var text_tab = prompt("Ligne:" + (i + 1)+ "\nTapez le texte de cette colonne : ", "Texte colonne "+ j);
			if (text_tab) 
			{
				balise += "[colonne]" + text_tab + "[/colonne]\n";
			} else 
			{
				break;
			}
		}
		balise += "[/ligne]";
	}
	var tab = "[tableau]" + balise + "[/tableau]";
	bbcode(tab, '');
}

function img(texte) {
	var question = "";
	question = prompt("Saisis le nom d'emplacement de l'image : ");
	if (question != null) {
		var puce = "[img]" + question;
	} else {
		puce = "[img]";
	}
	bbcode(puce, '[/img]');
}

function url(texte) {
	var lien = prompt("Saisis l'adresse du lien : ");
	var question = prompt("Saisis le texte du lien : ");
	if (lien == null) {
		var puce = "[url= null ]";
		if (question == null) 
		{
			puce += "null";
		}
	} else {
		puce = "[url=" + lien + "]" + question ;
	}
	bbcode(puce, '[/url]');
}
function clip(texte)
{
	var tag = "";
	var app = prompt("Saisis le type de l'application au choix:\n\r flash|wmv|avi|mpeg");
	var video = prompt("Saisis le chemin du clip");
	var w = prompt("Saisis la largeur");
	var h = prompt("Saisis la hauteur du clip");
	var autoStart = 0;
	var autoPlay = 'false';
	var type = '';
	switch(app)
	{
		case 'flash':
			 type =  'x-shockwawe-flash';
			break;
		case 'wmv':
			 type =  'video/x-ms-wmv';
			autoPlay = '';
			break;
		case 'avi':
			 type =  'video/x-msvideo';
			autoPlay = '';
			break;
		case 'mpeg':
			 type =  'video/mpeg';
			break;
	}
	if(h == null || h > 600) h = 200;
	if(w == null || w > 600) w = 150;
	if(app == null)
	{
		alert("Vous devez saisir le nom de l'application");
		app = prompt("Saisis le type de l'application au choix:\n\r flash|wmv|avi|mpeg");
	}
	else
	{
		if(video != null)
		{
			tag = "[clip="+type+":"+w+":"+h+":"+autoStart+":"+autoPlay+"]"+video;

		}
		else
		{
			tag = "[clip="+type+":"+w+":"+h+":"+autoStart+":"+autoPlay+"]";
		}	
	}
	bbcode(tag, '[/clip]');
}
function ad_ancre(texte) {
	var ancre = prompt("Saisis le nom de l'ancre : ");
	var alerte = alert("Laisser vide entre les balises ancre\net lier avec un lien de type:\n[url=#nom_ancre] [/url] ");
	if (ancre == null) {
		var puce = "[ancre= null ][/ancre]";
	} else {
		puce = "[ancre=" + ancre + "]";
	}
	bbcode(puce, '[/ancre]');
}
function citer(texte) {
	var auteur = "";
	auteur = prompt("Saisis l'auteur de la citation : ");
	if (auteur != null) {
		var puce = "[citation=" + auteur + "]";
	} else {
		puce = "[citation=null]";
	}
	bbcode(puce, '[/citation]');
}


function  previsualisation() {
	t = $('texte').value; 
	t = code_to_html(t);
	$("prev").set('html',t);
	if ($('auto').checked) 
		timerPrev = setTimeout(previsualisation,1);
}

function automatique() {
	if ($('auto').checked)
		previsualisation();
}
/**
 * BBCODE
 * 
 */
function smileyMenu()
{
	var delay = null;
	var open = true;
	var link = $('smile-menu');
	var fx = new Fx.Morph($('smile'), {duration: 800, transition: Fx.Transitions.linear});
	if(link)
	{
		link.addEvent('click', function(e){
			e.stop();
			open = !open;
			if(open)
			{
				fx.start({
					display: 'block',
					position: 'absolute',
					top: link.getPosition().y.toInt() -  100,
					left: link.getPosition().x.toInt() + link.getStyle('width').toInt() + 2,
					opacity: [0,1]
				});			
			}
			else
			{
				fx.start({
					display: 'none',
					opacity: [1, 0]
				});
			}		
		});
	
	}
}

function moreText()
{
	if($('texte'))
	{
		var more = $('more');
		var h = $('texte').getStyle('height').toInt();
		var less = $('less');
		if(more != undefined && less != undefined)
		{
			var fx = new Fx.Morph($('texte'),{duration:800,transition: Fx.Transitions.linear});
			//var prev = new  Fx.Morph($('prev'),{duration:800,transition: Fx.Transitions.linear});
			
			more.addEvent('click', function(){
				if(h < 150) h = 150;
				$('form').setStyle('display','block');
				fx.start({
					height : [h, h+=30]
				});
	//			prev.start({
	//				height : [h, h+=30]
	//			});
			});
			less.addEvent('click', function(){
				if(h >= 150)
				{
					fx.start({
						height : [h, h-=30]
					});
	//				prev.start({
	//					height : [h, h-=30]
	//				});
					
				}
			});	
		}
	}
}

