You may add minDate
to define the minimum selection date, the beforeShowDay
to enable the available days (you have already managed, but only to illustrate everything):
$(function() {
// Data atual, já considerado a partir do próximo mês
var today = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 30);
// Verifica se esta data cai em uma segunda-feira
// Se não cair, precisa obter a próxima segunda depois deste dia
if (today.getDay() != 1) {
// Primeiro dia do próximo mês para calcular quantos dias faltam para o mês atual acabar
var nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
// Total de dias para acabar o mês. A subtração é feita em milessegundos, então as multiplicações são realizadas para obter este valor em dias
var days = Math.floor((nextMonth - today) / (1000*60*60*24))
// Se faltam menos de 7 dias para virar o mês, quer dizer que não existirá outra segunda-feira neste, então a data mínima do datepicker será no próximo mês.
if (days < 7)
today = new Date(today.getFullYear(), today.getMonth(), today.getDate() + days);
}
$("#datepicker").datepicker({
beforeShowDay: function(date){ return [date.getDay() == 1, ""] },
minDate: today
});
});
Jsfiddle