
var defaultLocaleInfo,roshHashanah,rhDay={},RD0_DAYS=-1373427,parts,daysBefore,daysBeforeYear,delays,delayRoshHashanah;defaultLocaleInfo={SUNDAY:'Sunday:Sun',MONDAY:'Monday:Mon',TUESDAY:'Tuesday:Tue',WEDNESDAY:'Wednesday:Wen',THURSDAY:'Thursday:Thu',FRIDAY:'Friday:Fri',SATURDAY:'Saturday:Sat',JANUARY:'Nisan',FEBRUARY:'Iyar',MARCH:'Sivan',APRIL:'Tamuz',MAY:'Av',JUNE:'Elul',JULY:'Tishrei',AUGUST:'Cheshvan',SEPTEMBER:'Kislev',OCTOBER:'Tevet',NOVEMBER:'Shevat',DECEMBER:'Adar',UNDECIMBER:'Adar II',AM:'AM',PM:'PM',ERA0:'',ERA1:'',COUNT0:'th',COUNT1:'st',COUNT2:'nd',COUNT3:'rd',COUNT21:'st',COUNT22:'nd',COUNT23:'rd',COUNT31:'st',COUNTN:'th'};parts={minute:1080/60,sec:1080/(60*60),hour:1080,day:1080*24,molad_month:29.5*25920+793,molad_1_noon_offset:(1080*24)/2-876,molad_1_midnight_offset:876,molad:25920/2+793};roshHashanah=function(y){if(!rhDay[y]){rhDay[y]=RD0_DAYS+daysBeforeYear(y)+delayRoshHashanah(y)+1;}
return(rhDay[y]);};daysBefore={};daysBeforeYear=function(y){var months,p,day;if(!daysBefore[y]){months=Math.floor((235*y-234)/19);p=parts.molad_1_noon_offset+parts.molad*months;day=29*months+Math.floor(p/parts.day);if((3*(day+1))%7<3){day=day+1;}
daysBefore[y]=day-1;}
return(daysBefore[y]);};delays={};delayRoshHashanah=function(y){var lastYear=daysBeforeYear(y-1),thisYear=daysBeforeYear(y),nextYear=daysBeforeYear(y+1),delay;delay=0;if(nextYear-thisYear===356){delay=2;}else if(thisYear-lastYear===382){delay=1;}
return(delay);};module.exports={getName:function(){return("hebrew");},getStartOfDay:function(){return(JSORM.calendar.SUNSET);},RD0_DAYS:RD0_DAYS,DAYS_IN_SOLAR_YEAR:365.25,MOLAD_1_OFFSET_MIDNIGHT_DAYS:876/(1080*24),MOLAD_STD_OFFSET_DAYS:29.5+793/25920,TISHREI:7,getDefaultLocale:function(){return('en_US');},getDefaultLocaleInfo:function(key){return(defaultLocaleInfo[key]);},leaps:{},isLeapYear:function(y){var leaps=this.leaps;if(leaps[y]===undefined){leaps[y]=((7*y+1)%19)<7;}
return(leaps[y]);},mod:function(x,y){return(x-y*(Math.floor(x/y)));},molad:function(m,y){var passedMonths,molad;y=m<this.TISHREI?y+1:y;passedMonths=m-this.TISHREI+Math.floor((235*y-234)/19);molad=this.RD0_DAYS-this.MOLAD_1_OFFSET_MIDNIGHT_FRACTION+passedMonths*this.MOLAD_STD_OFFSET_DAYS;return(molad);},daysToCalendar:function(date){var year,leap,priorDays,month,monthDays,monthsInYear,daysInMonth,a,day,era,cal;year=Math.floor((date-this.RD0_DAYS)/this.DAYS_IN_SOLAR_YEAR)-1;while(roshHashanah(year+1)<=date){year++;}
leap=this.isLeapYear(year);priorDays=date-roshHashanah(year);month=1;monthDays=0;monthsInYear=this.getMaxMonth(0,year);daysInMonth=this.getMaxDate(0,year,(month+monthsInYear+this.TISHREI-2)%monthsInYear+1);while(monthDays+daysInMonth<=priorDays&&month<monthsInYear){month++;monthDays+=daysInMonth;daysInMonth=this.getMaxDate(0,year,(month+monthsInYear+this.TISHREI-2)%monthsInYear+1);a=daysInMonth;}
month=(month+monthsInYear+this.TISHREI-2)%monthsInYear+1;day=priorDays-monthDays+1;era=0;cal={ERA:era,YEAR:year,MONTH:month,DATE:day,DAY_OF_YEAR:priorDays+1,LEAP:leap?1:0};return(cal);},calendarToDays:function(e,y,m,d){var yearDays,monthDays,month,leap,monthsInYear,fd;yearDays=roshHashanah(y);monthDays=0;month=1;leap=this.isLeapYear(y);monthsInYear=this.getMaxMonth(0,y);m=(m+monthsInYear-this.TISHREI)%monthsInYear+1;for(month=1;month<m;month++){monthDays=monthDays+this.getMaxDate(0,y,(month+monthsInYear+this.TISHREI-2)%monthsInYear+1);}
fd=yearDays+monthDays+d-1;return(fd);},getMaxEra:function(){return(0);},getMinEra:function(){return(0);},getMaxYear:function(era){return(100000000000000);},getMinYear:function(era){return(1);},getMaxMonth:function(era,year){return(this.isLeapYear(year)?13:12);},getMinMonth:function(era,year){return(1);},getMaxDate:function(era,year,month){var maxDate=30,daysInYear7,daysInYear8;switch(month){case 13:maxDate=29;break;case 12:maxDate=this.isLeapYear(year)?30:29;break;case 8:daysInYear7=roshHashanah(year+1)-roshHashanah(year);maxDate=(daysInYear7===355||daysInYear7===385)?30:29;break;case 9:daysInYear8=roshHashanah(year+1)-roshHashanah(year);maxDate=(daysInYear8===353||daysInYear8===383)?29:30;break;default:maxDate=month%2===0?29:30;break;}
return(maxDate);},getMinDate:function(era,year,month){return(1);},getMaxDayOfYear:function(era,year){var daysInYear=roshHashanah(year+1)-roshHashanah(year);return(daysInYear);},getMinDayOfYear:function(era,year){return(1);}};