//////////////////////////////////////////////////////////////////////////////
//  jaxradiolist.js
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
//  Jax.Widgets.RadioList constructor.
//////////////////////////////////////////////////////////////////////////////
Jax.Widgets.RadioList = function() {

    // Declare class and set instance.
    Jax.oop.declare(Jax.Widgets.RadioList, Jax.Widgets.Button);
    this.setInstance();
    
	//////////////////////////////////////////////////////////////////////////
	//  count()
	//////////////////////////////////////////////////////////////////////////
	this.count = function() {
        return this.items.count();
	}

    //////////////////////////////////////////////////////////////////////////
    //  enable(state) :  enables the radiobuttons.
    //////////////////////////////////////////////////////////////////////////
    this.enable = function(state) {
        this.enabled = state;
        this.items.forEach(function(item) {
            item.disabled = !state;
        });
    }

    //////////////////////////////////////////////////////////////////////////
    //  getSelected()
    //////////////////////////////////////////////////////////////////////////
    this.getSelected = function() {
        var elSelected = null;
        this.items.forEach(function(item) {
            if (item.checked == true) {
                elSelected = item;
            }
            return item.checked;
        });
        
        return elSelected;
    }
    
    //////////////////////////////////////////////////////////////////////////
    //  getSelectedAt()
    //////////////////////////////////////////////////////////////////////////
    this.getSelectedAt = function() {
        var selectedIndex = -1;
        this.items.forEach(function(item, index) {
            if (item.checked == true) {
                selectedIndex = index;
            }
            return item.checked;
        });
		
        return selectedIndex;
    }

    //////////////////////////////////////////////////////////////////////////
    //  isSelected()
    //////////////////////////////////////////////////////////////////////////
    this.isSelected = function() {
        return this.getSelectedAt() != -1;
    }

    //////////////////////////////////////////////////////////////////////////
    //  setFocus()
    //////////////////////////////////////////////////////////////////////////
    this.setFocus = function() {
        return this.items.itemAt(0).focus();
    }

    //////////////////////////////////////////////////////////////////////////
    //  clickHandler()
    //////////////////////////////////////////////////////////////////////////
    this.clickHandler = function(handler) {
		this.items.forEach(function(item) {
			item.onclick = handler;
		});
    }

    //////////////////////////////////////////////////////////////////////////
    // Initialize instance.
    //////////////////////////////////////////////////////////////////////////
    if ( arguments.length ) {
        this.name = arguments[0];
        this.parent = arguments[1];
        this.items = this.getItems(this.name, this.parent, Jax.Widgets.Form.BY_NAME);
		if (this.items.count() > 0 ) {
			var that = this;
			this.items.forEach(function(item) {
				item.parent = that;
			});
			this.initialize();
		}
    }
};
