////	CONTROLE DE LA VERSION DU NAVIGATEUR
////
if(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion <6 )
	alert("La version de votre navigateur est trop ancienne \nThe version of your navigator is too old");


////	ON SELECTIONNE L'ELEMENT PAR SON ATTRIBUT "ID" OU "NAME"
////
function element(id_name)
{
	if(document.getElementById(id_name)!=undefined)				{ return document.getElementById(id_name); }
	else if(document.getElementsByName(id_name)[0]!=undefined)	{ return document.getElementsByName(id_name)[0]; }
	else														{ return false; }
}


////	ON DONNE UNE VALEUR A UN ELEMENT
////
function set_value(id_elem, valeur)
{
	element(id_elem).value = valeur;
}


////	ON RECUPERE LA VALEUR D'UN ELEMENT
////
function get_value(id_elem)
{
	return element(id_elem).value;
}


////	VERIFIE L'EXISTANCE D'UN ELEMENT
////
function existe(id_elem)
{
	if (element(id_elem))	{ return true; }
	else					{ return false; }
}


////	SELECTION D'UNE CHECKBOX / RADIO
////
function set_check(id_elem, valeur)
{
	if(existe(id_elem))
	{
		if (valeur==true)			{ element(id_elem).checked = true; }
		else if (valeur==false)		{ element(id_elem).checked = false; }
		else if (valeur=="bascule")
		{
			if (element(id_elem).checked==true)	{ element(id_elem).checked = false; }
			else								{ element(id_elem).checked = true; }
		}
	}
}


////	CHECKBOX / RADIO SELECTIONNE ?
////
function is_checked(id_elem)
{
	if (existe(id_elem) && element(id_elem).checked==true)	{ return true; }
	else													{ return false; }
}


////	NB DE CHECKBOX SELECTIONNEES (TABLEAU)
////
function nb_box_checked(id_elem)
{
	var checked = 0;
	tab_checkbox = document.getElementsByName(id_elem);
	for(i=0; i<tab_checkbox.length; i++)	{ if(tab_checkbox[i].checked==true)	checked++; }
	return checked
}


////	BASCULEMENT D'UNE CHECKBOX ET DU STYLE DU TEXTE ASSOCIE
////
function txt_check(methode, id_input, id_text, style)
{
	if(is_enabled(id_input)==true)
	{
		if(style!=undefined)	style = "lien";
		// Si on clique sur un texte : on change la valeur de l'input
		if(methode=="txt")						{ set_check(id_input,"bascule"); }
		if(methode==true || methode==false)		{ set_check(id_input,methode); }
		// On change la couleur de l'input en fonction de la valeur de l'input
		if (document.getElementById(id_input).checked==true)	{ document.getElementById(id_text).className = "lien_select"; }
		else													{ document.getElementById(id_text).className = "lien"; }
	}
}


////	INPUT ACTIVE ?
////
function is_enabled(id_elem)
{
	if (element(id_elem).disabled==false)	{ return true; }
	else									{ return false; }
}


////	ACTIVATION / DESACTIVATION D'UN INPUT (checkbox...)
////
function enable(id_elem, valeur)
{
	if (valeur==true)	{ element(id_elem).disabled = false; }
	else				{ element(id_elem).disabled = true; }
}


////	AFFECTATION D'UN STYLE CSS A UN ELEMENT
////
function set_css(id_elem, class_css)
{
	element(id_elem).className = class_css;
}


////	VERIFICATION D'UNE CLASS CSS A UN ELEMENT
////
function css_verif(id_elem, class_css)
{
	if (element(id_elem).className==class_css)	{ return true; }
	else										{ return false; }
}


////	CONFIRMATION AVANT REDIRECTION
////
function confirmer(text_confirm, adresse)
{
	if(confirm(text_confirm))	redir(adresse);
}


////	DONNE UNE COULEUR A UN ELEMENT
////
function set_couleur(id_elem, valeur, methode)
{
	if (methode=="background")	{ element(id_elem).style.backgroundColor = valeur; }
	else						{ element(id_elem).style.color = valeur; }
}


////	CONTROLE D'UN MAIL
////
function controle_mail(mail)
{
	var arobase = false;
	var point = false;
	var positionArobase = -1;
	var positionPoint = -1;
	// On controle chaque caractere du champs mail (TRUE lorsqu'un "." et un "@" ont été détectés)
	for (var i=0; i <= mail.length; i++)
	{
	  if (mail.charAt(i) == "@")		{ arobase = true;  positionArobase = i; }
	  else if (mail.charAt(i) == ".")	{ point = true;    positionPoint = i; }
	}
	// Controle final du mail
	if ( (!arobase) || (!point) || (positionArobase > positionPoint) )	{ return false; }
	else																{ return true; }
}


////	CHANGEMENT D'UNE IMAGE
////
function change_img(id_elem, adresse_img)
{
	element(id_elem).src = adresse_img;
}


////	OUVERTURE D'UNE FENETRE
////
function popup(adresse, nom)
{
	if (nom==undefined)		nom = Math.floor(Math.random()*1000);
	window.open(adresse, nom, "width=50,height=50,left=100,top=100,scrollbars=yes,resizable=yes,directories=no,location=no,menubar=no,status=no,toolbar=no,dependent=yes");
}


////	REDIRECTION D'UNE PAGE
////
function redir(adresse)
{
	window.location.replace(adresse);
}


////	 CONTRÔLE DE CONNEXION À L'AGORA
////
function controle_connexion(text_alert, login, passord)
{
	if (get_value('login')=="" || get_value('login')==login || get_value('password')=="" || get_value('password')==passord)	{ alert(text_alert);  return false; }
}


////	AFFICHAGE OU MASQUAGE D'UN DIV (valeur=true/false/bascule | type_display=inline/block)
////
function afficher(id_elem, valeur, type_display)
{
	// INITIALISATION
	if(valeur==null)		valeur = "bascule";
	if(type_display==null)	type_display = "inline";
	objet = element(id_elem);

	// AFFICHE / MASQUE / BASCULE
	if(valeur==true)			{ objet.style.display = type_display; }
	else if(valeur==false)		{ objet.style.display = "none"; }
	else if(valeur=="bascule")	{
		if(objet.style.display==type_display)	{ objet.style.display = "none"; }
		else									{ objet.style.display = type_display; }
	}
}


////	AFFICHAGE OU MASQUAGE DU MENU FANTOME
////
function afficher_info_edit(id_elem, position_gauche)
{
	afficher(id_elem, true);
	if (element(id_elem).offsetWidth > 300)			{ element(id_elem).style.width = "300px"; }
	else if (element(id_elem).offsetWidth < 170)	{ element(id_elem).style.width = "170px"; }
	if (position_gauche=="1") {
		element(id_elem).style.width = "200px";
		element(id_elem).style.marginLeft = "-200px";
	}
}


////	AFFICHAGE OU MASQUAGE DU MENU FANTOME
////
function afficher_menu_fantome(display, id_contenu)
{
	if(display==false) {
		document.getElementById("page_fantome_contenu").innerHTML = "";
		afficher("page_fantome", false);
	}
	else {
		document.getElementById("page_fantome_contenu").innerHTML = document.getElementById(id_contenu).innerHTML;
		afficher("page_fantome", true, "block");
	}
}


////	INFOBULLE  &  INFOBULLE FIN
////
function bulle(message)
{
	////	On positionne l'infobulle
	function position_bulle(e)
	{
		//	Position de la souris
		posX = (navigator.appName.substring(0,3)=="Net") ? e.pageX : event.clientX+document.documentElement.scrollLeft;
		posY = (navigator.appName.substring(0,3)=="Net") ? e.pageY : event.clientY+document.documentElement.scrollTop;
		//	Repositionne l'infobulle si on est sur le bord de la page
		if(pageW < (posX + bulleW))	{ bulleX = posX - bulleW; }  // Si largeur page < (position souris + largeur bulle) :	position bulle = position souris - largeur bulle
		else						{ bulleX = posX; }
		if(pageH < (posY + bulleH))	{ bulleY = posY - bulleH; }  // Idem pour la hauteur
		else						{ bulleY = posY + 15; }
		//	On place l'infobulle
		bulle.style.left = bulleX + "px";
		bulle.style.top = bulleY + "px";
	}

	////	Affichage avec un temps de latence
	function affiche_bulle()
	{
		if(typeof bulleX!=undefined)	bulle.style.visibility = "visible";
	}

	////	S'il y a un message
	if(message!="")
	{
		////	Texte dans l'"infobulle"
		var bulle = document.getElementById("infobulle");
		bulle.innerHTML = "<div class='infobulle_contenu'>"+message+"</div>";
		////	Largeur/hauteur de la bulle & de la page
		bulleW = bulle.offsetWidth;
		bulleH = bulle.offsetHeight;
		pageW = document.documentElement.clientWidth;
		pageH = document.documentElement.clientHeight;
		if(pageW==0)	pageW = document.body.clientWidth;
		if(pageH==0)	pageH = document.body.clientHeight;
		////	Position() et Affichage() de l'infobulle
		document.onmousemove = position_bulle;
		timeoutID_bulle = window.setTimeout(affiche_bulle,300);
	}
}

function bullefin()
{
	if(typeof timeoutID_bulle!=undefined)
	{
		window.clearTimeout(timeoutID_bulle);
		document.getElementById("infobulle").style.visibility = "hidden";
		document.onmousemove = null;
	}
}


////	DRAG & DROP
////
function DragDrop(nom_calque)
{
	////	Function Drag_Div
	function Drag_Div(e)
	{
		//	Position de la souris
		posX = (navigator.appName.substring(0,3)=="Net") ? e.pageX : event.clientX+document.documentElement.scrollLeft;
		posY = (navigator.appName.substring(0,3)=="Net") ? e.pageY : event.clientY+document.documentElement.scrollTop;
		//	Initialisation : Différence entre la position du calque & de la souris
		if(Drag_actif == false)
		{
			divX_origine = calque.style.left;
			divY_origine = calque.style.top;
			diffX = divX_origine.replace("px","") - posX;
			diffY = divY_origine.replace("px","") - posY;
			Drag_actif = true;
		}
		//	On replace le calque par rapport aux mouvements de la souris
		else
		{
			calque.style.left = (posX+diffX)+"px";
			calque.style.top = (posY+diffY)+"px";
		}
	}

	////	Function Drop_Div
	function Drop_Div()
	{
		document.onmousemove = null;
	}

	////	Drag_Div() a chaque mouvement de souris & Drop_Div() quant la souris est relachée
	calque = document.getElementById(nom_calque);
	Drag_actif = false;
	document.onmousemove = Drag_Div;
	document.onmouseup = Drop_Div;
}


////	AJAX : FONCTION DE LANCEMENT D'UNE REQUETE XMLhttpRequest
////
function New_Http_Request(methode, page_requete, donnees)
{
	// On initialise l'objet
	var xhr_object = null;
	
	// XMLHttpRequest sous Firefox ou Internet Explorer
	if(window.XMLHttpRequest)		{ xhr_object = new XMLHttpRequest(); }
	else if(window.ActiveXObject)	{ xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
	
	// On lance la requete (true/false : asynchrone), on précise s'il s'agit d'un formulaire et on envoi les données si besoin
	xhr_object.open(methode, page_requete, false);
	if(methode=="POST")   { xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); }
	xhr_object.send(donnees);
	
	// On retourne le résultat
	if(xhr_object.readyState==4)    return Http_Request_Result = xhr_object.responseText;
}


////	RECUP' L'EXTENSION D'UN FICHIER
////
function extension(chemin_fichier)
{
	var tab_fichier = chemin_fichier.substring(chemin_fichier.lastIndexOf("\\")+1).split(".");
	if(tab_fichier.length > 0)	return tab_fichier[tab_fichier.length-1].toLowerCase();
}
