﻿// **************************************
// Methodes pour CListe_js, et CMenu

// Affiche la liste ou le menu
function cliste_affiche()
{
	var racine = this.obtenir_filles(0);
	
	this.affiche_debut();
	
	for(var idx_item=0; idx_item<racine.length; idx_item++)
	{
		racine[idx_item].visible = (racine[idx_item].visible != 'undefined') ? racine[idx_item].visible : true;
		racine[idx_item].ouvert = (racine[idx_item].ouvert != 'undefined') ? racine[idx_item].ouvert : false;
		//racine[idx_item].visible = true;
		//racine[idx_item].ouvert = false;
		
		//trace(racine[idx_item].id + " = " + racine[idx_item].ouvert);
		
		if(this.chargementPartiel)
		{
			racine[idx_item].pfchargees = false;
		}
		else
		{
			racine[idx_item].pfchargees = true;
		}
		
		// ecriture de l'idx_item
		document.writeln(this.obtenir_itemHTML(racine[idx_item]));

		var filles = this.obtenir_filles(racine[idx_item].id);

		this.affiche_filles(filles, racine[idx_item].ouvert);	
	}
	
	this.affiche_fin();
}

// Transfert des objets vers le tableau d'items
function cliste_ajoute_item()
{
	// ordre des parametres
	// ['id', 'id_parent', 'niveau', 'nom_fr', 'nom_en', 'ordre']
	
	var argv = arguments;
  	var argc = argv.length;
  	
  	var newItem = {id:argv[0], id_parent:argv[1], niveau:argv[2], nom_fr:unescape(argv[3])};
  	
  	if(argc>4)
  	{
  		newItem.nom_en = unescape(argv[4]);
  	}
  	
 	if(argc>5)
  	{
  		newItem.ordre = argv[5];
  	}
  	
  	this.items.push(newItem);
}

// Ecris le debut non repetitif de la liste
function cliste_affiche_debut()
{
	
}

// Ecris la fin non repetitive de la liste
function cliste_affiche_fin()
{
	
}

// Retournes l'id de l'objet HTML associe
function cliste_obtenir_item_id(p_id)
{
	return this.prefixeNode + "l_" + p_id;
}

// Retournes le code HTML pour un item
function cliste_obtenir_itemHTML(p_item)
{
	if(this.langue == "en")
	{
		return p_item.nom_en + "<br>";
	} 
	else
	{
		return p_item.nom_fr + "<br>";
	}
}

// Clic sur un item de la liste
function cliste_clic_item(p_id)
{
	var item = this.obtenir_item(p_id);
	var filles = this.obtenir_filles(p_id);
		
	if(filles.length)
	{
		if(item.ouvert)
		{
			new Effect.BlindUp(this.prefixeNode + "_" + p_id, {duration:0.5});
		}
		else
		{
			new Effect.BlindDown(this.prefixeNode + "_" + p_id, {duration:0.5});
		}
		
		item.ouvert = !item.ouvert;
	}
	
	// Code pour fonctionnalite ici
	this.onClick(item);
}

function cliste_onClick(item)
{
}

function cliste_obtenir_item(p_id)
{
	for(var idx_item=0; idx_item<this.items.length; idx_item++)
	{
		if(this.items[idx_item].id == p_id)
		{
			return this.items[idx_item];
		}
	}
	
	return false;
}

// Obtiens les sous-elements d'un element donne
function cliste_obtenir_filles(p_id)
{
	var selection = new Array();
	
	for(var idx_item=0; idx_item<this.items.length; idx_item++)
	{
		if(parseInt(this.items[idx_item].id_parent) == parseInt(p_id))
		{
			selection.push(this.items[idx_item]);
		}
	}
	
	selection = this.trier_filles(p_id, selection);
	
	return selection;
}

function cliste_trier_filles(p_id, p_filles)
{	
	if(this.langue=="en")
	{
		p_filles.sort(this.trier_alpha_en);
	}
	else
	{
		p_filles.sort(this.trier_alpha_fr);
	}
	
	return p_filles;
}

// Affiche les sous-elements specifies par le tableau p_filles
function cliste_affiche_filles(p_filles, p_ouvert)
{
	if(p_filles.length)
	{
		// affichage ici // TODO
	}
}

function cliste_sans_accents(p_texte)
{
	var nouveau_texte = p_texte;
	nouveau_texte = nouveau_texte.replace(/[àâäãÀÂÄÃ]/g, 'a');
	//nouveau_texte = nouveau_texte.replace(/[æÆ]/g, 'ae');
	nouveau_texte = nouveau_texte.replace(/[çÇ]/g, 'c');
	nouveau_texte = nouveau_texte.replace(/[éêèëÉÊÈË]/g, 'e');
	nouveau_texte = nouveau_texte.replace(/[îïÎÏ]/g, 'i');
	nouveau_texte = nouveau_texte.replace(/[ôöõÔÖÕ]/g, 'o');
	//nouveau_texte = nouveau_texte.replace(/[œŒ]/g, 'oe');
	nouveau_texte = nouveau_texte.replace(/[ùÙ]/g, 'u');

	return nouveau_texte;
}

function cliste_trier_alpha_fr(a, b)
{
	// On appelles directement la fonction, car on est pas dans l'instance de l'objet ici
	
	var A = cliste_sans_accents(a.nom_fr.toLowerCase());
	var B = cliste_sans_accents(b.nom_fr.toLowerCase());
	
	if (A < B) return -1;
	if (A > B) return 1;
	return 0;
}

function cliste_trier_alpha_en(a, b)
{
	// On appelles directement la fonction, car on est pas dans l'instance de l'objet ici
	
	var A = cliste_sans_accents(a.nom_en.toLowerCase());
	var B = cliste_sans_accents(b.nom_en.toLowerCase());
	
	if (A < B) return -1;
	if (A > B) return 1;
	return 0;
}


// **************************************
// Methodes pour CMenu

// Ecris le debut non repetitif du menu
function cmenu_affiche_debut()
{
	document.writeln("<ul id=\"" + this.prefixeNode + "_0\" class=\"mNiveau1\">");
}

// Ecris la fin non repetitive du menu
function cmenu_affiche_fin()
{
	document.writeln("</ul>");
}

function cmenu_ouvrir_parents(p_id)
{
	for(var idx_item=0; idx_item<this.items.length; idx_item++)
	{
		if(this.items[idx_item].id == p_id)
		{
			//trace("cmenu_ouvrir_parents(" + p_id + " - " + this.items[idx_item].nom_fr + ")");
			
			var paramOpt = (arguments.length >=2) ? arguments[1] : null; // argument optionnel (ex: dialogue)
			
			if(paramOpt=='dialogue')
			{
				this.items[idx_item].visibleDG = true;
				this.items[idx_item].ouvertDG = true;
			}
			else
			{
				this.items[idx_item].visible = true;
				this.items[idx_item].ouvert = true;
			}
			
			if(this.items[idx_item].id_parent!=0)
			{
				this.ouvrir_parents(this.items[idx_item].id_parent, paramOpt);
			}
		}
	}
}

function cmenu_obtenir_filAriane(p_id)
{
	var item = this.obtenir_item(p_id);
	
	var filAriane = "<a href=\"catalogue.php?ac=cat&catid=" + p_id + "\"><b>" + ((this.langue == "en") ? item.nom_en : item.nom_fr) + "</b></a>";
	
	while(item.id_parent > 0)
	{
		item = this.obtenir_item(item.id_parent);
		filAriane = ((this.langue == "en") ? item.nom_en : item.nom_fr) + " : " + filAriane;
	}
	
	return filAriane;
}

function cmenu_fermer_tout()
{
	var racine = this.obtenir_filles(0);
	
	var paramOpt = (arguments.length >=1) ? arguments[0] : null; // argument optionnel (ex: dialogue)

	//trace("cmenu_fermer_tout(" + paramOpt + ")");
	
	for(var idx_item=0; idx_item<racine.length; idx_item++)
	{
		if(paramOpt=='dialogue')
		{
			racine[idx_item].visibleDG = true;
			racine[idx_item].ouvertDG = false;
		}
		else
		{
			racine[idx_item].visible = true;
			racine[idx_item].ouvert = false;
		}
		
		var filles = this.obtenir_filles(racine[idx_item].id);
		
		this.fermer_filles(filles, paramOpt);
	}
}

function cmenu_fermer_filles(p_filles)
{
	if(p_filles.length)
	{	
		var paramOpt = (arguments.length >=2) ? arguments[1] : null; // argument optionnel (ex: dialogue)

		//trace("cmenu_fermer_filles(" + paramOpt + ")");

		for(var idx_item=0; idx_item<p_filles.length; idx_item++)
		{
			if(paramOpt=='dialogue')
			{
				p_filles[idx_item].ouvertDG = false;
				p_filles[idx_item].visibleDG = false;
			}
			else
			{
				p_filles[idx_item].ouvert = false;
				p_filles[idx_item].visible = false;
			}

			if(this.maxNiveau==0 || p_filles[idx_item].niveau < this.maxNiveau)
			{
				var filles = this.obtenir_filles(p_filles[idx_item].id);
				this.fermer_filles(filles, paramOpt);
			}
		}
	}
}

function cmenu_obtenirEtat(p_type)
{	
	this.chaineURL = "";
	this.chaineCookie = "";
	
	var racine = this.obtenir_filles(0);
		
	for(var idx_item=0; idx_item<racine.length; idx_item++)
	{		
		if(racine[idx_item].ouvert)
		{
			this.chaineURL += "&om[]=" + racine[idx_item].id;
			this.chaineCookie += ((this.chaineCookie=='') ? '' : ',') + racine[idx_item].id;
			
			// On gardes l'etat ouvert des sous elements seulement si leur parent est ouvert
			var filles = this.obtenir_filles(racine[idx_item].id);
			this.lireEtat_filles(filles);
		}
	}
	
	this.chaineURL += "&sm=" + this.itemCourant;
	
	if(p_type=='cookie')
	{
		return this.chaineCookie;
	}
	else
	{
		return this.chaineURL;
	}
}

function cmenu_lireEtat_filles(p_filles)
{
	if(p_filles.length)
	{
		for(var idx_item=0; idx_item<p_filles.length; idx_item++)
		{
			if(p_filles[idx_item].ouvert)
			{
				this.chaineURL += "&om[]=" + p_filles[idx_item].id;
				this.chaineCookie += ',' + p_filles[idx_item].id;

				// On gardes l'etat ouvert des sous elements seulement si leur parent est ouvert
				if(this.maxNiveau==0 || p_filles[idx_item].niveau < this.maxNiveau)
				{
					var filles = this.obtenir_filles(p_filles[idx_item].id);
					this.lireEtat_filles(filles);
				}
			}
		}
	}
}

function cmenu_obtenirDgHTML()
{	
	this.codeHTML = "";
	
	var racine = this.obtenir_filles(0);
	
	this.obtenirHTML_debut();
	
	for(var idx_item=0; idx_item<racine.length; idx_item++)
	{
		//racine[idx_item].visibleDG = true;
		//racine[idx_item].ouvertDG = false;
		
		if(this.chargementPartiel)
		{
			racine[idx_item].pfchargees = false;
		}
		else
		{
			racine[idx_item].pfchargees = true;
		}
		
		// ecriture de l'idx_item
		this.codeHTML += this.obtenir_itemDgHTML(racine[idx_item]);
		
		var filles = this.obtenir_filles(racine[idx_item].id);
		
		//trace(racine[idx_item].nom_fr + " - ouvertDG = " + racine[idx_item].ouvertDG);
		
		this.lireDgHTML_filles(filles, racine[idx_item].ouvertDG);
	}
	
	this.obtenirHTML_fin();
	
	return this.codeHTML;
}

// Affiche les sous-elements specifies par le tableau p_filles
function cmenu_lireDgHTML_filles(p_filles, p_ouvert)
{
	if(p_filles.length)
	{
		var style = (p_ouvert) ? "":" style=\"display: none;\"";
		this.codeHTML += "<ul id=\"dl" + this.prefixeNode + "_" + p_filles[0].id_parent + "\" class=\"mNiveau" + parseInt(p_filles[0].niveau) + "\" "+ style +">";
		
		for(var idx_item=0; idx_item<p_filles.length; idx_item++)
		{
			//p_filles[idx_item].ouvertDG = false;
			//p_filles[idx_item].visibleDG = false;

			// ecriture de la categorie du 2e niveau
			this.codeHTML += this.obtenir_itemDgHTML(p_filles[idx_item]);

			if(this.maxNiveau==0 || p_filles[idx_item].niveau < this.maxNiveau)
			{
				var filles = this.obtenir_filles(p_filles[idx_item].id);
				this.lireDgHTML_filles(filles, p_filles[idx_item].ouvertDG);
			}
		}
		
		this.codeHTML += "<\/ul>";
	}
}

function cmenu_obtenirHTML_debut()
{
	this.codeHTML += "<ul id=\"dl" + this.prefixeNode + "_0\" class=\"mNiveau1\">";
}

function cmenu_obtenirHTML_fin()
{
	this.codeHTML += "</ul>";
}

// Retournes l'id de l'objet HTML associe
function cmenu_obtenir_item_Dgid(p_id)
{
	return "dl" + this.prefixeNode + "l_" + p_id;
}


// Retournes le code HTML pour un item dans une boite de dialogue
function cmenu_obtenir_itemDgHTML(p_item)
{
	var titre = (this.langue == "en") ? p_item.nom_en : p_item.nom_fr;

	var style = (p_item.id==this.itemDialogueCourant) ? " style=\"background-color: #6F2C14; color:#fff;\"" : "";

	var htmlCode = "<li><a id=\"dl" + this.prefixeNode + "l_" + p_item.id + "\"" + style + " href=\"javascript:" + this.nom + ".clic_item(" + p_item.id + ", 'dialogue');\">" + titre + "<\/a><\/li>";
	
	return htmlCode;
}

// Retournes le code HTML pour un item
function cmenu_obtenir_itemHTML(p_item)
{
	var titre = (this.langue == "en") ? p_item.nom_en : p_item.nom_fr;

	var style = (p_item.id==this.itemCourant) ? " style=\"background-color: #6F2C14; color:#fff;\"" : "";

	var htmlCode = "<li><a id=\"" + this.prefixeNode + "l_" +p_item.id + "\"" + style + " href=\"javascript:" + this.nom + ".clic_item(" + p_item.id + ");\">" + titre + "<\/a><\/li>";
	
	return htmlCode;
}

// Clic sur un item du menu
function cmenu_clic_item(p_id)
{
	var item = this.obtenir_item(p_id);
	var filles = this.obtenir_filles(p_id);
	var paramDeux = (arguments.length >=2) ? arguments[1] : null; // argument optionnel (ex: dialogue)

	// Exception pour utilisation avec le dialogue
	var idModif = "";
	if(paramDeux=='dialogue')
	{
		idModif = "dl";
	}

	item.nbFilles = filles.length;

	if(item.nbFilles)
	{
		if(paramDeux=='dialogue')
		{
			if(item.ouvertDG)
			{
				new Effect.BlindUp(idModif + this.prefixeNode + "_" + p_id, {duration:0.5});
			}
			else
			{
				new Effect.BlindDown(idModif + this.prefixeNode + "_" + p_id, {duration:0.5});
				
				// chargement dynamique ajax
				if(this.chargementPartiel && !item.pfchargees)
				{
					this.charger_sous_elements(item, filles);
				}
			}
			
			item.ouvertDG = !item.ouvertDG;
		}
		else
		{
			if(item.ouvert)
			{
				new Effect.BlindUp(idModif + this.prefixeNode + "_" + p_id, {duration:0.5});
			}
			else
			{
				new Effect.BlindDown(idModif + this.prefixeNode + "_" + p_id, {duration:0.5});
				
				// chargement dynamique ajax
				if(this.chargementPartiel && !item.pfchargees)
				{
					this.charger_sous_elements(item, filles);
				}
			}
			
			item.ouvert = !item.ouvert;
		}
	}

	// Code pour fonctionnalite additionnelle ici
	this.onClick(item, paramDeux);
}

// Cette fonction et la suivante chargent les sous-elements d'une liste de manière dynamique
// A re-ecrire selon la nouvelle structure d'objets PHP - CListe
// Pas utilisees pour le moment
function cmenu_charger_sous_elements(p_item, p_filles)
{
	if(parseInt(p_item.niveau) + 2 <= this.maxNiveaux)
	{
		var ChaineRequete = "ajax=true";
		ChaineRequete += "&aj_page=CPageProduits";
		ChaineRequete += "&aj_methode=obtenirSousCategories"; // TODO, changer pour appeller plutot une propriete de la page (derivation de CListe), et non la page
		ChaineRequete += "&aj_categorie=" + p_item.id;
		
		for(var scat=0; scat<p_filles.length; scat++)
		{
			ChaineRequete += "&parent[]=" + p_filles[scat].id;
		}
		
		new Ajax.Request('index.php', {
		asynchronous:true, 
		evalScripts:true, 
		onComplete:function(request) {menuProd.insererPetitesFilles(request)}, // TODO, changer pour rappeller le bon objet
		parameters:ChaineRequete});
	}
	else
	{
		p_categorie.pfchargees = true;
	}
}

// A re-ecrire selon la nouvelle structure javascript CListe_js et la structure d'objets PHP - CListe
function cmenu_inserer_sous_elements(p_reponse)
{
	if(p_reponse.status == 200)
	{
		premiere_nouvelle_cat = this.items.length;
										
		eval(p_reponse.responseText);
	
		catID = p_reponse.getResponseHeader("X-categorie");
		
		var categorie = this.obtenirCategorie(catID);
		
		var aditionnelles = p_reponse.getResponseHeader("X-aditionnelles");
		
		if(aditionnelles > 0)
		{			
			// Recherche des categories filles
			var filles = this.obtenirCategoriesFilles(categorie.id);
			
			for(var scat=0; scat<filles.length; scat++)
			{	
				var petitesFilles = this.obtenirCategoriesFilles(filles[scat].id);
				
				if(petitesFilles.length)
				{
					// Insertion
					var nouveauCode = "<ul id=\"mp_" + filles[scat].id + "\" class=\"mNiveau" + parseInt(petitesFilles[0].niveau) + "\" style=\"display: none;\">";
					
					for(var nitem=0; nitem<petitesFilles.length; nitem++)
					{
						nouveauCode += this.obtenirCategorieHTML(petitesFilles[nitem]);
					}
					
					nouveauCode += "<\/ul>";
								
					new Insertion.After('cat_' + filles[scat].id, nouveauCode);
				}
			}
		}
		
		categorie.pfchargees = true;
	}
	else
	{
		alert(p_reponse.responseText);
	}
}

// Affiche les sous-elements specifies par le tableau p_filles
function cmenu_affiche_filles(p_filles, p_ouvert)
{
	if(p_filles.length)
	{
		var style = (p_ouvert) ? "":" style=\"display: none;\"";
		document.writeln("<ul id=\"" + this.prefixeNode + "_" + p_filles[0].id_parent + "\" class=\"mNiveau" + parseInt(p_filles[0].niveau) + "\" "+ style +">");
		
		for(var idx_item=0; idx_item<p_filles.length; idx_item++)
		{
			p_filles[idx_item].visible = (p_filles[idx_item].visible != 'undefined') ? p_filles[idx_item].visible : false;
			p_filles[idx_item].ouvert = (p_filles[idx_item].ouvert != 'undefined') ? p_filles[idx_item].ouvert : false;
			
			//p_filles[idx_item].ouvert = false;
			//p_filles[idx_item].visible = false;

			// ecriture de la categorie du 2e niveau
			document.writeln(this.obtenir_itemHTML(p_filles[idx_item]));

			if(this.maxNiveau==0 || p_filles[idx_item].niveau < this.maxNiveau)
			{
				var filles = this.obtenir_filles(p_filles[idx_item].id);
				this.affiche_filles(filles, p_filles[idx_item].ouvert);
			}
		}
		
		document.writeln("<\/ul>");
	}
}

// **************************************
// Methodes pour CListeDialogue

function clistedialogue_obtenirHTML()
{	
	this.codeHTML = "";
	
	this.obtenirHTML_debut();
	
	for(var idx_item=0; idx_item<this.items.length; idx_item++)
	{
		// ecriture de l'idx_item
		this.codeHTML += this.obtenir_itemHTML(this.items[idx_item]);
	}
	
	this.obtenirHTML_fin();
	
	return this.codeHTML;
}

// Ecris le debut non repetitif du menu
function clistedialogue_obtenirHTML_debut()
{
	this.codeHTML += "<ul id=\"" + this.prefixeNode + "_0\" class=\"listeDialogue\">";
}

// Ecris la fin non repetitive du menu
function clistedialogue_obtenirHTML_fin()
{
	this.codeHTML += "</ul>";
}

// Retournes le code HTML pour un item
function clistedialogue_obtenir_itemHTML(p_item)
{
	var titre = (this.langue == "en") ? p_item.nom_en : p_item.nom_fr;

	var style = (p_item.id==this.itemCourant) ? " style=\"background-color: #FFFF99;\"" : "";

	var htmlCode = "<li><a id=\"" + this.prefixeNode + "l_" + p_item.id + "\" href=\"javascript:" + this.nom + ".clic_item(" + p_item.id + ");\" ondblclick=\"" + this.nom + ".dblclic_item(" + p_item.id + ");\"" + style + ">" + titre + "<\/a><\/li>";
	
	return htmlCode;
}

// Ecris la fin non repetitive du menu
function clistedialogue_clic_item(p_id)
{
	var item = this.obtenir_item(p_id);
	
	// Couleur de sélection
	if(this.itemCourant > 0)
	{
		setStyle(this.prefixeNode + "l_" + this.itemCourant, "background-color", "default");
	}
	setStyle(this.prefixeNode + "l_" + item.id, "background-color", "#FFFF99");
	this.itemCourant = item.id;
	
	jsDialogue.currentValue = item.id;
	
	//var listeElem = document.getElementById(this.prefixeNode + "l_" + item.id);
	//alert(listeElem.offsetTop);
	
	// Code pour fonctionnalite ici
	this.onClick(item);
}

// Ecris la fin non repetitive du menu
function clistedialogue_dblclic_item(p_id)
{
	//this.clic_item();
	
	jsDialogue.btnOK();
}

// *************************************************************
// Definitions des classes - fonctions constructrices

function CListe_js(p_ref_liste, p_prefixeNode, p_maxNiveau, p_chargementPartiel)
{
	this.nom = p_ref_liste;
	this.items = new Array();
	this.langue = "fr";

	this.prefixeNode = p_prefixeNode;
	this.maxNiveau = p_maxNiveau;
	this.chargementPartiel = p_chargementPartiel;
	
	this.itemCourant = -1;
	
	// methodes
	this.affiche = cliste_affiche;
	this.affiche_debut = cliste_affiche_debut;
	this.affiche_fin = cliste_affiche_fin;
	this.obtenir_itemHTML = cliste_obtenir_itemHTML;
	this.clic_item = cliste_clic_item;
	this.onClick = cliste_onClick;
	this.obtenir_item = cliste_obtenir_item;
	this.obtenir_filles = cliste_obtenir_filles;
	this.trier_filles = cliste_trier_filles;
	this.affiche_filles = cliste_affiche_filles;
	this.trier_alpha_fr = cliste_trier_alpha_fr;
	this.trier_alpha_en = cliste_trier_alpha_en;
}

function CMenu(p_ref_liste, p_prefixeNode, p_maxNiveau, p_chargementPartiel, p_langue)
{
	this.nom = p_ref_liste;
	this.items = new Array();
	this.codeHTML = "";
	this.chaineURL = "";
	this.langue = p_langue;
	
	this.prefixeNode = p_prefixeNode;
	this.maxNiveau = p_maxNiveau;
	this.chargementPartiel = p_chargementPartiel;
	
	this.itemCourant = -1;
	this.itemDialogueCourant = -1;
	
	// methodes - les methodes "derivees" sont attribuee ici en fonction de la "classe"
	
	// support pour declarations js abregees
	this.a = cliste_ajoute_item;
	
	this.affiche = cliste_affiche;
	this.obtenir_filAriane = cmenu_obtenir_filAriane;
	this.affiche_debut = cmenu_affiche_debut;		// cmenu
	this.affiche_fin = cmenu_affiche_fin;			// cmenu
	this.obtenir_itemHTML = cmenu_obtenir_itemHTML;	// cmenu
	this.clic_item = cmenu_clic_item;				// cmenu
	this.onClick = cliste_onClick;					// cliste, mais devrait etre modifiee pour chaque type de menu...
	this.obtenir_item = cliste_obtenir_item;
	this.obtenir_filles = cliste_obtenir_filles;
	this.trier_filles = cliste_trier_filles;
	this.affiche_filles = cmenu_affiche_filles;		// cmenu
	this.trier_alpha_fr = cliste_trier_alpha_fr;
	this.trier_alpha_en = cliste_trier_alpha_en;
	
	// support pour reutilisation d'un meme objet dans la boite de dialogue
	this.obtenirDgHTML = cmenu_obtenirDgHTML;		
	this.obtenirHTML_debut = cmenu_obtenirHTML_debut;
	this.obtenirHTML_fin = cmenu_obtenirHTML_fin;	
	this.obtenir_itemDgHTML = cmenu_obtenir_itemDgHTML;
	this.lireDgHTML_filles = cmenu_lireDgHTML_filles;
	this.obtenir_item_Dgid = cmenu_obtenir_item_Dgid;
	
	// support pour un etat de menu deja ouvert - utilise dans le dialogue seulement dans la version actuelle
	this.fermer_tout = cmenu_fermer_tout;
	this.fermer_filles = cmenu_fermer_filles;
	this.ouvrir_parents = cmenu_ouvrir_parents;
	
	// Support pour passer l'info sur les elements ouverts via un url
	this.obtenirEtat = cmenu_obtenirEtat;
	this.lireEtat_filles = cmenu_lireEtat_filles;
	
	// methodes additionnelles
	this.charger_sous_elements = cmenu_charger_sous_elements; 	// a reecrire
	this.inserer_sous_elements = cmenu_inserer_sous_elements;	// a reecrire
}

function CListeDialogue(p_ref_liste, p_prefixeNode)
{
	this.nom = p_ref_liste;
	this.items = new Array();
	this.codeHTML = "";
	this.langue = "fr";

	this.prefixeNode = p_prefixeNode;
	
	this.itemCourant = -1;
	
	// methodes
	this.obtenirHTML = clistedialogue_obtenirHTML;
	this.obtenirHTML_debut = clistedialogue_obtenirHTML_debut;
	this.obtenirHTML_fin = clistedialogue_obtenirHTML_fin;
	this.obtenir_itemHTML = clistedialogue_obtenir_itemHTML;
	this.clic_item = clistedialogue_clic_item;
	this.dblclic_item = clistedialogue_dblclic_item;
	this.onClick = cliste_onClick;
	this.obtenir_item = cliste_obtenir_item;
	this.obtenir_item_id = cliste_obtenir_item_id;
	//this.trier_alpha = cliste_trier_alpha;
}
