// *********************************************************************<BR>
// Ce module contient des fonctions permettant de manipuler des listes<BR>
// de formulaire HTML (balise SELECT).<BR>
// Toutes les fonctions de ce module fonctionnent en interaction avec<BR>
// des arrays de valeurs permettant de manipuler les listes de formulaire<BR>
// html (balise SELECT).<BR>
// Les arrays de valeurs doivent contenir le descriptifs à afficher dans<BR>
// les listes au second élément (indice 1) du sous-array correspondant à un<BR>
// enregistrement.<BR>
// Ex: Array( new Array("0","Bleu") , new Array("1","Bleu") )<BR>
// *********************************************************************<BR>
// <SCRIPT language=javascript>

// *** fActLis ************************************************
// Cette fonction permet d'actualiser le contenu d'une liste  de formulaire html (balise SELECT)
// à partir d'une "array" contenant les valeurs devant être affciher dans la liste.

// -> Sdes: <SELECT id=select1 name=select1> cible
// -> A_src: "Array" source qui sera transféré dans le <SELECT id=select1 name=select1> cible
// -> strValElePar: Valeur de l'élément parent, permet de n'afficher que les enfants selon l'identifiant du parent reçu par ce paramètre
// -> strValDef: Valeur de l'élément par défaut
// -> iInDef: Indique qu'on doit affecter l'élément par défaut selon l'indicateur de valeur par défaut.
// *************************************************************
function fActLis(Sdes,A_src,strValElePar,strValDef,iInDef){

var i1,i2;
var oOption1;
Sdes.length=0;

//S'il n'y a pas de Valeur d'élément parent  
if ( strValElePar == "" ){
	// Ajout d'un premier élément dans la liste du SELECT
	if (iInDef == 1){
		oOption1 = new Option("Aucun choix spécifique","vide",false, false);
		Sdes.options[0] = oOption1;

		// On met le reste de la liste  du SELECT à partir du 2 ième élément
		for (i1=0;i1<A_src.length;i1++){
		oOption1 = new Option(A_src[i1][1],A_src[i1][0],false,false);
		//Mettre l'enr de la table source(A_src) dans le deuxième de la liste du Select
		Sdes.options[i1+1] = oOption1;	
		}
	}
	// Remplir la liste du SELECT à partir du premier élément
	else{
		for (i1=0;i1<A_src.length;i1++){
		oOption1 = new Option(A_src[i1][1],A_src[i1][0],false,false);
		Sdes.options[i1] = oOption1;
		}
	}
}
// Quand il y a un élément parent  (Quel est vraiment son utilité?)
else{
	// On met dans la liste les éléments enfants
	i2=0;
	for (i1=0;i1<A_src.length;i1++){
	
	// Comparaison entre l'Élément Parent et la valeur par défaut de l'enfant retrouvé
	if ( strValElePar == A_src[i1][3] ){
		oOption1 = new Option(A_src[i1][1],A_src[i1][0],false,false);
		Sdes.options[i2] = oOption1;
		i2++;
	}
	}
}
// Détection d'une présence d'un valeur par défaut
if (strValDef != "0" && strValDef != "" ){
	for (i1=0;i1<Sdes.length;i1++){
	
	// Si la valeur par défaut est comparable à celle sélectionnée par l'internaute
	if ( strValDef == Sdes[i1].value ){
		Sdes.selectedIndex = i1;
		break;
	}
	}
}
// Choix de l'élément à affecter (sélectionné) 
else{ 
	if (iInDef == 1){
	for (i1=0;i1<A_src.length;i1++){
	
	// Comparaison entre le troisième élément de la "Array" source et un 'O'
		if ( A_src[i1][2] == 'O' ){
			Sdes.selectedIndex = i1;
			break;
		}
	}
	}
//
	else {Sdes.selectedIndex = Sdes.options.length;}}
	return;
}

//////////////////////////////////////////////////////////

//*** fObtValEnf ************
// Cette fonction permet d'obtenir la valeur d'un enfant dans un
// array contenant une les valeurs enfant de plusieurs parents.
//***************************
function fObtValEnf(Sdes,A_des,strValPar,iIndPar){

var strVal;
var i1,i2;
i2=0;

for (i1=0;i1<A_des.length;i1++){
 if (A_des[i1][iIndPar]==strValPar){
  if (i2==Sdes.selectedIndex){
   strVal=A_des[i1][0];
   break;
  }
  i2++;
 }
}
return strVal;}

//*** fInsLis ***************
// Cette fonction permet d'ajouter un élément d'une liste de formulaire.
// L'ajout se fait dans le tableau des éléments (Array) de la liste
// et cette liste est actualisée par la suite.
//***************************
function fInsLis(Ssrc,A_src,Sdes,A_des){

var i1;
var i2;
var iExist;

for (i1=0;i1<A_src.length;i1++){
 if(Ssrc.options[i1].selected){
  iExist=0;
  for (i2=0;i2<A_des.length;i2++){
   if(A_src[i1][0]==A_des[i2][0]){
    iExist=1;
    break;
   }
  }
  if (iExist==0){
   A_des.length++;
   A_des[A_des.length-1]=A_src[i1];
   fActLis(Sdes,A_des,"",0,0);
  }
  break;
 }
}
return;}

//*** fSupLis ****************
// Cette fonction permet de supprimer un élément d'une liste de formulaire.
// La suppression se fait dans le tableau des éléments (Array) de la liste
// et cette liste est actualisée par la suite.
//****************************
function fSupLis(Sdes,A_des){

var i1,i2;

for (i1=0;i1<Sdes.options.length;i1++){
 if(Sdes.options[i1].selected){
  for (i2=i1;i2<Sdes.options.length-1;i2++){
   A_des[i2]=A_des[i2+1];
  }
  A_des.length--;
  fActLis(Sdes,A_des,"",0,0);
  break;
 }
}
return;}

//*** fGetValLis ************
// Cette fonction permet d'obtenir les valeurs d'un array dans
// une liste CSV d'une liste séparées par une virgule.
// Cette liste de valeur peut être envoyée au serveur.
//***************************
function fArrEnCsv(A_src,strVaSep){

var strVaCsv;
var i1;
strVaCsv = strVaSep;

for (i1=0;i1<A_src.length;i1++){
 strVaCsv = strVaCsv + A_src[i1][0] + strVaSep;
}
return strVaCsv;}

//*** fGetValLis ************
// Cette fonction permet d'obtenir les valeurs d'une liste séparées par une virgule.
// Cette liste de valeur peut être envoyée au serveur.
//***************************
function fGetValLis(A_src,iIndVal){

var tVaRet="";
var i1;

for (i1=0;i1<A_src.length;i1++){
 tVaRet = tVaRet + A_src[i1][iIndVal] + ",";
}
return tVaRet;}

//function fActLis(Sdes,A_des,strValElePar,iIndPar,iInDefSel){
//var i1,i2;
//var oOption1;
//Sdes.length=0;
//if ( strValElePar == "" ){
// // On met dans la liste tous les éléments
// for (i1=0;i1<A_des.length;i1++){
//  oOption1 = new Option(A_des[i1][1],1,false,false);
//  Sdes.options[i1] = oOption1;
// }
//}
//else {
// // On met dans la liste les éléments enfants
// i2=0;
// for (i1=0;i1<A_des.length;i1++){
//  if ( strValElePar == A_des[i1][iIndPar] ){
//   oOption1 = new Option(A_des[i1][1],1,false,false);
//   Sdes.options[i2] = oOption1;
//   i2++;
//  }
// }
//}
//if (iInDefSel==1){Sdes.selectedIndex=0;}
//else{Sdes.selectedIndex=Sdes.options.length;}
//return;}

