function setupRangeSlider(rangeSliderField, max_is_unbounded) {
  var $rangeSliderField = $(rangeSliderField)

  var minLimit = parseInt($rangeSliderField.find('.min_limit').html());
  var maxLimit = parseInt($rangeSliderField.find('.max_limit').html());

  var minField = $rangeSliderField.find(':input')[0];
  var maxField = $rangeSliderField.find(':input')[1];

  var minStarting = parseInt($(minField).val() || minLimit);
  var maxStarting = parseInt($(maxField).val() || maxLimit);

  var minLabel = $rangeSliderField.find('.min_value')[0];
  var maxLabel = $rangeSliderField.find('.max_value')[0];

  var $rangeSlider = $rangeSliderField.find('.range_slider');

  var steps = null;
	
	// setting the threshold to 1 (it used to be 20) to account for the 
	// non-price sliders
  if (maxLimit - minLimit <= 1)
    steps = maxLimit - minLimit;

  function updateMinLabel() {
    var newMin = $rangeSlider.slider('value', 0);
    newMin = Math.round(newMin);
    minLabel.innerHTML = addCommas(newMin);
  }

  function updateMaxLabel() {
    var newMax = $rangeSlider.slider('value', 1);
    newMax = Math.round(newMax);
    var newMaxValue = addCommas(newMax);

    // if (max_is_unbounded && (newMax == maxLimit))
    //   newMaxValue = newMaxValue + "+";

    maxLabel.innerHTML = newMaxValue + "+";
  }


// prevent moving the sliders thumbs on setup from submitting the parent form
  var doneInitializing = false;

  $rangeSlider.slider(
    {
      handle: '.slider_thumb',
      minValue: minLimit,
      maxValue: maxLimit,
      steps: steps,
      range: true,
      slide: function(e, ui)
      {
        if (ui.handle.hasClass('min_thumb'))
          updateMinLabel();
        else {
          updateMaxLabel();
        }
      },
      change: function(e, ui)
      {
        //must update label for not slide changes - eg. clicking elsewhere on the slider
        if (ui.handle.hasClass('min_thumb')) {
          updateMinLabel();
          var newMinVal = Math.round(ui.value);
          $(minField).val(newMinVal);
        } else {
          updateMaxLabel();
          var newMaxVal = Math.round(ui.value);
          $(maxField).val((max_is_unbounded && newMaxVal == maxLimit) ? '' : newMaxVal);
        }

        if (doneInitializing && ($(minField).hasClass('submit_onchange') || $(maxField).hasClass('submit_onchange')))
          $(maxField).parents('form').submit();
      }
    }
  );

  //set the starting values appropriately
  $rangeSlider.slider('moveTo', parseInt(maxStarting), 1);
  $rangeSlider.slider('moveTo', parseInt(minStarting), 0);

  doneInitializing = true;
}


function setupSlider(sliderField) {
  var $sliderField = $(sliderField);
  var $slider = $sliderField.find('.slider');
  var minLimit = parseInt($sliderField.find('.min_limit').html());
  var maxLimit = parseInt($sliderField.find('.max_limit').html());

  var steps = null;
  if (maxLimit - minLimit <= 20)
    steps = maxLimit - minLimit;

  var $field = $sliderField.find(':input');
  var $value_label = $sliderField.find('.value');
  var startValue = parseInt($field.val() || 0);
  if ($field.val() != '')
    $('.rating_display').show();
  else
    $('.rating_prompt').show();

  function updateLabel() {
    var newValue = $slider.slider('value', 0);
    newValue = Math.round(newValue);
    $value_label.html('' + newValue + '%');
    if ($value_label.html().indexOf('%') != -1)
      $value_label.html('' + newValue + '%');
    else
      $value_label.html('' + newValue);
    $value_label.attr('class', 'value value_' + Math.round(newValue/10));
  };

  function activateRating() {
    $('.rating_prompt').hide();
    $('.rating_display').show();
  };

  var doneInitializing = false;

  $slider.slider(
    {
      handle: '.slider_thumb',
      minValue: minLimit,
      maxValue: maxLimit,
      steps: steps,
      slide: function(e, ui)
      {
        updateLabel();
        activateRating();
      },
      change: function(e, ui)
      {
        //must update label for not slide changes - eg. clicking elsewhere on the slider
        updateLabel();
        $field.val($value_label.html());
        if (doneInitializing && $field.hasClass('submit_onchange'))
          $field.parents('form').submit();
      }
    }
  );

  //explicity move rather than using startValue config option which
  //  doesn't respond to a value of 0

  if ($field.val() != '')
    $slider.slider('moveTo', parseInt($field.val()), 0);
  
  doneInitializing = true;
}
