var toInstantiate = [];

// Cherche si des objets existe si oui: execute le require et instancie la classe
// Permet de charger des js uniquement si nécessaire
function requireOnDemand(query, className)
{
	var list = dojo.query(query);
	if( list.length > 0 )
	{
		dojo.require(className);
		toInstantiate.push({ "className": className, "list": list });
	}
}

function step1() {
	console.time("step1");
	dojo.addClass(dojo.body(), "javascript_enabled");
	
	// Classe qui s'occupe de la création des onglets
	requireOnDemand(".tabNav", "site.tabbed");
	
	// Classe pour replier et développer le menu de gauche
	requireOnDemand(".module-contenu > ul.list", "acticms.collapsableList");
		
	// Classe qui s'occupe de l'affichage hiérarchique de contenu ( générique )
	requireOnDemand(".CollapsibleList", "site.collapsibleList");
	
	// Gestion de la bannière de news flash
	requireOnDemand("#infoflash", "news.flash");
	
	// Suppression du contenu d'un input lorsqu'il est "pré remplis"
	requireOnDemand("input.autoDelete", "form.autoDelete");
	
	// Init du système de formulaire
	requireOnDemand("form.ComplexeForm", "form.validation");
	
	// Gestion du tooltip sur les évenements
	requireOnDemand("td[ajaxhref].event", "site.tooltip");
	
	// Table2chart sur les tableaux
	requireOnDemand("table.actiboxChart", "site.table2chart");
	
	// Ajoute le password check à côté de l'input
	requireOnDemand("input.passwordStrength", "form.passwordStrength");
	
	// Script sur le formulaire custom de forum
	requireOnDemand("#forum_searchForum", "forum.searchForum");
	
	// Permet la personnalisation de la page
	requireOnDemand("#mypage", "userinter.customize");
	
	// Petite fonctionnalité pour le formulaire de recherche de context
	requireOnDemand("#searchmodule", "context.searchModule");
	
	// Cacher / afficher les citations
	requireOnDemand(".postResponse", "forum.quote");
	
	// Gestion des boites de module ( configuration / rafraîchissement )
	requireOnDemand(".module.ajax, #mypage .module", "userinter.module");
	
	// Petit script pour le formulaire de login en haut du site
	requireOnDemand("div.smartLogin", "site.smartLogin");
	
	// Script qui créer le slideshow	
	requireOnDemand("div.multimedia_slideshowzone", "multimedia.slideshow");
	
	if( dojo.isIE == 6 ) {
		// Pour le petit mouseover sur IE6
		requireOnDemand(".level1 .moreInfoMenu", "site.menuHover");
	}
	
	// La suite s'effectue lorsque tout les require on été exécutes
	console.time("step1.5");
	dojo.addOnLoad(step2);
	console.timeEnd("step1");
}

function step2() {
	console.timeEnd("step1.5");
	console.time("step2");
	var objInstantiate;
	while( ( objInstantiate = toInstantiate.shift() ) != undefined )
	{
		var list = objInstantiate.list;
		list.instantiate(objInstantiate.className);
	}
	console.timeEnd("step2");
}

// Init du systême de widget custom
dojo.require("dojo.parser");
// Champ qui affiche un calendrier
dojo.require("form.date");
// Champ spécial avec autocompletion des mots-clés
dojo.require("metaannuaire.keywords");
dojo.addOnLoad(function(){
	step1();
	dojo.parser.parse();
});

