001/*
002 * Zmanim Java API
003 * Copyright (C) 2019 - 2023 Eliyahu Hershfeld
004 * Copyright (C) 2019 - 2021 Y Paritcher
005 *
006 * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
007 * Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option)
008 * any later version.
009 *
010 * This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied
011 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
012 * details.
013 * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
014 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA,
015 * or connect to: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
016 */
017package com.kosherjava.zmanim.hebrewcalendar;
018
019import java.util.Calendar;
020
021/**
022 * Tefila Rules is a utility class that covers the various <em>halachos</em> and <em>minhagim</em> regarding
023 * changes to daily <em>tefila</em> / prayers, based on the Jewish calendar. This is mostly useful for use in
024 * developing <em>siddur</em> type applications, but it is also valuable for <em>shul</em> calendars that set
025 * <em>tefila</em> times based on if <a href="https://en.wikipedia.org/wiki/Tachanun"><em>tachanun</em></a> is
026 * recited that day. There are many settings in this class to cover the vast majority of <em>minhagim</em>, but
027 * there are likely some not covered here. The source for many of the <em>chasidishe minhagim</em> can be found
028 * in the <a href="https://www.nli.org.il/he/books/NNL_ALEPH001141272/NLI">Minhag Yisrael Torah</a> on Orach
029 * Chaim 131.
030 * Dates used in specific communities such as specific <em>yahrzeits</em> or a holidays like Purim Mezhbizh
031 * (Medzhybizh) celebrated on 11 {@link JewishDate#TEVES <em>Teves</em>} or <a href=
032 * "https://en.wikipedia.org/wiki/Second_Purim#Purim_Saragossa_(18_Shevat)">Purim Saragossa</a> celebrated on
033 * the (17th or) 18th of {@link JewishDate#SHEVAT <em>Shevat</em>} are not (and likely will not be) supported by
034 * this class.
035 * <p>Sample code:
036 * <pre style="background: #FEF0C9; display: inline-block;">
037 * TefilaRules tr = new TefilaRules();
038 * JewishCalendar jewishCalendar = new JewishCalendar();
039 * HebrewDateFormatter hdf = new HebrewDateFormatter();
040 * jewishCalendar.setJewishDate(5783, JewishDate.TISHREI, 1); // Rosh Hashana
041 * System.out.println(hdf.format(jewishCalendar) + ": " + tr.isTachanunRecitedShacharis(jd));
042 * jewishCalendar.setJewishDate(5783, JewishDate.ADAR, 17);
043 * System.out.println(hdf.format(jewishCalendar) + ": " + tr.isTachanunRecitedShacharis(jewishCalendar));
044 * tr.setTachanunRecitedWeekOfPurim(false);
045 * System.out.println(hdf.format(jewishCalendar) + ": " + tr.isTachanunRecitedShacharis(jewishCalendar));</pre>
046 * 
047 * @author &copy; Y. Paritcher 2019 - 2021
048 * @author &copy; Eliyahu Hershfeld 2019 - 2023
049 * 
050 * @todo The following items may be added at a future date.
051 * <ol>
052 * <li><em>Lamnatzaiach</em></li>
053 * <li><em>Selichos</em></li>
054 * <li>...</li>
055 * </ol>
056 */
057public class TefilaRules {
058        /**
059         * The default value is <code>true</code>.
060         * @see #isTachanunRecitedEndOfTishrei()
061         * @see #setTachanunRecitedEndOfTishrei(boolean)
062         */
063        private boolean tachanunRecitedEndOfTishrei = true;
064        
065        /**
066         * The default value is <code>false</code>.
067         * @see #isTachanunRecitedWeekAfterShavuos()
068         * @see #setTachanunRecitedWeekAfterShavuos(boolean)
069         */
070        private boolean tachanunRecitedWeekAfterShavuos = false;
071        
072        /**
073         * The default value is <code>true</code>.
074         * @see #isTachanunRecited13SivanOutOfIsrael()
075         * @see #setTachanunRecited13SivanOutOfIsrael(boolean)
076         */
077        private boolean tachanunRecited13SivanOutOfIsrael = true;
078        
079        /**
080         * The default value is <code>false</code>.
081         * @see #isTachanunRecitedPesachSheni()
082         * @see #setTachanunRecitedPesachSheni(boolean)
083         */
084        private boolean tachanunRecitedPesachSheni = false;
085        
086        /**
087         * The default value is <code>true</code>.
088         * @see #isTachanunRecited15IyarOutOfIsrael()
089         * @see #setTachanunRecited15IyarOutOfIsrael(boolean)
090         */
091        private boolean tachanunRecited15IyarOutOfIsrael = true;
092        
093        /**
094         * The default value is <code>false</code>.
095         * @see #isTachanunRecitedMinchaErevLagBaomer()
096         * @see #setTachanunRecitedMinchaErevLagBaomer(boolean)
097         */
098        private boolean tachanunRecitedMinchaErevLagBaomer = false;
099        
100        /**
101         * The default value is <code>true</code>.
102         * @see #isTachanunRecitedShivasYemeiHamiluim()
103         * @see #setTachanunRecitedShivasYemeiHamiluim(boolean)
104         */
105        private boolean tachanunRecitedShivasYemeiHamiluim = true;
106        
107        /**
108         * The default value is <code>true</code>.
109         * @see #isTachanunRecitedWeekOfHod()
110         * @see #setTachanunRecitedWeekOfHod(boolean)
111         */
112        private boolean tachanunRecitedWeekOfHod = true;
113        
114        /**
115         * The default value is <code>true</code>.
116         * @see #isTachanunRecitedWeekOfPurim()
117         * @see #setTachanunRecitedWeekOfPurim(boolean)
118         */
119        private boolean tachanunRecitedWeekOfPurim = true;
120        
121        /**
122         * The default value is <code>true</code>.
123         * @see #isTachanunRecitedFridays()
124         * @see #setTachanunRecitedFridays(boolean)
125         */
126        private boolean tachanunRecitedFridays = true;
127        
128        /**
129         * The default value is <code>true</code>.
130         * @see #isTachanunRecitedSundays()
131         * @see #setTachanunRecitedSundays(boolean)
132         */
133        private boolean tachanunRecitedSundays = true;
134        
135        /**
136         * The default value is <code>true</code>.
137         * @see #isTachanunRecitedMinchaAllYear()
138         * @see #setTachanunRecitedMinchaAllYear(boolean)
139         */
140        private boolean tachanunRecitedMinchaAllYear = true;
141        
142        /**
143         * The default value is <code>false</code>.
144         * @see #isMizmorLesodaRecited(JewishCalendar)
145         * @see #setMizmorLesodaRecitedErevYomKippurAndPesach(boolean)
146         */
147        private boolean mizmorLesodaRecitedErevYomKippurAndPesach = false;
148        
149        /**
150         * Returns if <em>tachanun</em> is recited during <em>shacharis</em> on the day in question. There are the many
151         * <em>minhagim</em> based settings that are available in this class that control what days are set for
152         * <em>tachanun</em> recital.
153         * 
154         * @param jewishCalendar the Jewish calendar day.
155         * @return if <em>tachanun</em> is recited during <em>shacharis</em>.
156         * @see #isTachanunRecitedMincha(JewishCalendar)
157         * @see #isTachanunRecitedSundays()
158         * @see #isTachanunRecitedFridays()
159         * @see #isTachanunRecitedEndOfTishrei()
160         * @see #isTachanunRecitedWeekAfterShavuos()
161         * @see #isTachanunRecited13SivanOutOfIsrael()
162         * @see #isTachanunRecitedPesachSheni()
163         * @see #isTachanunRecited15IyarOutOfIsrael()
164         * @see #isTachanunRecitedShivasYemeiHamiluim()
165         * @see #isTachanunRecitedWeekOfPurim()
166         * @see #isTachanunRecitedWeekOfHod()
167         */
168        public boolean isTachanunRecitedShacharis(JewishCalendar jewishCalendar) {
169                int holidayIndex = jewishCalendar.getYomTovIndex();
170                int day = jewishCalendar.getJewishDayOfMonth();
171                int month = jewishCalendar.getJewishMonth();
172
173                if (jewishCalendar.getDayOfWeek() == Calendar.SATURDAY
174                                || (!tachanunRecitedSundays && jewishCalendar.getDayOfWeek() == Calendar.SUNDAY)
175                                || (!tachanunRecitedFridays && jewishCalendar.getDayOfWeek() == Calendar.FRIDAY)
176                                || month == JewishDate.NISSAN
177                                || (month == JewishDate.TISHREI && ((!tachanunRecitedEndOfTishrei && day > 8)
178                                || (tachanunRecitedEndOfTishrei && (day > 8 && day < 22))))
179                                || (month == JewishDate.SIVAN && (tachanunRecitedWeekAfterShavuos && day < 7
180                                                || !tachanunRecitedWeekAfterShavuos && day < (!jewishCalendar.getInIsrael()
181                                                                && !tachanunRecited13SivanOutOfIsrael ? 14: 13)))
182                                || (jewishCalendar.isYomTov() && (! jewishCalendar.isTaanis()
183                                                || (!tachanunRecitedPesachSheni && holidayIndex == JewishCalendar.PESACH_SHENI))) // Erev YT is included in isYomTov()
184                                || (!jewishCalendar.getInIsrael() && !tachanunRecitedPesachSheni && !tachanunRecited15IyarOutOfIsrael
185                                                && jewishCalendar.getJewishMonth() == JewishDate.IYAR && day == 15)
186                                || holidayIndex == JewishCalendar.TISHA_BEAV || jewishCalendar.isIsruChag()
187                                || jewishCalendar.isRoshChodesh()
188                                || (!tachanunRecitedShivasYemeiHamiluim &&
189                                                ((!jewishCalendar.isJewishLeapYear() && month == JewishDate.ADAR)
190                                                                || (jewishCalendar.isJewishLeapYear() && month == JewishDate.ADAR_II)) && day > 22)
191                                || (!tachanunRecitedWeekOfPurim &&
192                                                ((!jewishCalendar.isJewishLeapYear() && month == JewishDate.ADAR)
193                                                                || (jewishCalendar.isJewishLeapYear() && month == JewishDate.ADAR_II)) && day > 10 && day < 18)
194                                || (jewishCalendar.isUseModernHolidays()
195                                                && (holidayIndex == JewishCalendar.YOM_HAATZMAUT || holidayIndex == JewishCalendar.YOM_YERUSHALAYIM))
196                                || (!tachanunRecitedWeekOfHod && month == JewishDate.IYAR && day > 13 && day < 21)) {
197                        return false;
198                }
199                return true;
200        }
201
202        /**
203         * Returns if <em>tachanun</em> is recited during <em>mincha</em> on the day in question.
204         * 
205         * @param jewishCalendar the Jewish calendar day.
206         * @return if <em>tachanun</em> is recited during <em>mincha</em>.
207         * @see #isTachanunRecitedShacharis(JewishCalendar)
208         */
209        public boolean isTachanunRecitedMincha(JewishCalendar jewishCalendar) {
210                JewishCalendar tomorrow = new JewishCalendar();
211                tomorrow = (JewishCalendar) jewishCalendar.clone();
212                tomorrow.forward(Calendar.DATE, 1);
213                
214                if (!tachanunRecitedMinchaAllYear
215                                        || jewishCalendar.getDayOfWeek() == Calendar.FRIDAY
216                                        || ! isTachanunRecitedShacharis(jewishCalendar) 
217                                        || (! isTachanunRecitedShacharis(tomorrow) && 
218                                                        !(tomorrow.getYomTovIndex() == JewishCalendar.EREV_ROSH_HASHANA) &&
219                                                        !(tomorrow.getYomTovIndex() == JewishCalendar.EREV_YOM_KIPPUR) &&
220                                                        !(tomorrow.getYomTovIndex() == JewishCalendar.PESACH_SHENI))
221                                        || ! tachanunRecitedMinchaErevLagBaomer && tomorrow.getYomTovIndex() == JewishCalendar.LAG_BAOMER) {
222                        return false;
223                }
224                return true;
225        }
226        
227        /**
228         * Returns if it is the Jewish day (starting the evening before) to start reciting <em>Vesein Tal Umatar Livracha</em>
229         * (<em>Sheailas Geshamim</em>). In Israel this is the 7th day of {@link JewishDate#CHESHVAN <em>Marcheshvan</em>}.
230         * Outside Israel recitation starts on the evening of December 4th (or 5th if it is the year before a civil leap year)
231         * in the 21st century and shifts a day forward every century not evenly divisible by 400. This method will return true
232         * if <em>vesein tal umatar</em> on the current Jewish date that starts on the previous night, so Dec 5/6 will be
233         * returned by this method in the 21st century. <em>vesein tal umatar</em> is not recited on <em>Shabbos</em> and the
234         * start date will be delayed a day when the start day is on a <em>Shabbos</em> (this can only occur out of Israel).
235         * 
236         * @param jewishCalendar the Jewish calendar day.
237         * 
238         * @return true if it is the first Jewish day (starting the prior evening of reciting <em>Vesein Tal Umatar Livracha</em>
239         *         (<em>Sheailas Geshamim</em>).
240         * 
241         * @see #isVeseinTalUmatarStartingTonight(JewishCalendar)
242         * @see #isVeseinTalUmatarRecited(JewishCalendar)
243         */
244        public boolean isVeseinTalUmatarStartDate(JewishCalendar jewishCalendar) {
245                if (jewishCalendar.getInIsrael()) {
246                         // The 7th Cheshvan can't occur on Shabbos, so always return true for 7 Cheshvan
247                        if (jewishCalendar.getJewishMonth() == JewishDate.CHESHVAN && jewishCalendar.getJewishDayOfMonth() == 7) {
248                                return true;
249                        }
250                } else {
251                        if (jewishCalendar.getDayOfWeek() == Calendar.SATURDAY) { //Not recited on Friday night
252                                return false;
253                        }
254                        if(jewishCalendar.getDayOfWeek() == Calendar.SUNDAY) { // When starting on Sunday, it can be the start date or delayed from Shabbos
255                                return jewishCalendar.getTekufasTishreiElapsedDays() == 48 || jewishCalendar.getTekufasTishreiElapsedDays() == 47;
256                        } else {
257                                return jewishCalendar.getTekufasTishreiElapsedDays() == 47;
258                        }
259                }
260                return false; // keep the compiler happy
261        }
262        
263        /**
264         * Returns if true if tonight is the first night to start reciting <em>Vesein Tal Umatar Livracha</em> (
265         * <em>Sheailas Geshamim</em>). In Israel this is the 7th day of {@link JewishDate#CHESHVAN
266         * <em>Marcheshvan</em>} (so the 6th will return true). Outside Israel recitation starts on the evening
267         * of December 4th (or 5th if it is the year before a civil leap year) in the 21st century and shifts a
268         * day forward every century not evenly divisible by 400. <em>Vesein tal umatar</em> is not recited on
269         * <em>Shabbos</em> and the start date will be delayed a day when the start day is on a <em>Shabbos</em>
270         * (this can only occur out of Israel).
271         * 
272         * @param jewishCalendar the Jewish calendar day.
273         * 
274         * @return true if it is the first Jewish day (starting the prior evening of reciting <em>Vesein Tal Umatar
275         *         Livracha</em> (<em>Sheailas Geshamim</em>).
276         * 
277         * @see #isVeseinTalUmatarStartDate(JewishCalendar)
278         * @see #isVeseinTalUmatarRecited(JewishCalendar)
279         */
280        public boolean isVeseinTalUmatarStartingTonight(JewishCalendar jewishCalendar) {
281                if (jewishCalendar.getInIsrael()) {
282                        // The 7th Cheshvan can't occur on Shabbos, so always return true for 6 Cheshvan
283                        if (jewishCalendar.getJewishMonth() == JewishDate.CHESHVAN && jewishCalendar.getJewishDayOfMonth() == 6) {
284                                        return true;
285                        }
286                } else {
287                        if (jewishCalendar.getDayOfWeek() == Calendar.FRIDAY) { //Not recited on Friday night
288                                return false;
289                        }
290                        if(jewishCalendar.getDayOfWeek() == Calendar.SATURDAY) { // When starting on motzai Shabbos, it can be the start date or delayed from Friday night
291                                return jewishCalendar.getTekufasTishreiElapsedDays() == 47 || jewishCalendar.getTekufasTishreiElapsedDays() == 46;
292                        } else {
293                                return jewishCalendar.getTekufasTishreiElapsedDays() == 46;
294                        }
295                }
296                return false;
297        }
298
299        /**
300         * Returns if <em>Vesein Tal Umatar Livracha</em> (<em>Sheailas Geshamim</em>) is recited. This will return
301         * true for the entire season, even on <em>Shabbos</em> when it is not recited.
302         * 
303         * @param jewishCalendar the Jewish calendar day.
304         * 
305         * @return true if <em>Vesein Tal Umatar Livracha</em> (<em>Sheailas Geshamim</em>) is recited.
306         * 
307         * @see #isVeseinTalUmatarStartDate(JewishCalendar)
308         * @see #isVeseinTalUmatarStartingTonight(JewishCalendar)
309         */
310        public boolean isVeseinTalUmatarRecited(JewishCalendar jewishCalendar) {
311                if (jewishCalendar.getJewishMonth() == JewishDate.NISSAN && jewishCalendar.getJewishDayOfMonth() < 15) {
312                        return true;
313                }
314                if (jewishCalendar.getJewishMonth() < JewishDate.CHESHVAN) {
315                        return false;
316                }
317                if (jewishCalendar.getInIsrael()) {
318                        return jewishCalendar.getJewishMonth() != JewishDate.CHESHVAN || jewishCalendar.getJewishDayOfMonth() >= 7;
319                } else {
320                        return jewishCalendar.getTekufasTishreiElapsedDays() >= 47;
321                }
322        }
323        
324        /**
325         * Returns if <em>Vesein Beracha</em> is recited. It is recited from 15 {@link JewishDate#NISSAN <em>Nissan</em>} to the
326         * point that {@link #isVeseinTalUmatarRecited(JewishCalendar) <em>vesein tal umatar</em> is recited}.
327         * 
328         * @param jewishCalendar the Jewish calendar day.
329         * @return true if <em>Vesein Beracha</em> is recited.
330         * @see #isVeseinTalUmatarRecited(JewishCalendar)
331         */
332        public boolean isVeseinBerachaRecited(JewishCalendar jewishCalendar) {
333                return ! isVeseinTalUmatarRecited(jewishCalendar);
334        }
335
336        /**
337         * Returns if the date is the start date for reciting <em>Mashiv Haruach Umorid Hageshem</em>. The date is 22
338         * {@link JewishDate#TISHREI <em>Tishrei</em>}.
339         * 
340         * @param jewishCalendar the Jewish calendar day.
341         * @return true if the date is the start date for reciting <em>Mashiv Haruach Umorid Hageshem</em>.
342         * @see #isMashivHaruachEndDate(JewishCalendar)
343         * @see #isMashivHaruachRecited(JewishCalendar)
344         */
345        public boolean isMashivHaruachStartDate(JewishCalendar jewishCalendar) {
346                return jewishCalendar.getJewishMonth() == JewishDate.TISHREI && jewishCalendar.getJewishDayOfMonth() == 22;
347        }
348
349        /**
350         * Returns if the date is the end date for reciting <em>Mashiv Haruach Umorid Hageshem</em>. The date is 15
351         * {@link JewishDate#NISSAN <em>Nissan</em>}.
352         * 
353         * @param jewishCalendar the Jewish calendar day.
354         * @return true if the date is the end date for reciting <em>Mashiv Haruach Umorid Hageshem</em>.
355         * @see #isMashivHaruachStartDate(JewishCalendar)
356         * @see #isMashivHaruachRecited(JewishCalendar)
357         */
358        public boolean isMashivHaruachEndDate(JewishCalendar jewishCalendar) {
359                return jewishCalendar.getJewishMonth() == JewishDate.NISSAN && jewishCalendar.getJewishDayOfMonth() == 15;
360        }
361
362        /**
363         * Returns if <em>Mashiv Haruach Umorid Hageshem</em> is recited. This period starts on 22 {@link
364         * JewishDate#TISHREI <em>Tishrei</em>} and ends on the 15th day of {@link JewishDate#NISSAN <em>Nissan</em>}.
365         * 
366         * @param jewishCalendar the Jewish calendar day.
367         * @return true if <em>Mashiv Haruach Umorid Hageshem</em> is recited.
368         * @see #isMashivHaruachStartDate(JewishCalendar)
369         * @see #isMashivHaruachEndDate(JewishCalendar)
370         */
371        public boolean isMashivHaruachRecited(JewishCalendar jewishCalendar) {
372                JewishDate startDate = new JewishDate(jewishCalendar.getJewishYear(), JewishDate.TISHREI, 22);
373                JewishDate endDate = new JewishDate(jewishCalendar.getJewishYear(), JewishDate.NISSAN, 15);
374                return jewishCalendar.compareTo(startDate) > 0 && jewishCalendar.compareTo(endDate) < 0;
375        }
376
377        /**
378         * Returns if <em>Morid Hatal</em> (or the lack of reciting <em>Mashiv Haruach</em> following <em>nussach Ashkenaz</em>) is
379         * recited. This period starts on the 15th day of {@link JewishDate#NISSAN <em>Nissan</em>} and ends on 22 {@link
380         * JewishDate#TISHREI <em>Tishrei</em>}.
381         * 
382         * @param jewishCalendar the Jewish calendar day.
383         * 
384         * @return true if <em>Morid Hatal</em> (or the lack of reciting <em>Mashiv Haruach</em> following <em>nussach Ashkenaz</em>) is recited.
385         */
386        public boolean isMoridHatalRecited(JewishCalendar jewishCalendar) {
387                return !isMashivHaruachRecited(jewishCalendar) || isMashivHaruachStartDate(jewishCalendar) || isMashivHaruachEndDate(jewishCalendar);
388        }
389        
390        /**
391         * Returns if <em>Hallel</em> is recited on the day in question. This will return true for both <em>Hallel shalem</em>
392         * and <em>Chatzi Hallel</em>. See {@link #isHallelShalemRecited(JewishCalendar)} to know if the complete <em>Hallel</em>
393         * is recited.
394         * 
395         * @param jewishCalendar the Jewish calendar day.
396         * @return if <em>Hallel</em> is recited.
397         * @see #isHallelShalemRecited(JewishCalendar)
398         */
399        public boolean isHallelRecited(JewishCalendar jewishCalendar) {
400                int day = jewishCalendar.getJewishDayOfMonth();
401                int month = jewishCalendar.getJewishMonth();
402                int holidayIndex = jewishCalendar.getYomTovIndex();
403                boolean inIsrael = jewishCalendar.getInIsrael();
404                
405                if(jewishCalendar.isRoshChodesh()) { //RH returns false for RC
406                        return true;
407                }
408                if(jewishCalendar.isChanukah()) {
409                        return true;
410                }
411                switch (month) {
412                        case JewishDate.NISSAN:
413                                if(day >= 15 && ((inIsrael && day <= 21) || (!inIsrael && day <= 22))){
414                                        return true;
415                                }
416                                break;
417                        case JewishDate.IYAR: // modern holidays
418                                if(jewishCalendar.isUseModernHolidays()  && (holidayIndex == JewishCalendar.YOM_HAATZMAUT
419                                                || holidayIndex == JewishCalendar.YOM_YERUSHALAYIM)){
420                                        return true;
421                                }
422                                break;
423                        case JewishDate.SIVAN:
424                                if (day == 6 || (!inIsrael && (day == 7))){
425                                        return true;
426                                }
427                                break;
428                        case JewishDate.TISHREI:
429                                if (day >= 15 && (day <= 22 || (!inIsrael && (day <= 23)))){
430                                        return true;
431                                }
432                }
433                return false;
434        }
435
436        /**
437         * Returns if <em>hallel shalem</em> is recited on the day in question. This will always return false if {@link
438         * #isHallelRecited(JewishCalendar)} returns false.
439         * 
440         * @param jewishCalendar the Jewish calendar day.
441         * @return if <em>hallel shalem</em> is recited.
442         * @see #isHallelRecited(JewishCalendar)
443         */
444        public boolean isHallelShalemRecited(JewishCalendar jewishCalendar) {
445                int day = jewishCalendar.getJewishDayOfMonth();
446                int month = jewishCalendar.getJewishMonth();
447                boolean inIsrael = jewishCalendar.getInIsrael();
448                if(isHallelRecited(jewishCalendar)) {
449                        if((jewishCalendar.isRoshChodesh() && ! jewishCalendar.isChanukah())
450                                        || (month == JewishDate.NISSAN && ((inIsrael && day > 15) || (!inIsrael && day > 16)))) {
451                                return false;
452                        } else {
453                                return true;
454                        }
455                } 
456                return false;
457        }
458        
459        /**
460         * Returns if <a href="https://en.wikipedia.org/wiki/Al_HaNissim"><em>Al HaNissim</em></a> is recited on the day in question.
461         * 
462         * @param jewishCalendar the Jewish calendar day.
463         * @return if <em>al hanissim</em> is recited.
464         * @see JewishCalendar#isChanukah()
465         * @see JewishCalendar#isPurim()
466         * @see JewishCalendar#getIsMukafChoma()
467         */
468        public boolean isAlHanissimRecited(JewishCalendar jewishCalendar) {
469            return jewishCalendar.isPurim() || jewishCalendar.isChanukah();
470        }
471        
472        /**
473         * Returns if <em>Yaaleh Veyavo</em> is recited on the day in question.
474         * 
475         * @param jewishCalendar the Jewish calendar day.
476         * @return if <em>Yaaleh Veyavo</em> is recited.
477         * @see JewishCalendar#isPesach()
478         * @see JewishCalendar#isShavuos()
479         * @see JewishCalendar#isRoshHashana()
480         * @see JewishCalendar#isYomKippur()
481         * @see JewishCalendar#isSuccos()
482         * @see JewishCalendar#isShminiAtzeres()
483         * @see JewishCalendar#isSimchasTorah()
484         * @see JewishCalendar#isRoshChodesh()
485         */
486        public boolean isYaalehVeyavoRecited(JewishCalendar jewishCalendar) {
487            return jewishCalendar.isPesach() || jewishCalendar.isShavuos() ||jewishCalendar.isRoshHashana() || jewishCalendar.isYomKippur()
488                        || jewishCalendar.isSuccos() || jewishCalendar.isShminiAtzeres() || jewishCalendar.isSimchasTorah()
489                        || jewishCalendar.isRoshChodesh();
490        }
491        
492        /**
493         * Returns if Is <em>Mizmor Lesoda</em> is recited on the day in question. 
494         * @param jewishCalendar  the Jewish calendar day.
495         * @return if <em>Mizmor Lesoda</em> is recited.
496         * 
497         * @see #isMizmorLesodaRecitedErevYomKippurAndPesach()
498         * 
499         */
500        public boolean isMizmorLesodaRecited(JewishCalendar jewishCalendar) {
501                if(jewishCalendar.isAssurBemelacha()) {
502                        return false;
503                }
504                
505                int holidayIndex = jewishCalendar.getYomTovIndex();
506                if(! isMizmorLesodaRecitedErevYomKippurAndPesach()
507                                && (holidayIndex == JewishCalendar.EREV_YOM_KIPPUR
508                                                || holidayIndex == JewishCalendar.EREV_PESACH
509                                                || jewishCalendar.isCholHamoedPesach())) {
510                        return false;
511                }
512            return true;
513        }
514        
515        /**
516         * Is <em>tachanun</em> set to be recited during the week of Purim, from the 11th through the 17th of {@link
517         * JewishDate#ADAR <em>Adar</em>} (on a non-leap year, or {@link JewishDate#ADAR_II <em>Adar II</em>} on a leap year). Some
518         * <em>chasidishe</em> communities do not recite <em>tachanun</em> during this period. See the <a href=
519         * "https://www.nli.org.il/he/books/NNL_ALEPH001141272/NLI">Minhag Yisrael Torah</a> 131 and <a href=
520         * "https://hebrewbooks.org/pdfpager.aspx?req=4692&st=&pgnum=70">Darkei Chaim Veshalom 191</a>who discuss the
521         * <em>minhag</em> not to recite <em>tachanun</em>. Also see the <a href=
522         * "https://hebrewbooks.org/pdfpager.aspx?req=8944&st=&pgnum=160">Mishmeres Shalom (Hadras Shalom)</a> who discusses the
523         * <em>minhag</em> of not reciting it on the 16th and 17th.
524         * @return If <em>tachanun</em> is set to be recited during the week of Purim from the 11th through the 17th of {@link
525         *         JewishDate#ADAR <em>Adar</em>} (on a non-leap year, or {@link JewishDate#ADAR_II <em>Adar II</em>} on a leap year).
526         * @see #setTachanunRecitedWeekOfPurim(boolean)
527         */
528        public boolean isTachanunRecitedWeekOfPurim() {
529                return tachanunRecitedWeekOfPurim;
530        }
531
532        /**
533         * Sets if <em>tachanun</em> should be recited during the week of Purim from the 11th through the 17th of {@link
534         * JewishDate#ADAR <em>Adar</em>} (on a non-leap year), or {@link JewishDate#ADAR_II <em>Adar II</em>} (on a leap year).
535         * @param tachanunRecitedWeekOfPurim Sets if <em>tachanun</em> is to recited during the week of Purim from the 11th
536         *         through the 17th of {@link JewishDate#ADAR <em>Adar</em>} (on a non-leap year), or {@link JewishDate#ADAR_II
537         *         <em>Adar II</em>} (on a leap year). Some <em>chasidishe</em> communities do not recite <em>tachanun</em>
538         *         during this period.
539         * @see #isTachanunRecitedWeekOfPurim()
540         */
541        public void setTachanunRecitedWeekOfPurim(boolean tachanunRecitedWeekOfPurim) {
542                this.tachanunRecitedWeekOfPurim = tachanunRecitedWeekOfPurim;
543        }
544
545        /**
546         * Is <em>tachanun</em> set to be recited during the <em>sefira</em> week of <em>Hod</em> (14 - 20 {@link
547         * JewishDate#IYAR <em>Iyar</em>}, or the 29th - 35th of the {@link JewishCalendar#getDayOfOmer() <em>Omer</em>}). Some
548         * <em>chasidishe</em> communities do not recite <em>tachanun</em> during this week. See Minhag Yisrael Torah 131:Iyar.
549         * @return If <em>tachanun</em> is set to be recited during the <em>sefira</em> week of <em>Hod</em> (14 - 20 {@link
550         *         JewishDate#IYAR <em>Iyar</em>}, or the 29th - 35th of the {@link JewishCalendar#getDayOfOmer() <em>Omer</em>}).
551         * @see #setTachanunRecitedWeekOfHod(boolean)
552         */
553        public boolean isTachanunRecitedWeekOfHod() {
554                return tachanunRecitedWeekOfHod;
555        }
556
557        /**
558         * Sets if <em>tachanun</em> should should be recited during the <em>sefira</em> week of <em>Hod</em> (14 - 20
559         * {@link JewishDate#IYAR <em>Iyar</em>}, or the 29th - 35th of the {@link JewishCalendar#getDayOfOmer() <em>Omer</em>}).
560         * @param tachanunRecitedWeekOfHod Sets if <em>tachanun</em> should be recited during the <em>sefira</em> week of
561         * <em>Hod</em>.
562         * @see #isTachanunRecitedWeekOfHod()
563         */
564        public void setTachanunRecitedWeekOfHod(boolean tachanunRecitedWeekOfHod) {
565                this.tachanunRecitedWeekOfHod = tachanunRecitedWeekOfHod;
566        }
567
568        /**
569         * Is <em>tachanun</em> set to be recited at the end Of {@link JewishDate#TISHREI <em>Tishrei</em>}.The Magen Avraham 669:1 and
570         * the Pri Chadash 131:7 state that some places to not recite <em>tachanun</em> during this period. The Sh"UT Chasam Sofer on
571         * Choshen Mishpat 77 writes that this is the <em>minhag</em> in Ashkenaz. The Shaarei Teshuva 131:19 quotes the Sheyarie Kneses
572         * Hagdola who also states that it should not be recited. The Aderes wanted to institute saying <em>tachanun</em> during this
573         * period, but was dissuaded from this by Rav Shmuel Salant who did not want to change the <em>minhag</em> in Yerushalayim.
574         * The Aruch Hashulchan is of the opinion that that this <em>minhag</em> is incorrect, and it should be recited, and The Chazon
575         * Ish also recited <em>tachanun</em> during this period. See the Dirshu edition of the Mishna Berurah for details.
576         * @return If <em>tachanun</em> is set to be recited at the end of {@link JewishDate#TISHREI <em>Tishrei</em>}.
577         * @see #setTachanunRecitedEndOfTishrei(tachanunRecitedEndOfTishrei)
578         */
579        public boolean isTachanunRecitedEndOfTishrei() {
580                return tachanunRecitedEndOfTishrei;
581        }
582
583        /**
584         * Sets if <em>tachanun</em> should be recited at the end of {@link JewishDate#TISHREI <em>Tishrei</em>}.
585         * @param tachanunRecitedEndOfTishrei is <em>tachanun</em> recited at the end of {@link JewishDate#TISHREI <em>Tishrei</em>}.
586         * @see #isTachanunRecitedEndOfTishrei()
587         */
588        public void setTachanunRecitedEndOfTishrei(boolean tachanunRecitedEndOfTishrei) {
589                this.tachanunRecitedEndOfTishrei = tachanunRecitedEndOfTishrei;
590        }
591        
592        /**
593         * Is <em>tachanun</em> set to be recited during the week after <em>Shavuos</em>. This is the opinion of the Pri
594         * Megadim quoted by the Mishna Berurah. This is since <em>karbanos</em> of <em>Shavuos</em> have <em>tashlumim</em>
595         * for 7 days, it is still considered like a <em>Yom Tov</em>. The Chazon Ish quoted in the Orchos Rabainu vol. 1
596         * page 68 recited <em>tachanun</em> during this week.
597         * 
598         * @return If <em>tachanun</em> is set to be recited during the week after Shavuos.
599         * @see #setTachanunRecitedWeekAfterShavuos(boolean)
600         */
601        public boolean isTachanunRecitedWeekAfterShavuos() {
602                return tachanunRecitedWeekAfterShavuos;
603        }
604
605        /**
606         * Sets if <em>tachanun</em> should be recited during the week after <em>Shavuos</em>.
607         * @param tachanunRecitedWeekAfterShavuos is <em>tachanun</em> recited during the week after Shavuos.
608         * @see #isTachanunRecitedWeekAfterShavuos()
609         */
610        public void setTachanunRecitedWeekAfterShavuos(boolean tachanunRecitedWeekAfterShavuos) {
611                this.tachanunRecitedWeekAfterShavuos = tachanunRecitedWeekAfterShavuos;
612        }
613        
614        /**
615         * Is <em>tachanun</em> is set to be recited on the 13th of {@link JewishDate#SIVAN <em>Sivan</em>} (<a href=
616         * "https://en.wikipedia.org/wiki/Yom_tov_sheni_shel_galuyot"><em>Yom Tov Sheni shel Galuyos</em></a> of the 7th
617         * day) outside Israel. This is brought down by the Shaarie Teshuva 131:19 quoting the <a href=
618         * "https://hebrewbooks.org/pdfpager.aspx?req=41295&st=&pgnum=39">Sheyarei Kneses Hagedola 131:12</a>that
619         * <em>tachanun</em> should not be recited on this day. Rav Shlomo Zalman Orbach in Halichos Shlomo on
620         * Shavuos 12:16:25 is of the opinion that even in <em>chutz laaretz</em> it should be recited since the <em>yemei
621         * Tashlumin</em> are counted based on Israel since that is where the <em>karbanos</em> are brought. Both
622         * {@link #isTachanunRecitedShacharis(JewishCalendar)} and {@link #isTachanunRecitedMincha(JewishCalendar)}
623         * only return false if the location is not set to {@link JewishCalendar#getInIsrael() Israel} and both
624         * {@link #tachanunRecitedWeekAfterShavuos} and {@link #setTachanunRecited13SivanOutOfIsrael} are set to false.
625         * 
626         * @return If <em>tachanun</em> is set to be recited on the 13th of {@link JewishDate#SIVAN <em>Sivan</em>} out of Israel.
627         * @see #setTachanunRecited13SivanOutOfIsrael(isTachanunRecitedThirteenSivanOutOfIsrael)
628         * @see #isTachanunRecitedWeekAfterShavuos()
629         */
630        public boolean isTachanunRecited13SivanOutOfIsrael() {
631                return tachanunRecited13SivanOutOfIsrael;
632        }
633
634        /**
635         * Sets if <em>tachanun</em> should be recited on the 13th of {@link JewishDate#SIVAN <em>Sivan</em>} (<a href=
636         * "https://en.wikipedia.org/wiki/Yom_tov_sheni_shel_galuyot"><em>Yom Tov Sheni shel Galuyos</em></a> of the 7th
637         * day) outside Israel. 
638         * @param tachanunRecitedThirteenSivanOutOfIsrael sets if <em>tachanun</em> should be recited on the 13th of {@link
639         *          JewishDate#SIVAN <em>Sivan</em>} out of Israel. Both {@link #isTachanunRecitedShacharis(JewishCalendar)} and
640         *          {@link #isTachanunRecitedMincha(JewishCalendar)} only return false if the location is not set to {@link
641         *          JewishCalendar#getInIsrael() Israel} and both {@link #tachanunRecitedWeekAfterShavuos} and
642         *          {@link #setTachanunRecited13SivanOutOfIsrael} are set to false.
643         * @see #isTachanunRecited13SivanOutOfIsrael()
644         */
645        public void setTachanunRecited13SivanOutOfIsrael(boolean tachanunRecitedThirteenSivanOutOfIsrael) {
646                this.tachanunRecited13SivanOutOfIsrael = tachanunRecitedThirteenSivanOutOfIsrael;
647        }
648        
649        /**
650         * Is <em>tachanun</em> set to be recited on {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}. The Pri Chadash 131:7
651         * states that <em>tachanun</em> should not be recited. The Aruch Hashulchan states that this is the minhag of the
652         * <em>sephardim</em>. The Shaarei Efraim 10:27 also mentions that it is not recited, as does the Siddur Yaavetz (Shaar Hayesod,
653         * Chodesh Iyar). The Pri Megadim (Mishbetzes Hazahav 131:15) and the Chazon Ish (Erev Pesahc Shchal Beshabos, page 203 in
654         * <a href="https://he.wikipedia.org/wiki/%D7%A9%D7%A8%D7%99%D7%94_%D7%93%D7%91%D7%9C%D7%99%D7%A6%D7%A7%D7%99">Rav Sheraya
655         * Devlitzky's</a> comments).
656         * 
657         * @return If <em>tachanun</em> is set to be recited on {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}.
658         * @see #setTachanunRecitedPesachSheni(boolean)
659         */
660        public boolean isTachanunRecitedPesachSheni() {
661                return tachanunRecitedPesachSheni;
662        }
663
664        /**
665         * Sets if <em>tachanun</em> should be recited on {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}.
666         * @param tachanunRecitedPesachSheni sets if <em>tachanun</em> should be recited on <em>Pesach Sheni</em>.
667         * @see #isTachanunRecitedPesachSheni()
668         */
669        public void setTachanunRecitedPesachSheni(boolean tachanunRecitedPesachSheni) {
670                this.tachanunRecitedPesachSheni = tachanunRecitedPesachSheni;
671        }
672        
673        /**
674         * Is <em>tachanun</em> set to be recited on 15 {@link JewishDate#IYAR <em>Iyar</em>} (<em>sfaika deyoma</em> of {@link
675         * JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}) out of Israel. If {@link #isTachanunRecitedPesachSheni()} is
676         * <code>true</code> this will be ignored even if <code>false</code>.
677         * 
678         * @return if <em>tachanun</em> is set to be recited on 15 {@link JewishDate#IYAR <em>Iyar</em>}  (<em>sfaika deyoma</em>
679         *          of {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>} out of Israel. If
680         *          {@link #isTachanunRecitedPesachSheni()} is <code>true</code> this will be ignored even if <code>false</code>.
681         * @see #setTachanunRecited15IyarOutOfIsrael(boolean)
682         * @see #setTachanunRecitedPesachSheni(boolean)
683         * @see #isTachanunRecitedPesachSheni()
684         */
685        public boolean isTachanunRecited15IyarOutOfIsrael() {
686                return tachanunRecited15IyarOutOfIsrael;
687        }
688
689        /**
690         * Sets if <em>tachanun</em> should be recited on the 15th of {@link JewishDate#IYAR <em>Iyar</em>}  (<a href=
691         * "https://en.wikipedia.org/wiki/Yom_tov_sheni_shel_galuyot"><em>Yom Tov Sheni shel Galuyos</em></a> of
692         * {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}) out of Israel. Ignored if {@link
693         * #isTachanunRecitedPesachSheni()} is <code>true</code>.
694         * 
695         * @param tachanunRecited15IyarOutOfIsrael if <em>tachanun</em> should be recited on the 15th of {@link JewishDate#IYAR
696         *          <em>Iyar</em>} (<em>sfaika deyoma</em> of {@link JewishCalendar#PESACH_SHENI <em>Pesach Sheni</em>}) out of Israel.
697         * @see #isTachanunRecited15IyarOutOfIsrael()
698         */
699        public void setTachanunRecited15IyarOutOfIsrael(boolean tachanunRecited15IyarOutOfIsrael) {
700                this.tachanunRecited15IyarOutOfIsrael = tachanunRecited15IyarOutOfIsrael;
701        }
702        
703        /**
704         * Is <em>tachanun</em> set to be recited on <em>mincha</em> on <em>erev {@link JewishCalendar#LAG_BAOMER Lag
705         * Baomer}</em>.
706         * @return if <em>tachanun</em> is set to be recited in <em>mincha</em> on <em>erev</em>
707         *          {@link JewishCalendar#LAG_BAOMER <em>Lag Baomer</em>}.
708         * @see #setTachanunRecitedMinchaErevLagBaomer(boolean)
709         */
710        public boolean isTachanunRecitedMinchaErevLagBaomer() {
711                return tachanunRecitedMinchaErevLagBaomer;
712        }
713
714        /**
715         * Sets if <em>tachanun</em> should be recited on <em>erev {@link JewishCalendar#LAG_BAOMER Lag Baomer}</em>.
716         * @param tachanunRecitedMinchaErevLagBaomer sets if <em>tachanun</em> should be recited on <em>mincha</em>
717         *          of <em>erev {@link JewishCalendar#LAG_BAOMER Lag Baomer}</em>.
718         * @see #isTachanunRecitedMinchaErevLagBaomer()
719         */
720        public void setTachanunRecitedMinchaErevLagBaomer(boolean tachanunRecitedMinchaErevLagBaomer) {
721                this.tachanunRecitedMinchaErevLagBaomer = tachanunRecitedMinchaErevLagBaomer;
722        }
723        
724        /**
725         * Is <em>tachanun</em> set to be recited during the <em>Shivas Yemei Hamiluim</em>, from the 23 of {@link
726         * JewishDate#ADAR <em>Adar</em>} on a non-leap-year or {@link JewishDate#ADAR_II <em>Adar II</em>} on a
727         * leap year to the end of the month. Some <em>chasidishe</em> communities do not say <em>tachanun</em>
728         * during this week. See <a href="https://hebrewbooks.org/pdfpager.aspx?req=4692&st=&pgnum=70">Darkei
729         * Chaim Veshalom 191</a>.
730         * @return if <em>tachanun</em> is set to be recited during the <em>Shivas Yemei Hamiluim</em>, from the 23
731         *           of {@link JewishDate#ADAR <em>Adar</em>} on a non-leap-year or {@link JewishDate#ADAR_II
732         *           <em>Adar II</em>} on a leap year to the end of the month.
733         * @see #setTachanunRecitedShivasYemeiHamiluim(boolean)
734         */
735        public boolean isTachanunRecitedShivasYemeiHamiluim() {
736                return tachanunRecitedShivasYemeiHamiluim;
737        }
738
739        /**
740         * Sets if <em>tachanun</em> should be recited during the <em>Shivas Yemei Hamiluim</em>, from the 23 of
741         * {@link JewishDate#ADAR <em>Adar</em>} on a non-leap-year or {@link JewishDate#ADAR_II <em>Adar II</em>}
742         * on a leap year to the end of the month.
743         * @param tachanunRecitedShivasYemeiHamiluim sets if <em>tachanun</em> should be recited during the
744         *          <em>Shivas Yemei Hamiluim</em>.
745         * @see #isTachanunRecitedShivasYemeiHamiluim()
746         */
747        public void setTachanunRecitedShivasYemeiHamiluim(boolean tachanunRecitedShivasYemeiHamiluim) {
748                this.tachanunRecitedShivasYemeiHamiluim = tachanunRecitedShivasYemeiHamiluim;
749        }
750
751        /**
752         * Is <em>tachanun</em> set to be recited on Fridays. Some <em>chasidishe</em> communities do not recite
753         * <em>tachanun</em> on Fridays. See <a href="https://hebrewbooks.org/pdfpager.aspx?req=41190&st=&pgnum=10">Likutei
754         * Maharich Vol 2 Seder Hanhagos Erev Shabbos</a>. This is also the <em>minhag</em> in Satmar.
755         * @return if <em>tachanun</em> is set to be recited on Fridays.
756         * @see #setTachanunRecitedFridays(boolean)
757         */
758        public boolean isTachanunRecitedFridays() {
759                return tachanunRecitedFridays;
760        }
761
762        /**
763         * Sets if <em>tachanun</em> should be recited on Fridays. 
764         * @param tachanunRecitedFridays sets if <em>tachanun</em> should be recited on Fridays. Some <em>chasidishe</em>
765         *          communities do not recite <em>tachanun</em> on Fridays.
766         * @see #isTachanunRecitedFridays()
767         */
768        public void setTachanunRecitedFridays(boolean tachanunRecitedFridays) {
769                this.tachanunRecitedFridays = tachanunRecitedFridays;
770        }
771
772        /**
773         * Is <em>tachanun</em> set to be recited on Sundays. Some <em>chasidishe</em> communities do not recite
774         * <em>tachanun</em> on Sundays. See <a href="https://hebrewbooks.org/pdfpager.aspx?req=41190&st=&pgnum=10">Likutei
775         * Maharich Vol 2 Seder Hanhagos Erev Shabbos</a>. 
776         * @return if <em>tachanun</em> is set to be recited on Sundays.
777         * @see #setTachanunRecitedSundays(boolean)
778         */
779        public boolean isTachanunRecitedSundays() {
780                return tachanunRecitedSundays;
781        }
782
783        /**
784         * Sets if <em>tachanun</em> should be recited on Sundays. 
785         * @param tachanunRecitedSundays sets if <em>tachanun</em> should be recited on Sundays. Some <em>chasidishe</em>
786         *          communities do not recite <em>tachanun</em> on Sundays.
787         * @see #isTachanunRecitedSundays()
788         */
789        public void setTachanunRecitedSundays(boolean tachanunRecitedSundays) {
790                this.tachanunRecitedSundays = tachanunRecitedSundays;
791        }
792        
793        /**
794         * Is <em>tachanun</em> set to be recited in <em>Mincha</em> the entire year. Some <em>chasidishe</em> communities do
795         * not recite <em>tachanun</em> by <em>Mincha</em> all year round. See <a href=
796         * "https://hebrewbooks.org/pdfpager.aspx?req=4751&st=&pgnum=105">Nemukei Orach Chaim 131:3</a>.
797         * @return if <em>tachanun</em> is set to be recited in <em>Mincha</em> the entire year.
798         * @see #setTachanunRecitedMinchaAllYear(boolean)
799         */
800        public boolean isTachanunRecitedMinchaAllYear() {
801                return tachanunRecitedMinchaAllYear;
802        }
803
804        /**
805         * Sets if <em>tachanun</em> should be recited in <em>Mincha</em> the entire year.
806         * @param tachanunRecitedMinchaAllYear sets if <em>tachanun</em> should be recited by <em>mincha</em> all year. If set
807         *          to false, {@link #isTachanunRecitedMincha(JewishCalendar)} will always return false. If set to true (the
808         *          default), it will use the regular rules.
809         * @see #isTachanunRecitedMinchaAllYear()
810         */
811        public void setTachanunRecitedMinchaAllYear(boolean tachanunRecitedMinchaAllYear) {
812                this.tachanunRecitedMinchaAllYear = tachanunRecitedMinchaAllYear;
813        }
814
815        /**
816         * Sets if <em>Mizmor Lesoda</em> should be recited on <em>Erev Yom Kippur</em>, <em>Erev Pesach</em> and <em>Chol
817         * Hamoed Pesach</em>. Ashkenazi congregations do not recite it on these days, while Sephardi congregations do. The
818         * default value is <code>false</code>.
819         * @param mizmorLesodaRecitedErevYomKippurAndPesach Sets if <em>Mizmor Lesoda</em> should be recited on <em>Erev Yom
820         *          Kippur</em>, <em>Erev Pesach</em> and <em>Chol Hamoed Pesach</em>. If set to true (the default value is
821         *          <code>false</code>).
822         * @see #isTachanunRecitedMinchaAllYear()
823         */
824        public void setMizmorLesodaRecitedErevYomKippurAndPesach(boolean mizmorLesodaRecitedErevYomKippurAndPesach) {
825                this.mizmorLesodaRecitedErevYomKippurAndPesach = mizmorLesodaRecitedErevYomKippurAndPesach;
826        }
827        
828        /**
829         * Is <em>Mizmor Lesoda</em> set to be recited on <em>Erev Yom Kippur</em>, <em>Erev Pesach</em> and <em>Chol
830         * Hamoed Pesach</em>. Ashkenazi congregations do not recite it on these days, while Sephardi congregations do.
831         * The default value is <code>false</code>.
832         * @return if <em>Mizmor Lesoda</em> is set to be recited on <em>Erev Yom Kippur</em>, <em>Erev Pesach</em> and
833         *          <em>Chol Hamoed Pesach</em>. If set to true (the default value is <code>false</code>).
834         * @see #isMizmorLesodaRecited(JewishCalendar)
835         */
836        public boolean isMizmorLesodaRecitedErevYomKippurAndPesach() {
837                return mizmorLesodaRecitedErevYomKippurAndPesach;
838        }
839
840}