function CountableNounSelectHelper( selectCountableNoun, singularText, pluralText, minValue, maxValue, initialValue )
{
	var _selectCountableNoun = selectCountableNoun;
	var _singularText = singularText;
	var _pluralText = pluralText;
	var _minValue = parseInt(minValue,10);
	var _maxValue = parseInt(maxValue,10);
	var _initialValue = parseInt(initialValue,10);
	
	//Expose public methods
	this.populate = populate;
	this.refresh = refresh;
	this.setMinValue = setMinValue;
	this.getMinValue = getMinValue;
	
	this.setMaxValue = setMaxValue;
	this.getMaxValue = getMaxValue;
	
	this.getSelectedValue = getSelectedValue;
	this.setSelectedValue = setSelectedValue;
	
	function populate()
	{
		populateSelect( _initialValue );
	}

	function refresh()
	{
		var selectedValue = getSelectedValue();
		populateSelect( selectedValue );
	}
	
	function populateSelect( selectedValue )
	{
		var i;
		_selectCountableNoun.length = 0;

		for( i = _minValue; i <= _maxValue; i++ )
		{
			if( i == 1 || i == -1 )
			{
				_selectCountableNoun[ i - _minValue ] = new Option( i + ' ' + _singularText, i);
			}
			else
			{
				_selectCountableNoun[ i - _minValue ] = new Option( i + ' ' + _pluralText, i );
			}
			if( i == selectedValue )
			{
				_selectCountableNoun.selectedIndex = i - _minValue;
			}
		} 
	}
	
	function getSelectedValue()
	{
		return parseInt( _selectCountableNoun.selectedIndex + minValue, 10 );
	}
	
	function setSelectedValue( value )
	{
		_selectCountableNoun.selectedIndex = parseInt( value, 10 ) - _minValue;
	}
	
	function setMinValue( value )
	{
		_minValue = parseInt( value,10);
	}
	
	function setMaxValue( value )
	{
		_maxValue = parseInt( value,10);
	}
	
	function getMinValue()
	{
		return _minValue;
	}
	
	function getMaxValue()
	{
		return _maxValue;
	}

}
