function scheduleNextRecurrence(rule, job, prevDate, endDate) {

  prevDate = (prevDate instanceof CronDate) ? prevDate : new CronDate();

  var date = (rule instanceof RecurrenceRule) ? rule._nextInvocationDate(prevDate) : rule.next();
  if (date === null) {
    return null;
  }

  if ((endDate instanceof CronDate) && date.getTime() > endDate.getTime()) {
    return null;
  }

  var inv = new Invocation(job, date, rule, endDate);
  scheduleInvocation(inv);

  return inv;
}
function scheduleNextRecurrence(rule, job, prevDate, endDate) {

  prevDate = (prevDate instanceof CronDate) ? prevDate : new CronDate();

  var date = (rule instanceof RecurrenceRule) ? rule._nextInvocationDate(prevDate) : rule.next();
  if (date === null) {
    return null;
  }

  if ((endDate instanceof CronDate) && date.getTime() > endDate.getTime()) {
    return null;
  }

  var inv = new Invocation(job, date, rule, endDate);
  scheduleInvocation(inv);

  return inv;
}
function scheduleNextRecurrence ( rule , job , prevDate , endDate ) { prevDate = ( prevDate instanceof CronDate ) ? prevDate : new CronDate ( ) ; var date = ( rule instanceof RecurrenceRule ) ? rule . _nextInvocationDate ( prevDate ) : rule . next ( ) ; if ( date === null ) { return null ; } if ( ( endDate instanceof CronDate ) && date . getTime ( ) > endDate . getTime ( ) ) { return null ; } var inv = new Invocation ( job , date , rule , endDate ) ; scheduleInvocation ( inv ) ; return inv ; }
/* Recurrence scheduler
/ * Recurrence scheduler