// Obsługa kontrolek wyboru lokalizacji w wersji W3C. Działa w IE, ale nie w Operze.

function LocationSelectFill(ctrl, dsc, typeOfListing, propertyCategory, ancestorID, selectedIDs, firstOptionText)
{
  var i, selID;
  if(typeof(selectedIDs) == 'string') selectedIDs = CommaStringListToObject(selectedIDs);
  if(!firstOptionText) firstOptionText = '';
  var bit = (typeOfListing == '' ? 0 : parseInt(typeOfListing)+1)*6 +
            (propertyCategory == '' ? 0 : parseInt(propertyCategory) + 1);
  var mask = 1<<bit;
  //while(ctrl.children && ctrl.children.length > 0) ctrl.removeChild(ctrl.children[0]); // IE
  while(ctrl.hasChildNodes()) ctrl.removeChild(ctrl.childNodes[0]);
  ctrl.options.length = 0; // z powodu jakiegoś buraka w IE
  AddSelectOptionx(ctrl, ancestorID, firstOptionText, selectedIDs[ancestorID]);
  for(i = 0; i < (dsc.length-1)/3; i++){
    var id = 'PL-' + dsc[i*3];
    if((id.substr(0, ancestorID.length) == ancestorID) && (dsc[i*3+2] & mask)){
      var selected = (selectedIDs[id] ? true : false);
      AddSelectOptionx(ctrl, id, dsc[i*3+1], selected);
      if(selected) selID = id;
    }else if(dsc[i*3] == '-' && ctrl.options.length > 1 ){
      // separator
      AddSelectOptgroupx(ctrl, dsc[i*3+1]);
    }
  }
  if(selID && !ctrl.multiple) ctrl.value = selID; // niby zbędne, ale bez tego IE nie działa jak trzeba
  if(!selID && !ctrl.options[0].selected) ctrl.options[0].selected = true;
}

function AddSelectOptionx(select, value, text, selected)
{
  var option = document.createElement('OPTION');
  var textNode = document.createTextNode(text);
  option.appendChild(textNode);
  option.value = value;
  option.selected = selected ? true : false;
  select.appendChild(option);
}

function AddSelectOptgroupx(select, text)
{
  var option = document.createElement('OPTGROUP');
  option.label = text;
  select.appendChild(option);
}

