docs: function(rrule, gettext, language) {
  
      this.gettext = gettext || function(id) {return id};
      this.language = language || ENGLISH;
      this.text = '';
  
      this.rrule = rrule;
      this.freq = rrule.options.freq;
      this.options = rrule.options;
      this.origOptions = rrule.origOptions;
  
      if (this.origOptions.bymonthday) {
          var bymonthday = [].concat(this.options.bymonthday);
          var bynmonthday = [].concat(this.options.bynmonthday);
          bymonthday.sort();
          bynmonthday.sort();
          bynmonthday.reverse();
          // 1, 2, 3, .., -5, -4, -3, ..
          this.bymonthday = bymonthday.concat(bynmonthday);
          if (!this.bymonthday.length) {
              this.bymonthday = null;
          }
      }
  
      if (this.origOptions.byweekday) {
          var byweekday = !(this.origOptions.byweekday instanceof Array)
                              ? [this.origOptions.byweekday]
                              : this.origOptions.byweekday;
          var days = String(byweekday);
          this.byweekday = {
              allWeeks:_.filter(byweekday, function (weekday) {
                  return !Boolean(weekday.n);
              }),
              someWeeks:_.filter(byweekday, function (weekday) {
                  return Boolean(weekday.n);
              }),
              isWeekdays:(
                  days.indexOf('MO') != -1 &&
                      days.indexOf('TU') != -1 &&
                      days.indexOf('WE') != -1 &&
                      days.indexOf('TH') != -1 &&
                      days.indexOf('FR') != -1 &&
                      days.indexOf('SA') == -1 &&
                      days.indexOf('SU') == -1
                  )
          };
  
  
          var sortWeekDays = function(a, b) {
              return a.weekday - b.weekday;
          };
  
          this.byweekday.allWeeks.sort(sortWeekDays);
          this.byweekday.someWeeks.sort(sortWeekDays);
  
          if (!this.byweekday.allWeeks.length) {
              this.byweekday.allWeeks = null;
          }
          if (!this.byweekday.someWeeks.length) {
              this.byweekday.someWeeks = null;
          }
      }
      else {
          this.byweekday = null;
      }
  
  }