
/*************************************************************
**	But : Changer un DIV en TEXTAREA
*************************************************************/
function setDivToEditMode(myObjectID,editModeEnabled)
{
	if (myObject = document.getElementById(myObjectID))
	{
		if (editModeEnabled == true) // si on veut transformer un DIV en TEXTAREA ( => masquage du div de display)
			show_displayDiv(myObjectID,false);
		else // si on veut transformer un TEXTAREA en DIV
		{
			// restauration du backup
			restoreBackup(myObjectID);
			// réaffichage du div de display
			show_displayDiv(myObjectID,true);
		}
	}
}

/*************************************************************
**	But : Affcher soit le div d'affichage, soit le div de textarea
*************************************************************/
function show_displayDiv(myObjectID,showed)
{
	if (showed == true) // si on veut afficher le div de display
	{
		document.getElementById(myObjectID).style.display = "none";
		document.getElementById(myObjectID + "-display").style.display = "block";
	}
	else // si on veut afficher le div de textarea
	{
		document.getElementById(myObjectID).style.display = "block";
		document.getElementById(myObjectID + "-display").style.display = "none";
	}
}

/*************************************************************
**	But : Restaurer le backup
*************************************************************/
function restoreBackup(myObjectID)
{
	var newContent = document.getElementById(myObjectID + "-backup").innerHTML;
	document.getElementById(myObjectID + "-textarea").value = newContent;
}

/*************************************************************
**	But : Remplacer les caracts qui ne passent pas à cause du AJAX
*************************************************************/
function replaceProhibitedCaracts(myString)
{
	myString = myString.replace(/&/gi,"%26");
	myString = myString.replace(/\+/gi,"%2B");
	return myString;
}
/*************************************************************
**	But : Lecture de fichiers et récuperaiton du contenu
*************************************************************/
function saveDiv(myObjectID)
{
	// sauvegarde des infos
	var content = document.getElementById(myObjectID + "-textarea").value;
	var id = document.getElementById(myObjectID + "-hidden").value;
	
	// remplacement des caractères interdits
	content = replaceProhibitedCaracts(content);
	
	var retour = executeFile("ajax/textZone_edit.php","m=" + content + "&id=" + id,"POST");
	// màj de la zone d'affichage
	document.getElementById(myObjectID + "-BR").innerHTML = retour;
	// màj du backup
	document.getElementById(myObjectID + "-backup").innerHTML = content;
	// réaffichage
	show_displayDiv(myObjectID,true);
}

/*************************************************************
**	But : Lecture de fichiers et récuperaiton du contenu
*************************************************************/
function executeFile(file,message,method)
{
	if(window.XMLHttpRequest) // FIREFOX
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // IE
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return(false);
	
	switch(method)
	{
		case "GET": // envoi par GET
			xhr_object.open("GET", file + "?" + message, false);
			xhr_object.send(null);
			break;
		case "POST": // envoi par POST
			xhr_object.open("POST", file, false);
			xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
			xhr_object.send(message);
			break;
		default: // simplement éxecuter le fichier
			xhr_object.open("GET", file, false);
			xhr_object.send(null);
			break;
	}
	
	if (xhr_object.readyState == 4)
		return(xhr_object.responseText);
	else
		return(false);
}

/*************************************************************
Fonctions de mise en forme de texte
*************************************************************/

/** But : ajouter un retour de chariot */
function add_br(idTextarea) { replaceText(idTextarea,"<br/>\n<br/>\n<br/>\n"); }
/** But : transformer en paragraphe */
function add_paragr(idTextarea)
{
	var selection = getSelection(idTextarea);
	var myString = "<p>" + selection + "</p>";
	replaceText(idTextarea,myString);
}
/** But : transformer en div */
function add_div(idTextarea)
{
	var selection = getSelection(idTextarea);
	var myString = '<div class="" id="">' + selection + '</div>';
	replaceText(idTextarea,myString);
}
/** But : Ajouter un lien */
function add_link(idTextarea)
{
	var selection = getSelection(idTextarea);
	var url;
	if (url = prompt("Entrez l'url à atteindre (avec le  http:// )",""))
	{
		var myString = '<a href="' + url +'" target="_blank">' + selection + '</a>';
		replaceText(idTextarea,myString);
	}
}
/** But : ajouter une image */
function add_img(idTextarea)
{
	var src;
	if (src	= prompt("Entrez l'url de l'image",""))
	{
		var myString = '<img src="' + src + '" alt=""/>';
		replaceText(idTextarea,myString);
	}
}
/** But : transformer en gras */
function add_bold(idTextarea)
{
	var selection = getSelection(idTextarea);
	var myString = "<b>" + selection + "</b>";
	replaceText(idTextarea,myString);
}
/** But : transformer en souligné */
function add_underlined(idTextarea)
{
	var selection = getSelection(idTextarea);
	var myString = "<u>" + selection + "</u>";
	replaceText(idTextarea,myString);
}
/** But : transformer en italique */
function add_italic(idTextarea)
{
	var selection = getSelection(idTextarea);
	var myString = "<i>" + selection + "</i>";
	replaceText(idTextarea,myString);
}


/*************************************************************
Fonctions très largement inspirées du tutorial de cgo2
http://www.the-asw.com/post/2007/02/20/70-position-du-curseur-dans-un-textarea
*************************************************************/
	/*************************************************************
	**	But : Récupèrer la sélection
	*************************************************************/
	function getSelection(idTextarea)
	{
		var txtArea = document.getElementById(idTextarea);
		if (txtArea.setSelectionRange)
			return txtArea.value.substring(txtArea.selectionStart, txtArea.selectionEnd);
		else
			if (document.selection)
			{
				txtArea.focus();
				return document.selection.createRange().text;
			}
	}
	/*************************************************************
	**	But : Remplacer le texte
	*************************************************************/
	function replaceText(idTextarea,myString)
	{
		var txtArea = document.getElementById(idTextarea);
		
		/** fonction de récuperation de la position de départ de la sélection */
		function getSelectionStart()
		{
			if ( typeof txtArea.selectionStart != 'undefined' )
				return txtArea.selectionStart;
			// IE Support
			txtArea.focus();
			var range = txtArea.createTextRange();
			range.moveToBookmark(document.selection.createRange().getBookmark());
			range.moveEnd('character', txtArea.value.length);
			return txtArea.value.length - range.text.length;
		}
		/** fonction de récuperation de la position de fin de la sélection */
		function getSelectionEnd()
		{
			if ( typeof txtArea.selectionEnd != 'undefined' )
				return txtArea.selectionEnd;
			// IE Support
			txtArea.focus();
			var range = txtArea.createTextRange();
			range.moveToBookmark(document.selection.createRange().getBookmark());
			range.moveStart('character', - txtArea.value.length);
			return range.text.length;
		}
		
		// récupération du contenu
		var start = getSelectionStart(txtArea);
		var stop = getSelectionEnd(txtArea);
		var end = txtArea.value.length;
		
		// reconstruction du contenu du textarea
		var content = txtArea.value.substring(0,start);
		content += myString;
		content += txtArea.value.substring(stop,end);
		
		// remplacement du contenu
		txtArea.value = content;
	}

