/* Fonction pour créer le XMLHttpRequest (Parce que sur explorer il faut faire différement) */
function getXMLHttpRequest() {
	var xhr = null;
	
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur web ne supporte pas cette fonctionnalité du site. Téléchargez la version la plus récente de Firefox pour des résutats optimaux. ");
		return null;
	}
	
	return xhr;
}

/* fonction request
	Objectif : 	Exécuter une fonction requérant des informations fournies par un XMLhttprequest
	Méthode : 	XMLhttprequest qui fait appel à la page live.php et qui exécute la fonction PHP demandée sur cette page, en cachette. 
				L'information nous revient ensuite sous format XML et la fonction request exécute la fonction javascript demandée
				pour traiter le XML reçu.
	Besoins : 	idreq, adresse, idasso
	Connus :	Aucune
	Entrées : 	idreq, adresse, idasso
	Sorties : 	Aucune
	Résultats : Afficher l'image de loading associée, le temps de la xmlhttprequest
				Effacer le lien associé, s'il existe
				Tous les résultats découlant de la fonction JS associée
	Hypothèse :	idreq est l'id du duo fonction php / fonction js qu'on souhaite exécuter, entier >= 1
				adresse contient les variables qu'on entre dans la fonction php (par $_GET), forme de variable1=blabla&variable2=blabla etc.
				idasso est l'id associé à cet appel précis de la fonction request.				

*/

function request(idreq, adresse, idasso) { 
 /* alert(adresse);  (pour déboguer) */
	var xhr = getXMLHttpRequest();
	var lolo = 'load' + idasso; // lolo : ID du bloc contenant l'image de loading des informations.
	var lili = 'lien' + idasso; // lili : 
	if(document.getElementById(lili)) {
		document.getElementById(lili).style.display = "none";
		}
	mafonk = new Array('', afficher, like, attending, actucalendrier, avislus, checkIDUL); /* C'est la fonction qu'on souhaite exécuter selon le ID de la requête ajax (idreq) */
	var mafonc = mafonk[idreq];
	xhr.onreadystatechange = function() { /* Quand le "readystate" de notre élément xhr change, on exécute cette fonction (si j'ai bien compris le fonctionnement) */
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { /* La requête Ajax s'est bien exécutée */
			if (document.getElementById(lolo))
			{
			document.getElementById(lolo).style.display = "none"; /* On cache l'image du loader */	
			}
			mafonc(xhr.responseXML, idasso); /* On exécute la fonc JS de traitement de l'XML reçu */
			}
		else
		{ 	if (document.getElementById(lolo))
			{ document.getElementById(lolo).style.display = "block"; }
		}			/* Ajax pas terminé, on affiche le loader. */
			
	}
	
	adresse2 = 'Functions/Ajax/live.php?req=' + idreq + '&' + adresse; /* Adresse par laquelle on envoie nos informations */
  	/*  alert(adresse2); pour le débogage*/
	xhr.open("GET", adresse2, true); /* On ouvre la requête AJAX */
	xhr.send(null);

}

/* Pour les éditions d'annonces dans les livres usagés / d'articles de forum */
/* Request AJAX 1 */
function afficher(XML, idasso) {
	colonne=XML.getElementsByTagName('COLONNE')[0].firstChild.nodeValue;
	
	if (XML.getElementsByTagName('SORTIE')[0].childNodes.length == 0)
	{ sortie = '.'; }
	else
	{ sortie=XML.getElementsByTagName('SORTIE')[0].firstChild.nodeValue; }


	document.getElementById(idasso + '1').style.display = 'block';
	document.getElementById(idasso + '2').style.display = 'none';
	if (idasso == 'prix')
	{ sortie = sortie + ' $'; }
	document.getElementById(idasso + '1').innerHTML = sortie;
}

/* Request AJAX 2 */
function like(XML, idasso) {
	action = XML.getElementsByTagName('action')[0].firstChild.nodeValue;
	
	if (action == 'like')
	{ newtext = 'Je n\'aime plus'; }
	else
	{ newtext = 'J\'aime'; }
	total=XML.getElementsByTagName('total')[0].firstChild.nodeValue;
	
	if (total != 0) 
	{
	document.getElementById('nblike' + idasso).innerHTML = '+ ' + total;
	document.getElementById('nblike' + idasso).style.display = 'block';
	}
	document.getElementById('lien' + idasso).innerHTML = newtext;
	document.getElementById('lien' + idasso).style.display = 'inline';
}

/* Request AJAX 3 */
function attending(XML, idasso)
{
	fade('visageUser');
	siattending = XML.getElementsByTagName('attending')[0].firstChild.nodeValue;
	if (siattending == "FALSE")
	{
		document.getElementById('texteattending').innerHTML = 'Me réinscrire';
	}
	else
	{
		document.getElementById('texteattending').innerHTML = 'Me désinscrire';
	}
}

/* Request AJAX 4 */
function actucalendrier(XML, idasso)
	{
	cases=XML.getElementsByTagName("case");
	idmoispre=XML.getElementsByTagName('idmoisp')[0].firstChild.nodeValue;
	idmoisnex=XML.getElementsByTagName('idmoisn')[0].firstChild.nodeValue;
	anneepre=XML.getElementsByTagName('anneep')[0].firstChild.nodeValue;
	anneenex=XML.getElementsByTagName('anneen')[0].firstChild.nodeValue;
	moispre=XML.getElementsByTagName('moisp')[0].firstChild.nodeValue;
	moisnex=XML.getElementsByTagName('moisn')[0].firstChild.nodeValue;
	mois=XML.getElementsByTagName('mois')[0].firstChild.nodeValue;
	annee=XML.getElementsByTagName('annee')[0].firstChild.nodeValue;
	for (var i=1; i<= 6*7; i++)
	{		
		estUnConge = 'non';
		ii = 0;
		while(ii < 3) /* On efface chaque case. */
		{ 
			document.getElementById("CalCase" + i + 'Ev' + ii).innerHTML = '';
			document.getElementById("CalCase" + i + 'Ev' + ii).title = '';				
			ii = ii + 1;
		}
		
		if ( i % 7 == 1 || i % 7 == 0) /* Fond plus pâle pour les fin de semaines*/
		{
		document.getElementById("cel" + i).style.backgroundImage = "url('design/CalFondGrisPale.jpg')";
		}
		else
		{
		document.getElementById("cel" + i).style.backgroundImage = "url('design/CalFondGris.jpg')";
		}
		
		if (cases[(i - 1)].getElementsByTagName('date')[0].firstChild.nodeValue == 'l') 
		{
			document.getElementById("cel" + i + "date").innerHTML = "";
		}
		else
		{

			document.getElementById("cel" + i + "date").innerHTML= '<B style="padding:3px;">' + cases[(i - 1)].getElementsByTagName('date')[0].firstChild.nodeValue + '</B>';
			if(cases[(i - 1)].getElementsByTagName('listeevenements')[0].hasChildNodes())
			{ 
			
				listeevenements = cases[(i - 1)].getElementsByTagName('listeevenements');
				nombreevenements = listeevenements[0].childNodes.length;
				evenement = listeevenements[0].getElementsByTagName('evenement');
				for (var j=0; j < nombreevenements; j++)
				{	

					EvNom = evenement[j].childNodes[0].firstChild.nodeValue;
					EvType = evenement[j].childNodes[1].firstChild.nodeValue;
					EvActu = evenement[j].childNodes[2].firstChild.nodeValue;
					EvCondition = evenement[j].childNodes[3].firstChild.nodeValue;
					EvHeureDebut = evenement[j].childNodes[4].firstChild.nodeValue;
					EvHeureFin = evenement[j].childNodes[5].firstChild.nodeValue;
					IdEv = evenement[j].childNodes[6].firstChild.nodeValue;
					
					if(EvType == 'Congé') 
					{	estUnConge = 'oui';
						document.getElementById("cel" + i).style.backgroundImage = "url('design/CalFondBleuSolide.jpg')";
					}
					else if(estUnConge == 'non')
					{	couleur = "Gris";
						if (EvType == 'Social') { couleur = "Mauve"; }
						else if (EvType == 'Éducatif') { couleur = "Vert"; }
						else if (EvType == 'Date limite') { couleur = "Rouge"; }
						else if (EvType == 'Autre') { couleur = "Bleu"; }
						else if (EvType == 'aeact') { couleur = "Jaune"; }
						document.getElementById("cel" + i).style.backgroundImage = "url('design/CalFond" + couleur + ".jpg')";
					}
					
					if (j < 2 || (j == 2 && nombreevenements == 3))
					{					
						if (EvActu == 'oui') /* S'il s'agit d'un évènement actuariel, on le mets en gras*/
						{ EvActuBold = '<B>' + EvNom + '</B>'; }
						else
						{ EvActuBold = EvNom; }
						
						document.getElementById("CalCase" + i + 'Ev' + j).innerHTML = '<A HREF="index.php?page=evenement&IDEv=' + IdEv + '">' + EvActuBold + '</A>';
						document.getElementById("CalCase" + i + 'Ev' + j).title = '<B>' + EvNom + '</B> - ' + EvType + '<BR>';
						document.getElementById("CalCase" + i + 'Ev' + j).title += EvHeureDebut + '<BR>';
						if (EvHeureFin != 0) { document.getElementById("CalCase" + i + 'Ev' + j).title += EvHeureFin + '<BR>'; }
					}
					else if(j >= 2 && nombreevenements > 3) /* Il faut lister les évènements restants car il y en a plus que 3 */
					{
						evenementsRestants = nombreevenements - 2;
						document.getElementById("CalCase" + i + 'Ev2').innerHTML = '+ ' + evenementsRestants + ' évènements.';
						document.getElementById("CalCase" + i + 'Ev2').title += '<B>' + EvNom + '</B> - ' + EvType + '<BR>';
						document.getElementById("CalCase" + i + 'Ev2').title += EvHeureDebut + '<BR>';
						if (EvHeureFin != 0) { document.getElementById("CalCase" + i + 'Ev2').title += EvHeureFin + '<BR>'; }
						if (j != (nombreevenements -1) ) { document.getElementById("CalCase" + i + 'Ev2').title += '<BR>'; }
						
					}
				}
			}
		}
	}
	document.getElementById("calpre").innerHTML='<A HREF="javascript:void();" onclick="request(4, \'mois='+idmoispre+'&annee='+anneepre+'\','+idasso+');">'+moispre+ '</A>';
	document.getElementById("calnex").innerHTML='<A HREF="javascript:void();" onclick="request(4, \'mois='+idmoisnex+'&annee='+anneenex+'\','+idasso+');">'+moisnex+ '</A>';
	document.getElementById("lien"+idasso).innerHTML=mois + ' ' + annee;
	document.getElementById("lien"+idasso).style.display='inline';
	enableTipTip(".CalCase"); /* Il faut réactiver TipTip (L'algorithme pour nos tooltips) parce que sinon ça ne fonctionne pas. */
	}
	
/* Request AJAX 5 : Pour notre page d'index, on marque les avis comme étant lus. Pas vraiment de javascript après à faire. */
function avislus(XML, idasso)
{

}

/* Request AJAX 6 : Pour la page d'inscription*/
function checkIDUL(XML, idasso)
{
	erreur=XML.getElementsByTagName('Erreur')[0].firstChild.nodeValue;
	if (erreur == 'aucune')
	{
		document.getElementById("erreur1").style.display = 'none';
		prenom=XML.getElementsByTagName('Prenom')[0].firstChild.nodeValue;
		nom=XML.getElementsByTagName('Nom')[0].firstChild.nodeValue;
		idul=XML.getElementsByTagName('IDUL')[0].firstChild.nodeValue;
		courriel=XML.getElementsByTagName('Courriel')[0].firstChild.nodeValue;
		document.getElementById("Nom").innerHTML = prenom + ' ' + nom;
		document.getElementById("IDUL").innerHTML = idul;
		document.getElementById("Courriel").innerHTML = courriel;
		$('#etape2').fadeIn('slow');
	}
	else
	{
		document.getElementById("erreur1").innerHTML += ' ' + erreur;
		document.getElementById("erreur1").style.display = 'block';
	}
}

