// The Tibetan calendar for 2005 //Phukluk var cal = new Array( "2000/02/06*11-30+", "2000/03/07+04-", "2000/04/05*09-22+", "2000/05/05*03-", "2000/06/03*06-18+29-", "2000/07/02*", "2000/08/01*02-14+24-", "2000/08/30*27-", "2000/09/28*10+21-", "2000/10/28*25-", "2000/11/26*04+18-", "2000/12/26*08+12-", "2001/01/25*17-29+", "2001/02/24*12-", "2001/03/25*17-22+", "2001/04/24*10-26+", "2001/05/24*03-", "2001/06/22*06-22+28-", "2001/07/21*10-12+", "2001/08/20*02-19+24-", "2001/09/18*05-09+28-", "2001/10/17*14+21-", "2001/11/16*25-", "2001/12/15*07+20-", "2002/01/14*26-28+", "2002/02/13*19-", "2002/03/14*02+13-", "2002/04/13*17-26+", "2002/05/13*10-", "2002/06/11*13-21+", "2002/07/11*06-", "2002/08/09*09-18+", "2002/09/08*02-", "2002/10/07*05-13+28-", "2002/11/05*19+20-", "2002/12/05+03-06+26-", "2003/01/03*10+21-", "2003/02/02*26-", "2003/03/03*02+20-", "2003/04/02*06+13-", "2003/05/02*17-30+", "2003/06/01*10-", "2003/06/30*13-26+", "2003/07/30*06-", "2003/08/28*09-23+", "2003/09/27*02-", "2003/10/26*05-17+29-", "2003/11/24*", "2003/12/24*04-10+28-", "2004/01/22*13+22-", "2004/02/21*27-", "2004/03/21*05+20-", "2004/04/20*10+13-25-28+", "2004/05/20*17-", "2004/06/18*04+10-22-24+", "2004/07/18*13-", "2004/08/16*02+05-16-22+", "2004/09/15*09-27+", "2004/10/15*01-14-16+", "2004/11/13*06-21+30-", "2004/12/12*", "2005/01/11*05-13+29-", "2005/02/09*16+23-", "2005/03/11*27-", "2005/04/09*09+21-", "2005/05/09*25-", "2005/06/07*03+18-", "2005/07/07*20-30+", "2005/08/06+13-", "2005/09/04*16-26+", "2005/10/04*09-", "2005/11/02*13-20+", "2005/12/02*07-24+", "2006/01/01*01-", "2006/01/30*06-16+30-", "2006/02/28*19+23-", "2006/03/30*28-", "2006/04/28*12+22-", "2006/05/28*25-", "2006/06/26*08+18-", "2006/07/26*20-", "2006/08/24*05+13-", "2006/09/23*16-30+", "2006/10/23*10-", "2006/11/21*14-24+", "2006/12/21*08-27+", "2007/01/20*01-", "2007/02/18*07-19+", "2007/03/20*01-", "2007/04/18*05-12+29-", "2007/05/17*17+21-", "2007/06/16*03-07+25-", "2007/07/15*14+16-28-", "2007/08/13*04+20-", "2007/09/12*24-29+", "2007/10/12*17-", "2007/11/10*04+10-", "2007/12/10*15-27+", "2008/01/09*09-", "2008/02/07*15-18+", "2008/03/08*08-22+", "2008/04/07*02-", "2008/05/06+06-16+29-", "2008/06/04*", "2008/07/04*02-12+25-", "2008/08/02*27-", "2008/08/31*09+20-", "2008/09/30*24-", "2008/10/29*03+17-", "2008/11/28*23-26+", "2008/12/28*16-30+", "2009/01/27*10-", "2009/02/25*15-21+", "2009/03/27*09-25+", "2009/04/26*02-", "2009/05/25*06-20+29-", "2009/06/23*", "2009/07/23*02-17+24-", "2009/08/21*27-", "2009/09/19*13+20-", "2009/10/19*24-", "2009/11/17*07+18-", "2009/12/17*23-29+", "2010/01/16*17-" ); //Tsurluk var cal2 = new Array( "2000/02/06*11-28+", "2000/03/07*05-", "2000/04/05*09-22+", "2000/05/05*03-", "2000/06/03*06-17+29-", "2000/07/02*", "2000/08/01*02-14+25-", "2000/08/30*28-", "2000/09/28*09+21-", "2000/10/28+25-", "2000/11/26*03+19-", "2000/12/26*06+13-", "2001/01/25*18-28+", "2001/02/24*12-", "2001/03/25*02+05-18-20+", "2001/04/24*10-26+", "2001/05/24*03-", "2001/06/22*06-22+29-", "2001/07/21*", "2001/08/20*02-18+24-", "2001/09/18*28-", "2001/10/17*13+22-", "2001/11/16*26-", "2001/12/15*06+20-", "2002/01/14*10+14-", "2002/02/13*19-", "2002/03/14*01+13-", "2002/04/13*17-25+", "2002/05/13*10-", "2002/06/11*14-21+", "2002/07/11*06-", "2002/08/09*09-17+", "2002/09/08*02-", "2002/10/07*05-13+29-", "2002/11/05*17+22-", "2002/12/05*27-", "2003/01/03*09+21-", "2003/02/02*27-30+", "2003/03/04*20-", "2003/04/02*05+14-", "2003/05/02*17-29+", "2003/06/01*11-", "2003/06/30+13-26+", "2003/07/30*06-", "2003/08/28*09-22+", "2003/09/27*02-", "2003/10/26*06-16+29-", "2003/11/24*", "2003/12/24*05-09+28-", "2004/01/22*12+23-", "2004/02/21*27-", "2004/03/21*04+21-", "2004/04/20*09+14-", "2004/05/20*18-", "2004/06/18*04+10-", "2004/07/18*13-", "2004/08/16*01+05-17-20+", "2004/09/15*09-26+", "2004/10/15*02-", "2004/11/13*06-20+30-", "2004/12/12*", "2005/01/11*05-12+29-", "2005/02/09*15+24-", "2005/03/11*28-", "2005/04/09*08+21-", "2005/05/09*25-", "2005/06/07*03+18-", "2005/07/07*21-29+", "2005/08/06*13-", "2005/09/04*16-25+", "2005/10/04*10-", "2005/11/02*14-19+", "2005/12/02*07-23+", "2006/01/01*01-", "2006/01/30*06-15+", "2006/03/01+01-18+24-", "2006/03/30*28-", "2006/04/28*12+22-", "2006/05/28*25-", "2006/06/26*07+18-", "2006/07/26*20-", "2006/08/24*04+13-", "2006/09/23*17-29+", "2006/10/23*10-", "2006/11/21*14-23+", "2006/12/21*08-26+", "2007/01/20*02-", "2007/02/18*07-18+", "2007/03/20*02-", "2007/04/18*06-11+29-", "2007/05/17*16+22-", "2007/06/16*04-05+25-", "2007/07/15*13+17-28-", "2007/08/13*03+20-", "2007/09/12*09+12-25-28+", "2007/10/12*17-", "2007/11/10*03+11-", "2007/12/10*15-26+", "2008/01/09*10-29+", "2008/02/08*03-", "2008/03/08*08-21+", "2008/04/07*02-", "2008/05/06*06-15+29-", "2008/06/04*", "2008/07/04*02-11+25-", "2008/08/02*28-", "2008/08/31*08+21-", "2008/09/30*24-", "2008/10/29*03+18-", "2008/11/28+07+11-", "2008/12/28*16-29+", "2009/01/27*11-", "2009/02/25*16-20+", "2009/03/27*09-25+", "2009/04/26*03-", "2009/05/25*06-20+29-", "2009/06/23*", "2009/07/23*02-16+25-", "2009/08/21*28-", "2009/09/19*12+21-", "2009/10/19*25-", "2009/11/17*06+19-", "2009/12/17*24-28+", "2010/01/16*18-" ); var annual = new Array ( "01/01*Losar", "01/14*Milarepa Day", "04/07*Buddha's Birth", "04/15*Buddha's Enlightenment and Parinirvana", "06/04*Buddha's First Sermon", "09/22*Buddha's Return From Heaven" ); var monthly = new Array ( "08*Medicine Buddha Day", "10*Guru Rinpoche Day", "15*Full Moon", "25*Dakini Day", "29*Protectors Day", "30*New Moon" ); function slash(date) { var daystr = ""; for (var i=date.length-1; i >=0; i --) { if (daystr) daystr = daystr + "/" if (date[i] < 10) daystr = daystr + "0"; daystr = daystr + date[i]; } return daystr; } function makeOrdinal (nr) { var suffix = new Array ("th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"); var str; if (nr >= 0) { str = ""; } else { str = "2nd "; nr = -nr; } if (nr == 11 || nr == 12 || nr == 13) { str = str + nr + "th"; } else { str = str + nr + suffix[nr%10]; } return str; } function unslash (slashed) { var date = slashed.split("/"); return new Array ( parseInt(date[2],10), parseInt(date[1],10), parseInt(date[0],10)); } function lookup(cal, daystr) { var n = daystr.length; for (i = 0; i < cal.length; i ++) { if (cal[i].substr(0, n) > daystr) { return i-1; } } return -1; } function dayNumber(date) { date[2] = date[2] - 1900; var day = Math.floor(365.25 * date[2]) + Math.floor(30.55 * (date[1] + 2)) + date[0] - 91; if (date[1] > 2) { if (date[2] && date[2] % 4 == 0) { day = day - 1; } else { day = day - 2; } } return day; } function calcTibetanDate (cal, date) { var daystr = slash(date); var i = lookup(cal, daystr); var m = 0; var d = 0; if (i >= 0) { for (var j=0; j= 0 && cal[i].substr(0,n) == daystr) { daystr = cal[i].substr(n+1); } else { daystr = "" } return daystr } function strTibetanDate(tdate) { var str = ""; if (tdate[0]) { str = makeOrdinal(tdate[0]) + " day of the "; str = str + makeOrdinal(tdate[1]) + " month"; var hday = holiday (annual, tdate); if (hday) { str = str + "
\n" + hday; } else { td = new Array (1); td[0] = tdate[0]; hday = holiday (monthly, td); if (hday) { str = str + "
\n" + hday; } } } return str; } function getTibetanDate (mode, name) { var time; if (arguments.length < 2) { time = new Date(); } else { time = new Date(name); } var date = new Array (time.getDate(), time.getMonth()+1, time.getFullYear()); var tdate; if (mode == "t") { tdate = calcTibetanDate (cal2, date); // Tsurluk } else { tdate = calcTibetanDate (cal, date); // Phukluk } var tname = strTibetanDate (tdate); return tname; }