var dateExt = new Date(2050,11,11);
dateExt = dateExt.toGMTString();

function get_http_object2() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject()) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return null;
	}
}

// =============================================
// Gérer les balises [secret][secret]
// =============================================
function parse_secret(this_element) {
	if(this_element.parentNode.childNodes[1].style.display == 'block') {
		this_element.parentNode.childNodes[1].style.display = 'none';
	}
	else {
		this_element.parentNode.childNodes[1].style.display = 'block';
	}
}
// # Gérer les balises [secret][secret]
// =============================================


// =============================================
// Faire clignoter du texte
// =============================================
if(document.getElementById && document.all) {
	var blink_visible = false;
	function emulate_blink() {
		var blink_doc = document.getElementsByTagName('blink');

		for(var i=0; i < blink_doc.length; i++) {
			if(blink_visible == true) {
				blink_doc[i].style.visibility = 'hidden';
				blink_visible = false;
				setTimeout('emulate_blink()', 250);
			}
			else {
				blink_doc[i].style.visibility = 'visible';
				blink_visible = true;
				setTimeout('emulate_blink()', 700);
			}
		}
	}

	window.onload = emulate_blink;
}
// # Faire clignoter du texte
// =============================================


// =============================================
// BBCODE
// =============================================
// agrandissement et rétrécissement des textareas / prevJS_
function resize_textarea(textarea, type_resize) {
	var nb_rows = document.getElementById(textarea).rows;
	var taille_px = (nb_rows * 16) + 20;
	var modif_rows = (nb_rows * 35) / 100;

	if(type_resize == '+') {
		var new_rows = nb_rows + modif_rows;
	}
	else {
		var new_rows = nb_rows - modif_rows;
	}

	if(new_rows < 10) {
		return false;
	}

	document.getElementById(textarea).rows = new_rows;
	return true;
}
// insérer une balise
function balise(bbdebut, bbfin, id_textarea) {
	var champ = document.getElementById(id_textarea);
	champ.focus();
	var scroll = champ.scrollTop;

	/* pour IE/Opéra ! (toujous un cas appar lui ;) )*/
	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();
	}
	/* pour les navigateurs plus récents que IE comme Firefox... */
	else if(typeof champ.selectionStart != 'undefined')
	{
		// var pour remise sur le texte
		var debut = champ.value.substring(0, champ.selectionStart);
		var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
		var fin = champ.value.substring(champ.selectionEnd);

		var start = champ.selectionStart;
		var end = champ.selectionEnd;
		var insText = champ.value.substring(start, end);
		champ.value = champ.value.substr(0, start) + bbdebut + insText + bbfin + champ.value.substr(end);
		var pos;
		if (insText.length == 0) {
			pos = start + bbdebut.length;
		}
		else {
			pos = start + bbdebut.length + insText.length + bbfin.length;
		}
		champ.selectionStart = pos;
		champ.selectionEnd = pos;
		champ.scrollTop = scroll;
		champ.setSelectionRange(debut.length + bbdebut.length, champ.value.length - fin.length - bbfin.length);
	}
	/* 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..' + champ.value.length + '):', '0');
		}
		if(pos > champ.value.length) {
			pos = champ.value.length;
		}
		var insText = prompt('Veuillez taper le texte');
		champ.value = champ.value.substr(0, pos) + bbdebut + insText + bbfin + champ.value.substr(pos);
	}
}
function add_bal(nom, val, id_liste, id_textarea) {
	var bal = document.getElementById(id_liste).value;

	if (bal != '')
		balise('['+nom+' '+val+'="'+bal+'"]','[/'+nom+']', id_textarea);

	if (document.getElementById(id_liste))
		document.getElementById(id_liste).options[0].selected = true;
}
function add_bal2(nom, val, id_textarea) {
	var texte = '';
	if (nom == 'citation')
		texte = 'Veuillez indiquer l\'auteur de la citation';
	else if (nom == 'lien')
		texte = 'Veuillez indiquer le lien';
	else if (nom == 'email')
		texte = 'Veuillez indiquer l\'email';

	var bal = prompt(texte);
	if (!bal && nom == 'citation') {
		balise('[citation]','[/citation]', id_textarea);
		return false;
	}
	if (bal)
		balise('['+nom+' '+val+'="'+bal+'"]','[/'+nom+']', id_textarea);

	return true;
}
function add_liste(id_textarea) {
	var texte = '';
	var i = 1;

	while( (reponse = prompt('Contenu de l\'élément de la liste n° ' + i)) != false) {
		texte += "\n" + '    [item]' + reponse + '[/item]';
		i++;
	}

	if (texte) {
		balise('[liste]' + texte + "\n" + '[/liste]','', id_textarea);
		return true;
	}
	else
		return false;
}
// BBCODE
// =============================================


// =============================================
// Prévisualisation en direct JS
// =============================================
function show_ajax(id_textarea) {
	if(document.getElementById('prev_ajax_' + id_textarea).style.display != 'none') {
		querying_server = true;
		document.getElementById('auto_ajax_' + id_textarea).checked = false;
		document.getElementById('prev_ajax_' + id_textarea).style.display = 'none';
	}
	else {
		querying_server = false;
		document.getElementById('auto_ajax_' + id_textarea).checked = true;
		document.getElementById('prev_ajax_' + id_textarea).style.display = 'block';

		// on libère le bouton
		document.getElementById('bouton_prevAJAX_' + id_textarea).value = 'Prévisualisation Finale';
		document.getElementById('bouton_prevAJAX_' + id_textarea).disabled = false;
	}

	return true;
}

var txt_prev_no_rpt = new Array();
function  previsualisation(id_textarea, change) {
	if(change == 1) {
		if(document.getElementById('prevJS_' + id_textarea).style.display == 'none') {
			document.getElementById('prevJS_' + id_textarea).style.display = 'block';
		}
		else {
			document.getElementById('prevJS_' + id_textarea).style.display = 'none';
		}
	}

	if(document.getElementById('prevJS_' + id_textarea).style.display == 'block') {
		var texte = document.getElementById(id_textarea).value;

		if(!txt_prev_no_rpt[id_textarea] || txt_prev_no_rpt[id_textarea] != texte) {
			txt_prev_no_rpt[id_textarea] = texte;

			texte = code_to_html(texte);
			document.getElementById('prevJS_' + id_textarea).innerHTML = texte;
		}

		setTimeout('previsualisation(\'' + id_textarea + '\', 0)', 150);
	}

	return true;
}
function code_to_html(t) {
	// sécurité !
	t = t.replace(/&/g, '&amp;')
	t = t.replace(/</g, '&lt;')
	t = t.replace(/>/g, '&gt;')
	t = t.replace(/"/g, '&quot;')

	// on met les sauts de ligne
	t = t.replace(/(\r\n|\n)/g, '<br />')

	// balise Flottant
	t = t.replace(/\[flottant valeur=&quot;(gauche|droite)&quot;\]/g, '<div class="flot_$1">')
	t = t.replace(/\[\/flottant\]/g, '</div>')

	// balise Position
	t = t.replace(/\[position valeur=&quot;(centre|gauche|droite|justifie)&quot;\]/g, '<div class="$1">')
	t = t.replace(/\[\/position\]/g, '</div>')

	// balise Police
	t = t.replace(/\[police nom=&quot;(Arial|Verdana|Trebuchet|Lucida|Impact|Courier|Comic)&quot;\]/g, '<span class="$1">')
	t = t.replace(/\[\/police\]/g, '</span>')

	// balise Couleur
	t = t.replace(/\[couleur nom=&quot;(orange|noir|marron|vertf|olive|marine|violet|bleugris|argent|gris|rouge|vertc|jaune|bleu|rose|turquoise|blanc)&quot;\]/g, '<span class="$1">')
	t = t.replace(/\[\/couleur\]/g, '</span>')
	// balise Taille
	t = t.replace(/\[taille valeur=&quot;(ttpetit|tpetit|petit|gros|tgros|ttgros)&quot;\]/g, '<span class="$1">')
	t = t.replace(/\[\/taille\]/g, '</span>')

	// balise Citation
	t = t.replace(/\[citation\]/g, '<div class="citationHead">Citation</div><div class="citation">')
	t = t.replace(/\[\/citation\]/g, '</div>')
	t = t.replace(/\[citation nom=&quot;([\s\S]{0,80})&quot;\]/g, '<div class="citationHead">Citation de "<span class="souligne">$1</span>"</div><div class="citation">')

	// balise Indent
	t = t.replace(/\[indent\]/g, '<div class="indenter">')
	t = t.replace(/\[\/indent\]/g, '</div>')

	// balise Gras
	t = t.replace(/\[gras\]/g, '<strong>')
	t = t.replace(/\[\/gras\]/g, '</strong>')

	// balise Italique
	t = t.replace(/\[italique\]/g, '<em>')
	t = t.replace(/\[\/italique\]/g, '</em>')

	// balise Souligner
	t = t.replace(/\[souligne\]/g, '<span class="souligne">')
	t = t.replace(/\[\/souligne\]/g, '</span>')

	// balise Barrer
	t = t.replace(/\[barre\]/g, '<strike>')
	t = t.replace(/\[\/barre\]/g, '</strike>')

	// balise Clignoter
	t = t.replace(/\[clignote\]/g, '<span style="text-decoration: blink;">')
	t = t.replace(/\[\/clignote\]/g, '</span>')

	// balise Image
	t = t.replace(/\[image\]([\s\S]*?)\[\/image\]/g, '<img src="$1" alt="Image" style="vertical-align: middle" />')

	// balise Titre1
	t = t.replace(/\[titre1\]/g, '<h2>')
	t = t.replace(/\[\/titre1\]/g, '</h2>')
	// balise Titre2
	t = t.replace(/\[titre2\]/g, '<h3>')
	t = t.replace(/\[\/titre2\]/g, '</h3>')

	// balise "Spéciales"
	t = t.replace(/\[question\]/g, '<div class="rmq question">')
	t = t.replace(/\[\/question\]/g, '</div>')
	t = t.replace(/\[attention\]/g, '<div class="rmq attention">')
	t = t.replace(/\[\/attention\]/g, '</div>')
	t = t.replace(/\[information\]/g, '<div class="rmq information">')
	t = t.replace(/\[\/information\]/g, '</div>')
	t = t.replace(/\[erreur\]/g, '<div class="rmq erreur">')
	t = t.replace(/\[\/erreur\]/g, '</div>')

	// balise Liste
		t = t.replace(/\[liste type=(1|i|I|a|A|rond|cercle|carre|aucun)]<br \/>/g, '[liste type=$1]')
		t = t.replace(/\[liste]<br \/>/g, '[liste]')
		t = t.replace(/\[\/item]<br \/>/g, '[/item]')
	t = t.replace(/\[liste\]/g, '<ul>')
	t = t.replace(/\[\/liste\]/g, '</ul>')
		t = t.replace(/\[liste type=1\]/g, '<ul style="list-style-type: decimal">')
		t = t.replace(/\[liste type=i\]/g, '<ul style="list-style-type: lower-roman">')
		t = t.replace(/\[liste type=I\]/g, '<ul style="list-style-type: upper-roman">')
		t = t.replace(/\[liste type=a\]/g, '<ul style="list-style-type: lower-alpha">')
		t = t.replace(/\[liste type=A\]/g, '<ul style="list-style-type: upper-alpha">')
		t = t.replace(/\[liste type=rond\]/g, '<ul style="list-style-type: disc">')
		t = t.replace(/\[liste type=cercle\]/g, '<ul style="list-style-type: circle">')
		t = t.replace(/\[liste type=carre\]/g, '<ul style="list-style-type: square">')
		t = t.replace(/\[liste type=aucun\]/g, '<ul style="list-style-type: none">')
	t = t.replace(/\[item\]/g, '<li>')
	t = t.replace(/\[\/item\]/g, '</li>')

	// balise Lien
	t = t.replace(/\[lien url=&quot;([\s\S]*?)&quot;\]([\s\S]*?)\[\/lien\]/g, '<a href="$1" onclick="window.open(this); return false;">$2</a>')
	t = t.replace(/\[lien\]([\s\S]*?)\[\/lien\]/g, '<a href="$1" onclick="window.open(this); return false;">$1</a>')

	// balise Email
	t = t.replace(/\[email\]([\s\S]*?)\[\/email\]/g, '<a href="maito:$1">$1</a>')
	t = t.replace(/\[email adresse=&quot;([\s\S]*)&quot;\]/g, '<a href="maito:$1">')
	t = t.replace(/\[\/email\]/g, '</a>')

	// balise Tableau
	t = t.replace(/\[tableau\]/g, '<table class="tableau">')
	t = t.replace(/\[\/tableau\]/g, '</table>')
		t = t.replace(/<table>\n<br \/>\n/g, '<table class="tableau"yy>')
		/**/
	t = t.replace(/\[ligne]/g, '<tr>')
	t = t.replace(/\[\/ligne]/g, '</tr>')
		t = t.replace(/<tr>\n<br \/>\n/g, '<tr>')
		t = t.replace(/<\/tr>\n<br \/>\n/g, '</tr>')
		/**/
	t = t.replace(/\[entete\]/g, '<th>')
	t = t.replace(/\[\/entete\]/g, '</th>')
		t = t.replace(/<th>\n<br \/>\n/g, '<th>')
		t = t.replace(/<\/th>\n<br \/>\n/g, '</th>')
	t = t.replace(/\[entete fusion_lig=([0-9]*)\]/g, '<th colspan="$1">')
	t = t.replace(/\[entete fusion_col=([0-9]*)\]/g, '<th rowspan="$1">')
	t = t.replace(/\[entete fusion_col=([0-9]*) fusion_lig=([0-9]+)\]/g, '<th rowspan="$1" colspan="$2">')
		/**/
	t = t.replace(/\[cellule\]/g, '<td>')
	t = t.replace(/\[\/cellule\]/g, '</td>')
		t = t.replace(/<td>\n<br \/>\n/g, '<td>')
		t = t.replace(/<\/td>\n<br \/>\n/g, '</td>')
	t = t.replace(/\[cellule fusion_lig=([0-9]*)\]/g, '<td colspan="$1">')
	t = t.replace(/\[cellule fusion_col=([0-9]*)\]/g, '<td rowspan="$1">')
	t = t.replace(/\[cellule fusion_col=([0-9]*) fusion_lig=([0-9]+)\]/g, '<td rowspan="$1" colspan="$2">')
		/**/
	//encore des remplacements pour Opéra ^^
	t = t.replace(/<br \/>    <tr>/g, '<tr>')
	t = t.replace(/<br \/>    <\/tr>/g, '</tr>')
	t = t.replace(/<br \/>        <td>/g, '<td>')
	t = t.replace(/<br \/><\/table>/g, '</table>')

	// smilies
	var url_smilies = 'http://www.web-modules.net/';
	var style_smilies = 'style="vertical-align: middle"';

	t = t.replace(/( |^|<br \/>):faché:( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/angry.png" alt=":faché:" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):content:( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/biggrin.png" alt=" :content: " style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>)o_O( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/blink.png" alt="o_O" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>)\^\^( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/happy.png" alt="^^" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):D( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/laugh.png" alt=":D" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):oh:( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/ohmy.png" alt=":oh:" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):\(( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/sad.png" alt=":(" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):\)( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/smile.png" alt=":)" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):p( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/tongue.png" alt=":p" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>):\?( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/unsure.png" alt=":?" style="vertical-align: middle" />$2')
	t = t.replace(/( |^|<br \/>);\)( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/wink.png" alt=";)" style="vertical-align: middle"( |$)/>$2')
	t = t.replace(/( |^|<br \/>):love:( |$|<br \/>)/g, '$1<img src="' + url_smilies + 'design/smilies/wub.png" alt=":love:" ' + style_smilies + ' />$2')

	// fin du code
	return t
}
// Prévisualisation en direct JS
// =============================================


// =============================================
// Prévisualisation en direct AJAX
// =============================================
var querying_server = false;
function prevBBcode_ajax(textarea) {
	// récupération du texte
	var texte = document.getElementById(textarea).value;

	// a t'on au moins du texte à envoyer ??
	if(texte == '') {
		document.getElementById('prevAJAX_' + textarea).innerHTML = '';
		return false;
	}

	// questionnement en cours ...
	if(querying_server == true) {
		return false;
	}

	/* XMLHttpRequest */
	var xhr = get_http_object2();

	// on bloque le bouton
	var valeur_original = document.getElementById('bouton_prevAJAX_' + textarea).value;
	document.getElementById('bouton_prevAJAX_' + textarea).value = 'Communication avec le serveur en cours ...';
	document.getElementById('bouton_prevAJAX_' + textarea).disabled = true;

	// on continu le script
	xhr.open('POST','external/bbcode/see.php',true);
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && xhr.status == 200) {
			// plus de questionnement
			querying_server = false;

			// injection du texte parser dans la page HTML
			document.getElementById('prevAJAX_' + textarea).innerHTML = xhr.responseText;

			// on libère le bouton
			document.getElementById('bouton_prevAJAX_' + textarea).value = valeur_original;
			document.getElementById('bouton_prevAJAX_' + textarea).disabled = false;
		}
	}

	//envoye du texte
	xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	var data = 'texte='+escape(Utf8.encode(texte));
	xhr.send(data);

	return true;
}
function prevBBcode_ajax_eff(textarea) {
	document.getElementById('prevAJAX_' + textarea).innerHTML = '';
	return true;
}
// Prévisualisation en direct AJAX
// =============================================
