ielte6 = false;

//On loade onLoad une fois le DOM complétement chargé
if (document.addEventListener)  document.addEventListener("DOMContentLoaded", onLoad, false);
//Pour IE j'ai lancé un script en defer (après le DOM) qui charge onLoad
//Par défaut je mets quand même dans le window.onload
window.onload = onLoad;

function onLoad() {
	//On ne fait jouer cette fonction qu'une seulle fois, on la marque comme "done" au premier loading
	if (arguments.callee.allreadyLaunched) return;
	arguments.callee.allreadyLaunched = true;
	removeEmptyTextNodesChild(document.getElementsByTagName("body")[0]);
	
	/******* On execute plusieurs opérations sur le DOM ****/
	//On affiche des bulles d'aide lors du survol des champs de formulaire
	initFunction("form.label_cell input,form.label_cell textarea,form.label_cell select", makeInfoAlt);
	//On affiche un calendrier à remplir sur les liens marqués comme tels
	initFunction("form.label_cell a.calendar", makeShowCalendar);
	//On supprime les fichiers en cliquant sur le lien
	initFunction("form.label_cell a.deleteFile", makeDeleteFile);
	//On ajoute des champs de mise en forme sur les textarea
	initFunction("form.label_cell textarea.bbcode", makeBbcode);	
	//On fait ouvrir les fieldset facultatif lors du clic sur leur label
	initFunction("form.label_cell h4 label.open_fieldset a", makeOpenFieldset);
	
	//On demande confirmation sur les certains liens
	initFunction("a.confirm", makeConfirmLink);
	//Focus sur les premiers champs des formulaires
	initFunction(".putFocus", makeFirstFocus);
	//On affiche un tooltip sur certains éléments
	initFunction(".show_tooltip", makeShowTooltip);
	//On vide certains champs au focus
	initFunction("form input.autoempty", makeAutoEmpty);
	//On fait des liens sur les mails bloqués contre le spam
	initFunction("span.noSpam", makeNoSpamMail);
	//On mets sur chaque élément a.fermer une action pour faire disparaitre le parent
	initFunction("a.fermer", makeCloseParent);
	//On fait ouvrir les sous-infos correspondantes aux choix sur certains menus déroulants d'admin
	initFunction("form.label_cell select#evenement_pays_select,form.label_cell select#searchPays", makeFormShowHidden);
	//On ajoute un compteur de 250 caracteres sur le champs de présentation
	initFunction("form.label_cell textarea#evenement_presentation", makeLimitChar);
	//On ouvre la suite des présentations des festivals
	initFunction("#textePrincipal .evenementDetailFestival .presentation a.sav_plus,#textePrincipal .evenementDetailLieuDeConte .presentation a.sav_plus", makeOpenPresentationLongue);
	//On selectionne la bonne région en fonction de la région cliquée sur l'image
	initFunction("#searchMap area", makeChooseRegion);
	initFunction("#searchMapHelp", makeOpenMap);
	
	//On fait ouvrir les sous-menus du menu
	initFunction("#header", makeOpenMenu);
	//On affiche les champs supplémentaires dans l'admin pour le comité scientifique
	initFunction("#form_admin_membre #poste_id", makeFormComiteScientifique);
	//On ouvre les fausses pop-ups du comité scientifique au clic
	initFunction("#textePrincipal a.openPopUpMembre", makeOpenComiteScientifique);
	//On ouvre les Contes/Sommaires/etc des revues au clic sur le liens
	initFunction("#revueDetailInfos li a", makeOpenRevueDetail);
	
	//On ouvre un div s'il est précisé dans l'url
	var toOpen = document.getElementById(getHrefHash(document.location.href));
	if (toOpen && getStyleInfo(toOpen, "display")=="none") openClose(toOpen);

}




/*
	Name : initFunction
	Param : list, fun
	On applique al fonction fun() a tout les éléments qui matchent selector
*/
function initFunction(selector, fun) {
	var list = getElementsBySelector(selector);
	for (var i=0;i!=list.length;i++) {
		fun(list[i]);
	}	
}

document.onmousemove = myMouseMove
if (document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
//Dès que je bouge la souris, je choppe ses coords
function myMouseMove(e) {
	globalMouseX = 0;	globalMouseY = 0;
	if (!e) var e = window.event;
	//On choppe les positions de la souris à partir de différentes informations selon les navigateurs
	if (e.pageX || e.pageY)
	{
		globalMouseX = e.pageX;
		globalMouseY = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		if (document.body) {
			globalMouseX = e.clientX + document.body.scrollLeft;
			globalMouseY = e.clientY + document.body.scrollTop;
		}
		if (document.documentElement) {
			globalMouseX = e.clientX + document.documentElement.scrollLeft;
			globalMouseY = e.clientY + document.documentElement.scrollTop;
		}
	}
}



/********************** NOUVELLES FONCTIONS ET METHODES *********************************/
if (typeof(isAdmin)==undefined) var isAdmin = false;

/* On ajoute une fonction aux tableaux pour enlever le premier élément de la liste et le retourner */
Array.prototype.unpop = function () {
	this.reverse();
	var first_el = this.pop();
	this.reverse();
	return first_el;
}

/******* On ajoute une fonction de recherche aux tableaux ***********/
Array.prototype.find = function(search) {
	for (var i=0; i!=this.length;i++) if (this[i]==search) return true;
	return false;
}

/********* On vire les valeurs en double du tableau ************/
Array.prototype.getUniqueValue = function() {
	//On va retourner un tableau privé des valeurs en double
	var arrTmp = Array();
	for (var i=0;i!=this.length;i++) if (!arrTmp.find(this[i])) arrTmp.push(this[i]);
	return arrTmp;
}
/* On ajoute une fonction de recherche aux strings */
String.prototype.find = function (search) {
	return (this.indexOf(search)>=0) ? true : false;
}

/* Enleve les indication px d'une chaine */
String.prototype.removePx = function () {
	//*1 => transforme en int
	return 1 * (this.replace(/px/g, "")); 
}

/* Selon le navigateur les sauts de ligne sont soit \n, soit \r, soit \r\n. On va donc tout mettre en \n */
String.prototype.normalizeLineBreak = function() {
	return this.replace(/(\r\n|\r|\n)/g, '\n');	
}


/* On trouve l'année de facon correcte sur 4 chiffres (bug de l'an 2000 haha) */
Date.prototype.getRealYear = function () {
	//NS compte 106 pour 2006
	var y = this.getYear() % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}

/* On trouve le nombre de jours dans un mois */
Date.prototype.getNbrDaysInMonth = function() {
	/* 
	Les années divisibles par 4 sont bissextiles...
	Sauf si elles sont aussi divisibles par 100...
	Mais sont quand même bissextiles si divisible par 400
	*/
	//Années bissextiles
	var bissextile = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	//Non bissextiles
	var nonBissextile = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var year = this.getRealYear();
	var month = this.getMonth();
		
	if ((year % 4) == 0) {
		//Divisible par 4, par 100, pas par 400 => non
		if ((year % 100) == 0 && (year % 400) != 0)	return nonBissextile[month];
		//Divisible par 4
		return bissextile[month];
	} 
	//Pas divisible par 4
	else return nonBissextile[month];
}























