////	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 browser 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  (id_element=>element cliqué / id_reference=>base de l'identifiant du box et du txt / style=> style du text désélectionné)
////
function check_txt_box(id_element, id_reference, style_select)
{
	if(style_select==undefined)  style_select = "lien_select";
	id_txt = "txt_"+id_reference;
	id_box = "box_"+id_reference;
	type_select = element(id_element).type;
	if(is_enabled(id_box)==true)
	{
		// Clique texte : bascule valeur checkbox  /  change couleur du text
		if(type_select!="checkbox")		{ set_check(id_box,"bascule"); }
		if (is_checked(id_box)==true)	{ element(id_txt).className = style_select; }
		else							{ element(id_txt).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)
{
	verif = new RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,5}$");
	return verif.test(mail);
}


////	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, width, height)
{
	if(nom==undefined)	nom = Math.floor(Math.random()*1000);
	if(width==undefined)	width = 50;
	if(height==undefined)	height = 50;
	window.open(adresse, nom, "width="+width+",height="+height+",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 D'UN DIV AVEC FADING
////
function afficher_dynamic(id_elem, type, afficher)
{
	if(afficher==undefined) {
		if(element(id_elem).style.display=="none")	{ afficher = true; }
		else										{ afficher = false; }
	}
	if(type==null || "show"){
		if(afficher==true)	{ $("#"+id_elem).slideDown(); }
		else				{ $("#"+id_elem).slideUp(); }
	}
	else if(type=="fade"){
		if(afficher==true)	{ $("#"+id_elem).fadeIn();  }
		else				{ $("#"+id_elem).fadeOut(); }
	}
}


////	AFFICHAGE OU MASQUAGE DU MENU D'ELEMENT
////
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";
	}
}


////	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(bulle.style.left.replace("px","")>1)		bulle.style.visibility = "visible";
	}

	////	S'il y a un message
	if(message!="")
	{
		////	Texte dans l'"infobulle"
		var bulle = element("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);
		element("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 = element(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();
}


////	VERIFIE SI C'EST UNE FICHIER "IMAGE"
////
function is_image(chemin_fichier)
{
	ext_img = extension(chemin_fichier);
	if(ext_img=="jpg" || ext_img=="jpeg" || ext_img=="jpe" || ext_img=="png" || ext_img=="gif" || ext_img=="bmp")	{ return true; }
	else																											{ return false; }
}


////	PAGE FANTOME IFRAME
////
function edit_iframe_popup(url)
{
	if(edition_popup==1)	{ popup(url); }
	else {
		afficher("page_fantome",true);
		// Récupère l'adresse actuelle de l'iframe
		var urlold = element("page_fantome_contenu_iframe").src;
		if(urlold!=undefined)	urlold = urlold.substring(urlold.lastIndexOf("/")+1);
		// Si c'est une autre adresse qui est demandée : on charge l'iframe
		if(urlold!=url)		element("page_fantome_contenu").innerHTML = "<iframe src=\""+url+"\" id=\"page_fantome_contenu_iframe\" style=\"width:60%;height:"+(element("page_fantome").offsetHeight-60)+"px;margin:30px;padding:0px;\" allowtransparency=\"true\" frameborder=\"0\">NO IFRAME</iframe>";
	}
}


////	REDIMENSION LA PAGE DANS UNE IFRAME OU UN POPUP
////
function resize_iframe_popup(width, height)
{
	iframe = window.parent.element("page_fantome_contenu_iframe");
	// Dans une iframe : change uniquement la largeur  /  Dans un popup : redimensionne tout
	if(window.location==iframe.src)		{ iframe.style.width = width+"px"; document.body.style.backgroundColor="transparent"; }
	else								{ window.resizeTo(width, height); }
}


////	URLENCODE POUR JAVASCRIPT
////
function urlencode(texte)
{
	texte = texte.replace('!', '%21');
	texte = texte.replace('"', '%22');
	texte = texte.replace('$', '%24');
	texte = texte.replace('%', '%25');
	texte = texte.replace('&', '%26');
	texte = texte.replace('\'', '%27');
	texte = texte.replace('(', '%28');
	texte = texte.replace(')', '%29');
	texte = texte.replace('*', '%2A');
	texte = texte.replace('+', '%2B');
	texte = texte.replace(',', '%2C');
	texte = texte.replace('/', '%2F');
	texte = texte.replace(':', '%3A');
	texte = texte.replace(';', '%3B');
	texte = texte.replace('?', '%3F');
	texte = texte.replace('\\', '%5C');
	texte = texte.replace('[', '%5B');
	texte = texte.replace(']', '%5D');
	texte = texte.replace('^', '%5E');
	texte = texte.replace('`', '%60');
	texte = texte.replace('{', '%7B');
	texte = texte.replace('|', '%7C');
	texte = texte.replace('}', '%7D');
	texte = texte.replace('~', '%7E');
	texte = texte.replace('=', '%3D');
	texte = texte.replace('£', '%A3');
	texte = texte.replace('§', '%A7');
	texte = texte.replace('@', '%40');
	texte = texte.replace('%20', '+');
	return texte;
}