Supervisor = new Object();
//
Supervisor.initInterface = function(aIdPage, aIdLangue){
	this.premierChargementPage = true;
	this.idPage = aIdPage;
	if (aIdLangue=="null"){
		this.idLangue = "fr";
	}
	else {
		this.idLangue = aIdLangue;
	}
	this.initManagers();
};
//
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// INITIALISATION DES MANAGERS
//_______________________
//
Supervisor.initManagers = function(){
	this.initGetXMLManager();
	this.initMenuPrincipalManager();
	this.initMenuSecondaireManager();
	this.initAnimationHomeManager();
	this.initLocationIdManager();
	this.initLoadersManager();
	this.initContentManager();
	this.initFooterManager();
};
Supervisor.initLocationIdManager = function (){
	var vManager = LocationIdManager;
	vManager.refThis = this;
	vManager.onInit = function(){};
	vManager.requestOpenPage = function(aIdPage){this.refThis.locationSelected(aIdPage);};
	vManager.onLogedIn = function (){ContentManager.reload();};
	vManager.initContent();
};
Supervisor.initLoadersManager = function(){
	var vManager = LoadersManager;
	vManager.refThis = this;
	vManager.onInit = function(){
		this.showGenLoader();
	};
	vManager.initContent();
};
Supervisor.initGetXMLManager = function(){
	var vManager = GetXMLManager;
	vManager.refThis = this;
	vManager.onInit = function(){
		this.loadXMLArchitecture(this.refThis.idLangue);
	};
	vManager.onError = function(aMsg){alert ("GetXMLManager : \r"+aMsg);};
	vManager.onLoadXMLArchitecture = function(aXML){this.refThis.XMLArchitectureLoaded(aXML);};
	vManager.onLoadXMLPage = function(aXML){this.refThis.XMLPageLoaded(aXML);};
	vManager.initContent();
};
Supervisor.initMenuPrincipalManager = function(){
	var vManager = MenuPrincipalManager;
	vManager.refThis = this;
	vManager.onInit = function(){this.refThis.testChargementMenus();};
	vManager.onSelectCategory = function(aNum){this.refThis.categorySelected(aNum);};
	vManager.requestSearch = function(aStr){window.status = "recherche sur "+aStr;};
	vManager.initContent();
};
Supervisor.initMenuSecondaireManager = function(){
	var vManager = MenuSecondaireManager;
	vManager.refThis = this;
	vManager.onInit = function(){this.refThis.testChargementMenus();};
	vManager.requestOpenPage = function(aIdPage){this.refThis.pageSelected(aIdPage);};
	vManager.initContent();
};
Supervisor.initContentManager = function(){
	var vManager = ContentManager;
	vManager.refThis = this;
	vManager.onInit = function(){};
	vManager.onLoad = function(aId){
		this.refThis.contentLoaded (aId);
		LoadersManager.hideContentLoader();
	};
	vManager.initContent();
};
Supervisor.initAnimationHomeManager = function(){
	var vManager = AnimationHomeManager;
	vManager.refThis = this;
	vManager.onInit = function(){};
	vManager.initContent();
};
Supervisor.initFooterManager = function(){
	var vManager = FooterManager;
	vManager.refThis = this;
	vManager.onInit = function(){};
	vManager.requestChangeLanguage = function(){};
	vManager.requestCredits = function(){};
	vManager.initContent(this.idLangue);
};
//
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// METHODES APPELEES PAR LES MANAGERS
//_______________________
//
// ContentManager
Supervisor.contentLoaded = function (aId){
	var vId = MenuSecondaireManager.getIdPage();
	if (!isNaN(vId)&&vId!=aId){
		var vTab = MenuSecondaireManager.getFullPath (aId);
		var vTabId = [];
		for (var i=0; i<vTab.length; i++){
			vTabId.push(Number(vTab[i].id));
		}
		MenuSecondaireManager.setMenu(vTabId);
		var vCat = MenuSecondaireManager.getCategory (aId);
		MenuPrincipalManager.setCategory(vCat);
	}
};
//GETXMLManager
Supervisor.XMLArchitectureLoaded = function(aXML){
	this.testChargementMenus (aXML);
};
Supervisor.XMLPageLoaded = function(aXML){
	if (this.premierChargementPage){
		LoadersManager.hideGenLoader();
		LoadersManager.showContentLoader();
		this.premierChargementPage=false;
	}
	this.parseXMLDescriptionPage (aXML);
};
// MenuPrincipalManager
Supervisor.categorySelected = function(aNumCat){
	var vManager = MenuSecondaireManager;
	var vTableItems = [0, aNumCat];
	vManager.setMenu (vTableItems);
	var vIdPage = vManager.getIdPage(vTableItems);
	this.openPageRequested(vIdPage);
};
// Location
Supervisor.locationSelected = function (aTableItems){
	MenuSecondaireManager.setMenu (aTableItems);
	var vIdPage = MenuSecondaireManager.getIdPage (aTableItems);
	this.pageSelected(vIdPage);
};
// MenuSecondaireManager
Supervisor.pageSelected = function (aIdPage){
	this.openPageRequested(aIdPage);
};
//
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// METHODES DIVERSES DE L'ALGORITHME
//_______________________
//
// ouvre une page
Supervisor.openPageRequested = function(aIdPage){
	ContentManager.hide();
	LoadersManager.showContentLoader();
	//
	this.idPage = ""+aIdPage;
	this.chargeDescriptionPage ();
	//
};
// envoie les informations pour qu'elles soient affichées dans la barre de location
Supervisor.setLocation = function (aIdPage){
	// location
	var vTabReturn = MenuSecondaireManager.getFullPath(aIdPage);
	LocationIdManager.setLocation (vTabReturn);
};
// affiche ou masque les éléments de la page en fonction de la description XML
Supervisor.parseXMLDescriptionPage = function(aXML){
	var vXML = new XMLDoc (unescape(aXML), null).docNode;
	var vChildNodes = vXML.getElements();
	for (var i=0; i<vChildNodes.length; i++){
		var vNode = vChildNodes[i];
		var vNomElement = vNode.getAttribute("nom");
		var vVisibiliteElement = vNode.getAttribute("visible");
		eval(vNomElement+"Manager."+(vVisibiliteElement=="1" ? "show" : "hide")+"();");
	}
	this.chargeContenu();
};
// lance le chargement du contenu dans la frame de contenu
Supervisor.chargeContenu = function(){
	ContentManager.load (this.idPage);
};
Supervisor.testChargementMenus = function(aXML){
	if (aXML!=undefined){
		this.XMLArchitecture = aXML;
	}
	if (MenuPrincipalManager.initialized&&MenuSecondaireManager.initialized&&this.XMLArchitecture!=null){
		this.chargementXMLArchitectureTermine();
	}
};
Supervisor.chargementXMLArchitectureTermine = function(){
	MenuPrincipalManager.buildMenu (this.XMLArchitecture);
	MenuSecondaireManager.buildMenu (this.XMLArchitecture);
	if (this.idPage=="null"||isNaN (Number(this.idPage))){
		// retourne l'id de la home
		this.idPage = MenuSecondaireManager.getIdPage ([0]);
	}
	else{
		var vTab = MenuSecondaireManager.getFullPath (this.idPage);
		var vTabId = [];
		for (var i=0; i<vTab.length; i++){
			vTabId.push(Number(vTab[i].id));
		}
		MenuSecondaireManager.setMenu(vTabId);
	}
	this.chargeDescriptionPage ();
};
Supervisor.chargeDescriptionPage = function (){
	var vId = this.idPage;
	GetXMLManager.loadXMLPage (vId);
	var vCat = MenuSecondaireManager.getCategory (vId);
	MenuPrincipalManager.setCategory(vCat);
	this.setLocation(vId);
};
