var subscriptionOptionChoice = {
  credits: 5,
  creditsUsed: 0,

  init: function() {

    if($('#subscription-choices').length > 0){
      var options = $('#subscription-choices > li');
      options.click(function(){
        options.find('.trigger').next().removeClass('checked');
        $('#just-checking input[type=radio]').next().removeClass('checked');

        $(this).find('.trigger').attr('checked', true).trigger('change');
        $(this).addClass('active');
      });
      $('#just-checking input[type=radio]').change(function(){
        options.find('.trigger').next().removeClass('checked');
      });
    }

    var self = this;

    if($('#subscription-option-choices').length > 0){

      self.credits = $('#choices-left').val();

      this.setCheckboxes($('#subscription-option-choices input:checked'), true);

      $('#subscription-option-choices input[type=checkbox]').click(function(e){
        var checked = $(this).attr('checked');
        $(this).attr('checked', false).trigger('change');

        if(checked && self.creditsUsed == self.credits)
        {
          alert($('#subscription-option-choices-error-message').html());
        }

        self.setCheckboxes($(this), checked);
      });
    };

  },

  setCheckboxes: function(checkbox, checked){
    var self = this;

    var checkboxes = Array.prototype.reverse.call(checkbox.parents('td').prevAll('td'));

    checkboxes.find('input:checkbox')
      .filter(function(index){
        if(self.creditsUsed < self.credits && !$(this).attr('checked')){
          self.creditsUsed++;
          return true;
        };
      })
      .attr('checked', true)
      .trigger('change');

    if(checked){
      if(self.creditsUsed < self.credits){
        self.creditsUsed += checkbox.length;
        checkbox.attr('checked', true).trigger('change');
      };
    }else{
      self.creditsUsed--;

      if(self.creditsUsed < 0) {
        self.creditsUsed = 0;
      }
      checkbox.attr('checked', false).trigger('change');
    }

    checkbox.parents('td').nextAll('td').find('input:checkbox')
      .filter(function(index){
        if($(this).attr('checked')){
          self.creditsUsed--;

          if(self.creditsUsed < 0) {
            self.creditsUsed = 0;
          }
          return true;
        }
      })
      .attr('checked', false)
      .trigger('change');
  }
};
