// ---Affichage "Nom Page" et "Contenu Page"--------------------------------------------------------
/* Quelques commentaires relatif au code ci-dessous

new ActiveXObject(Microsoft.XMLHTTP)
------------------------------------
   Ce constructeur est pour Internet Explorer.

new XMLHttpRequest()
--------------------
   Ce constructeur est pour tout autre navigateur incluant Firefox.

xhr.onreadystatechange
-----------------------
  un traitement est associé (une fonction anonyme en l'occurrence) à cet indicateur d'évènement.

xhr.readyState == 4
--------------------
   L'état 4 signifie que la réponse est envoyée par le serveur et est disponible.

xhr.status == 200 
------------------  
   Ce status signifie ok, sinon un code d'erreur quelconque est envoyé, 404 par exemple.

xhr.open( "POST", "data.xml", true);
-------------------------------------
   - POST ou GET
   - url du fichier.
   - true pour asynchrone (false pour synchrone).

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
---------------------------------------------------------------------------
   Cette méthode s'utilise seulement avec POST.
*/	 

function aff_page(alias, method, md, prm){
	aliase = alias;  
	//alert(aliase);
	parm = prm;
	var mtd;	
	if (method == 1){ mtd="GET"; }		 	// Les paramètres sont transmis avec la fonction
	else if (method == 2){ mtd="POST"; } 	// Les paramètres sont transmis par une variables
	if (md == 1){ mode = true; } 			// Mode synchrone, le programme attend la réponse du serveur avant de continuer son exécution
	else if (md == 0){ mode = false; } 		// Mode asynchrone, le programme continue son exécution sans attendre la réponse du serveur   
	switch (aliase.substring(0,1)) {
		case "A": 	// Il s'agit d'une requête concernant une fonction d'administration.
		
		break;
		case "B":	// Il s'agit d'une requête concernant les boutons.
		
		break;
		case "B":	// Il s'agit d'une requête concernant les diaporamas flash.
		
		break;
		case "F":	// Il s'agit d'une requête concernant une fonction de formulaire. 
		
		break;
		case "G":	// Il s'agit d'une requête concernant une fonction du menu glissant. 
		
		break;
		case "P":	// Il s'agit d'une requête concernant une fonction d'affichage d'une page par le menu principal.
		case "S":	// Il s'agit d'une requête concernant une fonction d'affichage d'une page par le menu supérieur. 
		case "E":	// Il s'agit d'une requête concernant une fonction enchainée.
			// L'appel de cette fonction provoque une triple lecture :
			// celle du titre de la page et celle du contenu.
			// (voir les 3 requêtes "ajax" ci-dessous). 
			// document.getElementById("icontenu").innerHTML=document.getElementById("contenu").innerHTML;	
			// Les "Div" concernées sont "nomPage", "st_nomPage", "contenu".
			requete_ajx(mtd,"lire_contenu_page.php?alias='"+aliase+"'","contenuPage", mode, parm);  
		break;
		case "X":	// Il s'agit d'une requête concernant une fonction d'affichage d'une cible. 
					// La cible est définie dans la table "structsite" dans la base de données

		break;
		default: 
		break;
	} 
	//alert(mtd+" -1- "+aliase+" - "+mode+" - "+parm); 
}

// --- Objet "Nouvelle requête AJAX --------------------------------------------------------------
function new_xhr(){ 
	var xhr_object = null;
	if(window.XMLHttpRequest){ 	// Firefox et autres
	   xhr_object = new XMLHttpRequest(); 
	} 
	else if(window.ActiveXObject){ 	// Internet Explorer 
	   try {
           xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
           xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
       }
	}
	else { 	// XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur n'est pas compatible avec AJAX..."); 
	   xhr_object = false;	
	}
	return xhr_object;
}
 
// --- Requête Ajax proprement-dite --------------------------------------------------------------
 function requete_ajx(mtd, progr, idDiv, mode, parm){  
	// Dans cette fonction "mtd"= Méthode GET ou POST, 
	// "progr" programme du serveur sollicité (lire_titre_page?alias= ou lire_contenu_page?alias=), 
	// "idDiv" le contenaire DIV recevant le résultat de la requête, "mode = "asynchrone ou synchrone.
	//alert(progr+" -2- "+idDiv+" - "+mode);	
	var loadstatustext="<img src='images/chargt.gif' /> Contenu en cours de requête..."; 
	// "chargt.gif" est une image de patience indiquant que la requête est en cours.
	// Fonction qui engendre au niveau du serveur l'affichage du contenu de la page par la technique AJAX
	// Le remplacement à la volée s'effectue dans la section définie par l'ID "contenu".
	var xhr2 = new_xhr(); // un nouvel objet XmlHttpRequest est créé pour le contenu de la page affichée	 
	//alert(xhr2);
	if (xhr2){ 
		//if(aliase != 'X000'){	// Comptage des Hits Clicks pour les statistiques, l'affichage n'est donc pas modifié. 
		//alert(aliase.substr(3,1));
		//if(aliase.substr(3,1) != "f"){	
			//alert("ok");
			document.getElementById(""+idDiv+"").innerHTML = loadstatustext;
			// -------------------------------------------------------------
			xhr2.onreadystatechange = function(){
				//Si on a tout reçu et que le serveur est ok   
				if(xhr2.readyState == 4 && xhr2.status == 200){ 
					var reponse = xhr2.responseText.split("|||");
					// Le délimliteur pour les différentes parties de l'information est constitué par "|||"	
					// ***************************************************** 
					switch (aliase.substr(0,1)) {
						case "P": 	// Il s'agit d'une requête concernant une fonction d'affichage d'une page par le menu principal..
						case "S":	// Il s'agit d'une requête concernant une fonction d'affichage d'une page par le menu supérieur. 
						case "E":	// Il s'agit d'une requête concernant une fonction d'affichage d'une page par le menu supérieur. 
								var contenu = reponse[0];		// Contenu de la page transmis en premier par le serveur	
								var nomPage = reponse[1];		// Nom de la page lu en deuxième dans la chaîne transmise par le serveur
								var st_nomPage = reponse[2];	// Sous-titre de la page transmise en troisième par le serveur				
								//alert (reponse[1]+" - "+reponse[1]+" - "+reponse[2]+" - "+idDiv.lastIndexOf("ypto"));
								// --- fin vérification ------------------------   
								if (xhr2.responseText != ""){	
									//alert(xhr2.responseText);
									if(xhr2.getResponseHeader("Content-Type") == "text/xml"){
					    				document.getElementById(""+idDiv+"").innerHTML = xhr2.responseXML; 
					  				}
									else{
										//alert (xhr2.responseText);
					    				document.getElementById(""+idDiv+"").innerHTML = contenu;	 
										// Evaluation des scripts transmis au navigateur par le serveur via AJAX
										// Programmes utilisateurs : tous ceux qui fonctionnent en AJAX pour le compteur de Statistiques Xiti
										// Les 2 formulaires gérant l'accès aux domaines "administrateur" et "adhérent".
										var mesScripts = document.getElementById(""+idDiv+"").getElementsByTagName("script");
										//alert (mesScripts.length);
										for (var i = 0; i < mesScripts.length; i++) { 	
											if ( mesScripts[i].innerHTML != "" ){ 
												//alert(mesScripts[i].innerHTML);
												eval(mesScripts[i].innerHTML);	
											}
										}
					  				}
									// Les hauteurs réservées sont réduites à zéro s'il n'y a pas de titre ou de sous-titre sauf pour le cryptogramme
									// C'est pour cette raison que la chaine "ypto" est recherchée en position 2.
									if(nomPage != ""){ 
										document.getElementById("nomPage").style.height = 30+"px";
										document.getElementById("nomPage").innerHTML = nomPage;	
									} 
									else if (idDiv.lastIndexOf("crypto") != 0 && nomPage == "") {
										document.getElementById("nomPage").style.height = 0+"px";
									}	 
									if(st_nomPage != ""){ 
										document.getElementById("st_nomPage").style.height = 30+"px";
										document.getElementById("st_nomPage").innerHTML = st_nomPage;
									}
									else if (idDiv.lastIndexOf("crypto") != 0 && st_nomPage == "") {	
										document.getElementById("st_nomPage").style.height = 0+"px"; 
										document.getElementById("st_nomPage").innerHTML = "";
									} 
								}
							//}
						break;
						default:
						break;
					}
					// ***************************************************** 
				}
			// Ne pas enlever le point virgule derrière la parenthèse ci-dessous 
			};
			// -------------------------------------------------------------	
		//}
	}
	//alert(mtd+" -3- "+progr+" - "+mode+" - "+parm); 
	if ((mtd == "GET") && (parm != "null")){
		xhr2.open(mtd, progr, mode);	
		//alert(mtd+" -4- "+progr+"&"+parm+" - "+mode); 
	}
	xhr2.open(mtd, progr, mode);	
	if (mtd == "GET"){ 	
		xhr2.send(null);
	}
	else if (mtd == "POST"){ 
		var pdata =parm;  
		xhr2.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
		xhr2.send(pdata);  
	}
}
// -----------------------------------------------------------------------------------------------
// recherche des champs dans le formulaire et ajout de ceux-ci dans la variable POST de AJAX 
/*function getDataFromForm(form, ajaxObj) { // fonction principale
    var data= new Array();
    var key=0; 
	var currentValue = "";
    for (key=0; key < form.elements.length; key++) {
        switch(form.elements[key].type){
            case 'checkbox': currentValue = getValueFromChk(form.elements[key]);
             break;
            case 'radio': currentValue = getValueFromChk(form.elements[key]);
             break;
            default: currentValue = (Form.elements[key].tagName.toLowerCase() == "select")? getSelectValue(Form.elements[key]) : form.elements[key].value;
             break;
        }
        if(currentValue != undefined && currentValue != ''){
            // Ajout des valeurs dans la variable POST
            // ajaxObj.setVar (Nom de l'élément , Valeur de l'élément)
            ajaxObj.setVar (form.elements[key].name, currentValue);
        }
    }
}

// recherche des checkBox sélectionné
function getValueFromChk(obj) {
    if(obj.checked){
        return obj.value;
    }
	else{
        return '';
    }
}

// recherche des valeurs sélectionnés dans une liste déroulante
function getSelectValue(select) {
    var value="";
    for (var i=0; true; i++) {
        if (select[i]) {
            if (select[i].selected) {
                value += select[i].value + ",";
            }
        } 
		else {
            return value.substr(0, value.length-1);
        }
    }
}*/
// -----------------------------------------------------------------------------------------------
