/**
 * msFishEffect (int)
 * 
 * Durée (en milliseconces) pour les effets d'apparition et de disparition.
 */
var msFishEffect = 400;

/**
 * reperes (array)
 * 
 * Tableau indiquant si les cases concernées sont affichées ou non.
 */
var reperes = new Array();
reperes[1] = 0;
reperes[2] = 0;
reperes[3] = 0;
reperes[4] = 0;
reperes[5] = 0;

/**
 * displayFishMenu()
 * 
 * Affiche un sous menu.
 * 
 * @param int numéro du menu que l'on souhaite faire apparaître
 */
function displayFishMenu(element)
{
	// On va afficher ce menu seulement s'il a vraiment disparu:
	if(reperes[element] == 0)
	{
		// On prépare la notification:
		// setTimeout('changeRepere(' + element + ')', msFishEffect);
		
		if(element < 3)
		{
			$('ul.sf-menu li.top.menuDistrict' + element + ' ul').fadeIn(msFishEffect);
		}
		else
		{
			var tmpElement = element - 2;
			
			$('ul.sf-menu li.top.menu' + tmpElement + ' ul').fadeIn(msFishEffect);
		}
		
		changeRepere(element);
	}
}

/**
 * hideFishMenu()
 * 
 * Fait disparaître un sous menu
 * 
 * @param int numéro du menu que l'on souhaite faire disparaître
 */
function hideFishMenu(element)
{
	reperes[element] = 0;
	
	// $('ul.sf-menu li.top.menu' + element + ' ul').fadeOut(msFishEffect / 4);
	if(element < 3)
	{
		$('ul.sf-menu li.top.menuDistrict' + element + ' ul').hide();
	}
	else
	{
		element -= 2;
		
		$('ul.sf-menu li.top.menu' + element + ' ul').hide();
	}
}

/**
 * changeRepere()
 * 
 * Lorsqu'un sous menu a fini de s'afficher ou de disparaître, 
 * on garde en mémoire cette donnée
 * 
 * @param int numéro du sous menu concerné.
 */
function changeRepere(numero)
{
	// On indique dans cette variable globale que le menu est affiché:
	reperes[numero] = 1;
	
	var i = 1;
	
	while(i <= 5)
	{
		// Ici : si un autre menu est ouvert, on le ferme:
		if(($.browser.msie) && ($.browser.version == '6.0') && (i != numero)){
			hideFishMenu(i);
		}
		else if((i != numero) && (reperes[i] == 1))
		{
			hideFishMenu(i);
		}
		
		i++;
	}
}

/**
 * initTheFish()
 * 
 * Fonction appelée dans _header.html du squelette spip, par un $(document).ready(){}
 * Elle va indiquer les actions à faire au passage de la souris sur une catégorie
 * du menu en haut du site.
 */
function initTheFish()
{
	// Passage sur la catégorie "Le Rotary internationnal"
	$('ul.sf-menu li.menuDistrict1').hover(function(){
		displayFishMenu(1);
	}, function(){
		
	});
	
	// Passage sur la catégorie "Le District 1790"
	$('ul.sf-menu li.menuDistrict2').hover(function(){
		displayFishMenu(2);
	}, function(){
		
	});
	
	// Passage sur la catégorie "Les clubs"
	$('ul.sf-menu li.menu1').hover(function(){
		displayFishMenu(3);
	}, function(){
		
	});
	
	// Passage sur la catégorie "Actualités"
	$('ul.sf-menu li.menu2').hover(function(){
		displayFishMenu(4);
	}, function(){
		
	});
	
	// Passage sur la catégorie "Contact"
	$('ul.sf-menu li.menu3').hover(function(){
		displayFishMenu(5);
	}, function(){
		
	});
	
	// On ferme tous les sous-menus si la souris n'est plus sur un élément du menu
	$('ul.sf-menu').hover(function(){
		
	},function(){
		changeRepere(0);
	});
	
	// Cas spécial : détection d'IE6 pour les effets
	if(($.browser.msie) && ($.browser.version == '6.0'))
	{
		/*
			Au survol d'une case du menu, on va ajouter des classes CSS,
			qui seront retirées une fois que la souris aura quitté la zone,
			ceci afin de palier la faiblesse d'IE6 ne supportant pas 
			la pseudo-classe CSS :hover ailleurs que sur les liens
		*/
		$('ul.sf-menu li').hover(function(){
			// Ajout de la classe sfHover, qui permet de changer la couleur de fond
			$(this).addClass('sfHover');
			
			// Si on est sur la première case du menu "Le Rotary internationnal" (désignée par la classe CSS menu1) :
			if($(this).is('.menuDistrict1'))
			{
				// On ajoute une autre classe, qui permet de positionner un fond avec un arrondi
				$(this).addClass('sfHover1');
			}
		}, function(){
			// Ici, on supprime les classes précédemment ajoutées:
			$(this).removeClass('sfHover');
			
			if($(this).is('.menuDistrict1'))
			{
				$(this).removeClass('sfHover1');
			}
		});
	}
}