protected void drawDays() {
	Calendar tmpCalendar = (Calendar)model.getCal().clone();
	int firstDayOfWeek = tmpCalendar.getFirstDayOfWeek();
	tmpCalendar.set(Calendar.DAY_OF_MONTH, 1);

	int firstDay = tmpCalendar.get(Calendar.DAY_OF_WEEK) - firstDayOfWeek;

	if (firstDay < 0) {
		firstDay += 7;
	}

	int i;

	for (i = 0; i < firstDay; i++) {
		days[i + 7].setVisible(false);
		days[i + 7].setText("");
	}

	tmpCalendar.add(Calendar.MONTH, 1);

	Date firstDayInNextMonth = tmpCalendar.getTime();
	tmpCalendar.add(Calendar.MONTH, -1);

	Date day = tmpCalendar.getTime();
	int n = 0;
	Color foregroundColor = getForeground();

	while (day.before(firstDayInNextMonth)) {
		days[i + n + 7].setText(Integer.toString(n + 1));
		days[i + n + 7].setVisible(true);

		if ((tmpCalendar.get(Calendar.DAY_OF_YEAR) == model.getCal().get(
					Calendar.DAY_OF_YEAR)) &&
				(tmpCalendar.get(Calendar.YEAR) == model.getCal().get(Calendar.YEAR))) {
			days[i + n + 7].setForeground(sundayForeground);
		} else {
			days[i + n + 7].setForeground(foregroundColor);
		}

		if ((n + 1) == model.getCal().get(Calendar.DAY_OF_MONTH)) {
			days[i + n + 7].setBackground(selectedColor);
			selectedDay = days[i + n + 7];
		} else {
			days[i + n + 7].setBackground(oldDayBackgroundColor);
		}

		n++;
		tmpCalendar.add(Calendar.DATE, 1);
		day = tmpCalendar.getTime();
	}

	for (int k = n + i + 7; k < 49; k++) {
		days[k].setVisible(false);
		days[k].setText("");
	}
}