// Fonction js principale
function affiche(noeud_enfant, parent, etat, puce) {
	var tab_puce = new Array();
	var tab_puce = ["", "puce_bleumarin", "puce_verte", "puce_jaune", "puce_bleu", "puce_rouge"];
		
	// On masque tous les sous menus ouverts
	for (i=0; i<6; i++) {
		var res = $('sousMenu'+i);
		var g_parent = $('liMenu'+i);
		// Ici il faut penser à remettre l'etat à 0 sur tous les menu
		var par = $('menu'+i);
		if (par != null) {		
			par.setAttribute("href", "javascript:affiche('sousMenu"+ i +"', 'menu"+ i +"', '0', '"+ tab_puce[i] +"');");
			g_parent.style.backgroundImage = 'url(images/'+ tab_puce[i] +'.gif)';
			// Puis si un sous menu existe on masque
			if (res != null) {
				// On evite de masquer le parent lors du masquage d'un sous sous menu!
				tab = parent.split("-");
				if (tab[0] != 'sousMenu'+i) Element.hide('sousMenu'+i);
				for (i2=0; i2<30; i2++) {				
					var res2 = $('sousSousMenu'+i+'-'+i2);
					// On verifie si un sous sous menu existe pour le masquer
					if (res2 != null) Element.hide('sousSousMenu'+i+'-'+i2);
				}
			}
		}	    
	}	
	
	// Etat de la puce, 1 deplié ou 0 replié
	if(etat == 0) {
		depli(noeud_enfant, parent, puce);			
		// On affiche le menu voulu	
		//Effect.BlindDown(noeud_enfant,{duration:1})	
		//Effect.SlideDown(noeud_enfant);
		Element.show(noeud_enfant);
	}
	if(etat == 1) {
		repli(noeud_enfant, parent, puce);
		// On affiche le menu voulu	
		//Effect.BlindUp(noeud_enfant,{duration:1.5})	
		//Effect.SlideUp(noeud_enfant);
		Element.hide(noeud_enfant);
	}		
}

function depli(enfant, parent, puce) {
	var v_enfant = $(enfant);
	var v_parent = $(parent);	
	// Modification de l'etat dans le lien
	v_parent.setAttribute("href", "javascript:affiche('"+ enfant +"', '"+ parent +"', '0', '"+ puce +"');");
	// Puce vers le bas
	v_parent.parentNode.style.backgroundImage = 'url(images/'+ puce +'_on.gif)';	
}

function repli(enfant, parent, puce) {
	var v_enfant = $(enfant);
	var v_parent = $(parent);	
	// Modification de l'etat dans le lien	
	v_parent.setAttribute("href", "javascript:affiche('"+ enfant +"', '"+ parent +"', '0', '"+ puce +"');");
	// Puce vers la droite
	v_parent.parentNode.style.backgroundImage = 'url(images/'+ puce +'.gif)';		
}

// Fonction quasi identique, j'ai pas le temps pour le moment de synthétiser le code 	
function afficheListe(enfant, parent, etat, puce) {

	var v_enfant = $(enfant);
	var v_parent = $(parent);	

	// Etat de la puce, 1 deplié ou 0 replié
	if(etat == 0) {
		// Modification de l'etat dans le lien
		v_parent.setAttribute("onMouseOver", "javascript:afficheListe('"+ enfant +"', '"+ parent +"', '1', '"+ puce +"');");
		// Puce vers le bas
		v_parent.firstChild.setAttribute("src", "images/"+ puce +"_on.gif");			
		// On affiche le menu voulu	
		Effect.BlindDown(enfant,{duration:1})		
	}
	if(etat == 1) {
		// Modification de l'etat dans le lien	
		//v_parent.setAttribute("onMouseOver", "javascript:afficheListe('"+ enfant +"', '"+ parent +"', '0', '"+ puce +"');");
		// Puce vers la droite
		//v_parent.firstChild.setAttribute("src", "images/"+ puce +".gif");	
		// On affiche le menu voulu	
		//Effect.BlindUp(enfant,{duration:1})	
	}		
} 

// ################################################################################"
// FONCTIONS DE CRYPTAGE
// Auteur des fonctions de codage : Pascal BENITO

// FONCTIONS DE CODAGE HEXADECIMAL
function codeHexa (octetDec) {
	var codesHexa = '0123456789ABCDEF';
	return (codesHexa.charAt(octetDec>>>4)+codesHexa.charAt(octetDec&15));
}

function decodeHexa (octetHex) {
	var codesHexa = '0123456789ABCDEF';
	return ( (codesHexa.indexOf(octetHex.charAt(0))<<4) + codesHexa.indexOf(octetHex.charAt(1)) );
}

// Fonction principale de cryptage appelé. On transmet 
// 1 - le mail à crypter
// 2 - La clé de cryptage
// 3 - Le sens : crypte ou decrypte

function cryptageMail (mail, clef, sens) {
	var resultat = "";
	var l = mail.length;
	var lc = clef.length;
	var m = 0;
	
	if (sens == 'crypte') {
		for (n = 0; n < l; n++) {
			c = mail.charCodeAt(n);
			if (c < 256) {
				resultat += codeHexa( c ^ clef.charCodeAt(m%lc) );
				m++;
			}
		}
	}
	if (sens == 'decrypte') {
		for (n = 0; n < l; n += 2) {
			c = decodeHexa(mail.substr(n,2));
			resultat += String.fromCharCode( c ^ clef.charCodeAt(m%lc) );
			m++;
		}	
	}
	return resultat;
}

// Fonction de mise en page des resultat de cryptage
function crypter (mail, id, libelle) {
	// Les mails passés en argument dans la fonctions ont "+ = @" et "* = ."	
	var mail_a_corriger = mail;
	var maReg = new RegExp( '£', 'gi') ;
	var mail_corrige = mail_a_corriger.replace( maReg, '@' ) ;
	
	var maReg = new RegExp( '¤', 'gi') ;
	var mail_corrige = mail_corrige.replace( maReg, '.' ) ;
	
	// Clé de cryptage
	var clef="9Ajf0kDhD4GBwnuis1ys1d45br7uyZ";
		
	var mail_crypte = cryptageMail(mail_corrige, clef, 'crypte');
	new Insertion.Top(id, '<a href="mailto:'+cryptageMail(mail_crypte, clef, 'decrypte')+'">' + libelle + '</a>');
}

// ################################################################################"
// FONCTIONS Xhr

function appelXhr(champ, receptacle, url) {	
	
	var params = "mail=" + $F(champ);
		
	new Ajax.Updater(receptacle, url, {
		asynchronous: true,
		method: "post",
		parameters: params,
		onLoading: function(request) {
			Element.show(receptacle);
			Element.show('patienter');
		},
		onComplete: function(request) {
			Element.hide('patienter');
			Element.show(receptacle);
		}		
	});
	return false;
		
}

// Affichage des actus
function afficheActus(champ, receptacle, url) {	
	
	// Actus loisirs et sports
	new Ajax.Updater('conteneurLoisirsSports', 'include/xhr-actus.php', {
		asynchronous: true,
		method: "get",
		parameters: 'categorie=1',
		onComplete: function(request) {
			Element.remove('patientez1');
			Element.show('h1Agenda1');
			// Actus loisirs et sports
			new Ajax.Updater('conteneurArtsCultures', 'include/xhr-actus.php', {
				asynchronous: true,
				method: "get",
				parameters: 'categorie=2',
				onComplete: function(request) {
					Element.remove('patientez2');
					Element.show('h1Agenda2');
					// Actus loisirs et sports
					new Ajax.Updater('conteneurPatrimoine', 'include/xhr-actus.php', {
						asynchronous: true,
						method: "get",
						parameters: 'categorie=3',
						onComplete: function(request) {
							Element.remove('patientez3');
							Element.show('h1Agenda3');
						}		
					});
				}		
			});
		}		
	});		
}