<!--

/**
 * Une simple fonction de test. 
 */
function alert_test(texte) {
	alert(texte);
}

/**
 * Comme son nom l'indique, pour ouvrir un popup.
 */
function ouvrir_popup(page, nom, option) {
	window.open(page, nom, option);
}


/**
 * Pour la liste déroulante des images. On insere le nom selectionné dans le textarea d'édition.
 */
function insertion_liste(liste) {
	
	i = liste.selectedIndex;
	if (i == 0) return;
	chainedeb = liste.options[i].value;
	insertion(chainedeb, '');
}

/**
 * Pour les boutons d'insertion. Insere le texte repdeb et repfin au début et a 
 * la fin du texte séléctionné.
 */
function insertion(repdeb, repfin, nom_textarea) {
	if (!nom_textarea) {
		nom_textarea = 'article';
	} 
	var input = document.forms['edit_page'].elements[nom_textarea];
	input.focus();
	/* pour l'Explorer Internet	*/
	if(typeof document.selection != 'undefined') {
		/* Insertion du code de formatage */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = repdeb + insText + repfin;
		/* Ajustement de la position du curseur	*/
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -repfin.length);
		} else {
			range.moveStart('character', repdeb.length + insText.length + repfin.length);
		}
		range.select();
	}
	/* pour navigateurs plus récents basés sur Gecko */
	else if(typeof input.selectionStart != 'undefined')
	{
		/* Insertion du code de formatage	*/
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
		/* Ajustement de la position du curseur	*/
		var pos;
		if (insText.length == 0) {
			pos = start + repdeb.length;
		} else {
			pos = start + repdeb.length + insText.length + repfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* pour les autres navigateurs	*/
	else
	{
		/* requête de la position d'insertion	*/
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
			pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length) {
			pos = input.value.length;
		}
		/* Insertion du code de formatage	*/
		var insText = prompt("Veuillez entrer le texte à formater:");
		input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	}
}

/**
 * Comme la fonction précédente, mais avec un parametre de décalage en plus qui permet de positionner le curseur
 * ou on le souhaite par rapport a la fin de la premiere balise.
 */
function insertion_dec(repdeb, repfin, decalage) {
	var input = document.forms['edit_page'].elements['article'];
	input.focus();
	/* pour l'Explorer Internet	*/
	if(typeof document.selection != 'undefined') {
		/* Insertion du code de formatage */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = repdeb + insText + repfin;
		/* Ajustement de la position du curseur	*/
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -repfin.length + decalage);
		} else {
			range.move('character', repdeb.length + decalage);
		}
		range.select();
	}
	/* pour navigateurs plus récents basés sur Gecko */
	else if(typeof input.selectionStart != 'undefined')
	{
		/* Insertion du code de formatage	*/
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
		/* Ajustement de la position du curseur	*/
		var pos;
		if (insText.length == 0) {
			pos = start + repdeb.length;
		} else {
			pos = start + repdeb.length + insText.length + repfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* pour les autres navigateurs	*/
	else
	{
		/* requête de la position d'insertion	*/
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
			pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length) {
			pos = input.value.length;
		}
		/* Insertion du code de formatage	*/
		var insText = prompt("Veuillez entrer le texte à formater:");
		input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	} 
}	

	/** 
	 * Cette partie de code gère les infobulles. 
	 */
	 
	function get_id(id) {
		return document.getElementById(id);
	}
	
	var estVisible = false; // La variable i nous dit si la bulle est visible ou non
	var global_text = '';		 // La variable global_text contient le texte à afficher en infobulle.
	var infobulle_largeur = 300;
	
	function move_info(e) {
		if(estVisible) {	// Si la bulle est visible, on calcul en temps reel sa position ideale
			if (global_text.length < 50) {
				infobulle_largeur = global_text.length * 6 + 20;
			} else {
				infobulle_largeur = 300;
			}
			if (navigator.appName != "Microsoft Internet Explorer") { // Si on n'est PAS sous IE
				get_id("curseur").style.left = e.pageX + 5+"px";
				get_id("curseur").style.top = e.pageY + 10+"px";
				if (e.pageX + 10 + infobulle_largeur < document.width) {
					get_id("curseur").style.width = infobulle_largeur + "px";
				} else {
					get_id("curseur").style.width = document.width - e.pageX - 10 + "px";
				}
			} else { // sous IE
				if (document.documentElement.clientWidth > 0) {
				//alert("x=" + event.x + " - y=" + event.y);
				//alert("x=" + event.clientX + " - y=" + event.clientY);
					get_id("curseur").style.left = 5 + event.clientX + document.documentElement.scrollLeft + "px";
					get_id("curseur").style.top = 10 + event.clientY + document.documentElement.scrollTop + "px";
					if (5 + event.clientX + infobulle_largeur < document.body.clientWidth) {
						get_id("curseur").style.width = infobulle_largeur + "px";
					} else {
						get_id("curseur").style.width= document.body.clientWidth - event.clientX - 5 + "px";
					}
				} else {
					// Gestion version ie.
					get_id("curseur").style.left = 5 + event.clientX + "px";
					get_id("curseur").style.top = 10 + event.clientY + document.body.scrollTop + "px";
					if (10 + event.clientX + infobulle_largeur < document.body.clientWidth) {
						get_id("curseur").style.width = infobulle_largeur + "px";
					} else {
						get_id("curseur").style.width= document.body.clientWidth - event.clientX - 10 + "px";
					}
				}
			}
		}
	}
	
	/**
	* Cette fonction rend l'infobulle visible. Cependant, dans la mesure ou l'infobulle s'affiche
	* apres un certain timeout, on verifie avant qu'il est toujours pertinent de l'afficher. 
	*/
	function doVisible() {
		document.onmousemove=move_info;
		if (estVisible == true) {
			get_id("curseur").innerHTML = global_text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
			get_id("curseur").style.visibility="visible"; // Si il est caché (la verif n'est qu'une securité) on le rend visible.
		}
	}
	
	/**
	* Cette fonction mets a jour le texte. Elle lancera également la fonction qui rend l'infobulle
	* visible apres un certain timeout.
	*/
	function show_info(text) {
		if(estVisible == false) {
				estVisible = true;
			global_text = text;
			setTimeout(function(){doVisible()},"700");
		}
	}

	/**
	* Cette fonction cache l'infobulle.
	*/
	function hide_info() { 
		if(estVisible == true) {
			get_id("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
			estVisible = false;
		}
	}
	document.onmousemove=move_info; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
//-->
