/** @file stdlib.js
 *
 * Fonctions utiles.
 *
 * Conception & Réalisation : e-TF1 Développements Filiales
 */

/**
 * Permet d'ajouter des evenements
 * @param obj l'objet (en général "window")
 * @param evType le type d'evenement (en général "load")
 * @param fn la fonction à appeller
 * @see http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
 */
function addEvent(obj, evType, fn)
{
	if (obj.addEventListener) { 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} else if (obj.attachEvent) { 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}

/**
 * Création d'un cookie
 * @param name Nom du cookie
 * @param value La valeur
 * @param days Durée de vie (optionnel)
 * @see http://www.quirksmode.org/js/cookies.html
 */
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

/**
 * Lecture d'un cookie.
 * @param name Nom du cookie
 * @return La valeur du cookie
 * @see http://www.quirksmode.org/js/cookies.html
 */
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/**
 * Supprimer un cookie.
 * @param name Le nom du cookie à supprimer
 * @see http://www.quirksmode.org/js/cookies.html
 */
function eraseCookie(name)
{
	createCookie(name,"",-1);
}

/**
 * Trouve le tag "parentTagName" parent de "element"
 * @param element l'élement à partir duquel lancer la recherche
 * @param parentTagName le nom du parent à chercher
 * @return l'élément parent ou NULL en cas d'échec
 */
function getParent(element, parentTagName)
{
	if ( ! element )
		return null;
	else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
		return element;
	else
		return getParent(element.parentNode, parentTagName);
}


/**
 * Ouvre une fenêtre popup.
 * @param adresse URL de la page à ouvrir
 * @param nomFenetre nom de la fenêtre popup
 * @param largeur largeur
 * @param hauteur hauteur
 * @param scroll afficher le scroll ? (yes/no)
 */
function popup(adresse, nomFenetre, largeur, hauteur, scroll) 
{
	var largeurEcran = (screen.width - largeur) / 2;
	var hauteurEcran = (screen.height - hauteur) / 2;
	window.open(adresse, nomFenetre, 'height=' + hauteur + ', width=' + largeur + ', top=' + hauteurEcran + ', left=' + largeurEcran + ', scrollbars=' + scroll + ', resizable=no')	
}
