/**
 * Librairie javascript paramétrable commune
 *
 * @author			Julie Tétard <julie@2jstudio.com> 
 * @version			E-cog 3.0
 * @package			public
 * @subpackage		param
 * @category		js
 * @internal		last modified
 */



/**
 * Attache événements
 */

ECOG_smartAttachEvent(window, 'load', ECOG_public_initEvents, false);
menuObj = false;
curTimeout = false;



/**
 * Fonction d'initialisation
 */

	/**
	 * Fonction exécutant les événéments à l'initialisation
	 *
	 * @return		-
	 */

	function ECOG_public_initEvents() {
		// Charge feuille style spécifique
		$$('head script')[0].insert({ before: new Element('link', { href: 'param/css/js.css', rel: 'stylesheet', type: 'text/css', media: 'all' }) });
		
		// Rollover contact
		ECOG_smartAttachEvent($$('#menu_contact img')[0], 'mouseover', ECOG_rollOver, false);
		ECOG_smartAttachEvent($$('#menu_contact img')[0], 'mouseout', ECOG_rollOut, false);
		
		// Pour chaque élément du menu
		$$('#menu li a img').each(
			function(img) {
				ECOG_menu_imgRollOut(img.parentNode.parentNode);
				if (img.parentNode.parentNode.getElementsByTagName('ul').length > 0) {
					ECOG_smartAttachEvent(img, 'mouseover', ECOG_menu_show, false);
					ECOG_smartAttachEvent(img, 'mouseout', ECOG_menu_tryHide, false);
					ECOG_smartAttachEvent(img.parentNode.parentNode.getElementsByTagName('ul')[0], 'mouseover', ECOG_menu_show, false);
					ECOG_smartAttachEvent(img.parentNode.parentNode.getElementsByTagName('ul')[0], 'mouseout', ECOG_menu_tryHide, false);
				}
			}
		);
	}


/**
 * Fonctions d'initalisation
 */
	
	/**
	 * Fonction affichant le rollover de l'image principale
	 *
	 * @param		object		menuObj			l'objet cible
	 * @return		-
	 */
	function ECOG_menu_imgRollOver(menuObj)
	{
		$(menuObj).className = 'f2';
	}
	
	/**
	 * Fonction affichant le rollout de l'image principale
	 *
	 * @param		object		menuObj			l'objet cible
	 * @return		-
	 */
	function ECOG_menu_imgRollOut(menuObj)
	{
		$(menuObj).className = '';
	}
	
	/**
	 * Fonction déroulant le menu plus
	 *
	 * @param		object		event		Objet évenement
	 * @return		-
	 */
	function ECOG_menu_show(event)
	{
		/* On récupère l'image principale de la rubrique en cours */
		menuObjTmp = ECOG_smartGetTarget(event);
		var found = true;
		if (menuObjTmp.nodeName.toLowerCase() == 'a') {
			menuObjTmp = menuObjTmp.parentNode;
		}
		if (menuObjTmp.nodeName.toLowerCase() == 'li' && menuObjTmp.id == '') {
			menuObjTmp = menuObjTmp.parentNode.parentNode;
		} else if (menuObjTmp.nodeName.toLowerCase() == 'img') {
			menuObjTmp = menuObjTmp.parentNode.parentNode;
		} else if (menuObjTmp.nodeName.toLowerCase() == 'ul') {
			menuObjTmp = menuObjTmp.parentNode;
		} else {
			found = false;
		}
		if(found === true) {
			/* S'il existait déjà un élément actif et que c'est le même que l'actuel */
			if (menuObj && menuObjTmp.id == menuObj.id) {
				/* Si le menu est déjà affiché, on supprime le timeout qui avait pu être déclanché en passant de l'image au menu */
				if(menuObj.className == 'f2') {
					clearTimeout(curTimeout);
				/* Si le menu n'est pas affiché, on l'affiche */
				} else {
					ECOG_menu_imgRollOver(menuObj);
				}
			/* Sinon */
			} else {
				/* Dans le cas un menu différent étai déjà sélectionné, on cache l'ancien menu */
				if (menuObj && menuObjTmp.id != menuObj.id) {
					ECOG_menu_hide();
				}
				/* On redéfinit le nouvel objet sélectionné comme objet en cours et on affiche le menu correspondant */
				menuObj = menuObjTmp;
				ECOG_menu_imgRollOver(menuObj);
			}
		}
	}
	
	/**
	 * Fonction essayant de masquer le menu
	 *
	 * @param		object		event		Objet évenement
	 * @return		-
	 */
	function ECOG_menu_tryHide(event)
	{
		/* Définit un timeout de 150ms sur la fonction de fermeture : s'il n'est pas supprimé et que la sortie de la rubrique
			est vraiment effective et qu'il ne s'agit pas d'un passage de l'image au menu, la fermeture se déclanchera */
		curTimeout = setTimeout('ECOG_menu_hide()', 200);
	}
	
	/**
	 * Fonction masquant le menu
	 *
	 * @param		object	event		Objet évenement
	 * @return		-
	 */
	function ECOG_menu_hide()
	{
		/* On supprime le timeout désormais inutile */
		if (curTimeout) {
			clearTimeout(curTimeout);
		}
		/* On masque le menu en cours */
		ECOG_menu_imgRollOut(menuObj);
	}
