



function updateSelect(sId, oOptions)
{
    var oSelect = document.getElementById(sId);
    if (!oSelect) {
    	return false;
    }

    // Rafraîchi la liste des marques
    var defaultLabel = '...';
    var defaultValue = 0;
    if (oSelect.options[0]) {
    	defaultLabel = oSelect.options[0].text;
    	defaultValue = oSelect.options[0].value;
    }
    oSelect.length = 0;
    oSelect.options[oSelect.length] = new Option(defaultLabel, defaultValue);
    for (var i in oOptions) {
        oSelect.options[oSelect.length] = new Option(oOptions[i]['label'], oOptions[i]['id']);
    }
    oSelect.disabled = null;
    removeClass(oSelect, 'disabled');
} //  end of "updateSelect()"








/**
 * createNode
 */
 function createNode(sNodeName, oOptions)
 {
      oNode = document.createElement(sNodeName);

      for (attribute in oOptions) {
        if (attribute == 'innerHTML') {
          oNode.innerHTML = oOptions[attribute];

        } else if (attribute == 'class' || attribute == 'className') {
          oNode.className = oOptions[attribute];

        } else {
          oNode.setAttribute(attribute, oOptions[attribute]);
        }
      }

      return oNode;

 } // end of "createNode()"



/**
 * createSelect
 *
 * Créé les balises SELECT et INPUT
 * pour le remplissage de la liste et la sélection d'un bien, modèle, etc.
 *
 */
 function createSelect(sId, sLabel, sPrevious, sLabelInput, sInput, sHidden)
 {
      var oDivSelect, oLabelNode;

      oDivSelect           = document.createElement('div');
      oDivSelect.className = 'formrow-m';
      oDivSelect.appendChild(createNode('label', {'for':sId, 'innerHTML':sLabel}));
      oDivSelect.appendChild(createNode('select', {'id':sId, 'name':sId}));

      oPreviousField = document.getElementById(sPrevious).parentNode;
      oPreviousField.parentNode.insertBefore(oDivSelect, oPreviousField.nextSibling);

      // Champ de texte de saisie
      if (sInput) {
        divInput = document.createElement('div');
        divInput.className = 'formrow-m';

        divInput.appendChild(createNode('label', {'for':sInput, 'innerHTML':sLabelInput}));
        divInput.appendChild(createNode('input', {'type':'text', 'id':sInput, 'name':sInput}));

        // champ caché de mémorisation de l'identifiant de l'élément créé
        if (sHidden) {
          divInput.appendChild(createNode('input', {'type':'hidden', 'id':sHidden, 'name':sHidden}));
        }

        // insertion du champ de texte après la liste déroulante
        formSelect = document.getElementById(sId);
        formSelect.parentNode.parentNode.insertBefore(divInput, formSelect.parentNode.nextSibling);
      }

    return sId;

 } // end of "createSelect()"




 /**
  * Créé un champ d'après un modèle html
  * 
  * @return
  */
 function createFromTemplate(sZoneId, oOptions, sTemplateId, sFieldName)
 {
     var oZone       = document.getElementById(sZoneId);
     var sTemplate   = document.getElementById(sTemplateId);
     if (!sTemplate || !oZone) {
         return false;
     }
     
     var sClass = sTemplate.className;
     var sNode  = sTemplate.nodeName;
     sTemplate = sTemplate.innerHTML;
     sTemplate = '<' + sNode + ' class="' + sClass + '">' + sTemplate + '</' + sNode + '>';
     sTemplate = sTemplate.replace(sTemplateId, '');
     if (sFieldName) {
         sTemplate = sTemplate.replace(/\[fieldName\]/g, sFieldName);
     }
     oZone.innerHTML = '';
     var tmpHtml = '';
     for (var i in oOptions) {
         if (oOptions[i] && oOptions[i]['id'] && oOptions[i]['label']) {
             tmpHtml = sTemplate.replace(/\[dataId\]/g, oOptions[i]['id']);
             tmpHtml = tmpHtml.replace(/\[dataLabel\]/g, oOptions[i]['label']);
             oZone.innerHTML += tmpHtml;
         }
     }
     
     return true;
     
 } // end of "createCheckbox()"
 
 
 
 
 
