/**
* Class: NumberRangeSelect
*
* Client side javascript control allowing a user to enter
* allowing users to select one of a range of numbers from
* a select list.
*
* @author Ian Yates
* @requires Common.js
*
*/
function NumberRangeSelect(id)
{
    var Id;
    var RangeStart;
    var RangeEnd;
    var DefaultText;
    var DefaultValue;
    var SelectedValue;
    var OnChange;
    
    this.ddlNumber;
    
    this.AppendTo;
    
    this.createControls;
    
    this.init = NumberRangeSelect_init;
    this.init(id);
}

function NumberRangeSelect_init(id)
{
    this.Id = id;
    this.RangeStart = 0;
    this.RangeEnd = 10;
    this.DefaultText = "";
    this.DefaultValue = "";
    this.SelectedValue = "";
    this.OnChange = null;
    
    this.ddlNumber = null;
    
    this.AppendTo = NumberRangeSelect_AppendTo;
    
    this.createControls = NumberRangeSelect_createControls;
}

function NumberRangeSelect_AppendTo(parentNode)
{
    this.createControls();
    parentNode.appendChild(this.ddlNumber);
}

function NumberRangeSelect_createControls()
{
    //1. Create the select list
    this.ddlNumber = document.createElement("select");
    this.ddlNumber.id = this.Id;
    this.ddlNumber.name = this.Id;
    
    //2. Append the default option (if present)
    if(this.DefaultText != "")
    {
        var defaultOption = document.createElement("option");
        defaultOption.text = this.DefaultText;
        defaultOption.value = this.DefaultValue;
        appendSelectOption(this.ddlNumber, defaultOption);
    }
    
    //3. Create the range of number options
    for(var i = this.RangeStart; i <= this.RangeEnd; i++)
    {
        var opt = document.createElement("option");
        opt.text = i;
        opt.value = i;
        opt.selected = (i == parseInt(this.SelectedValue)) ? true : false;
        appendSelectOption(this.ddlNumber, opt);
    }
    
    //4. Attach event handler and object reference
    attachEventHandler("change", this.ddlNumber, NumberRangeSelect_onChange);
    this.ddlNumber.NumberRangeSelect = this;
}

function NumberRangeSelect_onChange(e)
{
    var ddl = getEventSource(e);
    ddl.NumberRangeSelect.SelectedValue = ddl.options[ddl.selectedIndex].value;
    
    if(ddl.NumberRangeSelect.OnChange != null)
    {
        ddl.NumberRangeSelect.OnChange(ddl.NumberRangeSelect);
    }
}