// Fichier des fonctions JAVASCRIPT générales appelées dans toutes les pages du site

function fonction_antispam(domaine,adresse) { // fonction générant le lien "mailto" vers une adresse
	window.location.href="mailto:"+adresse+"@"+domaine;
}



function requete_ajax(racine_du_site, url_requete_get,objet) {
	
		visuel_chargement="<img src=\""+racine_du_site+"/modeles_graphiques/_defaut/_modele/cercle_de_progression_30px.gif\">";
		
		var req = null; 

		document.getElementById(objet).innerHTML=visuel_chargement;
		if(window.XMLHttpRequest)
			req = new XMLHttpRequest(); 
		else if (window.ActiveXObject)
			req  = new ActiveXObject("Microsoft.XMLHTTP"); 

		req.onreadystatechange = function()
		{ 
			document.getElementById(objet).innerHTML=visuel_chargement;
			if(req.readyState == 4)
			{
				if(req.status == 200)
				{	
					document.getElementById(objet).innerHTML = req.responseText;

				}	
				else	
				{
					document.getElementById(objet).innerHTML ="CODE ERREUR : " + req.status + " " + req.statusText;
				}	
			} 
		}; 
		req.open("GET", racine_du_site+url_requete_get, true); 
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		req.send(null); 
	
	
} // FIN function requete_ajax(url_requete_get,objet) 



// -----------------------------------------------------------------------------------------------------------------
// fonctions gérant le fondu des éléments : (éléments appraissant en fondu d'alpha - ex : cf. La Boheme)
// -----------------------------------------------------------------------------------------------------------------


function changeOpac(increment, id) {
    var object = document.getElementById(id).style;
    
	ancienne_opacite = object.opacity*100;
	nouvelle_opacite = ancienne_opacite+increment;
	
	if (nouvelle_opacite<0)   { nouvelle_opacite=0; }
	if (nouvelle_opacite>100) { nouvelle_opacite=100; }
	
	object.opacity = (nouvelle_opacite / 100);
    object.MozOpacity = (nouvelle_opacite / 100);
    object.KhtmlOpacity = (nouvelle_opacite / 100);
    object.filter = "alpha(opacity=" + nouvelle_opacite + ")";
	
	// on détermine si on arrète la boucle de changement d'opacité :
	if ((nouvelle_opacite==0) || (nouvelle_opacite==100)) {
		object.filter = "none"; // correction de bug d'affichage sous IE7.
		if (nouvelle_opacite==0) { // l'objet est complètement effacé, maintenant on le fait disparaitre
			object.display= "none";
		}
		return false; // fin de la boucle
	} else {
		return true; // on continue la boucle
	}
	
} // fin function changeOpac


function fondu_opacite_onclick(id, increment, millisec) {
	
	objet = document.getElementById(id);

	if(changeOpac(increment, id)) {
				setTimeout("fondu_opacite_onclick('" + id + "', " + increment + ", " + millisec + ")",millisec);
	} 
	
} // fin function fondu_opacite_onclick



function fondu_opacite_onmouseover(id, increment, millisec) {
	// dans cette fonction on prend en compte le fait que l'on peut sortir de la zone réactive avant la fin du fondu
	// on gère cette possibilité avec la propriété "color" de l'objet cible.
	
	
	objet = document.getElementById(id);

	condition_ok = (((increment>0) && (objet.style.color=='white')) || ((increment<0) && (objet.style.color=='black'))) // on vérifie si on doit continuer la boucle
	
	if(condition_ok && changeOpac(increment, id)) {
				setTimeout("fondu_opacite_onmouseover('" + id + "', " + increment + ", " + millisec + ")",millisec);
	} 
	
} // fin function fondu_opacite_onmouseover


// fonction affichant un objet masqué (en display=none) avec un fondu :
// ------------------------------------------------------------------------
function afficher_en_fondu(id) {
	
    var style_object = document.getElementById(id).style;
	nouvelle_opacite=0; // on met d'abord l'opacité de lo'bjet à zéro.
	
	style_object.opacity = (nouvelle_opacite / 100);
    style_object.MozOpacity = (nouvelle_opacite / 100);
    style_object.KhtmlOpacity = (nouvelle_opacite / 100);
    style_object.filter = "alpha(opacity=" + nouvelle_opacite + ")";
	
	document.getElementById(id).style.display='block'; // on affiche ensuite l'objet, qui reste invisible car opacité nulle.
		
	fondu_opacite_onclick(id, 5, 10);
}



// fonction masquant un objet affiché (en display=block) avec un fondu :
// ------------------------------------------------------------------------
function masquer_en_fondu(id) {
	
    var style_object = document.getElementById(id).style;
	nouvelle_opacite=100; // on met d'abord l'opacité de lo'bjet à zéro.
	
	style_object.opacity = (nouvelle_opacite / 100);
    style_object.MozOpacity = (nouvelle_opacite / 100);
    style_object.KhtmlOpacity = (nouvelle_opacite / 100);
    style_object.filter = "alpha(opacity=" + nouvelle_opacite + ")";
	
	document.getElementById(id).style.display='block'; // on affiche ensuite l'objet (qui est déjà affiché, normalement.
		
	fondu_opacite_onclick(id, -5, 10);
}

// fonction masquant un objet affiché (en display=block) SANS fondu :
// ------------------------------------------------------------------------
function masquer_sans_fondu(id) {
	document.getElementById(id).style.display='none';
}

// fonction affichant un objet masqué (en display=none) SANS fondu :
// ------------------------------------------------------------------------
function afficher_sans_fondu(id) {
	document.getElementById(id).style.display='block';
}


// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// fonctions gérant les valeurs indicatives dans des champs input de formulaire (text et password)
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------

// fonction qui remplace le texte par défaut par un champ vide sur le champ "login"
function gestion_focus_champ_formulaire(objet, action, valeur_par_defaut, classe_css_apres) {
	// valeurs possibles :
	// action = 'focus' ou 'blur'
	
	if ((action=='focus') && (objet.value==valeur_par_defaut)) {
			objet.value='';
			objet.className = classe_css_apres;
	}
	
	if ((action=='blur') && (objet.value=='')) {
			objet.value=valeur_par_defaut;
			objet.className = classe_css_apres;
	}
	
	
} // fin function gestion_focus_champ_formulaire


// fonction qui remplace le texte par défaut par un champ vide sur le champ "login"
function gestion_focus_champ_password(id_champ_defaut, id_champ_reel, action) {
	// valeurs possibles :
	// action = 'focus' ou 'blur'
	
	if (action=='focus') {
			document.getElementById(id_champ_defaut).style.display='none';
			document.getElementById(id_champ_reel).style.display='inline';
			document.getElementById(id_champ_reel).focus();
	}
	
	if ((action=='blur') && (document.getElementById(id_champ_reel).value.length==0)) {
			document.getElementById(id_champ_defaut).style.display='inline';
			document.getElementById(id_champ_reel).style.display='none';
	}
	
	
} // fin function gestion_focus_champ_formulaire



// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// fonctions gérant le défilement automatique des encarts résumés d'articles.
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------


var scroll_step_auto=1; // le PAS du défilement en mode AUTOMATIQUE
var scroll_step_manu=3; // le PAS du défilement en mode MANUEL (plus rapide)
var vitesse_defilement = 20; // paramètre de vitesse de défilement des encarts. Attention : peut varier d'un navigateur à l'autre !

function defilement_resumes(num_encart) {
	
	div_encart = document.getElementById('encart_articles_'+num_encart);
	objet = div_encart.getElementsByTagName("div")[0]; // on récupère la div qui scrolle.
	
	// d'abord on définit les valeurs limites du défilement :
	var hauteur_min = 0;
	var hauteur_max = objet.scrollHeight-(parseInt(objet.style.height.replace('px', '')));
	
	// ensuite on récupère les données courantes du défilement :
	var position = parseInt(div_encart.getElementsByTagName("input")[0].value); // position de l'encart
	var mode_actif = div_encart.getElementsByTagName("input")[1].value; // mode de défilement courant. Valeurs possibles : "AUTO", "MANUEL".
	var mouvement = div_encart.getElementsByTagName("input")[2].value; // Mouvement en cours. Valeurs possibles : "MARCHE", "ARRET".
	var sens_defilement = parseInt(div_encart.getElementsByTagName("input")[3].value); // sens de défilement courant de l'encart.  sens : 1 vers le bas, -1 on remonte vers le haut
	
	
	// ensuite on gère le déplacement de l'encart :
	//-----------------------------------------------------------
	
	if (mouvement=='MARCHE') {
	
		// on définit la vitesse de déplacement :
		if (mode_actif=="AUTO")
		{
			var step = scroll_step_auto;
		}
		else
		{
			var step = scroll_step_manu;
		}
	
		// on définit la nouvelle position :
		var nouvelle_position = position + (step*sens_defilement);
	
		// on gère les cas limites :
		if ( (sens_defilement==1) && (nouvelle_position>hauteur_max) )
		{
			nouvelle_position = hauteur_min;
		}
		
		if ( (sens_defilement==-1) && (nouvelle_position<hauteur_min) )
		{
			nouvelle_position = hauteur_max;
		}
		
		div_encart.getElementsByTagName("input")[0].value= nouvelle_position; // on affecte la nouvelle position dans le 1er input du formulaire caché
		
		// enfin, on fait défiler :
		objet.scrollTop = nouvelle_position; // on défile
	}
	
	// on relance la fonction :
	setTimeout("defilement_resumes("+num_encart+")",vitesse_defilement);

} // fin FUNCTION




function action_au_survol(num_encart,action) {
	
	div_encart = document.getElementById('encart_articles_'+num_encart);
	objet = div_encart.getElementsByTagName("div")[0]; // on récupère la div qui scrolle.
	
	// ensuite on récupère les données courantes du défilement :
	var mode_actif = div_encart.getElementsByTagName("input")[1].value; // mode de défilement courant. Valeurs possibles : "AUTO", "MANUEL".
	
	if (mode_actif=="AUTO") {
		div_encart.getElementsByTagName("input")[2].value = action; // on applique l'action au survol
	}
	
} // fin FUNCTION



function change_mode_defilement(num_encart) {

	div_encart = document.getElementById('encart_articles_'+num_encart);
	objet = div_encart.getElementsByTagName("div")[0]; // on récupère la div qui scrolle.
	
	// ensuite on récupère les données courantes du défilement :
	var position = parseInt(div_encart.getElementsByTagName("input")[0].value); // position de l'encart
	var mode_actif = div_encart.getElementsByTagName("input")[1].value; // mode de défilement courant. Valeurs possibles : "AUTO", "MANUEL".
	var mouvement = div_encart.getElementsByTagName("input")[2].value; // Mouvement en cours. Valeurs possibles : "MARCHE", "ARRET".
	var sens_defilement = parseInt(div_encart.getElementsByTagName("input")[3].value); // sens de défilement courant de l'encart.  sens : 1 vers le bas, -1 on remonte vers le haut


	if (mode_actif=='AUTO') {
		mode_actif='MANUEL';
		var mouvement = 'ARRET';
		
		// on affecte les valeurs dans le formulaire caché :
		div_encart.getElementsByTagName("input")[1].value= mode_actif; 
		div_encart.getElementsByTagName("input")[2].value= mouvement; 
		
	} else { 
	
		mode_actif='AUTO';
		var mouvement = 'MARCHE';
		var sens_defilement = 1;
		
		// on affecte les valeurs dans le formulaire caché :
		div_encart.getElementsByTagName("input")[1].value= mode_actif; 
		div_encart.getElementsByTagName("input")[2].value= mouvement; 
		div_encart.getElementsByTagName("input")[3].value= sens_defilement; 
		
	}
} // fin FUNCTION




function debut_defilement_manuel(num_encart,sens) {

	div_encart = document.getElementById('encart_articles_'+num_encart);
		
		// on affecte les valeurs dans le formulaire caché :
		div_encart.getElementsByTagName("input")[1].value = "MANUEL"; 
		div_encart.getElementsByTagName("input")[2].value = "MARCHE"; 
		div_encart.getElementsByTagName("input")[3].value = sens; 
		
} // fin FUNCTION



function arret_defilement_manuel(num_encart) {

	div_encart = document.getElementById('encart_articles_'+num_encart);
		
		// on affecte les valeurs dans le formulaire caché :
		div_encart.getElementsByTagName("input")[1].value = "MANUEL"; 
		div_encart.getElementsByTagName("input")[2].value = "ARRET"; 

} // fin FUNCTION



// --------------------------------------------------------------------------------------------------------------
// fonction gérant l'affichage du message d'alerte pour les opérations réservées aux membres connectés
function alerte_connexion_membres() {
	alert("Cette opération est réservée aux membres inscrits sur ce site.\nVeuillez vous identifier d'abord.");
} // fin function
// --------------------------------------------------------------------------------------------------------------


// --------------------------------------------------------------------------------------------------------------
// fonction qui récupère la valeur de défilement de la page (scroll vertical)
function scroll_page() {
	
	if (window.pageYOffset==undefined) {
        // propriété utilisée pour Internet Explorer et Firefox :
		valeur_scroll_page = document.documentElement.scrollTop;
	} else {
        // propriété utilisée pour Safari :
		valeur_scroll_page = window.pageYOffset;
	}
	
	return valeur_scroll_page;
} // fin function
// --------------------------------------------------------------------------------------------------------------


