var g_currentFilter = 'marca';

function buildResultsTable(resultSet, sortField) {
  
  if(sortField == undefined) {    
    sortField = g_currentFilter;
  } else {
    g_currentFilter = sortField;
  }
  
  if(sortField == 'compra' || sortField == 'usox1000hojas') {
    var numericSort = true;
  } else {
    var numericSort = false;
  }
  
  resultSet = sortResults(resultSet, sortField, numericSort);
  
  var answer = $('<div class="printerSearchResults"></div>');
  answer.append('<div class="resultsTableTop"><div class="topLeftCorner"></div><div class="topRightCorner"></div></div>');  
  var table = $('<table summary="Resultados de la consulta de impresoras"></table>');
  var tableHead = $('<thead></thead>');
  var headRow = $('<tr></tr>');
  
  //sortArrow = '<img class="sortArrow" alt="orden" src="img/ic_sortArrow.gif" />';
  sortArrow = '';
  sortClass = 'sortBy';
  sortClassAtt = ' class="' + sortClass + '"'
  
  headRow.append('<th class="firstColumn' + (sortField=='marca'?' ' + sortClass:'') + '"><a href="#" onclick="buildResultsTable(g_filteredData, \'marca\');return false;">Marca' + (sortField=='marca'?sortArrow:'') + '</a></th>');
  headRow.append('<th' + (sortField=='id'?sortClassAtt:'') + '><a href="#" onclick="buildResultsTable(g_filteredData, \'id\');return false;">Descripci&oacute;n' + (sortField=='id'?sortArrow:'') + '</a></th>');
  headRow.append('<th' + (sortField=='tipo'?sortClassAtt:'') + '><a href="#" onclick="buildResultsTable(g_filteredData, \'tipo\');return false;">Tipo' + (sortField=='tipo'?sortArrow:'') + '</a></th>');
  headRow.append('<th' + (sortField=='color'?sortClassAtt:'') + '><a href="#" onclick="buildResultsTable(g_filteredData, \'color\');return false;">Color/ByN' + (sortField=='color'?sortArrow:'') + '</a></th>');
  headRow.append('<th class="numColumn' + (sortField=='compra'?' ' + sortClass:'') + '"><a href="#" onclick="buildResultsTable(g_filteredData, \'compra\');return false;">Precio de compra' + (sortField=='compra'?sortArrow:'') + '</a></th>');
  headRow.append('<th class="lastColumn numColumn' + (sortField=='usox1000hojas'?' ' + sortClass:'') + '"><a href="#" onclick="buildResultsTable(g_filteredData, \'usox1000hojas\');return false;">Costo en $/1000 Hojas ' + (sortField=='usox1000hojas'?sortArrow:'') + '</a></th>');
  
  table.append(tableHead.append(headRow));
  
  var tableBody = $('<tbody></tbody>');

  jQuery.each(resultSet, function(i, printerData) {
    var newRow = $('<tr class="' + (i%2?'even':'odd') + '"></tr>');
                
    newRow.append('<td class="firstColumn">' + printerData.marca + '</td>');
    newRow.append('<td><a href="' + printerData.urlCompra + '" target="_blank">' + printerData.id + '</a></td>');
    newRow.append('<td>' + printerData.tipo + '</td>');
    newRow.append('<td>' + printerData.color + '</td>');
    newRow.append('<td class="numColumn">' + printerData.compra + '</td>');
    newRow.append('<td class="lastColumn numColumn">' + printerData.usox1000hojas + '</td>');
    
    tableBody.append(newRow);    
  });
  
  table.append(tableBody);
  answer.append(table);  
  $('#resultsTableArea').html(answer);
  $('#resultsTableCount').text(resultSet.length + ' impresoras');
  $('#plotAreaCount').text(resultSet.length + ' impresoras');
}

function sortResults(resultSet, sortField, numeric) {
  
  if(numeric) {
    return resultSet.sort(function(a, b) {
      
      var nA = Number(a[sortField]);
      var nB = Number(b[sortField]);
      
      if(nA < nB) {
        return -1;
      } else if(nA == nB) {
        return 0;
      } else {
        return 1;
      }
    });
  } else {
    return resultSet.sort(function(a, b) {
      
      var nA = String(a[sortField]).toUpperCase();
      var nB = String(b[sortField]).toUpperCase();
      
      if(nA < nB) {
        return -1;
      } else if(nA == nB) {
        return 0;
      } else {
        return 1;
      }
    });
  }
}
