//------------------------------------------------------------------------------------------------------------------------------------------------------
//	Ce fichier contient l'ensemble de fonctions nécessaire à la gestion des select ( ajout, suppression, etc..). Il est actuellement, au 12/07/2007) (sollicité à deux
//		moments, lors de la gestion de la personnalisation et par le générateur	de select).
//	function        geneList(idElem, tabDonnees, selectedValue)				: fonction permettant d'écrire des données dans un select
//	function        clearSelect(idElem)							: permet de vider un select (sauf le premier élément qui est toujours conservé)
//	function        geneSelect(idElem,tabDonnees, selectedValue)    			: Va remplir le select de pleins de trucs
//	function        geneListFraction(idElem, tabDonnees, listeValues, selectedValue)	: permet de n'afficher qu'une partie des éléments parmis une liste)
//------------------------------------------------------------------------------------------------------------------------------------------------------
function	geneList(idElem, tabDonnees, selectedValue)
{
	nodeElem	= document.getElementById(idElem);
	if( nodeElem != null )	//	S'il existe, on va le mettre à jour
	{
		clearSelect(idElem);				//	Epuration préalable de la liste
		geneSelect(idElem,tabDonnees,selectedValue);	//	Ajout des infos
	}
}
function	clearSelect(idElem)
{
	nodeElem	= document.getElementById(idElem);
		//	Le premier élément du tableau n'est pas supprimé, c'est le texte de "présentation"
	if( nodeElem.options.length > 0 )	//	On ne le fait pas si on rien à faire
	{
		for(inc=nodeElem.options.length - 1 ; inc >=0 ; inc--)
		{
			//	Si sa valeur est -1, on le supprime pas.
			if( nodeElem.options[inc].value != -1 )	nodeElem.remove(inc);
		}
	}
}
function	geneSelect(idElem,tabDonnees, selectedValue)	//	Va remplir le select de pleins de trucs
{
	nodeElem	= document.getElementById(idElem);
	posSelected	= 0;	// Par défaut on sélectionne le premier
	for(inc=0;inc<tabDonnees.length;inc++)
	{
		//nodeElem.options.add(tabDonnees[inc]);	Ne fonctionne pas dans safari
		//nodeElem.options[nodeElem.options.length]	= tabDonnees[inc];	// les copies se font par référence, mettre l'un dans l'autre le fait "physiquement"
		nodeElem.options[nodeElem.options.length]	= new Option(tabDonnees[inc].text,tabDonnees[inc].value);
			//	Si c'est l'élément sélectionné, on le met en selected
		//if(selectedValue == tabDonnees[inc].value)	nodeElem.selectedIndex	= nodeElem.options.length - 1 ;	// on selectionne le dernier élément de la liste
		if(selectedValue == tabDonnees[inc].value )	posSelected	= nodeElem.options.length - 1;	// on selectionne le dernier élément de la liste
	}
	nodeElem	= document.getElementById(idElem);
	//alert("jmv");	// dans opera, faire un alert empèche l'apparition d'un bug dans la liste des selects :o
	if( selectedValue != ''  && selectedValue != -1 )	nodeElem.options.selectedIndex	= posSelected;	// Permet d'éviter un bug de l'affichage
}
function	geneListFraction(idElem, tabDonnees, listeValues, selectedValue)
{
	var	reg	= new RegExp("[ ,]","g");		// séparateur utilisé pour la liste des chaines
	nodeElem	= document.getElementById(idElem);	// noeud du select représentant la liste des chaines de l'internaute

	//sdv_ncs: pour vider la liste en cours
        if( nodeElem != null )  //      S'il existe, on va le mettre à jour
        {
                clearSelect(idElem); 
	}
	posSelected	= 0;	// Par défaut on sélectionne le premier
	tabTemp	= listeValues.split(reg);			
		//	on va parcourir toutes les chaines de l'internaute et les sélectionner parmis la liste des chaines du client
	for( inc=0; inc < tabTemp.length; inc++)
	{
			//	On parcour la liste des chaines du client
		for( incOption=0; incOption < tabDonnees.length; incOption++)
		{
				//	et on intègre la chaine si on la trouve
			if( tabDonnees[incOption].value == tabTemp[inc] )	
			{
					nodeElem.options[nodeElem.options.length]	= new Option(tabDonnees[incOption].text,tabDonnees[incOption].value);
				if( selectedValue != '' && selectedValue == tabDonnees[incOption].value)
					posSelected	= nodeElem.options.length - 1;	// on selectionne le dernier élément de la liste
			}
		}
	}
	//sdv_ncs: pour que la chaine soit selectionnée deplacement dans la pagination.
	if( selectedValue != '' && selectedValue != -1 )
		nodeElem.options.selectedIndex	= posSelected;	// Permet d'éviter un bug de l'affichage

}
