//On include les autres librairies de fonction
insertJsFile("../js/debug.js", "debug");
insertJsFile("../js/nodes.js", "nodes");
insertJsFile("../js/border-corner.js");
insertJsFile("../js/navigation.js", "navi");
//insertJsFile("../js/bbcode.js");


function onLoad() {
	//Bords arrondis des divs pleins
	initFunction(".roundBorderFill", makeRoundCorners);
	//Bords arrondis des divs "vides"
	initFunction(".roundBorder", makeRoundBorders);
	//On ajoute un menu déroulant des espaces dans le lien d'accueil
	initFunction("#header .menu ul li.accueil", makeMenuEspaces);
}

/*
	On doit lancer les fonctions une fois la page chargée (les include de .js ne sont pas toujours considérés dans le flux de la page)
	Le DOM permet de tester sur un event nommé "DOMContentLoaded" avec un addEventListener. Facile avec Mozzy.
	Safari Mac reconnait bien le addEventListener, mais pas sur cette propriété... Pour lui et les autres navigateurs on va passer par une autre méthode.
	On va tester toutes les 50ms si la page est chargée (avec document.readyState). Si ca passe à complete, alors on lance la fonction.
	Mozzila ne connait pas document.readyState, et il est possible que certains autres navigateurs ne connaissent ni l'un ni l'autre. 
	On gardera donc window.onload pour eux		
*/
function pageOnLoad(f) {
	//On teste donc le chargement de la page toutes les XXms
	//Si jamais document.readyState est undefined après nbrMaxTry essais, on considere qu'il ne connait pas cette propriété, on passe à la suivante
	var nbrMs = 50;
	var nbrMaxTry = 5;
	var nbrTry = 0;
	var timerOnLoad = setInterval(
	function() {
		//document.getElementById("bottom").innerHTML+=nbrTry+" : "+document.readyState+"=>"+ onLoad+"<br>";
		//Si j'ai testé suffisement de fois

		if (nbrTry>=nbrMaxTry) {
			//Je ne connais pas document.readyState, pas la peine de chercher plus loin donc je l'applique, je le mets aussi dans window.onload au cas où
			if (document.readyState==undefined) {
				onLoad();
				//Et de toutes facons j'arrete ce timer
				clearInterval(timerOnLoad);
			}
		}
		else nbrTry++;

		

		//Par contre si je connais document.readyState et qu'il est complete, je charge les fonctions
		if (document.readyState=="complete" || document.readyState==4) {
			onLoad();
			clearInterval(timerOnLoad);
		}
	},
	nbrMs);		
}
pageOnLoad(onLoad);
//window.onload = onLoad;




/*
	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]);
	}	
}
/*
	Name : insertJsFile
	Param : filename
	Ajoute une autre feuille de code javascript dans le document. Il n'y a pas d'include possible dans Javascript, on passe donc par le DOM de la page parente
*/
function insertJsFile(filename, id) {
	//On crée une insertion du fichier javascript
	var jsFile = document.createElement("script");
	jsFile.setAttribute("src", filename);
	jsFile.setAttribute("language", "javascript");
	jsFile.setAttribute("type", "text/javascript");
	if (id) jsFile.setAttribute("id", id);
	//On l'ajoute dans le head
	document.getElementsByTagName("head")[0].appendChild(jsFile);
}

/*
	Name : insertCSSFile
	Param : filename
	Ajoute une feuille de style CSS au document
*/
function insertCSSFile(filename){
	var cssFile = document.createElement("link");
	cssFile.setAttribute("type","text/css");
	cssFile.setAttribute("rel","stylesheet");
	cssFile.setAttribute("href",filename);
	cssFile.setAttribute("media","screen");
	document.getElementsByTagName("head")[0].appendChild(cssFile);
}


/*
	Name : addOnLoadFunction
	Param : f
	On charge une fonction de plus au chargement de la page (Cause quelques soucis avec IE si chargement trop rapide)
*/
function addOnLoadFunction(f) {
	var old_onload = onLoad;
	window.onload = function() {
		old_onload();
		f();
	}
}
	
// Contrôle si au moins 3 caractères de saisi dans la zone de recherche rapide
// les espaces ne sont pas comptabilisés
function chkRechercheRapide() {

	var bOk = false;
	var recherche = document.getElementById('oQUOI').value.split(' ');	
	for (var i = 0; i < recherche.length; i++) {
		if (recherche[i].length >= 3) {
			bOk = true;
		}
	}
	if (!bOk) {
		alert('Vous devez saisir au moins 3 caratères dans la zone de recherche rapide.'); 
		return false;
	}
	return true;
}


/********************** NOUVELLES FONCTIONS ET METHODES *********************************

/* 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 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, "")); 
}






























