/**
 * Librairie javascript commune
 *
 * @author		Julie Tétard <julie@2jstudio.com> 
 * @version		2.1
 * @package		Ecog
 * @subpackage 	javascript
 * @category 	commun
 */


/**
 * Attache événements
 */

ECOG_smartAttachEvent(window, 'load', ECOG_initEvents, false);


/**
 * Fonctions d'initalisation
 */

	/**
	 * Fonction attachant un les événements aux éléments du menu
	 *
	 * @return		-
	 */
	function ECOG_initEvents()
	{
		// Target des liens
		var aTags = document.getElementsByTagName('a');
		for(i=0 ; i<aTags.length ; i++) {
			// On découpe le lien selon les #
			var dieseTab = aTags[i].href.split('#');
			// S'il existe bien un # dans le lien
			if (dieseTab.length == 2) {
				// On enlève l'argument passé avec du lien
				aTags[i].href = dieseTab[0];
				// On assigne la fonction d'ouverture dans une nouvelle fenêtre 
				// si l'argument est égal à _blank
				if (dieseTab[1] == '_blank') {
					aTags[i].name = aTags[i].href;
					aTags[i].removeAttribute('href');
					ECOG_smartAttachEvent(aTags[i], 'click', ECOG_openLinkInNewWindow, false);
				}
			}
		}
	} 


/**
 * Fonctions d'initalisation
 */

	/**
	 * Fonction attachant un événement a un objet selon le navigateur
	 *
	 * @param  		object	obj				objet auquel on doit attacher l'événement
	 * @param  		string	evenType		nom de l'évenement 
	 * @param  		string	functionName	nom de la fonction
	 * @param  		bool	capture			methode de capture
	 * @return		-
	 */
	function ECOG_smartAttachEvent(obj, evenType, functionName, capture)
	{
		// Cas de type Mozilla
		if (window.addEventListener) {
			obj.addEventListener(evenType, functionName, capture);
		// Cas MSIE
		} else {
			obj.attachEvent('on' + evenType, functionName);	
		}
	}
	
	/**
	 * Fonction récupérant l'élément déclencheur
	 *
	 * @param		object	event		Objet évenement
	 * @return		object	élément déclencheur
	 */
	function ECOG_smartGetTarget(event)
	{
		if(event.currentTarget) {
			return objOrigin = event.currentTarget;
		} else {
			return objOrigin = event.srcElement; 
		}
	}



/**
 * Fonctions du DOM
 */

	/**
	 * Fonction permettant d'accéder a un noeud élément enfant
	 *
	 * @param		object	parentNode	Noeud parent dont on doit trouver l'enfant
	 * @param		object	childRank	Rang du noeud a récupérer
	 * @return		object	le noeud enfant récupéré
	 */
	function ECOG_smartChild(parentNode, childRank) 
	{ 
		var rank = 0;
		var i = 0;
		// On passe en revue tout le noeud parent
		for(i=0 ; i<parentNode.childNodes.length ; i++) {
			// S'il s'agit d'un bien d'un noeud élément
			if (parentNode.childNodes[i].nodeType == 1) {
				rank ++;
			}
			// Si on est arrivé au bon rang, on retourne
			if (rank == childRank) {
				return parentNode.childNodes[i]; 
			}
		}
		return false;
	} 
	

/**
 * Fonctions de conversion HTML
 */

	/**
	 * Fonction affichant un lien dans une nouvelle fenêtre
	 *
	 * @param		object	event		Objet évenement
	 */
	function ECOG_openLinkInNewWindow(event)
	{
		// On récupère la cible et l'url de son lien
		var target = ECOG_smartGetTarget(event);
		// Remonte jusqu'au a
		var node = target.nodeName;
		while(node.toLowerCase() != 'a' && node.toLowerCase() != 'body') {
			target = target.parentNode;
			node = target.nodeName;
		}
		// On execute le lien en javascript
		if (node.toLowerCase() == 'a') {
			window.open(target.name, '_blank');
		}
	}

function ECOG_changecateg(nv,d)
{
	eval("var old=document.ecog.old"+d+".value;");
	if(old!='')
	{
		eval("if(document.ecog.sel"+old+") var elem='oui'; else var elem='non';");
		if(elem=='oui')
		{
			eval("var val=document.ecog.sel"+old+".options[document.ecog.sel"+old+".options.selectedIndex].value;");
			eval("if(document.ecog.sel"+val+") var elem2='oui'; else var elem2='non';");
			if(elem2=='oui')
			{
				eval("document.ecog.sel"+val+".value='';");
				eval("document.ecog.old"+(d+2)+".value='';");
				DJS_displaydiv('div'+val);
			}
			eval("document.ecog.sel"+old+".value='';");
			eval("document.ecog.old"+(d+1)+".value='';");
		}
		DJS_displaydiv('div'+old);
	}
	eval("document.ecog.old"+d+".value=\'"+nv+"\'");
	if(nv!='')
		DJS_displaydiv('div'+nv);
}
