/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                              Gestion des effets graphiques                               |
|------------------------------------------------------------------------------------------|
|                                                                                          |
|          Le formulaire de la page questionnaire.php possède quelques animations          |
|                         tels que le surlignage des champs actifs                         |
|                                                                                          |
|------------------------------------------------------------------------------------------|
|                                                                                          |
| Fonctions disponibles :                                                                  |
|    - effets()                                                                            |
|                                                                                          |
|                                                                                    1.5.0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                                                         Benjamin COIFFARD - janvier 2011 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/



/*----------------------------------------------------------------------------------------*\
|
| Lancement des la fonction effets(), chargerPostit(), chargerAlerte()dès la fin du
| chargement de la page.
|
\*----------------------------------------------------------------------------------------*/
	Event.observe(window, 'load', effetsSac, false);
	Event.observe(window, 'load', chargerPostit, false);
	Event.observe(window, 'load', chargerAlerte, false);


// Initialisation du tableau contenant l'élément actif
	var actif = new Array();
	actif['d'] = null;
	actif['t'] = null;
	actif['l'] = null;

// Initialisation du tableau contenant les propositions
	var b = new Array();
	b['d'] = new Array('sac_reunion', 'sac_we', 'sac_minicamp', 'sac_camp');
	b['t'] = new Array('sac_neige', 'sac_pluie', 'sac_nuage', 'sac_soleil');
	b['l'] = new Array('sac_aulocal', 'sac_ville', 'sac_campagne', 'sac_montagne');


/**
 * Ajouter des effets graphiques sur la page
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function effetsSac()
{

// On commence par effacer le formulaire existant
	var form = document.getElementById('formulaire');

// La description affichée ci-dessous est insérée comme premier élément de la page
	var t = 'Sélectionnez les choix ci-dessous pour afficher ce que ';
	t += 'vous devez avoir dans votre sac, en n\'oubliant pas les 4 grands ';
	t += 'principes du sac scout';
	
	form.innerHTML = t;
	
// Durée
	ajouterTexte('h3', null, null, 'formulaire', 'Durée de l\'activité', 'ajout');
	ajouterElement('span', 'sac_bt sac_d', 'sac_reunion', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_d', 'sac_we', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_d', 'sac_minicamp', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_d', 'sac_camp', 'formulaire', 'ajout');

// Temps
	ajouterTexte('h3', null, null, 'formulaire', 'Temps prévu', 'ajout');
	ajouterElement('span', 'sac_bt sac_t', 'sac_neige', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_t', 'sac_pluie', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_t', 'sac_nuage', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_t', 'sac_soleil', 'formulaire', 'ajout');

// Lieux
	ajouterTexte('h3', null, null, 'formulaire', 'Lieu principal', 'ajout');
	ajouterElement('span', 'sac_bt sac_l', 'sac_aulocal', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_l', 'sac_ville', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_l', 'sac_campagne', 'formulaire', 'ajout');
	ajouterElement('span', 'sac_bt sac_l', 'sac_montagne', 'formulaire', 'ajout');
		
//
	var bt = new Array ('sac_reunion', 'sac_we', 'sac_minicamp', 'sac_camp', 
						'sac_neige', 'sac_pluie', 'sac_nuage', 'sac_soleil', 
						'sac_aulocal', 'sac_ville', 'sac_campagne', 'sac_montagne');
		
	for (var i=0; i<bt.length; i++)
	{
		
		var el = document.getElementById(bt[i]);
		
		el.onmouseover = function()
		{
			survolZone(this.getAttribute('id'));
		}
		
		el.onmouseout = function()
		{
			quitteZone(this.getAttribute('id'));
		}
		
		el.onclick = function()
		{
			var classe = this.className.substr(11, 1);
			var t = this.getAttribute('id');
			var nom = t.substr(4, t.length);
			if (actif[classe] == nom)
				actif[classe] = null;
			else actif[classe] = nom;
			boutonEnRouge(classe);
			afficherSac();
		}
		
	}

}


/**
 * xxx
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function boutonEnRouge(type)
{
	
// On commence par réinitialiser tous les boutons	
	for (var i=0; i<b[type].length; i++)
	{
		document.getElementById(b[type][i]).style.backgroundPosition = '0 0px';
		document.getElementById(b[type][i]).onmouseover = function()
		{
			survolZone(this.getAttribute('id'));
		}
		document.getElementById(b[type][i]).onmouseout = function()
		{
			quitteZone(this.getAttribute('id'));
		}
	}

	if (actif[type] != null)
	{
		document.getElementById('sac_'+actif[type]).style.backgroundPosition = '0 -40px';
		document.getElementById('sac_'+actif[type]).onmouseover = null;
		document.getElementById('sac_'+actif[type]).onmouseout = null;
	}

}


/**
 * xxx
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function survolZone(id)
{
	document.getElementById(id).style.backgroundPosition = '0 -20px';
}


/**
 * xxx
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function quitteZone(id)
{
	document.getElementById(id).style.backgroundPosition = '0 0px';
}


/**
 * xxx
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function afficherSac()
{

// Récupération des boutons selectionnés
	if (actif['d'] != null)
		var du = actif['d'];
	else return false;
	
	if (actif['t'] != null)
		var te = actif['t'];
	else return false;
	
	if (actif['l'] != null)
		var li = actif['l'];
	else return false;
	
// Construction de la requète Ajax
	var demande = 'duree='+du+'&temps='+te+'&lieu='+li+'&mode=ajax';
		
	var url = 'action/remplirLeSac.action.php';
	
	requete.open("POST", url, true);
	requete.onreadystatechange = callbackAfficherSac;
	requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	requete.send(demande);
	flashChargement();
	
}


/**
 * xxx
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function callbackAfficherSac()
{

	if (requete.readyState == 4)
	{
		if (requete.status == 200)
		{
		
			document.getElementById("flCh").style.visibility = "hidden";
			
			var rpst = requete.responseText;
			
			if (rpst == 'camp-neige')
			{
				if (lePostit.estVisible) lePostit.masquer();
				var m = new Array();
				m[0] = 'Un camp sous la neige est un projet un peu particulier, ';
				m[0] += 'demandez à vos chefs une liste détaillée de ce que vous ';
				m[0] += 'devez prévoir';
				lAlerte.afficher('simple', m);
				return;
			}
			else if (rpst == 'camp-local')
			{
				if (lePostit.estVisible) lePostit.masquer();
				var m = new Array();
				m[0] = 'Le projet de vivre un camp, tout en restant au local n\'entre, ';
				m[0] += 'pas dans les activités habituelles. Pour ce projet spécial, demandez ';
				m[0] += 'à vos chefs, une liste spéciale.';
				lAlerte.afficher('simple', m);
				return;
			}
		
		// Récupération de l'arbre XML
			var docXml = requete.responseXML;
			
			var rubrique = docXml.getElementsByTagName("rubrique");
			var donnees = new Array();
			var tab = new Array();
			var m = '';
		
		// Parcours de chaque rubrique
			for (var i=0; i<rubrique.length; i++)
			{
				
				var titre = rubrique[i].getElementsByTagName("titre")[0].firstChild.nodeValue;
				var el = rubrique[i].getElementsByTagName("element");
				donnees[titre] = new Array();
				tab[i] = titre;
				
				for (var j=0; j<el.length; j++)
				{
					donnees[titre][j] = rubrique[i].getElementsByTagName("element")[j].firstChild.nodeValue;
				}
			}
			
			if (lePostit.estVisible)
				lePostit.masquer();
				
			lePostit.titre = 'Liste pour remplir son sac';
			lePostit.info = donnees;
			lePostit.rubrique = tab;
			lePostit.afficher();
			
		
		}
		
		else erreurRequete();
	}

}


