var gasProducts;
var goComboCateg;
var goComboProd;
var gsMessageAllReferences;
var gsMessageNoReference;

/**
* @return void
* @param psIdComboCateg, psIdComboProd, pasProducts, pnCategorie, pnProduit
* @desc Initialise les variable globales et selectionne la catégorie pnCategorie et le produit pnProduit dans les combo
*/
function Init_comboproduct(psIdComboCateg, psIdComboProd, pasProducts, pnCategorie, pnProduit, psMessageAllReferences, psMessageNoReference)
{
  goComboProd = document.getElementById(psIdComboProd);
  goComboCateg = document.getElementById(psIdComboCateg);
  gasProducts = pasProducts;
  gsMessageAllReferences = psMessageAllReferences;
  gsMessageNoReference = psMessageNoReference;
  
  
  if (pnCategorie == 0) return;
  
  // On parcours les options de la liste des catégories et l'on selectionne celle dont la valeur et pnCategorie
  for (nCompteur = 0; nCompteur < goComboCateg.options.length; nCompteur++)
  {
    if (goComboCateg.options[nCompteur].value == pnCategorie)
      goComboCateg.options[nCompteur].selected = true;
  }
  
  // On remplit la combo Produit
  FillProducts();
  
  // On selectionne le produit pnProduit
  for (nCompteur = 0; nCompteur < goComboProd.options.length; nCompteur++)
  {
    if (goComboProd.options[nCompteur].value == pnProduit)
      goComboProd.options[nCompteur].selected = true;
  }
  
}


/**
* @return void
* @desc Modifie le contenu de la combo produit quand on selectionne une nouvelle catégorie
*/

function FillProducts()
{
  goComboProd.options.length = 0;
  
  if (goComboCateg)
    nCatSelected = goComboCateg.value;
  else
    nCatSelected = 0;
  // Si aucune catégorie n'est selectionnée
  if (nCatSelected == 0)
  {
    // On rend disabled la combo Produit
    goComboProd.disabled = true;
    goComboProd.options[0] = new Option(gsMessageAllReferences, asCategory[nCatSelected], false, false);
    goComboProd.options[0].selected = true;
  }
  else 
  {
    if(!gasProducts[nCatSelected]) 
    {
      goComboProd.disabled = true;
      goComboProd.options[0] = new Option(gsMessageNoReference, asCategory[nCatSelected], false, false);
      goComboProd.options[0].selected = true;    
    }
    else
    {
      if(gasProducts[nCatSelected].length == 0)
      {
        goComboProd.disabled = true;
        goComboProd.options[0] = new Option(gsMessageNoReference, asCategory[nCatSelected], false, false);
        goComboProd.options[0].selected = true;    
      }
      else
      {
        // On rend éditable la combo
        goComboProd.disabled = false;
        
        goComboProd.options[0] = new Option(gsMessageAllReferences, asCategory[nCatSelected], false, false);
        
        // On la remplie avec les produits du tableau
        goComboProd.options.length = gasProducts[nCatSelected].length+1;
        nCompteur = 0;
        for(nCompteur = 0; nCompteur < gasProducts[nCatSelected].length; nCompteur++)
          goComboProd.options[nCompteur + 1] = new Option(gasProducts[nCatSelected][nCompteur][1], gasProducts[nCatSelected][nCompteur][0], false, false);
      }
    }
  }
}



/*
  * @Parameters : 
  * @Return <nothing>
  * @desc : Modifie l'url de la page pour acceder au produit à partir des infos des 2 combos Categorie et Produit
  */
  function getURLProduct(psProductComboId, sErrorMessage)
  {
      var sURL = document.getElementById(psProductComboId).value;

      if (sURL != "0")
      {
          window.location = sURL;
      }
      else
      {
        alert(sErrorMessage);       
        document.getElementById(psProductComboId).focus();
      }
      
      return; 
  }