

function updatePlanningPeriods(sFormName)
{
   // get etab id and campaign code
   var nEtabID = getInputValue('etab',sFormName);
   var sCampaignCode = getInputValue('campaign',sFormName);
   // get periods
   var aOptions = new Array();
   try
   {
      var sPeriodsXML = remoteCall(
                          'custom::remote::periods',
                          'getQuotaOrContingentPeriods',
                          sCampaignCode,
                          nEtabID);
      var dDoc = XmlUtils_getXMLDOM(sPeriodsXML);
      var xmlePeriods = XmlUtils_getChildElements(dDoc.documentElement, "period");
      for(var i=0;i<xmlePeriods.length;i++)
      {
         var pPeriod = new Period().fromXMLElement(xmlePeriods[i]);
         aOptions.push(new Option(pPeriod.getLabel(), pPeriod.getCode()))
      }
   }
   catch(ex)
   {
      if(ex.showUser)
         ex.showUser();
      else
         throw ex;
   }
   // update periods combo
   setCodeSelectOptions('period', sFormName, aOptions, false, true, true);
}

function updatePlanningConventions(sFormName)
{
   // get campaign code
   var sCampaignCode = getInputValue('campaign',sFormName);
   // get conventions
   var aOptions = new Array();
   try
   {
      var sConventions = remoteCall(
                          'custom::remote::reservation::convention',
                          'getCampaignConventions',
                          sCampaignCode);
      var dDoc = XmlUtils_getXMLDOM(sConventions);
      var xmleConvs = XmlUtils_getChildElements(dDoc.documentElement, "convention");
      for(var i=0;i<xmleConvs.length;i++)
      {
         var pConvention = new Convention().fromXMLElement(xmleConvs[i]);
         aOptions.push(new Option(pConvention.getLabel(), pConvention.getID()))
      }
   }
   catch(ex)
   {
      if(ex.showUser)
         ex.showUser();
      else
         throw ex;
   }
   // update periods combo
   setSelectOptions('partners', sFormName, aOptions, false, true, false);
}

function updateRemoteConventionList( sName, sFormName, sCampaignCode, nEtabID )
{
   // get conventions
   var aOptions = new Array();
   try
   {
      var sConventions = remoteCall(
                          'custom::remote::convention',
                          'getAloConventionsFromCampaignAndEtab',
                          sCampaignCode,
                          nEtabID);
      var dDoc = XmlUtils_getXMLDOM(sConventions);
      var xmleConvs = XmlUtils_getChildElements(dDoc.documentElement, "convention");
      for(var i=0;i<xmleConvs.length;i++)
      {
         var pConvention = new Convention().fromXMLElement(xmleConvs[i]);
         aOptions.push(new Option(pConvention.getLabel(), pConvention.getID()))
      }
   }
   catch(ex)
   {
      if(ex.showUser)
         ex.showUser();
      else
         throw ex;
   }
   // update periods combo
   setSelectOptions(sName, sFormName, aOptions, false, true, false);
}

function HLRoom( sBlockID, sNewColor, sAltColor, nHLRow )
{
  setNamedObjectProperty( sBlockID, 'bgColor', sNewColor );
  
  if( sAltColor != null )
  {
    var pTopDiv  = null;
    var pLeftDiv = null;
    if( getBrowser() == NETSCAPE )
    {
      pTopDiv = getDOMObject("master_div");
      pLeftDiv = getDOMObject("master_div");
    }
    else
    {
      pTopDiv = getDOMObject("col_header_div");
      pLeftDiv = getDOMObject("row_header_div");
    }

    if( pTopDiv && pLeftDiv )
    {
      var pTopTable = pTopDiv.getElementsByTagName( "table" )[0];
      var pLeftTable = pLeftDiv.getElementsByTagName( "table" )[0];

      var aObjects = document.getElementsByName( sBlockID );
      for(var nO=0;nO<aObjects.length;nO++)
      {
        var pBlock = aObjects[nO];
      
        var pCell  = pBlock;
        var pRow   = getParentNode( pBlock, 'TR' );
        var pTable = getParentNode( pBlock, 'TABLE' );
    
        if( pCell && pRow && pTable )
        {
          // On fait les calculs avec la table "normale"
          
          var nCellIndex = pCell.cellIndex;
          var nRowIndex  = pRow.rowIndex;
      
          var nFirstPosition = 0;
          var aCells = pRow.cells;
          for( var nI=0; nI<nCellIndex; nI++ )
          {
            nFirstPosition += aCells[nI].colSpan;
          }
          var nLastPosition = nFirstPosition + pCell.colSpan;
          
          // D'abord à gauche :
        
          var pLeftCell = pLeftTable.rows[ nRowIndex ].cells[ 0 ];
          pLeftCell.style.backgroundColor = sAltColor;
    
          if( nHLRow != null && nHLRow >= 0 )
          {
            // Ensuite en haut :
          
            var pTopRow = pTopTable.rows[ nHLRow ];
            for( var nJ=nFirstPosition; nJ<nLastPosition; nJ++ )
            {
              var pTopCell = pTopRow.cells[nJ];
              if( pTopCell )
                pTopCell.style.backgroundColor = sAltColor;
            }
          }
        } // fin test sur les objets
      } // boucle sur les morceaux de séjours
    } // fin test tables
  } // fin test sur sAltColor
}
