         label         : "Price is volatile"
         itemClass     : KDOnOffSwitch
         defaultValue  : data.priceIsVolatile
-        callback      : =>
-          enabled = @inputs.priceIsVolatile.getValue()
-          do @fields.feeAmount[if enabled then 'hide' else 'show']
+        callback      : @bound 'priceVolatilityChanged'
 
     if options.showOverage
       options.fields.overageEnabled =

      defaultValue    :
        if data.feeAmount
        then (data.feeAmount / 100).toFixed(2)
      change          : ->
        num = parseFloat @getValue()

        @setValue if isNaN num then '' else num.toFixed(2)
      nextElementFlat :

        perMonth      :

        priceIsVolatile
      }

  getSubscriptionOptions:->

    selectOptions = [
      { title: "Recurs every month",     value: 'mo' }
      { title: "Recurs every 3 months",  value: '3 mo' }
      { title: "Recurs every 6 months",  value: '6 mo' }
      { title: "Recurs every year",      value: 'yr' }
      { title: "Recurs every 2 years",   value: '2 yr' }
      { title: "Recurs every 5 years",   value: '5 yr' }
    ]

    if @getOptions().isRecurOptional
      selectOptions.push { title: "Single payment", value: 'single' }

    return selectOptions

  subscriptionTypeChanged: ->
    subscriptionType = @inputs.subscriptionType.getValue()
    if subscriptionType is 'single'
      @inputs.perMonth.hide()
    else
      @inputs.perMonth.show()
      @inputs.perMonth.updatePartial "/ #{subscriptionType}"

  feeChanged: (num) ->
    num = parseFloat @getValue()

    @setValue if isNaN num then '' else num.toFixed(2)

  priceVolatilityChanged: ->
    enabled = @inputs.priceIsVolatile.getValue()
    do @fields.feeAmount[if enabled then 'hide' else 'show']