///////////////////////////////////////////////////////////////////
// Start of hdate.js (you can copy this section to a separate file
///////////////////////////////////////////////////////////////////
// All rights reserved to Elyasaf Movshovitz and Amos Shapir.
// Code may be used freely with keeping copitight messages.
 
 
// General functions
// -----------------
 
 function div( a, b )
 {
 	return Math.floor(a/b) ;
 }
 
function Gimatria(n)
{
	var p = '' ;
	var quf = 'קרש' ;
	var yud = 'יכלמנסעפצ' ;
	var alef = 'אבגדהוזחט' ;
 
	if ( n > 1000 )
	{
		p += Gimatria( div(n,1000)) ;
		n %= 1000 ;
	}
 
	while (n >= 400)
	{
		p += 'ת' ;
		n -= 400 ;
	}
 
	if (n >= 100)
	{
		p += quf.charAt( div(n,100) - 1 ) ;
		n %= 100 ;
	}
 
	if ( n >= 10 )
	{
		switch( n )
		{
			case 15:
				p += 'טו' ; n = 0 ;
				break ;
			case 16:
				p += 'טז' ; n = 0 ;
				break ;
			default:
				p += yud.charAt ( div(n,10) - 1 ) ;
				break ;
		}
		n %= 10 ;
	}
 
	if (n > 0)  p += alef.charAt(n-1) ;
 
	if ( p.length == 1 )
		p += "'" ;
	else
		p = p.slice( 0, p.length - 1) + '"' + p.charAt( p.length-1 ) ;
 
	return p ;
}
 
// Holidays functions
// ------------------
	function HolidayToString()
	{
		return this.description ;
	}
 
	// Holiday object Constructor
	function Holiday(day,month,condition,description,type)
	{
		this.day = day ;
		this.month = month ;
		this.condition = condition ;
		this.description = description ;
		this.holiday_type= type ? type : 'holiday' ;
		this.toString = HolidayToString ;
	}
 
	function CheckHanuka(gg)
	{
	
	var g = new Date ;
		g.setYear( gg.getFullYear() ) ;
		g.setMonth( gg.getMonth() ) ;
		g.setDate( gg.getDate()-3 ) ;
		var h = new HebrewDate ;
		h.convertGregorian(g) ;
		return h.hd_day == 28 ;
		
	}
 
	// Day, Month, Condition, Description, Style
	var Holidays = Array(
             new Holiday( 29,1,'year==2009 ','בראשית'),
new Holiday( 6,2,'year==2009 ','נח'),
new Holiday( 13,2,'year==2009 ','לך לך'),
new Holiday( 20,2,'year==2009 ','וירא'),
new Holiday( 27,2,'year==2009 ','חיי שרה'),
new Holiday( 4,3,'year==2009 ','תולדות'),
new Holiday( 11,3,'year==2009 ','ויצא'),
new Holiday( 18,3,'year==2009 ','וישלח'),
new Holiday( 25,3,'year==2009 ','וישב'),
new Holiday( 2,4,'year==2009 ','מקץ'),
new Holiday( 9,4,'year==2009 ','ויגש'),
new Holiday( 16,4,'year==2010&&dow==7','ויחי'),
new Holiday( 23,4,'year==2010&&dow==7','שמות'),
new Holiday( 1,5,'year==2010','וארא'),
new Holiday( 8,5,'year==2010','בא'),
new Holiday( 15,5,'year==2010','בשלח'),
new Holiday( 22,5,'year==2010','יתרו'),
new Holiday( 29,5,'year==2010','משפטים (שקלים)'),
new Holiday( 6,6,'year==2010','תרומה'),
new Holiday( 13,6,'year==2010','תצוה (זכור)'),
new Holiday( 20,6,'year==2010','כי תשא (פרה)'),
new Holiday( 27,6,'year==2010','ויקהל-פקודי (שבת החודש)'),
new Holiday( 5,7,'year==2010','ויקרא'),
new Holiday( 12,7,'year==2010','צו (שבת הגדול)'),
new Holiday( 26,7,'year==2010','שמיני'),
new Holiday( 3,8,'year==2010','תזריע-מצורע'),
new Holiday( 10,8,'year==2010','אחרי מות-קדושים'),
new Holiday( 17,8,'year==2010','אמור'),
new Holiday( 24,8,'year==2010','בהר-בחוקותי'),
new Holiday( 2,9,'year==2010','במדבר'),
new Holiday( 9,9,'year==2010','נשא'),
new Holiday( 16,9,'year==2010','בהעלותך'),
new Holiday( 23,9,'year==2010','שלח'),
new Holiday( 30,9,'year==2010','קרח'),
new Holiday( 7,10,'year==2010','חוקת'),
new Holiday( 14,10,'year==2010','בלק'),
new Holiday( 21,10,'year==2010','פנחס'),
new Holiday( 28,10,'year==2010','מטות-מסעי'),
new Holiday( 6,11,'year==2010','דברים'),
new Holiday( 13,11,'year==2010','ואתחנן'),
new Holiday( 20,11,'year==2010','עקב'),
new Holiday( 27,11,'year==2010','ראה'),
new Holiday( 4,12,'year==2010','שופטים'),
new Holiday( 11,12,'year==2010','כי תצא'),
new Holiday( 18,12,'year==2010','כי תבוא'),
new Holiday( 25,12,'year==2010','נצבים-וילך'),
new Holiday( 3,1,'year==2010','האזינו'),
new Holiday( 24,1,'year==2010','בראשית'),
new Holiday( 1,2,'year==2010 ','נח'),
new Holiday( 8,2,'year==2010 ','לך לך'),
new Holiday( 15,2,'year==2010 ','וירא'),
new Holiday( 22,2,'year==2010 ','חיי שרה'),
new Holiday( 29,2,'year==2010 ','תולדות'),
new Holiday( 6,3,'year==2010 ','ויצא'),
new Holiday( 13,3,'year==2010 ','וישלח'),
new Holiday( 20,3,'year==2010&&dow==7 ','וישב'),
new Holiday( 27,3,'year==2010&&dow==7 ','מקץ'),
new Holiday( 4,4,'year==2010&&dow==7 ','ויגש'),
new Holiday( 11,4,'year==2010&&dow==7','ויחי'),
new Holiday( 18,4,'year==2010&&dow==7','שמות'),
new Holiday( 25,4,'year==2011&&dow==7','וארא'),
new Holiday( 3,5,'year==2011&&dow==7','בא'),
new Holiday( 10,5,'year==2011&&dow==7','בשלח'),
new Holiday( 17,5,'year==2011&&dow==7','יתרו'),
new Holiday( 24,5,'year==2011&&dow==7','משפטים'),
new Holiday( 1,13,'year==2011','תרומה'),
new Holiday( 8,13,'year==2011','תצוה'),
new Holiday( 15,13,'year==2011','כי תשא'),
new Holiday( 22,13,'year==2011','ויקהל'),
new Holiday( 29,13,'year==2011','פקודי'),
new Holiday( 6,14,'year==2011','ויקרא'),
new Holiday( 13,14,'year==2011','צו זכור'),
new Holiday( 20,14,'year==2011','שמיני פרה'),
new Holiday( 27,14,'year==2011','תזריע החודש'),
new Holiday( 5,7,'year==2011','מצורע'),
new Holiday( 12,7,'year==2011','אחרי מת'),
new Holiday( 26,7,'year==2011','קדושים'),
new Holiday( 3,8,'year==2011','אמור'),
new Holiday( 10,8,'year==2011','בהר'),
new Holiday( 17,8,'year==2011','בחוקותי'),
new Holiday( 24,8,'year==2011','במדבר'),
new Holiday( 2,9,'year==2011','נשא'),
new Holiday( 9,9,'year==2011','בהעלותך'),
new Holiday( 16,9,'year==2011','שלח'),
new Holiday( 23,9,'year==2011','קרח'),
new Holiday( 30,9,'year==2011','חקת'),
new Holiday( 7,10,'year==2011','בלק'),
new Holiday( 14,10,'year==2011','פנחס'),
new Holiday( 21,10,'year==2011','מטות'),
new Holiday( 28,10,'year==2011','מסעי'),
new Holiday( 6,11,'year==2011','דברים'),
new Holiday( 13,11,'year==2011','ואתחנן'),
new Holiday( 20,11,'year==2011','עקב'),
new Holiday( 27,11,'year==2011','ראה'),
new Holiday( 4,12,'year==2011','שופטים'),
new Holiday( 11,12,'year==2011','כי תצא'),
new Holiday( 18,12,'year==2011','כי תבוא'),
new Holiday( 25,12,'year==2011','נצבים-וילך'),
new Holiday( 3,1,'year==2011','האזינו'),
new Holiday( 24,1,'year==2011','בראשית'),
new Holiday( 1,2,'year==2011','נח'),
new Holiday( 8,2,'year==2011','לך-לך'),
new Holiday( 15,2,'year==2011','וירא'),
new Holiday( 22,2,'year==2011','חיי שרה'),
new Holiday( 29,2,'year==2011','תולדות'),
new Holiday( 7,3,'year==2011&&dow==7','ויצא'),
new Holiday( 14,3,'year==2011&&dow==7','וישלח'),
new Holiday( 21,3,'year==2011&&dow==7','וישב'),
new Holiday( 28,3,'year==2011&&dow==7','מקץ'),
new Holiday( 5,4,'year==2011&&dow==7','ויגש'),
new Holiday( 12,4,'year==2012&&dow==7','ויחי'),
new Holiday( 19,4,'year==2012&&dow==7','שמות'),
new Holiday( 26,4,'year==2012&&dow==7','וירא'),
new Holiday( 4,5,'year==2012&&dow==7','בא'),
new Holiday( 11,5,'year==2012&&dow==7','בשלח'),
new Holiday( 18,5,'year==2012','יתרו'),
new Holiday( 25,5,'year==2012','משפטים'),
new Holiday( 2,6,'year==2012','תרומה'),
new Holiday( 9,6,'year==2012','תצוה'),
new Holiday( 16,6,'year==2012','כי תשא'),
new Holiday( 23,6,'year==2012','ויקהל פקודי'),
new Holiday( 1,7,'year==2012','ויקרא'),
new Holiday( 8,7,'year==2012','צו'),
new Holiday( 22,7,'year==2012','שמיני'),
new Holiday( 29,7,'year==2012','תזריע מצורע'),
new Holiday( 6,8,'year==2012','אחרי קדושים'),
new Holiday( 13,8,'year==2012','אמור'),
new Holiday( 20,8,'year==2012','בהר'),
new Holiday( 27,8,'year==2012','בחוקותי'),
new Holiday( 5,9,'year==2012','במדבר'),
new Holiday( 12,9,'year==2012','נשא'),
new Holiday( 19,9,'year==2012','בהעלותך'),
new Holiday( 26,9,'year==2012','שלח'),
new Holiday( 3,10,'year==2012','קרח'),
new Holiday( 10,10,'year==2012','חקת'),
new Holiday( 17,10,'year==2012','בלק'),
new Holiday( 24,10,'year==2012','פנחס'),
new Holiday( 2,11,'year==2012','מטות מסעי'),
new Holiday( 9,11,'year==2012','דברים'),
new Holiday( 16,11,'year==2012','ואתחנן'),
new Holiday( 23,11,'year==2012','עקב'),
new Holiday( 30,11,'year==2012','ראה'),
new Holiday( 7,12,'year==2012','שופטים'),
new Holiday( 14,12,'year==2012','כי תצא'),
new Holiday( 21,12,'year==2012','כי תבוא'),
new Holiday( 28,12,'year==2012','נצבים'),
new Holiday( 6,1,'year==2012','וילך'),
new Holiday( 13,1,'year==2012','האזינו'),
new Holiday( 27,1,'year==2012','בראשית'),
new Holiday( 4,2,'year==2012','נח'),
new Holiday( 11,2,'year==2012','לך-לך'),
new Holiday( 18,2,'year==2012','וירא'),
new Holiday( 25,2,'year==2012','חיי שרה'),
new Holiday( 3,3,'year==2012','תולדות'),
new Holiday( 10,3,'year==2012','ויצא'),
new Holiday( 17,3,'year==2012','וישלח'),
new Holiday( 24,3,'year==2012&&dow==7','וישב'),
new Holiday( 2,4,'year==2012&&dow==7','מקץ'),
new Holiday( 9,4,'year==2012&&dow==7','ויגש'),
new Holiday( 16,4,'year==2012&&dow==7','ויחי'),
new Holiday( 23,4,'year==2013&&dow==7','שמות'),
new Holiday( 1,5,'year==2013&&dow==7','וארא'),
new Holiday( 8,5,'year==2013&&dow==7','בא'),
new Holiday( 15,5,'year==2013&&dow==7','בשלח'),
new Holiday( 22,5,'year==2013&&dow==7','יתרו'),
new Holiday( 29,5,'year==2013&&dow==7','משפטים'),
new Holiday( 6,6,'year==2013&&dow==7','תרומה'),
new Holiday( 13,6,'year==2013','תצוה'),
new Holiday( 20,6,'year==2013','כי תשא'),
new Holiday( 27,6,'year==2013','ויקהל פקודי'),
new Holiday( 5,7,'year==2013','ויקרא'),
new Holiday( 12,7,'year==2013','צו'),
new Holiday( 26,7,'year==2013','שמיני'),
new Holiday( 3,8,'year==2013','תזריע מצורע'),
new Holiday( 10,8,'year==2013','אחרי קדושים'),
new Holiday( 17,8,'year==2013','אמור'),
new Holiday( 24,8,'year==2013','בהר בחוקותי'),
new Holiday( 2,9,'year==2013','במדבר'),
new Holiday( 9,9,'year==2013','נשא'),
new Holiday( 16,9,'year==2013','בהעלותך'),
new Holiday( 23,9,'year==2013','שלח'),
new Holiday( 30,9,'year==2013','קרח'),
new Holiday( 7,10,'year==2013','חקת'),
new Holiday( 14,10,'year==2013','בלק'),
new Holiday( 21,10,'year==2013','פנחס'),
new Holiday( 28,10,'year==2013','מטות מסעי'),
new Holiday( 6,11,'year==2013','דברים'),
new Holiday( 13,11,'year==2013','ואתחנן'),
new Holiday( 20,11,'year==2013','עקב'),
new Holiday( 27,11,'year==2013','ראה'),
new Holiday( 4,12,'year==2013','שופטים'),
new Holiday( 11,12,'year==2013','כי תצא'),
new Holiday( 18,12,'year==2013','כי תבוא'),
new Holiday( 25,12,'year==2013','נצבים וילך'),

 
		// תשרי
		new Holiday( 1,1,1,'ראש השנה','yomtov' ),
		new Holiday( 2,1,1,'ראש השנה','yomtov' ),
		new Holiday( 3,1,'dow!=7','צום גדליה','sadday'),
		new Holiday( 4,1,'year<2005&&dow==1','צום גדליה (נדחה)','sadday'),
		new Holiday( 4,1,'year>2004&&dow==1','צום גדליה (נדחה)<br><span class="info">שעון חורף</span>','sadday'),
		new Holiday( 6,1,'year>2004&&dow==1','שעון חורף','info'),
		new Holiday( 7,1,'year>2004&&dow==1','שעון חורף','info'),
		new Holiday( 9,1,'year>2004&&dow==1','שעון חורף','info'),
                new Holiday( 5,1,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=742431" target="_blank">פדיון כפרות</a>','yomtov'),
                new Holiday( 6,1,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=742431" target="_blank">פדיון כפרות</a>','yomtov'),
                new Holiday( 7,1,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=742431" target="_blank">פדיון כפרות</a>','yomtov'),
                new Holiday( 8,1,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=742431" target="_blank">פדיון כפרות</a>','yomtov'),
                new Holiday( 9,1,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=742431" target="_blank">פדיון כפרות</a>','yomtov'),
		new Holiday( 10,1,1,'יום כיפור','yomtov'),
		new Holiday( 15,1,1,'סוכות','yomtov'),
		new Holiday( 16,1,1,'א חול המועד'),
		new Holiday( 17,1,1,'ב חול המועד'),
		new Holiday( 18,1,1,'ג חול המועד'),
		new Holiday( 19,1,1,'ד חול המועד'),
		new Holiday( 20,1,1,'ה חול המועד'),
		new Holiday( 21,1,1,'הושענא רבה'),
		new Holiday( 22,1,1,'שמחת תורה','yomtov'),
		// כסלו
		new Holiday( 25,3,1,'חנוכה'),
		new Holiday( 26,3,1,'חנוכה'),
		new Holiday( 27,3,1,'חנוכה'),
		new Holiday( 28,3,1,'חנוכה'),
		new Holiday( 29,3,1,'חנוכה'),
		new Holiday( 30,3,1,'חנוכה'),
		// טבת
		new Holiday( 1,4,1,'חנוכה'),
		new Holiday( 2,4,1,'חנוכה'),
		new Holiday( 3,4,'CheckHanuka(g)','חנוכה'),
		new Holiday( 10,4,1,'צום עשרה בטבת','sadday'),
		// שבט
		new Holiday( 15,5,1,'ראש השנה לאילנות'),
		// אדר
new Holiday( 13,6,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),
new Holiday( 14,6,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),
new Holiday( 15,6,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),
		new Holiday( 11,6,'dow==5','תענית אסתר (מוקדם)','sadday'),
		new Holiday( 13,6,'dow!=7','תענית אסתר','sadday'),
		new Holiday( 14,6,1,'פורים'),
		new Holiday( 15,6,1,'שושן פורים'),
		new Holiday( 16,6,'dow==1','שושן פורים (משולש)'),
		// ניסן
new Holiday( 12,7,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=658144" target="_blank">מכירץ חמץ</a>','yomtov'),
new Holiday( 13,7,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=658144" target="_blank">מכירת חמץ</a>','yomtov'),
new Holiday( 14,7,1,'<a href="http://www.chabadrehovot.co.il/article.asp?AID=658144" target="_blank">מכירת חמץ</a>','yomtov'),
		new Holiday( 15,7,1,'פסח','yomtov'),
		new Holiday( 16,7,1,'א חול המועד'),
		new Holiday( 17,7,1,'ב חול המועד'),
		new Holiday( 18,7,1,'ג חול המועד'),
		new Holiday( 19,7,1,'ד חול המועד'),
		new Holiday( 20,7,1,'ה חול המועד'),
		new Holiday( 21,7,1,'שביעי של פסח','yomtov'),
		new Holiday( 26,7,'(year>1958)&&(dow==5)','יום הזכרון לשואה ולגבורה (מוקדם)','sadday'),
		new Holiday( 27,7,'(year>1958)&&(dow<6)&&(dow>1)','יום הזכרון לשואה ולגבורה','sadday'),
		new Holiday( 28,7,'(year>1958)&&(dow==2)','יום הזכרון לשואה ולגבורה (נדחה)','sadday'),
		// אייר
		new Holiday( 2,8,'(year>1948)&&(dow==4)','יום הזכרון (מוקדם)','sadday'),
		new Holiday( 3,8,'(year>1948)&&(dow==4)','יום הזכרון (מוקדם)','sadday'),
		new Holiday( 3,8,'(year>1948)&&(dow==5)','יום העצמאות (מוקדם)'),
		new Holiday( 4,8,'((year>1948)&&(year<2004)&&(dow<5))||((year>2003)&&(dow==3))','יום הזכרון','sadday'),
		new Holiday( 4,8,'year>1948&&dow==5','יום העצמאות (מוקדם)'),
		new Holiday( 5,8,'(year>1948&&year<2004&&dow<6)||(year>2003&&dow==4)','יום העצמאות'),
		new Holiday( 5,8,'year>2003&&dow==2','יום הזכרון (נדחה)','sadday'),
		new Holiday( 6,8,'year>2003&&dow==3','יום העצמאות (נדחה)'),
		new Holiday( 18,8,1,'ל"ג בעומר'),
		new Holiday( 28,8,'year>1966','יום שחרור ירושלים'),
		// סיוון
		new Holiday( 6,9,1,'שבועות','yomtov'),
		// תמוז
		new Holiday( 17,10,'dow!=7','צום שבעה עשר בתמוז','sadday'),
		new Holiday( 18,10,'dow==1','צום שבעה עשר בתמוז (נדחה)','sadday'),
		// אב
		new Holiday( 9,11,'dow!=7','צום תשעה באב','sadday'),
		new Holiday( 10,11,'dow==1','צום תשעה באב (נדחה)','sadday'),
		
		// אדר א
		new Holiday( 14,13,1,'פורים קטן'),
		new Holiday( 15,13,1,'שושן פורים קטן'),
		// אדר ב
new Holiday( 13,14,'dow!=7','<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),
new Holiday( 14,14,'dow!=7','<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),
new Holiday( 15,14,'dow!=7','<a href="http://www.chabadrehovot.co.il/article.asp?AID=1013786 " target="_blank">מתנות לאביונים</a>','yomtov'),

		new Holiday( 11,14,'dow==5','תענית אסתר (מוקדם)','sadday'),
		new Holiday( 13,14,'dow!=7','תענית אסתר','sadday'),
		new Holiday( 14,14,1,'פורים'),
		new Holiday( 15,14,1,'שושן פורים'),
		new Holiday( 16,14,'dow==1','שושן פורים (משולש)')

	) ;
 
// Computing Hebrew Date
// ---------------------
 
 /* constants, in 1/18th of minute */
 var HOUR = 1080 ;
 var DAY  = (24*HOUR) ;
 var WEEK = (7*DAY) ;
 function M(h,p) {return ((h)*HOUR+p) ; }
 var MONTH = (DAY+M(12,793)) ;
 
 /* no. of days in y years */
 function dysiz( y )
 {
	var m, nm, dw, s, l ;
 
	l = y*7+1;	/* no. of leap months */
	m = y*12+ div(l,19);	/* total no. of months */
	l %= 19 ;
	nm = m*MONTH+M(1+6,779); /* molad new year 3744 (16BC) + 6 hours */
	s = m*28+div(nm,DAY)-2;
 
	nm %= WEEK;
	dw = div(nm,DAY);
	nm %= DAY;
 
	/* special cases of Molad Zaken */
	if(l < 12 && dw==3 && nm>=M(9+6,204) ||
	 l < 7 && dw==2 && nm>=M(15+6,589))
		s++,dw++;
	/* ADU */
	if(dw == 1 || dw == 4 || dw == 6)
		s++;
	return s;
 }
 
 /*
  | compute date structure from no. of days since 1 Tishrei 3744
  */
function hdate ( d, m, y )
 {
	var h = new HebrewDate ;
	var s;
 
	if((m -= 2) <= 0)
	{
		m += 12;
		y--;
	}
	/* no. of days, Julian calendar */
	d += (365*y) + div(y,4) + div(367*m,12) + 5968 ;
	/* Gregorian calendar */
	d -= div(y,100)-div(y,400)-2;
	h.hd_dw = (d+1)%7;
 
	/* compute the year */
	y += 16;
	s = dysiz(y);
	m = dysiz(y+1);
	while(d >= m) /* computed year was underestimated */
	{
		s = m;
		y++;
		m = dysiz(y+1);
	}
	d -= s;
	s = m-s;	/* size of current year */
	y += 3744;
 
	h.hd_flg = s%10-4;
 
	/* compute day and month */
	if(d >= s-236) {	/* last 8 months are regular */
		d -= s-236;
		m = div(d*2,59) ;
		d -= div((m*59+1),2);
		m += 4;
		if(s>365 && m<=5)	/* Adar of Meuberet */
			m += 8;
	} else {
		/* first 4 months have 117-119 days */
		s = 114+s%10;
		m = div(d*4,s);
		d -= div((m*s+3),4) ;
	}
 
	h.hd_day = d;
	h.hd_mon = m;
	h.hd_year = y;
	h.hd_leap = ( s > 365 ) ;
	return h ;
 }
 
// HebrewDate object
// -----------------
 
function HDHoliday()
{
	var dow = this.hd_dw + 1 ;
	var year = this.gregorian.getFullYear() ;
	var g = this.gregorian ;
 
	// Summer time
	var sSummer = ( dow==6 && year>2004 && ((g.getMonth()==3 && g.getDate()==1)||(g.getMonth()==2 && g.getDate() >25)) ) ?
		'<span class="info">שעון קיץ</span>' : '' ;
 
	var i ;
	for ( i = 0 ; i < Holidays.length ; i++ )
	{
		if ( Holidays[i].month == this.hd_mon+1 && Holidays[i].day == this.hd_day+1 && eval(Holidays[i].condition))
		{
			if(sSummer) Holidays[i].description += '<br>' + sSummer ;
			return Holidays[i] ;
		}
	}
	return sSummer ;
}
 
function HDToString()
{
	var monthes = new Array( 'תשרי','חשון','כסלו','טבת','שבט','אדר','ניסן','אייר','סיון','תמוז','אב','אלול','אדר א\'' , 'אדר ב\'') ;
	var s = this.format ;
	s = s.replace ( 'DD', Gimatria(this.hd_day+1) ) ;
	s = s.replace ( 'MM', monthes[this.hd_mon] ) ;
	s = s.replace ( 'YYYY', Gimatria(this.hd_year) ) ;
	return s ;
}
 
function HDGtoH(d)
{
	var h = hdate( d.getDate(), d.getMonth()+1, d.getFullYear() ) ;
	this.hd_day = h.hd_day ;
	this.hd_mon = h.hd_mon ;
	this.hd_year = h.hd_year ;
	this.hd_leap = h.hd_leap ;
	this.hd_dw = h.hd_dw ;
	this.hd_flg = h.hd_flg ;
	this.gregorian = d ;
}
 
function HDSetDate(n)
{
	this.gregorian.setDate( n + (this.gregorian.getDate() - this.hd_day ) ) ;
	this.convertGregorian( this.gregorian ) ;
}
 
// HebrewDate constructor
function HebrewDate()
{
	this.hd_day = 0 ;
	this.hd_mon = 0 ;
	this.hd_year = 0 ;
	this.hd_leap = 0 ;
	this.hd_dw = 0 ;
	this.hd_flg = 0 ;
	this.format = 'DD MM YYYY' ;
	this.toString = HDToString ;
	this.convertGregorian = HDGtoH ;
	this.getHoliday = HDHoliday ;
	this.gregorian = new Date() ;
	this.setDate = HDSetDate ;
}
 
////////////////////////////////////////////////////////////////////////////////////////////////////
// End of hdate.js
////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
// This calendar specific functions
// --------------------------------
function DisplayHoliday( h )
{
	if (!h) return '' ;
	return '<br><span class="' + h.holiday_type + '">' + h + '</span>' ;
	return '' ;
}
 
function StartUp()
{
	var h = new HebrewDate ;
	Date.prototype.toString = function() {
		return 'D' + this.getFullYear()+'-'+this.getMonth()+'-'+this.getDate() ;}
	var d = new Date ;
 
 
	var themonth = d.getMonth() + 1 ;
	var theyear = d.getFullYear() ;
 
	// Show todays date
	h.convertGregorian(d) ;
	document.getElementById('today').innerHTML = h ;
	var holiday = h.getHoliday() ;
	if ( holiday ) document.getElementById('today').innerHTML += ', ' + holiday ;
 
	// Read command line (query string)
	var sLocation = String(location) ;
	var mStart = sLocation.indexOf("month=")
 
	if ( mStart >= 0 )
	{
		var tmp = sLocation.slice( mStart+6, mStart+8) ;
		if ( tmp.charAt(1) == "&" || tmp.charAt(1) == "%" ) tmp=tmp.charAt(0) ;
		if ( !isNaN( tmp )) themonth=Number(tmp) ;
	}
 
	var yStart = sLocation.indexOf("year=")
	if ( yStart >= 0 )
	{
		var tmp = sLocation.slice(yStart+5,yStart+9)
		if ( !isNaN( tmp )) theyear=Number(tmp) ;
	}
 
	if ( theyear < 100 )
	{
		alert ( "לא ניתן לצפות בשנים מתחת למאה לספירה" )
		theyear = 100 ;
	}
 
	document.forms[0].year.value=theyear ;
	document.forms[0].month.value=themonth ;
 
	d.setDate(1) ;
	d.setMonth(themonth-1) ;
	d.setYear(theyear) ;
 
	document.getElementById('georgian_title').innerHTML = document.forms[0].month.options[themonth-1].innerHTML + ' ' +  theyear ;
 
	h.format = 'MM - ' ;
	h.convertGregorian(d) ;
	// Can be two Hebrew monthes
	var nFirstHebrewMonth = h.hd_mon ;
	var sFirstHebrewMonth = h.toString() ;
	h.format = 'MM YYYY' ;
	d.setMonth( themonth ) ; // means next month!
	d = new Date(d.getTime() - 24*60*60*1000); // Last day in this month
	h.convertGregorian(d) ;
 
	document.getElementById('hebrew_title').innerHTML = h.hd_mon == nFirstHebrewMonth ? h : sFirstHebrewMonth + h ;
 
	d.setDate(1) ;
	d.setMonth(themonth-1) ;
 
	var row = 1 ;
	h.format = 'DD MM' ;
	var now = new Date();

	while ( d.getMonth() == themonth-1 )
	{
		h.convertGregorian(d) ;
                         if (now.getDate() == d.getDate() && now.getMonth() == d.getMonth()  && now.getYear() == d.getYear() ) {
				document.getElementById('cal').rows[row].cells[d.getDay()].style.border = "2px solid #333";
			}
		document.getElementById('cal').rows[row].cells[d.getDay()].innerHTML =
			 '<span class="number">' + d.getDate() + '</span><br>' + h + DisplayHoliday(h.getHoliday()) +
			 '<div id="' + d.toString() + '" onblur="SaveContent(this,\'' + d.toString() + '\')" class="personal" CONTENTEDITABLE></div>';
		{
			 var personaltext = document.getElementById(d) ;
			 if ( personaltext.style.behavior >= ''  )
			 {
				 personaltext.load(d) ;
				 var pt = personaltext.getAttribute("sPersistText") ;
				 if ( pt ) 	personaltext.innerText = pt ;
  			 personaltext.defaultValue = personaltext.innerText ;
				 document.getElementById('cal').rows[row].cells[d.getDay()].edit = d.toString() ;
				 document.getElementById('cal').rows[row].cells[d.getDay()].attachEvent('onclick',SetFocusToEdit);
 
//				 document.getElementById('cal').rows[row].cells[d.getDay()].attachEvent('onclick',function(){document.getElementById(this.edit).fucus();});
			 }
		}
 
		if (d.getDay() == 6) row++ ;
		d.setDate( d.getDate()+1 ) ;
	}
 
	if ( h.hd_dw == 6 ) row-- ;
	for ( ; row < 6 ; row ++ )
		document.getElementById('cal').rows[row+1].style.display = 'none' ;
 
}
 
function SetFocusToEdit()
{
	var td = event.srcElement ;
	while ( td.tagName != 'TD' ) td = td.parentNode ;
	document.getElementById(td.edit).focus() ;
}
 
function SaveContent(o,d)
{
	if ( o.innerText != o.defaultValue )
	{
			o.setAttribute ("sPersistText", o.innerText ) ;
			o.save(d) ;
	}
}
 
function NextPrev(ym,delta)
{
	var obj = (ym == 'y') ? document.forms[0].year : document.forms[0].month ;
	//alert ( Number(obj.value) + delta ) ;
	if ( ym=='m' && Number(obj.value) + delta <= 0 )
	{
		obj.value = 12 ;
		document.forms[0].year.value--;
	}
	else
	if ( ym=='m' && Number(obj.value) + delta > 12 )
	{
		obj.value = 1 ;
		document.forms[0].year.value++;
	}
	else obj.value = Number(obj.value) + delta ;
	document.forms[0].submit();
}