function ajaxSearchModels(selectControl) {
  Function.prototype.handle = handleAjaxSearchModelsResponse;
  handler = new Function();
  var range = selectControl[selectControl.selectedIndex].value;
  if (range == "unselected") {
    var selectList = document.getElementById("search-model-field");
    selectList.length = 0;
    selectList.options[0] = new Option("Choose model", 0);
  } else {
    var url = "/accessories/AjaxSearchModels.do";
    sendXML(url + "?range=" + range);
  }
  return false;
}

function ajaxSearchCategories(selectControl) {
  Function.prototype.handle = handleAjaxSearchCategoriesResponse;
  handler = new Function();
  var modelId = selectControl[selectControl.selectedIndex].value;
  if (modelId == 0) return false;
  var url = "/accessories/AjaxSearchCategories.do";
  sendXML(url + "?modelId=" + modelId);
  return false;
}

// Called when a top-level range is selected
function handleAjaxSearchModelsResponse() {
  // Clear existing options
  var selectList = document.getElementById("search-model-field");
  selectList.length = 0;
  // Get collection of 'options' from 'modelYearOptions'
  var modelYearOptions = xml.getElementsByTagName('modelYearOptions');
  var options = modelYearOptions[0].getElementsByTagName('option');
  // Load new options
  selectList.options[0]= new Option("Choose car model", 0);
  for (var i=0; i<options.length; i++) {
    var option = options[i];
    var text = option.childNodes[0].nodeValue;
    var id = option.getAttribute("value");
    selectList.options[i+1] = new Option(text, id);
  }
  // When range selected, categories are updated too.
  handleAjaxSearchCategoriesResponse();
  setAjaxDefaults();
}

// Called when a top-level range or a model-year is selected
function handleAjaxSearchCategoriesResponse() {
  // Clear existing options
  var selectList = document.getElementById("search-product-field");
  selectList.length = 0;
  // Get collection of 'options' from 'categoryOptions'
  var categoryOptions = xml.getElementsByTagName('categoryOptions');
  var options = categoryOptions[0].getElementsByTagName('option');
  // Load new options
  selectList.options[0]= new Option("Choose product(s)", 0);
  for (var i=0; i<options.length; i++) {
    var option = options[i];
    var text = option.childNodes[0].nodeValue;
    var id = option.getAttribute("value");
    selectList.options[i+1] = new Option(text, id);
  }
}
