var selectedPropertyId = -1;
var selectedPropertyType = -1;

/**
 * Helperfunction that trims beginning and trailing blanks off string.
 */
function trim(stringToTrim) {
  while (stringToTrim.length > 0 && stringToTrim.indexOf(" ") == 0) {
    stringToTrim = stringToTrim.substr(1);
  }
  while (stringToTrim.length > 0 && stringToTrim.lastIndexOf(" ") == stringToTrim.length - 1) {
    stringToTrim = stringToTrim.substring(0, stringToTrim.length - 1);
  }
  while (stringToTrim.indexOf("  ") > 0) {
    stringToTrim = stringToTrim.replace(new RegExp("  ", "gi"), " ");
  }
  stringToTrim = stringToTrim.replace(new RegExp(" ", "gi"), "*");
  return stringToTrim;
}

/**
 * Function to display the right select box, depending on type of selected property.
 */
function changeType(propertyId) {
  // Hide all selects and submit.
  selectedPropertyId = -1;
  selectedPropertyType = -1;
//  document.getElementById("booleanSelect").style.display = "none";
  document.getElementById("intDecimalSelect").style.display = "none";
  document.getElementById("textSelect").style.display = "none";
  document.getElementById("filterFormSubmit").style.display = "none";
  document.getElementById("limitField").style.display = "none";
  showPropertyDescription(propertyId);
  if (propertyId == 0) {
    return;
  }
  selectedPropertyId = propertyId;
  for (pos = 0; pos < sortPropertyIds.length; pos++) {
    if (sortPropertyIds[pos] == propertyId) {
      break;
    }
  }
  // Display the correct select field!
  selectedPropertyType = sortPropertyNumerals[pos];
  if (selectedPropertyType == 0) {
    document.getElementById("booleanSelect").style.display = "inline";
    document.getElementById("filterFormSubmit").style.display = "inline";
  }
  else if (selectedPropertyType == 1 || selectedPropertyType == 4) {
    document.getElementById("intDecimalSelect").style.display = "inline";
    document.getElementById("limitField").style.display = "inline";
    document.getElementById("filterFormSubmit").style.display = "inline";
  }
  else {
    document.getElementById("textSelect").style.display = "inline";
    document.getElementById("limitField").style.display = "inline";
    document.getElementById("filterFormSubmit").style.display = "inline";
  }
}

function showPropertyDescription(propertyId) {
  descriptionElementName = "filterPropertyDescription";  
  propertyDescriptionElement = document.getElementById(descriptionElementName);
  if (propertyId == 0) {
    propertyDescriptionElement.innerHTML = "";
    return;
  }
  for (pos = 0; pos < sortPropertyIds.length; pos++) {
    if (sortPropertyIds[pos] == propertyId) {
      break;
    }
  }
  propertyDescriptionElement.innerHTML = "(" + sortPropertyDescriptions[pos] + ")";
}

function changeInStock() {
  if (gEI("inStock").status == true) {
    gEI("selString").value = gEI("selString").value.replace(/p,6,/, "p,7,");
  }
  else {
    gEI("selString").value = gEI("selString").value.replace(/p,7,/, "p,6,");
  }
  overviewFaderTimer = setTimeout("overviewFader(700)", 1);
  aRO(categoryId, 1);
}

function doFiltering() {
  gEI("limitField").value = gEI("limitField").value.replace((new RegExp(',','g')),' ');
  if (selectedPropertyId < 0) {
    alert(lang("filter", "selectProperty"));
    return;
  }
  var limit = trim(gEI("limitField").value);
  if (limit.length == 0 && selectedPropertyType != 0) {
    alert(lang("filter", "setValue"));
    return;
  }
  var filterString = "";
  var dropdownName;
  if (selectedPropertyId == 1) {
    dropdownName = "intDecimalSelect";
    filterString += "p,";
  }
  else if (selectedPropertyId == 2) {
    dropdownName = "textSelect";
    filterString += "p,";
  }
  else if (selectedPropertyId == 3 || selectedPropertyId == 5) {
    dropdownName = "intDecimalSelect";
    filterString += "p,";
  }
  else if (selectedPropertyId == 6) {
//    if (gEI("inStock").status == true) {
//      selectedPropertyId == 7;
//    }
    dropdownName = "intDecimalSelect";
    filterString += "p,";
  }
  else if (selectedPropertyId == 7) {
//    gEI("inStock").status = true;
    dropdownName = "intDecimalSelect";
    filterString += "p,";
  }
  else if (selectedPropertyType == 1) {
    dropdownName = "intDecimalSelect";
    filterString += "pp,";
  }
  else {
    dropdownName = "textSelect";
    filterString += "pp,";
  }
  filterString += "" + selectedPropertyId + ",";
  if (selectedPropertyType == 1) {
    limit = limit.replace(new RegExp(",", "gi"), ".");
  }
  filterString += "" + document.getElementById(dropdownName).value + ",";
  filterString += "" + limit + ",";
  gEI("selString").value += filterString;
  gEI("startNo").value = "1";  // Always show first page of search result
  var filterDescriptions = "";
  filterString = filterString.replace(new RegExp('[*]', 'g'), '.');
  filterDescriptions += document.getElementById('filterPropertyId').options[document.getElementById('filterPropertyId').selectedIndex].text;
  filterDescriptions += " " + document.getElementById(dropdownName).options[document.getElementById(dropdownName).selectedIndex].text;
  filterDescriptions += " " + limit;
  aRO(categoryId, 1);
}

