/* ----------------------------------------------------------------------------
  Double liste des elements selectionnes 

------------------------------------------------------------------------------*/
var SelectedListCode = new Array();
var SelectedListText = new Array();

SeparatorCharCode= " ";
SeparatorCharText= "|";

/* ----------------------------------------------------------------------------
Renvoie l'index de l'element item si trouve 
E: itemValue: la valeur recherchee
S: index de l'element ou -1 si non trouve
------------------------------------------------------------------------------*/
function GetSelectedListItemIndex(itemValue)
{
  var i = 0
  Found=false;
  while (i<SelectedListCode.length+1 && (!Found))
  {
    if (SelectedListCode[i]==itemValue) 
      Found=true;
    else i++;
  }
  if (!Found) return -1
  else return i;
}

/* ----------------------------------------------------------------------------
Supprime l'element item si trouve dans la liste
E: item: l'element recherchee 
------------------------------------------------------------------------------*/
function DeleteSelectedListItem(itemValue)
{
  index = GetSelectedListItemIndex(itemValue);
  if (index!=-1)
  {
    for (var i=index;i<SelectedListCode.length;i++)
    {
      SelectedListCode[i]=SelectedListCode[i+1];  
      SelectedListText[i]=SelectedListText[i+1];  
    }
    SelectedListCode.length=SelectedListCode.length-1;
    SelectedListText.length=SelectedListCode.length;
  }
}

/* ----------------------------------------------------------------------------
MAJ de la liste avec l'element item 
E: item: l'element pour Maj 
   TermItem : 
   AffichageFieldCount: LABEL html pour nb total
------------------------------------------------------------------------------*/
function SetSelectedListItem(item,TermItem,CallBack)
{
  DeleteSelectedListItem(item.id);
  if (item.checked)
  {
    SelectedListCode[SelectedListCode.length]=item.id;    
    SelectedListText[SelectedListText.length]=TermItem;
  }
  if (CallBack) CallBack(SelectedListCode.length);
}
        
/* ----------------------------------------------------------------------------
Renvoie les elements avec un separateur interne entre chaque couplet.
S:  revoie la liste item(0)(sep)item(1)...item(n)
------------------------------------------------------------------------------*/
function GetSelectedListCode()
{ 
  return SelectedListCode.join(SeparatorCharCode);
}

        
/* ----------------------------------------------------------------------------
Renvoie les elements avec un separateur interne entre chaque couplet.
S: renvoie la liste item(0)(sep)item(1)...item(n)
------------------------------------------------------------------------------*/
function GetSelectedListText()
{ 
  return SelectedListText.join(SeparatorCharText);
}


/* ---------------------------------------------------------------------------- 
Bascule toutes les checkBox.checked a True
E: Zone: checkbox de la zone
   AffichageFieldCount: LABEL html pour nb total
------------------------------------------------------------------------------*/
function CheckZoneValue(Zone,ClearTermName,CallBack)
{
  if (Zone!=null) 
  {
    j=0;
    for (var i=0;i<Zone.elements.length;i++)
    {
      if (Zone.elements[i].type=='checkbox')   
      {
        Zone.elements[i].checked=true;
        /* ie. concat Xsl position() */  
        j++;
        LinkedText=document.getElementById(ClearTermName+j);
        SetSelectedListItem(Zone.elements[i],LinkedText.value);
      }
    }
    if (CallBack) CallBack(SelectedListCode.length);
  }
}

/* ----------------------------------------------------------------------------
Bascule toutes les checkBox.checked a False
E: Zone: checkbox de la zone
   AffichageFieldCount: LABEL html pour nb total
------------------------------------------------------------------------------*/
function UnCheckZoneValue(Zone,CallBack)
{
  if (Zone!=null) 
  {
    for (var i=0;i<Zone.elements.length;i++)
    {
      if (Zone.elements[i].type=='checkbox')  
      {
        Zone.elements[i].checked=false;
      }
    }
  }
  SelectedListCode.length=0;
  SelectedListText.length=0;
  if (CallBack) CallBack(SelectedListCode.length);
}

/* ----------------------------------------------------------------------------
Renvoie les valeurs de la liste 
E:  OldValue: Liste en cours passe sous forme item(0),item(1)...item(n)
 Zone: affectation au checkbox de la zone
 AffichageFieldCount: LABEL html pour nb total
------------------------------------------------------------------------------*/
function SetSelectedList(Codes,Texts,Zone,CallBack)
{
  UnCheckZoneValue(Zone);
  if (Codes!="") SelectedListCode=Codes.split(SeparatorCharCode);
  if (Texts!="") SelectedListText=Texts.split(SeparatorCharText);
  SelectedListText.length=SelectedListCode.length;
  if (Zone!=null) 
  {
    for (var i=0;i<Zone.elements.length;i++)
    {
      /* element present dans la liste => selection */
      if (Zone.elements[i].type=='checkbox')  
      {
        var index=GetSelectedListItemIndex(Zone.elements[i].id);
        if (index!=-1)
        {
          Zone.elements[i].checked=true;
        }
      }
    }
  }
  if (CallBack) CallBack(SelectedListCode.length);
}


