function buildFilters(onCompleteHandler) {
   
  $.ajax({
    type: "GET",    
    url: filterCFGUrl,    
    dataType: "xml",
    success: function(xml) {
      $(xml).find("columna").each(function(i, xmlColumn) {
        var column = $('<div class="column"></div>');
        
        $(xmlColumn).find("filtro").each(function(i, xmlFilter) {
          
          var isMinimized = $(xmlFilter).attr('minimizado');
          var filterType = $(xmlFilter).attr('tipo');
          var filterXMLElement = $(xmlFilter).attr('elemento');
                    
          var filterBox = $('<div class="categoryFilterBox"></div>');
          filterBox.append('<div class="roundedTop"></div>');          
          
          var filterBoxTitle = $('<div class="categoryFilterBoxTitle"></div>');
          filterBoxTitle.append($(xmlFilter).attr('nombre'));          
                                        
          if(isMinimized == 1) {
            var buttonType = 'maximizeButton';
          } else {
            var buttonType = 'minimizeButton';
          }
          
          filterBoxTitle.append('<a class="minMaxButton ' + buttonType + '" href="#"></a>');
          filterBox.append(filterBoxTitle);
                    
          filterSelectors = $('<div class="categoryFilterSelectors"></div>');

          var numberOfSelectors = 0;
          if(filterType == 'enum') {
            $(xmlFilter).find('valor').each(function(i, xmlFilterValue) {
              var label = $(xmlFilterValue).attr('etiqueta');
              var xmlValueToFilter = $(xmlFilterValue).attr('valorXML');
              
              var selector = $('<div class="categorySelector"></div>');
              selector.append('<a class="checkbox" href="#"></a>');
              selector.append('<div class="category"><span class="name">' + label + '</span></div>');
              
              selector.mouseover(function(e) {
                CategoryFilter_rollOverSelector(selector);
              });
              
              selector.mouseout(function(e) {
                CategoryFilter_rollOutSelector(selector);
              });
              
              selector.click(function() {
                if(CategoryFilter_toggleSelector(selector)) {
                  DataManager_addFilter({type: 'enum', category: filterXMLElement, value: xmlValueToFilter});                  
                } else {
                  DataManager_removeFilter({type: 'enum', category: filterXMLElement, value: xmlValueToFilter});
                }
              });
              
              filterSelectors.append(selector);
              
              numberOfSelectors++;              
            });;
          } else if(filterType == 'num') {
            $(xmlFilter).find('rango').each(function(i, xmlFilterValue) {
              var label = $(xmlFilterValue).attr('etiqueta');
              var minValue = $(xmlFilterValue).attr('min');
              var maxValue = $(xmlFilterValue).attr('max');

              if(label == undefined) {
                label = minValue + ' - ' + maxValue;
              }
              
              var selector = $('<div class="categorySelector"></div>');
              selector.append('<a class="checkbox" href="#"></a>');
              selector.append('<div class="category"><span class="name">' + label + '</span></div>');
              
              selector.mouseover(function(e) {
                CategoryFilter_rollOverSelector(selector);
              });
              
              selector.mouseout(function(e) {
                CategoryFilter_rollOutSelector(selector);
              });
              
              selector.click(function() {
                if(CategoryFilter_toggleSelector(selector)) {
                  DataManager_addFilter({type: 'num', category: filterXMLElement, min: minValue, max: maxValue});
                } else {
                  DataManager_removeFilter({type: 'num', category: filterXMLElement, min: minValue, max: maxValue});
                }
              });
              
              filterSelectors.append(selector);
              
              numberOfSelectors++;              
            });;
          }
          
          if(numberOfSelectors < 4) {
            filterSelectors.height(77 - (4 - numberOfSelectors) * 19);
          }
          filterBox.append(filterSelectors);
          $(column).append(filterBox);          
        });
                
        $(column).appendTo('#categoryFilterArea');
        
      });
      
      CategoryFilter_enableScrollingLabels();
  
      $(".categoryFilterBox").each(function(i, val) {
        val.minimized = false;
        $(val).find('.minMaxButton').click(function() {
          if(val.minimized) {
            CategoryFilter_maximize(val);
          } else {
            CategoryFilter_minimize(val);
          }
          return false;
        });
      });
      
      onCompleteHandler();
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
      var description = "";
      if(textStatus != undefined) {
        description += textStatus;
      }
      if(errorThrown != undefined) {
        if(description != '') {
          description += "; ";
        }
        description += errorThrown;
      }
      alert('Error buildingUI: ' + description);
    }
  }); //close $.ajax(

}
