/**
 * radiobutton.js - radio button element for blessed
 * Copyright (c) 2013-2015, Christopher Jeffrey and contributors (MIT License).
 * https://github.com/chjj/blessed
 */

/**
 * Modules
 */

const Node = require('./node')
const Checkbox = require('./checkbox')

/**
 * RadioButton
 */

function RadioButton(options) {
  const self = this

  if (!(this instanceof Node)) {
    return new RadioButton(options)
  }

  options = options || {}

  Checkbox.call(this, options)

  this.on('check', function () {
    let el = self
    while ((el = el.parent)) {
      if (el.type === 'radio-set' || el.type === 'form') {
        break
      }
    }
    el = el || self.parent
    el.forDescendants(function (el) {
      if (el.type !== 'radio-button' || el === self) {
        return
      }
      el.uncheck()
    })
  })
}

Object.setPrototypeOf(RadioButton.prototype, Checkbox.prototype)

RadioButton.prototype.type = 'radio-button'

RadioButton.prototype.render = function () {
  this.clearPos(true)
  this.setContent('(' + (this.checked ? '*' : ' ') + ') ' + this.text, true)
  return this._render()
}

RadioButton.prototype.toggle = RadioButton.prototype.check

/**
 * Expose
 */

module.exports = RadioButton
