Source code Copyright © by Ulrich and David Greve (2005)
The code is freely usable for non-profit purposes when
this Copyright notice is included.
The library at jewishcalendar.py is needed for Jewish calendar calculation. In Python programs it is imported by import jewishcalendar
The function jewishcalendar.hebrew_leap(year) returns true when the passed year is a leap year in the Jewish calendar, false otherwise.
The Jewish months are numbered in the following way:
Name of Jewish month | Month number |
---|---|
Tishri | 7 |
Heshvan | 8 |
Kislev | 9 |
Tevet | 10 |
Shevat | 11 |
Adar (in non-leap years), Adar I (in leap years) | 12 |
Adar II (in leap years), unused in non-leap years | 13 |
Nisan | 1 |
Iyar | 2 |
Sivan | 3 |
Tammuz | 4 |
Av | 5 |
Elul | 6 |
When displaying a month name string, you should distinguish between leap years and non-leap years in order to correctly display the month name of Adar. The following function getJewishMonthName helps:
def getJewishMonthName(month, year): if month == 1: return "Nisan" elif month == 2: return "Iyyar" elif month == 3: return "Sivan" elif month == 4: return "Tammuz" elif month == 5: return "Av" elif month == 6: return "Elul" elif month == 7: return "Tishri" elif month == 8: return "Heshvan" elif month == 9: return "Kislev" elif month == 10: return "Teveth" elif month == 11: return "Shevat" elif month == 12: if jewishcalendar.hebrew_leap(year): return "Adar I" else: return "Adar" elif month == 13: return "Adar II"
In order to convert a Gregorian date to a Jewish date, use the jewishcalendar.gregorian_to_absdate function to convert the Gregorian date into an absolute date number and the jewishcalendar.absolute_to_hebrew function to convert the absolute date number to a Jewish date.
The jewishcalendar.gregorian_to_absdate function takes the year, month, day (in that order) of the Gregorian date and returns the corresponding absolute date number. Then you can pass the returned absolute date number to the jewishcalendar.absdate_to_hebrew function which returns a tuple with the Jewish year, month and day of the passed Julian day number.
Example:
absdate = jewishcalendar.gregorian_to_absdate(gYear, gMonth, gDay) hebYear, hebMonth, hebDay = jewishcalendar.absdate_to_hebrew(absdate)
If converting a Jewish date to a Gregorian date, the function jewishcalendar.hebrew_to_absdate with parameters year, month, day has to be used to convert a Jewish date into an absolute date number. Then, the function jewishcalendar.absdate_to_gregorian converts the absolute date number into a tuple which contains the Gregorian year, month and day of the passed absolute date number.
Example:
absdate = jewishcalendar.hebrew_to_absdate(hYear, hMonth, hDay) gYear, gMonth, gDay = jewishcalendar.absdate_to_gregorian(absdate)
The function jewishcalendar.get_weekday_from_absdate returns the weekday number for the given absolute date number. 0 is Sunday, 1 is Monday and so on.
The number of days in a Jewish Month can be returned by the function jewishcalendar.hebrew_month_days(year, month) which takes the year and the month in that order as parameters.
A function for getting the last day in a Gregorian month:
import calendar def getLastDayOfGregorianMonth(month, year): if month == 2 and calendar.isleap(year): return 29 else: month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; return month_days[month-1]
import math import copy # FormatTime12, FormatTime24 # GetSunrise, GetSunriseDegreesBelowHorizon # GetSunset, GetSunsetDegreesBelowHorizon # AddMinutes, SubtractMinutes # GetProportionalHours, GetShaaZmanit # Methods for Shabbat time calculation: # location is a tuple (latitude, longitude, timezone, elevation) # For example: Pforzheim has the tuple (4854, 842, 1, 257) # # GetSunset(uMonth, uDay, uYear, location) # GetSunsetDegreesBelowHorizon(uMonth, uDay, uYear, # fDegreesBelowHorizon, location) # AddMinutes(time, min) # SubtractMinutes(time, min) locationPforzheim = (4854, 842, 1, 263) def FormatTime12(time): if time == None: return "--:--" hour = time[0] min = time[1] hourModulo12 = hour % 12 if (hourModulo12 == 0): hourModulo12 = 12 if (hour >= 12): ampm = "PM" else: ampm = "AM" if (hourModulo12 < 10): hourStr = "0" + str(hourModulo12) else: hourStr = str(hourModulo12) if (min < 10): minStr = "0" + str(min) else: minStr = str(min) return hourStr + ":" + minStr + ampm def FormatTime24(time): if time == None: return "--:--" hour = time[0] min = time[1] if (hour < 10): hourStr = "0" + str(hour) else: hourStr = str(hour) if (min < 10): minStr = "0" + str(min) else: minStr = str(min) return hourStr + ":" + minStr def FormatTimeShaaZmanit(time): if time == None: return "--:--" hour = time[0] min = time[1] if (hour < 10): hourStr = "0" + str(hour) else: hourStr = str(hour) if (min < 10): minStr = "0" + str(min) else: minStr = str(min) return hourStr + ":" + minStr def leap(y): if (y % 400 == 0): return True if (y % 100 != 0): if (y % 4 == 0): return True return False def doy(d, m, y): monCount = [0, 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] if ((m > 2) and (leap(y))): return monCount[m] + d + 1 else: return monCount[m] + d def todec(deg, min): return (deg + min / 60.0) def M(x): return (0.9856 * x - 3.251) def L(x): return (x + 1.916 * math.sin(0.01745 * x) + 0.02 * math.sin(2 * 0.01745 * x) + 282.565) def adj(x): return (-0.06571 * x - 6.620) def float_abs(x): if (x < 0.0): return (-x) else: return (x) def suntime(d, m, y, \ zendeg, zenmin, \ londeg, lonmin, ew, \ latdeg, latmin, ns, \ tz, \ elevation): # Elevation in meters if (zendeg == 90): earthRadiusInMeters = 6356.9 * 1000.0 elevationAdjustment = math.degrees \ (math.acos(earthRadiusInMeters / (earthRadiusInMeters + elevation))) z = zendeg + zenmin / 60.0 z += elevationAdjustment zendeg = math.floor(z) zenmin = (z - math.floor(z)) * 60 day = doy(d, m, y) cosz = math.cos(0.01745 * todec(zendeg, zenmin)) longitude = todec(londeg, lonmin) if ew != 0: longitude *= -1 lonhr = longitude / 15.0 latitude = todec(latdeg, latmin) if ns != 0: latitude *= -1 coslat = math.cos(0.01745 * latitude) sinlat = math.sin(0.01745 * latitude) t_rise = day + (6.0 + lonhr) / 24.0 t_set = day + (18.0 + lonhr) / 24.0 xm_rise = M(t_rise) xl_rise = L(xm_rise) xm_set = M(t_set) xl_set = L(xm_set) a_rise = 57.29578 * math.atan( 0.91746 * math.tan(0.01745 * xl_rise) ) a_set = 57.29578 * math.atan( 0.91746 * math.tan(0.01745 * xl_set) ) if (float_abs(a_rise + 360.0 - xl_rise) > 90.0): a_rise += 180.0 if (a_rise > 360.0): a_rise -= 360.0 if (float_abs(a_set + 360.0 - xl_set) > 90.0): a_set += 180.0 if (a_set > 360.0): a_set -= 360.0 ahr_rise = a_rise / 15.0 sindec = 0.39782 * math.sin(0.01745 * xl_rise) cosdec = math.sqrt(1.0 - sindec * sindec) h_rise = (cosz - sindec * sinlat) / (cosdec * coslat) ahr_set = a_set / 15.0 sindec = 0.39782 * math.sin(0.01745 * xl_set) cosdec = math.sqrt(1.0 - sindec * sindec) h_set = (cosz - sindec * sinlat) / (cosdec * coslat) if (float_abs(h_rise) <= 1.0): h_rise = 57.29578 * math.acos(h_rise) else: return None # NO_SUNRISE if (float_abs(h_set) <= 1.0): h_set = 57.29578 * math.acos(h_set) else: return None # NO_SUNSET ut_rise = ((360.0 - h_rise) / 15.0) + ahr_rise + adj(t_rise) + lonhr ut_set = (h_rise / 15.0) + ahr_set + adj(t_set) + lonhr returnSunrise = ut_rise + tz # sunrise returnSunset = ut_set + tz # sunset return (returnSunrise, returnSunset) def timeadj(t): if (t < 0): t += 24.0 hour = int(math.floor(t)) min = int(math.floor((t - hour) * 60.0 + 0.5)) if (min >= 60): hour += 1 min -= 60 if (hour > 24): hour -= 24 return [hour, min] def GetDegreesBelowHorizonAdd(uMonth, uDay, uYear, \ fDegreesBelowHorizon, \ location): iLatitude, iLongitude, iTimeZone, elevation = location if (iLongitude < 0): longitudeFlag = 0 else: longitudeFlag = 1 if (iLatitude < 0): latitudeFlag = 1 else: latitudeFlag = 0 returnTimes = suntime(uDay, uMonth, uYear, \ 90, 50, \ int(math.floor(math.fabs(iLongitude / 100.0))), \ abs(iLongitude) % 100, longitudeFlag, \ int(math.floor(math.fabs(iLatitude / 100.0))), \ abs(iLatitude) % 100, latitudeFlag, \ iTimeZone, elevation); if (returnTimes != ""): srTime = timeadj(returnTimes[1]) while (srTime[0] > 12): srTime[0] -= 12 db = fDegreesBelowHorizon + 90.0 deghour = math.floor(db) db = db - deghour db *= 60.0 degmin = math.floor(db) returnTimes = suntime(uDay, uMonth, uYear, \ deghour, degmin, \ int(math.floor(math.fabs(iLongitude / 100.0))), \ abs(iLongitude) % 100, longitudeFlag, \ int(math.floor(math.fabs(iLatitude / 100.0))), \ abs(iLatitude) % 100, latitudeFlag, \ iTimeZone, elevation) if (returnTimes != ""): dbTime = timeadj(returnTimes[1]) while (dbTime[0] > 12): dbTime[0] -= 12 srTimeValue = srTime[0] * 60 + srTime[1] dbTimeValue = dbTime[0] * 60 + dbTime[1] return dbTimeValue - srTimeValue return None def GetSunrise(uMonth, uDay, uYear, location): iLatitude, iLongitude, iTimeZone, elevation = location if (iLongitude < 0): longitudeFlag = 0 else: longitudeFlag = 1 if (iLatitude < 0): latitudeFlag = 1 else: latitudeFlag = 0 returnTimes = suntime(uDay, uMonth, uYear, \ 90, 50, \ int(math.floor(math.fabs(iLongitude / 100.0))), \ abs(iLongitude) % 100, longitudeFlag, \ int(math.floor(math.fabs(iLatitude / 100.0))), \ abs(iLatitude) % 100, latitudeFlag, \ iTimeZone, elevation) if (returnTimes != ""): returnTime = timeadj(returnTimes[0]) while (returnTime[0] > 12): returnTime[0] -= 12 return returnTime else: return None def GetSunriseDegreesBelowHorizon(uMonth, uDay, uYear, \ fDegreesBelowHorizon, \ location): t = GetSunrise(uMonth, uDay, uYear, location) if (t != None): adding = GetDegreesBelowHorizonAdd(uMonth, uDay, uYear, fDegreesBelowHorizon, location) if (adding != None): return SubtractMinutes(t, adding) else: return None else: return None def GetSunset(uMonth, uDay, uYear, \ location): iLatitude, iLongitude, iTimeZone, elevation = location if (iLongitude < 0): longitudeFlag = 0 else: longitudeFlag = 1 if (iLatitude < 0): latitudeFlag = 1 else: latitudeFlag = 0 returnTimes = suntime(uDay, uMonth, uYear, \ 90, 50, \ int(math.floor(math.fabs(iLongitude / 100.0))), \ abs(iLongitude) % 100, longitudeFlag, \ int(math.floor(math.fabs(iLatitude / 100.0))), \ abs(iLatitude) % 100, latitudeFlag, \ iTimeZone, elevation) if (returnTimes != None): returnTime = timeadj(returnTimes[1]) while (returnTime[0] < 12): returnTime[0] += 12 return returnTime else: return None def GetSunsetDegreesBelowHorizon(uMonth, uDay, uYear, \ fDegreesBelowHorizon, \ location): t = GetSunset(uMonth, uDay, uYear, location) if (t != ""): adding = GetDegreesBelowHorizonAdd(uMonth, uDay, uYear, fDegreesBelowHorizon, location) if (adding != None): return AddMinutes(t, adding) else: return None else: return None def AddMinutes(time, min): if (time == None): return None time2 = copy.deepcopy(time) time2[1] += min while (time2[1] >= 60): time2[1] -= 60 time2[0] += 1 return time2 def SubtractMinutes(time, min): if (time == None): return None time2 = copy.deepcopy(time) time2[1] -= min while (time2[1] < 0): time2[1] += 60 time2[0] -= 1 return time2 def GetProportionalHours(value, sunrise, sunset): if (sunrise == None or sunset == None): return None sr = sunrise[0] * 60 + sunrise[1] ss = sunset[0] * 60 + sunset[1] retval = sr + math.floor(((ss-sr) * value) / 12) return [int(math.floor(retval / 60)), int(retval % 60)] def GetShaaZmanit(sunrise, sunset): sr = sunrise[0] * 60 + sunrise[1] ss = sunset[0] * 60 + sunset[1] return int(math.floor((ss - sr) / 12))
Daylight Savings Time starts in Israel on the last Friday before 2nd of April and ends on the Sunday between Rosh Hashana and Yom Kippur. The following function isIsraeliDaylightSavingsTime checks for a Gregorian date whether Daylight Savings Time in Israel is in effect on that day or not.
def isIsraeliDaylightSavingsTime(day, month, year): absDateStart = jewishcalendar.gregorian_to_absdate(year, 4, 2) absDateStart -= 1 while jewishcalendar.get_weekday_from_absdate(absDateStart) != 5: # Friday absDateStart -= 1 absDate = jewishcalendar.gregorian_to_absdate(year, 12, 31) heb = jewishcalendar.absdate_to_hebrew(absDate) absDateEnd = jewishcalendar.hebrew_to_absdate(heb[0], 7, 9) # 9 Tishri while jewishcalendar.get_weekday_from_absdate(absDateEnd) != 0: # Sunday absDateEnd -= 1 absDateNow = jewishcalendar.gregorian_to_absdate(year, month, day) if int(absDateNow) >= int(absDateStart) and int(absDateNow) < int(absDateEnd): return True else: return False
A list of the holidays with their dates and remarks for calculation is available here.
The following function calculate_holiday takes a Gregorian date and a flag whether for Diaspora is calculated or not, and returns a list of holiday names.
import jewishcalendar # Returns the weekday from a given hebrew date (0 for Sunday, # 1 for Monday,...) def getWeekdayOfHebrewDate(hebDay, hebMonth, hebYear): absdate = jewishcalendar.hebrew_to_absdate(hebYear, hebMonth, hebDay) return jewishcalendar.get_weekday_from_absdate(absdate) def calculate_holiday(g_day, g_month, g_year, diaspora): absdate = jewishcalendar.gregorian_to_absdate(g_year, g_month, g_day) hebYear, hebMonth, hebDay = jewishcalendar.absdate_to_hebrew(absdate) listHolidays = [] # Holidays in Nisan hagadolDay = 14 while getWeekdayOfHebrewDate(hagadolDay, 1, hebYear) != 6: hagadolDay -= 1 if hebDay == hagadolDay and hebMonth == 1: listHolidays.append("Shabat Hagadol") if hebDay == 14 and hebMonth == 1: listHolidays.append("Erev Pesach") if hebDay == 15 and hebMonth == 1: listHolidays.append("Pesach I") if hebDay == 16 and hebMonth == 1: if diaspora: listHolidays.append("Pesach II") else: listHolidays.append("Chol Hamoed") if hebDay == 17 and hebMonth == 1: listHolidays.append("Chol Hamoed") if hebDay == 18 and hebMonth == 1: listHolidays.append("Chol Hamoed") if hebDay == 19 and hebMonth == 1: listHolidays.append("Chol Hamoed") if hebDay == 20 and hebMonth == 1: listHolidays.append("Chol Hamoed") if hebDay == 21 and hebMonth == 1: if not diaspora: listHolidays.append("Pesach VII (Yizkor)") else: listHolidays.append("Pesach VII") if hebDay == 22 and hebMonth == 1: if diaspora: listHolidays.append("Pesach VIII (Yizkor)") # Yom Hashoah if getWeekdayOfHebrewDate(27, 1, hebYear) == 5: if hebDay == 26 and hebMonth == 1: listHolidays.append("Yom Hashoah") elif hebYear >= 5757 and getWeekdayOfHebrewDate(27, 1, hebYear) == 0: if hebDay == 28 and hebMonth == 1: listHolidays.append("Yom Hashoah") else: if hebDay == 27 and hebMonth == 1: listHolidays.append("Yom Hashoah") # Holidays in Iyar # Yom Hazikaron if getWeekdayOfHebrewDate(4, 2, hebYear) == 5: # If 4th of Iyar is a Thursday ... if hebDay == 2 and hebMonth == 2: # ... then Yom Hazicaron is on 2th of Iyar listHolidays.append("Yom Hazikaron") elif getWeekdayOfHebrewDate(4, 2, hebYear) == 4: if hebDay == 3 and hebMonth == 2: listHolidays.append("Yom Hazikaron") elif hebYear >= 5764 and getWeekdayOfHebrewDate(4, 2, hebYear) == 0: if hebDay == 5 and hebMonth == 2: listHolidays.append("Yom Hazikaron") else: if hebDay == 4 and hebMonth == 2: listHolidays.append("Yom Hazikaron") # Yom Ha'Azmaut if getWeekdayOfHebrewDate(5, 2, hebYear) == 6: if hebDay == 3 and hebMonth == 2: listHolidays.append("Yom Ha'Atzmaut") elif getWeekdayOfHebrewDate(5, 2, hebYear) == 5: if hebDay == 4 and hebMonth == 2: listHolidays.append("Yom Ha'Atzmaut") elif hebYear >= 5764 and getWeekdayOfHebrewDate(4, 2, hebYear) == 0: if hebDay == 6 and hebMonth == 2: listHolidays.append("Yom Ha'Atzmaut") else: if hebDay == 5 and hebMonth == 2: listHolidays.append("Yom Ha'Atzmaut") if hebDay == 14 and hebMonth == 2: listHolidays.append("Pesach Sheni") if hebDay == 18 and hebMonth == 2: listHolidays.append("Lag B'Omer") if hebDay == 28 and hebMonth == 2: listHolidays.append("Yom Yerushalayim") # Holidays in Sivan if hebDay == 5 and hebMonth == 3: listHolidays.append("Erev Shavuot") if hebDay == 6 and hebMonth == 3: if diaspora: listHolidays.append("Shavuot I") else: listHolidays.append("Shavuot\n(Yizkor)") if hebDay == 7 and hebMonth == 3: if diaspora: listHolidays.append("Shavuot II\n(Yizkor)") # Holidays in Tammuz if getWeekdayOfHebrewDate(17, 4, hebYear) == 6: if hebDay == 18 and hebMonth == 4: listHolidays.append("Fast of Tammuz") else: if hebDay == 17 and hebMonth == 4: listHolidays.append("Fast of Tammuz") # Holidays in Av if getWeekdayOfHebrewDate(9, 5, hebYear) == 6: if hebDay == 10 and hebMonth == 5: listHolidays.append("Fast of Av") else: if hebDay == 9 and hebMonth == 5: listHolidays.append("Fast of Av") if hebDay == 15 and hebMonth == 5: listHolidays.append("Tu B'Av") # Holidays in Elul if hebDay == 29 and hebMonth == 6: listHolidays.append("Erev Rosh Hashana") # Holidays in Tishri if hebDay == 1 and hebMonth == 7: listHolidays.append("Rosh Hashana I") if hebDay == 2 and hebMonth == 7: listHolidays.append("Rosh Hashana II") if getWeekdayOfHebrewDate(3, 7, hebYear) == 6: if hebDay == 4 and hebMonth == 7: listHolidays.append("Tzom Gedaliah") else: if hebDay == 3 and hebMonth == 7: listHolidays.append("Tzom Gedaliah") if hebDay == 9 and hebMonth == 7: listHolidays.append("Erev Yom Kippur") if hebDay == 10 and hebMonth == 7: listHolidays.append("Yom Kippur\n(Yizkor)") if hebDay == 14 and hebMonth == 7: listHolidays.append("Erev Sukkot") if hebDay == 15 and hebMonth == 7: if diaspora: listHolidays.append("Sukkot I") else: listHolidays.append("Sukkot") if hebDay == 16 and hebMonth == 7: if diaspora: listHolidays.append("Sukkot II") else: listHolidays.append("Chol Hamoed") if hebDay == 17 and hebMonth == 7: listHolidays.append("Chol Hamoed") if hebDay == 18 and hebMonth == 7: listHolidays.append("Chol Hamoed") if hebDay == 19 and hebMonth == 7: listHolidays.append("Chol Hamoed") if hebDay == 20 and hebMonth == 7: listHolidays.append("Chol Hamoed") if hebDay == 21 and hebMonth == 7: listHolidays.append("Hoshana Raba") if hebDay == 22 and hebMonth == 7: if not diaspora: listHolidays.append("Shemini Atzereth\n(Yizkor)") listHolidays.append("Simchat Torah") else: listHolidays.append("Shemini Atzereth\n(Yizkor)") if hebDay == 23 and hebMonth == 7: if diaspora: listHolidays.append("Simchat Torah") # Holidays in Kislev if hebDay == 25 and hebMonth == 9: listHolidays.append("Chanukka I") if hebDay == 26 and hebMonth == 9: listHolidays.append("Chanukka II") if hebDay == 27 and hebMonth == 9: listHolidays.append("Chanukka III") if hebDay == 28 and hebMonth == 9: listHolidays.append("Chanukka IV") if hebDay == 29 and hebMonth == 9: listHolidays.append("Chanukka V") # Holidays in Tevet if hebDay == 10 and hebMonth == 10: listHolidays.append("Fast of Tevet") if jewishcalendar.hebrew_month_days(hebYear, 9) == 30: if hebDay == 30 and hebMonth == 9: listHolidays.append("Chanukka VI") if hebDay == 1 and hebMonth == 10: listHolidays.append("Chanukka VII") if hebDay == 2 and hebMonth == 10: listHolidays.append("Chanukka VIII") if jewishcalendar.hebrew_month_days(hebYear, 9) == 29: if hebDay == 1 and hebMonth == 10: listHolidays.append("Chanukka VI") if hebDay == 2 and hebMonth == 10: listHolidays.append("Chanukka VII") if hebDay == 3 and hebMonth == 10: listHolidays.append("Chanukka VIII") # Holidays in Shevat if hebDay == 15 and hebMonth == 11: listHolidays.append("Tu B'Shevat") # Holidays in Adar (I)/Adar II if jewishcalendar.hebrew_leap(hebYear): monthEsther = 13 else: monthEsther = 12 if getWeekdayOfHebrewDate(13, monthEsther, hebYear) == 6: if hebDay == 11 and hebMonth == monthEsther: listHolidays.append("Fast of Esther") else: if hebDay == 13 and hebMonth == monthEsther: listHolidays.append("Fast of Esther") if hebDay == 14 and hebMonth == monthEsther: listHolidays.append("Purim") if hebDay == 15 and hebMonth == monthEsther: listHolidays.append("Shushan Purim") if jewishcalendar.hebrew_leap(hebYear): if hebDay == 14 and hebMonth == 12: listHolidays.append("Purim Katan") if hebDay == 15 and hebMonth == 12: listHolidays.append("Shushan Purim Katan") return listHolidays
A test program for the holiday calculation is:
import calendar year = int(input("Gregorian Year? ")) nonleapgmonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] leapgmonths = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] for month in range(1,13): if calendar.isleap(year): lastDay = leapgmonths[month-1] else: lastDay = nonleapgmonths[month-1] for day in range(1,lastDay+1): holidays = calculate_holiday(day, month, year, True) if len(holidays) > 0: print(str(day) + "/" + str(month) + "/" + str(year) + ": " + str(holidays))
The function getTorahSections in torah.py expects the Jewish month, day and year of the Shabbat and a boolean whether to calculate for diaspora (True) or Israel (False) and returns a string with the torah sections or an empty string if there are no torah sections on that day.
import jewishcalendar ID_BERESHITH = 0; ID_NOAH = 1; ID_LEHLEHA = 2; ID_VAYERA = 3; ID_HAYESARAH = 4; ID_TOLEDOTH = 5; ID_VAYETSE = 6; ID_VAYISHLAH = 7; ID_VAYESHEB = 8; ID_MIKKETS = 9; ID_VAYIGGASH = 10; ID_VAYHEE = 11; ID_SHEMOTH = 12; ID_VAERA = 13; ID_BO = 14; ID_BESHALLAH = 15; ID_YITHRO = 16; ID_MISHPATIM = 17; ID_TERUMAH = 18; ID_TETSAVVEH = 19; ID_KITISSA = 20; ID_VAYAKHEL = 21; ID_PEKUDE = 22; ID_VAYIKRA = 23; ID_TSAV = 24; ID_SHEMINI = 25; ID_TAZRIANG = 26; ID_METSORANG = 27; ID_AHAREMOTH = 28; ID_KEDOSHIM = 29; ID_EMOR = 30; ID_BEHAR = 31; ID_BEHUKKOTHAI = 32; ID_BEMIDBAR = 33; ID_NASO = 34; ID_BEHAALOTEHA = 35; ID_SHELAHLEHA = 36; ID_KORAH = 37; ID_HUKATH = 38; ID_BALAK = 39; ID_PINHAS = 40; ID_MATOTH = 41; ID_MASEH = 42; ID_DEBARIM = 43; ID_VAETHANAN = 44; ID_EKEB = 45; ID_REEH = 46; ID_SHOFETIM = 47; ID_KITETSE = 48; ID_KITABO = 49; ID_NITSABIM = 50; ID_VAYELEH = 51; ID_HAAZINU = 52; ID_SIMHATHTORAH = 53; ID_SIMHATHTORAH_2 = 54; ID_SIMHATHTORAH_3 = 55; ID_ROSH_HODESH_SHABBAT = 60; ID_SHEKALIM = 61; ID_ZAHOR = 62; ID_PARAH = 63; ID_HAHODESH = 64; ID_HAGGADOL = 65; ID_SHUVA = 66; ID_ROSH_HASHANAH_I = 70; ID_ROSH_HASHANAH_II = 71; ID_FAST_OF_GEDALIAH = 72; ID_YOM_KIPPUR = 73; ID_SUCCOTH_I = 74; ID_SUCCOTH_II = 75; ID_SUCCOTH_III_NO_SHABBAT = 76; ID_SUCCOTH_III = 77; ID_SUCCOTH_IV = 78; ID_SUCCOTH_V_NO_SHABBAT = 79; ID_SUCCOTH_V = 80; ID_SUCCOTH_VI_NO_SHABBAT = 81; ID_SUCCOTH_VI = 82; ID_HOSHANAH_RABBAH = 83; ID_HOL_HAMOED_SUCCOTH = 84; ID_SHEMINI_AZERETH_1 = 85; ID_FAST_OF_ESTHER = 86; ID_PURIM = 87; ID_FAST_OF_TEVET_10 = 88; ID_PESAH_I = 89; ID_HOL_HAMOED_PESAH = 90; ID_PESAH_VII = 91; ID_PESAH_VIII = 92; ID_PESAH_VIII_NO_SHABBAT = 93; ID_SHAVUOTH_I = 94; ID_SHAVUOTH_II_NO_SHABBAT = 95; ID_SHAVUOTH_II = 96; ID_YOM_HAATZMAUT = 97; ID_FAST_OF_TAMMUZ_17 = 98; ID_FAST_OF_TISHA_BAV = 99; ID_CHANUKKAH_I = 100; ID_CHANUKKAH_II = 101; ID_CHANUKKAH_III = 102; ID_CHANUKKAH_IV = 103; ID_CHANUKKAH_V = 104; ID_CHANUKKAH_VI = 105; ID_CHANUKKAH_VI_ROSH_HODESH = 106; ID_CHANUKKAH_VII = 107; ID_CHANUKKAH_VII_ROSH_HODESH = 108; ID_CHANUKKAH_VIII = 109; ID_SECOND_SHABBAT_CHANUKKAH = 110; ID_ROSH_HODESH = 111; ID_PESAH_II = 112; ID_PESAH_III = 113; ID_PESAH_IV = 114; ID_PESAH_IV_NOT_SUNDAY = 115; ID_PESAH_IV_SUNDAY = 116; ID_PESAH_V = 117; ID_PESAH_V_NOT_MONDAY = 118; ID_PESAH_V_MONDAY = 119; ID_PESAH_VI = 120; ID_SPECIAL_1 = 150; ID_SPECIAL_2 = 151; ID_SPECIAL_3 = 152; ID_SPECIAL_4 = 153; ID_SPECIAL_5 = 154; ID_SPECIAL_6 = 155; ID_SPECIAL_7 = 156; ID_SPECIAL_8 = 157; ID_SPECIAL_8A = 158; ID_SPECIAL_9 = 159; ID_SPECIAL_10 = 161; ID_SPECIAL_11 = 162; ID_SPECIAL_12 = 163; ID_SHEMINI_AZERETH_2 = 170; ID_SHEMINI_AZERETH_3 = 171; ID_SHEMINI_AZERETH = 172; ID_MAX = 256; ID_NULL = 1000; torahSectionsA = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_HAGGADOL,ID_NULL, # 25 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_HAAZINU, ID_NULL, ID_NULL, # 49 ID_YOM_KIPPUR, ID_NULL, ID_NULL, # 50 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 51 torahSectionsB = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_ZAHOR, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 23 ID_TSAV, ID_HAGGADOL,ID_NULL, # 24 ID_PESAH_VII, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_NULL, ID_NULL, # 26 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 27 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 28 ID_EMOR, ID_NULL, ID_NULL, # 29 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 30 ID_BEMIDBAR, ID_NULL, ID_NULL, # 31 ID_NASO, ID_NULL, ID_NULL, # 32 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 33 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 34 ID_KORAH, ID_NULL, ID_NULL, # 35 ID_HUKATH, ID_NULL, ID_NULL, # 36 ID_BALAK, ID_NULL, ID_NULL, # 37 ID_PINHAS, ID_NULL, ID_NULL, # 38 ID_MATOTH, ID_MASEH, ID_NULL, # 39 ID_DEBARIM, ID_NULL, ID_NULL, # 40 ID_VAETHANAN, ID_NULL, ID_NULL, # 41 ID_EKEB, ID_NULL, ID_NULL, # 42 ID_REEH, ID_NULL, ID_NULL, # 43 ID_SHOFETIM, ID_NULL, ID_NULL, # 44 ID_KITETSE, ID_NULL, ID_NULL, # 45 ID_KITABO, ID_NULL, ID_NULL, # 46 ID_NITSABIM, ID_NULL, ID_NULL, # 47 ID_VAYELEH, ID_NULL, ID_NULL, # 48 ID_HAAZINU, ID_NULL, ID_NULL, # 49 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 50 torahSectionsCDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_HAGGADOL,ID_NULL, # 25 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_SHAVUOTH_II, ID_NULL, ID_NULL, # 33 ID_NASO, ID_NULL, ID_NULL, # 34 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 35 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 36 ID_KORAH, ID_NULL, ID_NULL, # 37 ID_HUKATH, ID_BALAK, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 51 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 52 torahSectionsCIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_HAGGADOL,ID_NULL, # 25 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 51 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 52 torahSectionsDDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_PARAH, # 22 ID_VAYIKRA, ID_HAHODESH,ID_NULL, # 23 ID_TSAV, ID_HAGGADOL,ID_NULL, # 24 ID_PESAH_I, ID_NULL, ID_NULL, # 25 ID_PESAH_VIII, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_NULL, ID_NULL, # 48 ID_VAYELEH, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 51 torahSectionsDIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_PARAH, # 22 ID_VAYIKRA, ID_HAHODESH,ID_NULL, # 23 ID_TSAV, ID_HAGGADOL,ID_NULL, # 24 ID_PESAH_I, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_NULL, ID_NULL, # 26 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 27 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 28 ID_EMOR, ID_NULL, ID_NULL, # 29 ID_BEHAR, ID_NULL, ID_NULL, # 30 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_NULL, ID_NULL, # 48 ID_VAYELEH, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 51 torahSectionsEDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 23 ID_TSAV, ID_HAGGADOL,ID_NULL, # 24 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_SHAVUOTH_II, ID_NULL, ID_NULL, # 33 ID_NASO, ID_NULL, ID_NULL, # 34 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 35 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 36 ID_KORAH, ID_NULL, ID_NULL, # 37 ID_HUKATH, ID_BALAK, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 51 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 52 torahSectionsEIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 23 ID_TSAV, ID_HAGGADOL,ID_NULL, # 24 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 49 ID_HAAZINU, ID_NULL, ID_NULL, # 50 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 51 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 52 torahSectionsF = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_SHEKALIM,ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_PARAH, ID_NULL, # 22 ID_PEKUDE, ID_HAHODESH,ID_NULL, # 23 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_HAGGADOL,ID_NULL, # 25 ID_PESAH_VII, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 34 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 35 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 36 ID_KORAH, ID_NULL, ID_NULL, # 37 ID_HUKATH, ID_NULL, ID_NULL, # 38 ID_BALAK, ID_NULL, ID_NULL, # 39 ID_PINHAS, ID_NULL, ID_NULL, # 40 ID_MATOTH, ID_MASEH, ID_NULL, # 41 ID_DEBARIM, ID_NULL, ID_NULL, # 42 ID_VAETHANAN, ID_NULL, ID_NULL, # 43 ID_EKEB, ID_NULL, ID_NULL, # 44 ID_REEH, ID_NULL, ID_NULL, # 45 ID_SHOFETIM, ID_NULL, ID_NULL, # 46 ID_KITETSE, ID_NULL, ID_NULL, # 47 ID_KITABO, ID_NULL, ID_NULL, # 48 ID_NITSABIM, ID_NULL, ID_NULL, # 49 ID_VAYELEH, ID_NULL, ID_NULL, # 50 ID_HAAZINU, ID_NULL, ID_NULL, # 51 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 52 torahSectionsG = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_SHEKALIM,ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_ZAHOR, ID_NULL, # 20 ID_KITISSA, ID_PARAH, ID_NULL, # 21 ID_VAYAKHEL, ID_PEKUDE, ID_HAHODESH, # 22 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_HAGGADOL,ID_NULL, # 25 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 26 ID_SHEMINI, ID_NULL, ID_NULL, # 27 ID_TAZRIANG, ID_METSORANG,ID_NULL, # 28 ID_AHAREMOTH, ID_KEDOSHIM,ID_NULL, # 29 ID_EMOR, ID_NULL, ID_NULL, # 30 ID_BEHAR, ID_BEHUKKOTHAI,ID_NULL, # 31 ID_BEMIDBAR, ID_NULL, ID_NULL, # 32 ID_NASO, ID_NULL, ID_NULL, # 33 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 34 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 35 ID_KORAH, ID_NULL, ID_NULL, # 36 ID_HUKATH, ID_NULL, ID_NULL, # 37 ID_BALAK, ID_NULL, ID_NULL, # 38 ID_PINHAS, ID_NULL, ID_NULL, # 39 ID_MATOTH, ID_MASEH, ID_NULL, # 40 ID_DEBARIM, ID_NULL, ID_NULL, # 41 ID_VAETHANAN, ID_NULL, ID_NULL, # 42 ID_EKEB, ID_NULL, ID_NULL, # 43 ID_REEH, ID_NULL, ID_NULL, # 44 ID_SHOFETIM, ID_NULL, ID_NULL, # 45 ID_KITETSE, ID_NULL, ID_NULL, # 46 ID_KITABO, ID_NULL, ID_NULL, # 47 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 48 ID_HAAZINU, ID_NULL, ID_NULL, # 49 ID_YOM_KIPPUR, ID_NULL, ID_NULL, # 50 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 51 torahSectionsHDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_PARAH, ID_NULL, # 25 ID_SHEMINI, ID_HAHODESH,ID_NULL, # 26 ID_TAZRIANG, ID_NULL, ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_SHAVUOTH_II, ID_NULL, ID_NULL, # 36 ID_NASO, ID_NULL, ID_NULL, # 37 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 38 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 39 ID_KORAH, ID_NULL, ID_NULL, # 40 ID_HUKATH, ID_BALAK, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_MASEH, ID_NULL, # 43 ID_DEBARIM, ID_NULL, ID_NULL, # 44 ID_VAETHANAN, ID_NULL, ID_NULL, # 45 ID_EKEB, ID_NULL, ID_NULL, # 46 ID_REEH, ID_NULL, ID_NULL, # 47 ID_SHOFETIM, ID_NULL, ID_NULL, # 48 ID_KITETSE, ID_NULL, ID_NULL, # 49 ID_KITABO, ID_NULL, ID_NULL, # 50 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 51 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 52 ID_HAAZINU, ID_NULL, ID_NULL, # 53 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 54 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 55 torahSectionsHIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_PARAH, ID_NULL, # 25 ID_SHEMINI, ID_HAHODESH,ID_NULL, # 26 ID_TAZRIANG, ID_NULL, ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_MASEH, ID_NULL, # 43 ID_DEBARIM, ID_NULL, ID_NULL, # 44 ID_VAETHANAN, ID_NULL, ID_NULL, # 45 ID_EKEB, ID_NULL, ID_NULL, # 46 ID_REEH, ID_NULL, ID_NULL, # 47 ID_SHOFETIM, ID_NULL, ID_NULL, # 48 ID_KITETSE, ID_NULL, ID_NULL, # 49 ID_KITABO, ID_NULL, ID_NULL, # 50 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 51 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 52 ID_HAAZINU, ID_NULL, ID_NULL, # 53 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 54 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 55 torahSectionsI = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_NULL, ID_NULL, # 22 ID_PEKUDE, ID_SHEKALIM,ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_NULL, ID_NULL, # 28 ID_AHAREMOTH, ID_HAGGADOL,ID_NULL, # 29 ID_PESAH_VII, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_NULL, ID_NULL, # 43 ID_MASEH, ID_NULL, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_NULL, ID_NULL, # 52 ID_VAYELEH, ID_NULL, ID_NULL, # 53 ID_HAAZINU, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsJ = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_PARAH, ID_NULL, # 25 ID_SHEMINI, ID_HAHODESH,ID_NULL, # 26 ID_TAZRIANG, ID_NULL, ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_MASEH, ID_NULL, # 43 ID_DEBARIM, ID_NULL, ID_NULL, # 44 ID_VAETHANAN, ID_NULL, ID_NULL, # 45 ID_EKEB, ID_NULL, ID_NULL, # 46 ID_REEH, ID_NULL, ID_NULL, # 47 ID_SHOFETIM, ID_NULL, ID_NULL, # 48 ID_KITETSE, ID_NULL, ID_NULL, # 49 ID_KITABO, ID_NULL, ID_NULL, # 50 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 51 ID_HAAZINU, ID_NULL, ID_NULL, # 52 ID_YOM_KIPPUR, ID_NULL, ID_NULL, # 53 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 54 torahSectionsKDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_PESAH_I, ID_NULL, ID_NULL, # 29 ID_PESAH_VIII, ID_NULL, ID_NULL, # 30 ID_AHAREMOTH, ID_NULL, ID_NULL, # 31 ID_KEDOSHIM, ID_NULL, ID_NULL, # 32 ID_EMOR, ID_NULL, ID_NULL, # 33 ID_BEHAR, ID_NULL, ID_NULL, # 34 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 35 ID_BEMIDBAR, ID_NULL, ID_NULL, # 36 ID_NASO, ID_NULL, ID_NULL, # 37 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 38 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 39 ID_KORAH, ID_NULL, ID_NULL, # 40 ID_HUKATH, ID_NULL, ID_NULL, # 41 ID_BALAK, ID_NULL, ID_NULL, # 42 ID_PINHAS, ID_NULL, ID_NULL, # 43 ID_MATOTH, ID_MASEH, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_NULL, ID_NULL, # 52 ID_VAYELEH, ID_NULL, ID_NULL, # 53 ID_HAAZINU, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsKIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_PESAH_I, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_NULL, ID_NULL, # 43 ID_MASEH, ID_NULL, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_NULL, ID_NULL, # 52 ID_VAYELEH, ID_NULL, ID_NULL, # 53 ID_HAAZINU, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsLDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_PESAH_I, ID_NULL, ID_NULL, # 29 ID_PESAH_VIII, ID_NULL, ID_NULL, # 30 ID_AHAREMOTH, ID_NULL, ID_NULL, # 31 ID_KEDOSHIM, ID_NULL, ID_NULL, # 32 ID_EMOR, ID_NULL, ID_NULL, # 33 ID_BEHAR, ID_NULL, ID_NULL, # 34 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 35 ID_BEMIDBAR, ID_NULL, ID_NULL, # 36 ID_NASO, ID_NULL, ID_NULL, # 37 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 38 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 39 ID_KORAH, ID_NULL, ID_NULL, # 40 ID_HUKATH, ID_NULL, ID_NULL, # 41 ID_BALAK, ID_NULL, ID_NULL, # 42 ID_PINHAS, ID_NULL, ID_NULL, # 43 ID_MATOTH, ID_MASEH, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_NULL, ID_NULL, # 52 ID_VAYELEH, ID_NULL, ID_NULL, # 53 ID_HAAZINU, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsLIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_NULL, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_PESAH_I, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_NULL, ID_NULL, # 43 ID_MASEH, ID_NULL, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_NULL, ID_NULL, # 52 ID_VAYELEH, ID_NULL, ID_NULL, # 53 ID_HAAZINU, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsM = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_NULL, ID_NULL, # 22 ID_PEKUDE, ID_SHEKALIM,ID_NULL, # 23 ID_VAYIKRA, ID_NULL, ID_NULL, # 24 ID_TSAV, ID_ZAHOR, ID_NULL, # 25 ID_SHEMINI, ID_PARAH, ID_NULL, # 26 ID_TAZRIANG, ID_HAHODESH,ID_NULL, # 27 ID_METSORANG, ID_NULL, ID_NULL, # 28 ID_AHAREMOTH, ID_HAGGADOL,ID_NULL, # 29 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_NULL, ID_NULL, # 43 ID_MASEH, ID_NULL, ID_NULL, # 44 ID_DEBARIM, ID_NULL, ID_NULL, # 45 ID_VAETHANAN, ID_NULL, ID_NULL, # 46 ID_EKEB, ID_NULL, ID_NULL, # 47 ID_REEH, ID_NULL, ID_NULL, # 48 ID_SHOFETIM, ID_NULL, ID_NULL, # 49 ID_KITETSE, ID_NULL, ID_NULL, # 50 ID_KITABO, ID_NULL, ID_NULL, # 51 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 52 ID_HAAZINU, ID_NULL, ID_NULL, # 53 ID_YOM_KIPPUR, ID_NULL, ID_NULL, # 54 ID_HOL_HAMOED_SUCCOTH, ID_NULL, ID_NULL]; # 55 torahSectionsNDiaspora = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_PARAH, ID_NULL, # 25 ID_SHEMINI, ID_HAHODESH,ID_NULL, # 26 ID_TAZRIANG, ID_NULL, ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_SHAVUOTH_II, ID_NULL, ID_NULL, # 36 ID_NASO, ID_NULL, ID_NULL, # 37 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 38 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 39 ID_KORAH, ID_NULL, ID_NULL, # 40 ID_HUKATH, ID_BALAK, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_MASEH, ID_NULL, # 43 ID_DEBARIM, ID_NULL, ID_NULL, # 44 ID_VAETHANAN, ID_NULL, ID_NULL, # 45 ID_EKEB, ID_NULL, ID_NULL, # 46 ID_REEH, ID_NULL, ID_NULL, # 47 ID_SHOFETIM, ID_NULL, ID_NULL, # 48 ID_KITETSE, ID_NULL, ID_NULL, # 49 ID_KITABO, ID_NULL, ID_NULL, # 50 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 51 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 52 ID_HAAZINU, ID_NULL, ID_NULL, # 53 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 54 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 55 torahSectionsNIsrael = \ [ID_BERESHITH, ID_NULL, ID_NULL, # 1 ID_NOAH, ID_NULL, ID_NULL, # 2 ID_LEHLEHA, ID_NULL, ID_NULL, # 3 ID_VAYERA, ID_NULL, ID_NULL, # 4 ID_HAYESARAH, ID_NULL, ID_NULL, # 5 ID_TOLEDOTH, ID_NULL, ID_NULL, # 6 ID_VAYETSE, ID_NULL, ID_NULL, # 7 ID_VAYISHLAH, ID_NULL, ID_NULL, # 8 ID_VAYESHEB, ID_NULL, ID_NULL, # 9 ID_MIKKETS, ID_NULL, ID_NULL, # 10 ID_VAYIGGASH, ID_NULL, ID_NULL, # 11 ID_VAYHEE, ID_NULL, ID_NULL, # 12 ID_SHEMOTH, ID_NULL, ID_NULL, # 13 ID_VAERA, ID_NULL, ID_NULL, # 14 ID_BO, ID_NULL, ID_NULL, # 15 ID_BESHALLAH, ID_NULL, ID_NULL, # 16 ID_YITHRO, ID_NULL, ID_NULL, # 17 ID_MISHPATIM, ID_NULL, ID_NULL, # 18 ID_TERUMAH, ID_NULL, ID_NULL, # 19 ID_TETSAVVEH, ID_NULL, ID_NULL, # 20 ID_KITISSA, ID_NULL, ID_NULL, # 21 ID_VAYAKHEL, ID_SHEKALIM,ID_NULL, # 22 ID_PEKUDE, ID_NULL, ID_NULL, # 23 ID_VAYIKRA, ID_ZAHOR, ID_NULL, # 24 ID_TSAV, ID_PARAH, ID_NULL, # 25 ID_SHEMINI, ID_HAHODESH,ID_NULL, # 26 ID_TAZRIANG, ID_NULL, ID_NULL, # 27 ID_METSORANG, ID_HAGGADOL,ID_NULL, # 28 ID_HOL_HAMOED_PESAH, ID_NULL, ID_NULL, # 29 ID_AHAREMOTH, ID_NULL, ID_NULL, # 30 ID_KEDOSHIM, ID_NULL, ID_NULL, # 31 ID_EMOR, ID_NULL, ID_NULL, # 32 ID_BEHAR, ID_NULL, ID_NULL, # 33 ID_BEHUKKOTHAI, ID_NULL, ID_NULL, # 34 ID_BEMIDBAR, ID_NULL, ID_NULL, # 35 ID_NASO, ID_NULL, ID_NULL, # 36 ID_BEHAALOTEHA, ID_NULL, ID_NULL, # 37 ID_SHELAHLEHA, ID_NULL, ID_NULL, # 38 ID_KORAH, ID_NULL, ID_NULL, # 39 ID_HUKATH, ID_NULL, ID_NULL, # 40 ID_BALAK, ID_NULL, ID_NULL, # 41 ID_PINHAS, ID_NULL, ID_NULL, # 42 ID_MATOTH, ID_MASEH, ID_NULL, # 43 ID_DEBARIM, ID_NULL, ID_NULL, # 44 ID_VAETHANAN, ID_NULL, ID_NULL, # 45 ID_EKEB, ID_NULL, ID_NULL, # 46 ID_REEH, ID_NULL, ID_NULL, # 47 ID_SHOFETIM, ID_NULL, ID_NULL, # 48 ID_KITETSE, ID_NULL, ID_NULL, # 49 ID_KITABO, ID_NULL, ID_NULL, # 50 ID_NITSABIM, ID_VAYELEH, ID_NULL, # 51 ID_ROSH_HASHANAH_I, ID_NULL, ID_NULL, # 52 ID_HAAZINU, ID_NULL, ID_NULL, # 53 ID_SUCCOTH_I, ID_NULL, ID_NULL, # 54 ID_SHEMINI_AZERETH, ID_NULL, ID_NULL]; # 55 def torahGetWeekday(absDate): return jewishcalendar.get_weekday_from_absdate(absDate) def torahHebrewLeapYear(year): return jewishcalendar.hebrew_leap(year) def torahLastMonthOfHebrewYear(year): return jewishcalendar.hebrew_year_months(year) def getYearType(year): rhWeekday = torahGetWeekday(jewishcalendar.hebrew_to_absdate(year, 7, 1)); lengthOfYear = int(jewishcalendar.hebrew_to_absdate(year+1, 7, 1) - jewishcalendar.hebrew_to_absdate(year, 7, 1)); pesWeekday = torahGetWeekday(jewishcalendar.hebrew_to_absdate(year, 1, 15)); if ((rhWeekday == 1) and (lengthOfYear == 353) and (pesWeekday == 2)): return 1; if ((rhWeekday == 6) and (lengthOfYear == 353) and (pesWeekday == 0)): return 2; if ((rhWeekday == 2) and (lengthOfYear == 354) and (pesWeekday == 4)): return 3; if ((rhWeekday == 4) and (lengthOfYear == 354) and (pesWeekday == 6)): return 4; if ((rhWeekday == 1) and (lengthOfYear == 355) and (pesWeekday == 4)): return 5; if ((rhWeekday == 4) and (lengthOfYear == 355) and (pesWeekday == 0)): return 6; if ((rhWeekday == 6) and (lengthOfYear == 355) and (pesWeekday == 2)): return 7; if ((rhWeekday == 1) and (lengthOfYear == 383) and (pesWeekday == 4)): return 8; if ((rhWeekday == 4) and (lengthOfYear == 383) and (pesWeekday == 0)): return 9; if ((rhWeekday == 6) and (lengthOfYear == 383) and (pesWeekday == 2)): return 10; if ((rhWeekday == 2) and (lengthOfYear == 384) and (pesWeekday == 6)): return 11; if ((rhWeekday == 1) and (lengthOfYear == 385) and (pesWeekday == 6)): return 12; if ((rhWeekday == 4) and (lengthOfYear == 385) and (pesWeekday == 2)): return 13; if ((rhWeekday == 6) and (lengthOfYear == 385) and (pesWeekday == 4)): return 14; return 0; def determineBereshith(year): simchatTorah = jewishcalendar.hebrew_to_absdate(year, 7, 23); while (torahGetWeekday(simchatTorah) != 6): simchatTorah += 1; return (simchatTorah); def getTorahSections(hebrewMonth, hebrewDay, hebrewYear, diaspora): shuvahDate = jewishcalendar.hebrew_to_absdate(hebrewYear, 7, 1)+1; while (torahGetWeekday(shuvahDate) != 6): shuvahDate += 1; torahDate = jewishcalendar.hebrew_to_absdate(hebrewYear, hebrewMonth, hebrewDay); if (torahGetWeekday(torahDate) == 6): bereshithDate = determineBereshith(hebrewYear); if (torahDate < bereshithDate): referenceYear = hebrewYear-1; else: referenceYear = hebrewYear; yearType = getYearType(referenceYear); bereshithDate = determineBereshith(referenceYear); torahWeekNo = int(int(torahDate-bereshithDate)/7); returnTorahSection = ""; idTorah1 = ID_NULL; idTorah2 = ID_NULL; idTorah3 = ID_NULL; # # allgemein: A, B, F, G, I, J, M # Israel/Diaspora: C, D, E, H, K, L, N # if (yearType == 1): # A idTorah1 = torahSectionsA[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsA[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsA[torahWeekNo * 3 + 2]; if (yearType == 2): # B idTorah1 = torahSectionsB[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsB[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsB[torahWeekNo * 3 + 2]; if (yearType == 3): # C if diaspora: idTorah1 = torahSectionsCDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsCDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsCDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsCIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsCIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsCIsrael[torahWeekNo * 3 + 2]; if (yearType == 4): # D if diaspora: idTorah1 = torahSectionsDDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsDDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsDDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsDIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsDIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsDIsrael[torahWeekNo * 3 + 2]; if (yearType == 5): # E if diaspora: idTorah1 = torahSectionsEDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsEDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsEDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsEIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsEIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsEIsrael[torahWeekNo * 3 + 2]; if (yearType == 6): # F idTorah1 = torahSectionsF[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsF[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsF[torahWeekNo * 3 + 2]; if (yearType == 7): # G idTorah1 = torahSectionsG[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsG[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsG[torahWeekNo * 3 + 2]; if (yearType == 8): # H if diaspora: idTorah1 = torahSectionsHDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsHDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsHDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsHIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsHIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsHIsrael[torahWeekNo * 3 + 2]; if (yearType == 9): # I idTorah1 = torahSectionsI[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsI[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsI[torahWeekNo * 3 + 2]; if (yearType == 10): # J idTorah1 = torahSectionsJ[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsJ[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsJ[torahWeekNo * 3 + 2]; if (yearType == 11): # K if (diaspora): idTorah1 = torahSectionsKDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsKDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsKDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsKIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsKIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsKIsrael[torahWeekNo * 3 + 2]; if (yearType == 12): # L if (diaspora): idTorah1 = torahSectionsLDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsLDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsLDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsLIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsLIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsLIsrael[torahWeekNo * 3 + 2]; if (yearType == 13): # M idTorah1 = torahSectionsM[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsM[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsM[torahWeekNo * 3 + 2]; if (yearType == 14): # N if diaspora: idTorah1 = torahSectionsNDiaspora[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsNDiaspora[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsNDiaspora[torahWeekNo * 3 + 2]; else: idTorah1 = torahSectionsNIsrael[torahWeekNo * 3 + 0]; idTorah2 = torahSectionsNIsrael[torahWeekNo * 3 + 1]; idTorah3 = torahSectionsNIsrael[torahWeekNo * 3 + 2]; if (idTorah1 != ID_NULL): torahSection = getTorahSectionName(idTorah1); if (torahSection != ""): if (returnTorahSection != ""): returnTorahSection = returnTorahSection + ", "; returnTorahSection = returnTorahSection + torahSection; if (idTorah2 != ID_NULL): torahSection = getTorahSectionName(idTorah2); if (torahSection != ""): if (returnTorahSection != ""): returnTorahSection = returnTorahSection + ", "; returnTorahSection = returnTorahSection + torahSection; if (idTorah3 != ID_NULL): torahSection = getTorahSectionName(idTorah3); if (torahSection != ""): if (returnTorahSection != ""): returnTorahSection = returnTorahSection + ", "; returnTorahSection = returnTorahSection + torahSection; if (torahDate == shuvahDate): if (returnTorahSection != ""): returnTorahSection = returnTorahSection + ", "; returnTorahSection = returnTorahSection + getTorahSectionName(ID_SHUVA); return (returnTorahSection); else: return ""; def getTorahSectionName(section): if (section == ID_BERESHITH): return "Bereshith"; if (section == ID_NOAH): return "Noah"; if (section == ID_LEHLEHA): return "Le'h Leha"; if (section == ID_VAYERA): return "Vayera"; if (section == ID_HAYESARAH): return "Haye Sarah"; if (section == ID_TOLEDOTH): return "Toledoth"; if (section == ID_VAYETSE): return "Vayetse"; if (section == ID_VAYISHLAH): return "Vayishlah"; if (section == ID_VAYESHEB): return "Vayesheb"; if (section == ID_MIKKETS): return "Mikkets"; if (section == ID_VAYIGGASH): return "Vayiggash"; if (section == ID_VAYHEE): return "Vayhee"; if (section == ID_SHEMOTH): return "Shemoth"; if (section == ID_VAERA): return "Vaera"; if (section == ID_BO): return "Bo"; if (section == ID_BESHALLAH): return "Beshallah, Shabbat Shirah"; if (section == ID_YITHRO): return "Yithro"; if (section == ID_MISHPATIM): return "Mishpatim"; if (section == ID_TERUMAH): return "Terumah"; if (section == ID_TETSAVVEH): return "Tetsavveh"; if (section == ID_KITISSA): return "Ki Tissa"; if (section == ID_VAYAKHEL): return "Vayakhel"; if (section == ID_PEKUDE): return "Pekude"; if (section == ID_VAYIKRA): return "Vayikra"; if (section == ID_TSAV): return "Tsav"; if (section == ID_SHEMINI): return "Shemini"; if (section == ID_TAZRIANG): return "Tazria"; if (section == ID_METSORANG): return "Metsora"; if (section == ID_AHAREMOTH): return "Aharemoth"; if (section == ID_KEDOSHIM): return "Kedoshim"; if (section == ID_EMOR): return "Emor"; if (section == ID_BEHAR): return "Behar"; if (section == ID_BEHUKKOTHAI): return "Behukkothai"; if (section == ID_BEMIDBAR): return "Bemidbar"; if (section == ID_NASO): return "Naso"; if (section == ID_BEHAALOTEHA): return "Behaaloteha"; if (section == ID_SHELAHLEHA): return "Shelah Leha"; if (section == ID_KORAH): return "Korah"; if (section == ID_HUKATH): return "Hukath"; if (section == ID_BALAK): return "Balak"; if (section == ID_PINHAS): return "Pinhas"; if (section == ID_MATOTH): return "Matoth"; if (section == ID_MASEH): return "Maseh"; if (section == ID_DEBARIM): return "Debarim, Shabbat Hazon"; if (section == ID_VAETHANAN): return "Vaethanan, Shabbat Nahamu"; if (section == ID_EKEB): return "Ekeb"; if (section == ID_REEH): return "Reeh"; if (section == ID_SHOFETIM): return "Shofetim"; if (section == ID_KITETSE): return "Ki Tetse"; if (section == ID_KITABO): return "Ki Tabo"; if (section == ID_NITSABIM): return "Nitsabim"; if (section == ID_VAYELEH): return "Vayeleh"; if (section == ID_HAAZINU): return "Haazinu"; if (section == ID_SHEKALIM): return "Shabbat Shekalim"; if (section == ID_ZAHOR): return "Shabbat Za'hor"; if (section == ID_PARAH): return "Shabbat Parah"; if (section == ID_HAHODESH): return "Shabbat Hahodesh"; if (section == ID_SHUVA): return "Shabbat Shuva"; return "";
import torah import sys import jewishcalendar if len(sys.argv) == 5: if sys.argv[1] == "-": wholeMonth = True else: wholeMonth = False day = int(sys.argv[1]) month = int(sys.argv[2]) year = int(sys.argv[3]) if sys.argv[4] == "y": diaspora = True else: diaspora = False if wholeMonth == True: lastDay = jewishcalendar.last_day_of_gregorian_month(month, year) for day in range(1,lastDay+1): torahStr = torah.getTorahSections(month, day, year, diaspora) if torahStr != "": print(str(day) + "." + str(month) + "."+str(year) + ": " + torahStr) else: torahStr = torah.getTorahSections(month, day, year, diaspora) if torahStr != "": print("Torah section(s): " + torahStr) else: print("No torah section(s) on that day") else: print("Syntax: python sample.py <Day> <Month> <Year> <Diaspora flag: y = Diaspora, n = Israel>")