
// FONCTIONS POUR LE JEFF52CODE

function newWindow(url, winWidth, winHeight)
{
	window.open( url,'','toolbar=0, location=0, directories=0, status=0, scrollbars=yes, resizable=0, copyhistory=0, menuBar=0, width=' + winWidth + ', height=' + winHeight + ', left=200, top=75' );
}

var before = 240;

function edit_txt_height( id_textarea, increase, min, max) {
	var field = document.getElementById(id_textarea);

	before += Number(increase);
		if (before < min)
			before = min;
		if (before > max)
			before = max;
	
	new_val = before + "px";
	
	field.style.height = new_val;
	
	return false;
}

// Un peu d'ajax pour la prévisualisation en direct

function getXhr()
{
	var xhr;
	if(window.XMLHttpRequest || window.ActiveXObject)
	{
		if(window.XMLHttpRequest)
		{
			xhr = new XMLHttpRequest(); 
		}
		else
		{ // Internet Explorer <7
			try
			{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e)
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return;
	}
	
	return xhr;
}

function jeff52code_preview(textarea_id, preview_id, preferences)
{
	var xhr = getXhr();
	
 	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
		{
			document.getElementById(preview_id).innerHTML = xhr.responseText;
		}
		else //if(xhr.readyState == 2 || xhr.readyState == 3)
		{
			document.getElementById(preview_id).value = "&nbsp;";
			document.getElementById(preview_id).innerHTML = "<div class=\"jeff52code_loader\">Chargement<br /><img src=\"lib/jeff52code/jeff52code_images/ajax-loader.gif\" alt=\" \" /></div>";
		}
	}
	xhr.open("POST","lib/jeff52code/jeff52code.ajaxPrev.php",true); // (Utiliser la fonction encodeURIComponent() si la méthode est GET)
	xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	
	var message_content = document.getElementById(textarea_id).value;
	
	xhr.send("message_content="+encodeURIComponent(message_content)+"&preferences="+preferences);
}

// **********

if(navigator.appName == "Microsoft Internet Explorer") {
	msie = true;
}
else {
	msie = false;
}

function jeff52code_highlight(button, toggle_highlight)
{
	button.style.backgroundImage = "url('" + (toggle_highlight ? "lib/jeff52code/jeff52code_images/bouton_bg_hover.png')" : "lib/jeff52code/jeff52code_images/bouton_bg.png')");
	button.style.backgroundRepeat = "no-repeat";
}

if(msie)
{
	// IE ne "connaît pas" la methode setSelectionRange ... donc on crée une fonction pour la remplacer
	function setSelectionRange(input, selectionStart, selectionEnd)
	{
		if (input.setSelectionRange)
		{
			input.focus();
			input.setSelectionRange(selectionStart, selectionStart);
		}
		else if (input.createTextRange)
		{
			var range = input.createTextRange();
			range.collapse(true);
			range.moveEnd('character', selectionEnd);
			range.moveStart('character', selectionStart);
			range.select();
		}
	}
}

function tag(id_textarea, tag_start, tag_end)
{
	field = document.getElementById(id_textarea);
	var scroll = field.scrollTop;
	field.focus();
	
	if(msie) // Pour Internet Explorer
	{
		var range = document.selection.createRange();
		var selectionContent = range.text;
		
		range.text = tag_start + selectionContent + tag_end;
		
		if(selectionContent != "")
		{
			// On sélectionne le texte avec les tags ajoutés
				//setSelectionRange(field, POS_START, POS_END);
			range.moveStart("character", -tag_end.length - selectionContent.length - tag_start.length);
			range.moveEnd("character", -tag_end.length + tag_end.length);
		}
		else
		{
			// On positionne le curseur d'écriture entre les tags ajoutés
			range.moveStart("character", -tag_end.length - selectionContent.length);
			range.moveEnd("character", -tag_end.length);
		}
		
		range.select();
	}
	else // Pour les autres navigateurs
	{
		var start = field.value.substring(0, field.selectionStart);
		var middle = field.value.substring(field.selectionStart, field.selectionEnd);
		var end = field.value.substring(field.selectionEnd);
		
		field.value = start + tag_start + middle + tag_end + end;
		
		// On positionne le curseur d'écriture entre les tags ajoutés
		if(middle != 0)
			field.setSelectionRange(start.length, field.value.length - end.length); // On sélectionne le texte avec les tags ajoutés
		else
			field.setSelectionRange(start.length + tag_start.length, field.value.length - end.length - tag_end.length); // On ne sélectionne que le texte... pas les tags ajoutés
	}
	
	field.scrollTop = scroll;
	return false;
}


function tagOpener(id_textarea, tag_start, tag_end)
{
	field = opener.document.getElementById(id_textarea);
	var scroll = field.scrollTop;
	field.focus();
	
	if(msie) // Pour Internet Explorer
	{
		var range = opener.document.selection.createRange();
		var selectionContent = range.text;
		
		range.text = tag_start + selectionContent + tag_end;
		
		if(selectionContent != "")
		{
			// On sélectionne le texte avec les tags ajoutés
				//setSelectionRange(field, POS_START, POS_END);
			range.moveStart("character", -tag_end.length - selectionContent.length - tag_start.length);
			range.moveEnd("character", -tag_end.length + tag_end.length);
		}
		else
		{
			// On positionne le curseur d'écriture entre les tags ajoutés
			range.moveStart("character", -tag_end.length - selectionContent.length);
			range.moveEnd("character", -tag_end.length);
		}
		
		range.select();
	}
	else // Pour les autres navigateurs
	{
		var start = field.value.substring(0, field.selectionStart);
		var middle = field.value.substring(field.selectionStart, field.selectionEnd);
		var end = field.value.substring(field.selectionEnd);
		
		field.value = start + tag_start + middle + tag_end + end;
		
		// On positionne le curseur d'écriture entre les tags ajoutés
		if(middle != 0)
			field.setSelectionRange(start.length, field.value.length - end.length); // On sélectionne le texte avec les tags ajoutés
		else
			field.setSelectionRange(start.length + tag_start.length, field.value.length - end.length - tag_end.length); // On ne sélectionne que le texte... pas les tags ajoutés
	}
	
	opener.focus();
	
	field.scrollTop = scroll;
	return false;
}


function taginput(id_textarea, tag_name, question, answer, forceResponse)
{
	if(!answer || answer == null)
	 answer = "";
	 
	var request = prompt(question, answer);
	
	if(tag_name == "liste") // Traitement special pour créer les listes
	{
		var listContent = "";
		while(request != "" && request != null)
		{
			if(request != "" && request != null)
			{
				listContent += "<puce>" + request + "</puce>" + "\n";
			}
			request = prompt(question, answer);
		}
		
		var tag_start = "<" + tag_name + ">" + "\n" + listContent;
	}
	else // Sinon, pour les tags standard avec une valeur (syntaxe: <tagname="tagvalue">)
	{
		if((request == "" || request == null) && forceResponse)
		{
			alert("Aucune valeur n'a été entrée!");
			return false;
		}
		
		if(tag_name == "citer" && (request == "" || request == null)) // Traitement spécial pour les citations
			var tag_start = "<" + tag_name + ">";
		else if( (tag_name == "youtube" || tag_name == "dailymotion") ) // Traitement spécial pour les vidéos
			var tag_start = "<" + tag_name + ">" + request;
		else
			var tag_start = "<" + tag_name + "=\"" + request + "\">";
	}
	var tag_end = "</" + tag_name + ">";
	
	tag(id_textarea, tag_start, tag_end);
}

function Smileys(id_textarea, smilies)
{
	var myForm = document.getElementById( id_textarea );
	var scroll = myForm.scrollTop;
	
	if(document.selection) // Pour IE
	{
		myForm.focus();
		document.selection.createRange().text = ' ' + smilies + ' ';
		myForm.focus();
	}
	else if(myForm.selectionStart) // Pour Firefox
	{
		var pos_start = myForm.selectionStart;
		var str = myForm.value;
		
		myForm.value = str.substring(0, pos_start) + ' ' + smilies + ' ' + str.substring(myForm.selectionEnd, myForm.value.length);
		myForm.focus();
	}
	else // Pour les autres navigateurs
	{
		myForm.value += ' ' + smilies + ' ';
		myForm.focus();
	}
	
	myForm.scrollTop = scroll;
}

// FIN DES FONCTIONS POUR LE JEFF52CODE