var firstVisit;function CheckTop(){var loaded=true;firstVisit=true;LoadCalendar(parent.DefaultCalSource);}
var Year;var Easter;var DominicalLetter;var GoldenNumber;var Offset;var LeapDomLet;var WeekDayOffset;var debugWindow;var CalendarName;var CalendarSource;var CalendarCreator;var CalendarCreatorEmail;var CalendarNotes=new Array;var WeekDayName=new Array;var MonthName=new Array;var MonthAbbr=new Array;var LatDayName=new Array;var TopFeastClass;var FeastClassTextColor="white";var FeastClassColor=new Array;var FeastClassName=new Array;var Sept;var Sex;var Quin;var Quad=new Array;var Pass;var Palm;var Easter;var Pascha=new Array;var Ascen;var Pent;var Trinity;var TrinSun=new Array;var Advent=new Array;var Epiph=new Array;var Shrove;var Ash;var GoodFri;var Ascension;var CorpusC;var Ember=new Array;var YearData=new Array(2);YearData[false]=new Object;YearData[true]=new Object;YearData[false].MonthSt=new Array(0,1,32,60,91,121,152,182,213,244,274,305,335,366);YearData[false].MonthLength=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);YearData[true].MonthSt=new Array(0,1,32,61,92,122,153,183,214,245,275,306,336,367);YearData[true].MonthLength=new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);var LeapYear=true;function CreateYearArray(){if(typeof(YearArray)!="undefined"){delete YearArray;}
YearArray=new Array(366);for(i=1;i<=366;i++)
YearArray[i]=new DayOfYear(i);}
CreateYearArray();function DayOfYear(d){this.d=d;I=12;this.Mon=0;while(this.Mon==0){if(d>=YearData[LeapYear].MonthSt[I]){this.Mon=I;this.Day=d-YearData[LeapYear].MonthSt[I]+1;}
I--;}}
EasterTable=new Array(20)
for(i=1;i<=19;i++){EasterTable[i]=new Array(2)}
EasterTable[1][0]=5
EasterTable[1][1]=16
EasterTable[2][0]=1
EasterTable[2][1]=5
EasterTable[3][0]=6
EasterTable[3][1]=24
EasterTable[4][0]=2
EasterTable[4][1]=13
EasterTable[5][0]=5
EasterTable[5][1]=2
EasterTable[6][0]=3
EasterTable[6][1]=21
EasterTable[7][0]=6
EasterTable[7][1]=10
EasterTable[8][0]=4
EasterTable[8][1]=29
EasterTable[9][0]=7
EasterTable[9][1]=18
EasterTable[10][0]=3
EasterTable[10][1]=7
EasterTable[11][0]=1
EasterTable[11][1]=26
EasterTable[12][0]=4
EasterTable[12][1]=15
EasterTable[13][0]=7
EasterTable[13][1]=4
EasterTable[14][0]=5
EasterTable[14][1]=23
EasterTable[15][0]=1
EasterTable[15][1]=12
EasterTable[16][0]=4
EasterTable[16][1]=1
EasterTable[17][0]=2
EasterTable[17][1]=20
EasterTable[18][0]=5
EasterTable[18][1]=9
EasterTable[19][0]=3
EasterTable[19][1]=28
DomLetTable=new Array(1,6,5,4,3,1,7,6,5,3,2,1,7,5,4,3,2,7,6,5,4,2,1,7,6,4,3,2);DomLetName=new Array("X","A","B","C","D","E","F","G")
Advent=new Array(5)
Epiph=new Array(7)
Quad=new Array(5)
Pascha=new Array(7)
TrinSun=new Array(28)
Ember=new Array(13)
function AdjustYear(newStatus){with(YearData[LeapYear]){if(newStatus!=LeapYear){if(LeapYear){HoldDay=YearArray[MonthSt[3]-1];for(i=MonthSt[3]-1;i<MonthSt[13]-1;i++){YearArray[i]=YearArray[i+1];YearArray[i].d=i;}
YearArray[366]=HoldDay;}
else{HoldDay=YearArray[366];for(i=MonthSt[13];i>MonthSt[3];i--){YearArray[i]=YearArray[i-1];YearArray[i].d=i;}
YearArray[MonthSt[3]]=HoldDay;}
LeapYear=newStatus;}}}
MonthNo=new Array(0,5,5,7,5,7,5,7,5,5,7,5,5);RomanNumeral=new Array("","i","ii","iii","iv","v","vi","vii","viii","ix","x","xi","xii","xiii","xiv","xv","xvi","xvii","xviii","xix","xx");function ConvertDate(x){var Day;var Mon;var I;var Temp;if(x<1000){I=12;Mon=0;while(Mon==0){if(x>=YearData[LeapYear].MonthSt[I]){Mon=I;Day=x-YearData[LeapYear].MonthSt[I]+1;}
I=I-1;}
return MonthAbbr[Mon]+' '+Day;}
else{if(x==1000){return"(?)";}
else{return MonthAbbr[x-1000];}}}
function WeekDay(d){x=d%7;if(x==0)x=7;x=x+WeekDayOffset;if(x>7)x-=7;if(x<1)x+=7;return(x);}
function MovableFeast(name,r){this.Name=name;if(typeof(r)!="undefined"){this.Rank=r;}
else{this.Rank=Math.round(TopFeastClass/2);}}
function ImmovableFeast(name,r,y){this.Name=name;if(typeof(r)!="undefined"){this.Rank=r;}
else{this.Rank=Math.round(TopFeastClass/2);}
if(typeof(y)!="undefined"){this.YearStart=y;}
else{this.YearStart=0;}}
function DateString(){return(MonthAbbr[this.Mon]+" "+this.Day);}
function ComposeName(){var s="";if(typeof(this.Movable)!="undefined"){if(typeof(this.Movable.Name)!="undefined"){s+=this.Movable.Name;}}
if(typeof(this.Immovable)!="undefined"){if(typeof(this.Movable)!="undefined"){s+="<br>";}
s+=this.Immovable.Name;}
return(s);}
function ComposeHint(){var s="";s=this.DateString();if(typeof(this.Movable)!="undefined"){if(typeof(this.Movable.Name)!="undefined"){s+=": "+this.Movable.Name+" ("+FeastClassName[this.Movable.Rank]+")";}}
if(typeof(this.Immovable)!="undefined"){if(typeof(this.Movable)!="undefined"){s+="; ";}
else{s+=": ";}
s+=this.Immovable.Name+" ("+FeastClassName[this.Immovable.Rank]+")";}
return(s);}
function SetMovable(f){this.Movable=new MovableFeast(f.Name,f.Rank);f.d=this.d;}
function KillMovable(){if(typeof(this.Movable)!="undefined")delete this.Movable;}
function SetImmovable(s,r,y){if(typeof(this.Immovable)=="undefined"){this.Immovable=new ImmovableFeast(s,r,y);}}
function PutSunday(){var otext="<tr>";otext=otext+"<td>"+this.Movable.Name+"</td><td>"+this.DateString()+"</td>";otext=otext+"</tr>";return(otext);}
DayOfYear.prototype.Name=ComposeName;DayOfYear.prototype.Hint=ComposeHint;DayOfYear.prototype.KillMovable=KillMovable;DayOfYear.prototype.SetMovable=SetMovable;DayOfYear.prototype.SetImmovable=SetImmovable;DayOfYear.prototype.DateString=DateString;DayOfYear.prototype.PutSunday=PutSunday;function MakeImmovableFeast(s,d,m,r,y){YearArray[YearData[LeapYear].MonthSt[m]+d-1].SetImmovable(s,r,y);}
function SetDate(Offset){return(Easter.d+Offset);}
function calcEmbers(d,x){i=4-WeekDay(d);if(i<1)i+=7;YearArray[d+i].SetMovable(Ember[x++]);YearArray[d+i+2].SetMovable(Ember[x++]);YearArray[d+i+3].SetMovable(Ember[x]);}
function calcEaster(){for(i=1;i<=366;i++){YearArray[i].KillMovable();}
AdjustYear(Year%4==0);SeptOffset=-63;SexOffset=-56;QuinOffset=-49;PassOffset=-14;PalmOffset=-7;PentOffset=49;TrinOffset=56;QuadOffsetRoot=-42;PaschaOffsetRoot=7;TrinOffsetRoot=63;DominicalLetter=DomLetTable[(Year+9)%28];if(Year>1582)DominicalLetter=(DominicalLetter+10)%7;if(DominicalLetter==0)
DominicalLetter=7;if(LeapYear){LeapDomLet=DominicalLetter+1;if(LeapDomLet==8)
LeapDomLet=1;}
else LeapDomLet=DominicalLetter;WeekDayOffset=8-((LeapYear)?LeapDomLet:DominicalLetter);if(WeekDayOffset==7)WeekDayOffset=0;GoldenNumber=(Year+1)%19;if(GoldenNumber==0)
GoldenNumber=19;Offset=((LeapYear)?LeapDomLet:DominicalLetter)-EasterTable[GoldenNumber][0];if(Offset<0)Offset+=7;YearArray[(EasterTable[GoldenNumber][1]+Offset+80)].SetMovable(Easter);AdvOffset=9-((LeapYear)?LeapDomLet:DominicalLetter);if(AdvOffset==8)AdvOffset=1;AdvOffsetRoot=359-AdvOffset;for(I=4;I>=1;I--){YearArray[AdvOffsetRoot].SetMovable(Advent[I]);AdvOffsetRoot-=7;}
YearArray[SetDate(SeptOffset)].SetMovable(Sept);YearArray[SetDate(SexOffset)].SetMovable(Sex);YearArray[SetDate(QuinOffset)].SetMovable(Quin);YearArray[SetDate(PassOffset)].SetMovable(Pass);YearArray[SetDate(PentOffset)].SetMovable(Pent);YearArray[SetDate(TrinOffset)].SetMovable(Trinity);YearArray[SetDate(PalmOffset)].SetMovable(Palm);EpiphOffset=LeapDomLet-6;if(EpiphOffset<=0)EpiphOffset+=7;EpiphOffsetRoot=6+EpiphOffset;for(I=1;I<=6;I++){if(EpiphOffsetRoot>=Sept.d){Epiph[I].d=-1;}
else{YearArray[EpiphOffsetRoot].SetMovable(Epiph[I]);}
EpiphOffsetRoot+=7;}
QuadOffset=QuadOffsetRoot;for(I=1;I<=4;I++){YearArray[SetDate(QuadOffset)].SetMovable(Quad[I]);QuadOffset+=7;}
PaschaOffset=PaschaOffsetRoot;for(I=1;I<=6;I++){YearArray[SetDate(PaschaOffset)].SetMovable(Pascha[I]);PaschaOffset+=7;}
TrinSunOffset=TrinOffsetRoot;for(I=1;I<=27;I++){if(SetDate(TrinSunOffset)>=Advent[1].d){TrinSun[I].d=-1;}
else{YearArray[SetDate(TrinSunOffset)].SetMovable(TrinSun[I]);}
TrinSunOffset+=7;}
YearArray[Easter.d-47].SetMovable(Shrove);YearArray[Easter.d-46].SetMovable(Ash);YearArray[Easter.d-2].SetMovable(GoodFri);YearArray[Easter.d+39].SetMovable(Ascension);YearArray[Trinity.d+4].SetMovable(CorpusC);calcEmbers(Quad[1].d,1);calcEmbers(Pent.d,4);with(YearData[LeapYear]){calcEmbers(MonthSt[9]+13,7);calcEmbers(MonthSt[12]+12,10);}}
function Indiction(){var x;x=(Year-312)%15;if(x==0)x=15;return(x);}
function ShowSundays(){var oCalData=document.getElementById("caldata");var otxt="";otxt="<p><b>Sundays of the Year "+Year;if(LeapYear)
otxt=otxt+" (Leap Year)";otxt=otxt+"</b></p>";otxt=otxt+"<p>";otxt=otxt+"Dominical Letter: "+DomLetName[DominicalLetter]+"; ";otxt=otxt+"Golden Number: "+GoldenNumber+"; ";otxt=otxt+"Indiction "+Indiction();otxt=otxt+"</p>";otxt=otxt+"<table class=caltab border=0 cellpadding=0 cellspacing=0>";for(I=1;I<=6;I++){if(Epiph[I].d>0){otxt=otxt+YearArray[Epiph[I].d].PutSunday();}}
otxt=otxt+YearArray[Sept.d].PutSunday();otxt=otxt+YearArray[Sex.d].PutSunday();otxt=otxt+YearArray[Quin.d].PutSunday();for(I=1;I<=4;I++){otxt=otxt+YearArray[Quad[I].d].PutSunday();}
otxt=otxt+YearArray[Pass.d].PutSunday();otxt=otxt+YearArray[Palm.d].PutSunday();otxt=otxt+YearArray[Easter.d].PutSunday();for(I=1;I<=6;I++){otxt=otxt+YearArray[Pascha[I].d].PutSunday();}
otxt=otxt+YearArray[Pent.d].PutSunday();otxt=otxt+YearArray[Trinity.d].PutSunday();for(I=1;I<=27;I++){if(TrinSun[I].d>0){otxt=otxt+YearArray[TrinSun[I].d].PutSunday();}}
for(I=1;I<=4;I++){otxt=otxt+YearArray[Advent[I].d].PutSunday();}
otxt=otxt+"</table>";otxt=otxt+'<p>Produced by the Medieval Calendar Calculator, <a href="http://www.wallandbinkley.com/mcc/" target="_blank">http://www.wallandbinkley.com/mcc/</a>, &copy; 1999 Peter Binkley; may be freely distributed and reproduced.</p>';oCalData.innerHTML=otxt;}
function YearOK(y){Year=parseInt(y,10);if((Year<1)|(Year>2000))Year=0;return(Year!=0);}
function ShowMonth(month,xday,formtype){function RomCal(d){var NStr,DStr,MStr;if(d>(MonthNo[month]+8)){if(LeapYear&&(month==2)&&(d<25)){if(d==24)NStr='bis '+RomanNumeral[6];else NStr=RomanNumeral[30-d];}
else NStr=RomanNumeral[YearData[LeapYear].MonthLength[month]+2-d];DStr='Kal.';MStr=MonthAbbr[month+1];}
else if(d>MonthNo[month]){NStr=RomanNumeral[MonthNo[month]+9-d];DStr='Id.';MStr=MonthAbbr[month];}
else if(d>1){NStr=RomanNumeral[MonthNo[month]+1-d];DStr='Non.';MStr=MonthAbbr[month];}
else{NStr='';DStr='Kalendae';MStr=MonthAbbr[month];}
if(NStr==RomanNumeral[1]){NStr='';if(DStr=='Non.')DStr='Nonae';else if(DStr=='Id.')DStr='Idus';}
else if(NStr==RomanNumeral[2])NStr='Prid.';return(NStr+' '+DStr+' '+MStr);}
function HandleFeast(x,rank){var otext="";FeastName=YearArray[x].Name(formtype);var OverTxt='window.status="'+YearArray[x].Hint()+'";';var OutTxt='window.status=""; return true';otext="<A href='' class='feast' onMouseOver='"+OverTxt+"return true'"+" onMouseOut='"+OutTxt+"' onClick='return false;"+"' onDblClick='return false;'>";SpecialDay=true;return(otext);}
function PutDay(d,m){var x;var otext="";FeastName="";x=d+YearData[LeapYear].MonthSt[m]-1;if(xday==d)
otext=otext+"<td style='border: 1px solid red'>";else
otext=otext+"<td>";if(typeof(YearArray[x].Movable)!="undefined"&&(typeof(YearArray[x].Immovable)!="undefined")&&(YearArray[x].Immovable.YearStart<=Year)){with(YearArray[x]){otext=otext+HandleFeast(x,(Movable.Rank<Immovable.Rank)?Movable.Rank:Immovable.Rank);}}
else if(typeof(YearArray[x].Movable)!="undefined"){otext=otext+HandleFeast(x,YearArray[x].Movable.Rank);}
else if((typeof(YearArray[x].Immovable)!="undefined")&&(YearArray[x].Immovable.YearStart<=Year)){otext=otext+HandleFeast(x,YearArray[x].Immovable.Rank);}
else{SpecialDay=false;}
otext=otext+d+"<br>";if(formtype){otext=otext+RomCal(d);}
if(SpecialDay)
otext=otext+"</a>";otext=otext+"</td>";return(otext);}
function PutBlankDay(){var otext="";otext='<td bgcolor=white>&nbsp;<br></td>';return(otext);}
var otxt="";var stx="";var oCalData=document.getElementById("caldata");var FeastName;month=Number(month);if(formtype){var nextyear=Year;var prevyear=Year;var nextmonth=month+1;var prevmonth=month-1;if(nextmonth==13){nextyear=Year+1;nextmonth=1;}
if(prevmonth==0){prevyear=Year-1;prevmonth=12;}
var rex="";var rexyear="";if(Year>877&&Year<889){if(Year<880){if(Year==879&&month>4){rexyear=1;rex="Hludowici et Carlomanni";}
else{rex="Hludowici";rexyear=Year-877;if(month>10)
rexyear=rexyear+1;}
rexyear2=Year-876;if(month>8)
rexyear2=rexyear2+1;rex=rex+" et "+rexyear2+" Carlomanni et Hludowici et Caroli";}
else if(Year<881){rex="Hludowici et Carlomanni";rexyear=Year-879;if(month>4)
rexyear=rexyear+1;rexyear2=Year-876;if(month>8)
rexyear2=rexyear2+1;if(Year==880&&month>11)
rex=rex+" et "+rexyear2+" Hludowici et Caroli";else
rex=rex+" et "+rexyear2+" Carlomanni et Hludowici et Caroli";}
else if(Year<883){rexyear=Year-879;if(month>4)
rexyear=rexyear+1;rexyear2=Year-876;if(month>8)
rexyear2=rexyear2+1;if(Year==882&&month>8)
rex="Carlomanni";else
rex="Hludowici et Carlomanni";if(Year==882&&month>1)
rex=rex+" et "+rexyear2+" Caroli";else
rex=rex+" et "+rexyear2+" Hludowici et Caroli";}
else if(Year<885){rexyear=Year-879;if(month>4)
rexyear=rexyear+1;rexyear2=Year-876;if(month>8)
rexyear2=rexyear2+1;rex="Carlomanni";rex=rex+" et "+rexyear2+" Caroli";}
else if(Year>884){if(Year==888&&month>1){;}
else{rex="Caroli";rexyear=Year-876;if(month>8)
rexyear=rexyear+1;}}}
else if(Year>840&&Year<878){rexyear=Year-840;if(month>6)
rexyear=rexyear+1;if(Year<856){if(Year==855&&month>9){rex="Hludovici et Caroli";rexyear2=1;rex=rex+" et "+rexyear2+" Hlothari iunior";}
else
rex="Hlothari et Hludovici et Caroli";}
else if(Year<870){if(Year==869&&month>8){rex="Hludovici et Caroli";}
else{rexyear2=Year-855;if(month>9)
rexyear2=rexyear2+1;rex="Hludovici et Caroli";rex=rex+" et "+rexyear2+" Hlothari iunior";}}
else if(Year<877){if(Year==876&&month>8){rex="Caroli";rexyear2=1;rex=rex+" et "+rexyear2+" Carlomanni et Hludovici et Caroli";}
else{rex="Hludovici et Caroli";}}
else{if(Year==877&&month>10){rexyear=1;rex="Hludowici";}
else{rex="Caroli";}
rexyear2=1;if(month>8)
rexyear2=rexyear2+1;rex=rex+" et "+rexyear2+" Carlomanni et Hludovici et Caroli";}}
else if(Year>814&&Year<841){if(Year==840&&month>6){rex="Hlothari et Hludovici et Caroli";rexyear=1;}
else{rexyear=Year-814;rex="Hludovici";if(month>1)
rexyear=rexyear+1;}}
else if(Year>771){if(Year==814&&month>1){rex="Ludovicus";rexyear=1;}
else{rexyear=Year-768;rex="Caroli";if(month>=10)
rexyear=rexyear+1;}}
else if(Year>768){rexyear=Year-768;rex="Caroli et Carlomanni";if(month>=10){rexyear=rexyear+1;}}
else if(Year>751){if(Year==768&&month>=10){rex="Caroli et Carlomanni";rexyear=1;}
else{rexyear=Year-751;rex="Pippini";if(month>=11)
rexyear=rexyear+1;}}
else if(Year==751&&month>=11){rex="Pippini";rexyear=1;}
otxt=otxt+"<table class='caltab' width='100%' border='0' cellspacing='0' cellpadding='0'><tr>";otxt=otxt+'<td style="background:#DDDBD2;"><a href=JavaScript:HandleMonth('+eval(Year-1)+','+month+') title="Previous year">'+eval(Year-1)+'</a></td>';otxt=otxt+'<td style="background:#DDDBD2;"><a href=JavaScript:HandleMonth('+prevyear+','+prevmonth+') title="Previous month">'+MonthName[prevmonth]+'</a></td>';otxt=otxt+'<td style="background:#DDDBD2;" colspan="3" style="text-align:center">';otxt+='<a href=JavaScript:setCalYear('+month+') title="Set year"><img src="http://static.ahlfeldt.se/pics/arrow_refresh.gif"></a> ';otxt=otxt+'<input type="text" class="eb" style="width:40px;" id="setyear" value="'+Year+'"> ';otxt+=' '+MonthName[month];otxt+="</td>";otxt+='<td style="background:#DDDBD2;"><a href=JavaScript:HandleMonth('+nextyear+','+nextmonth+') title="Next month">'+MonthName[nextmonth]+'</a></td>';otxt=otxt+'<td style="background:#DDDBD2;"><a href=JavaScript:HandleMonth('+eval(Year+1)+','+month+') title="Next year">'+eval(Year+1)+'</a> &nbsp;&nbsp; <a href="JavaScript:showCalender()" title="Close Calendar"><img src="http://static.ahlfeldt.se/pics/close.gif"></a></td>';otxt=otxt+'</tr><tr><td colspan="7" style="border-bottom: 1px dotted gray;background:#DDDBD2;">';}
if(formtype){otxt=otxt+"<SPAN TITLE='The 19-year cycle of Golden Numbers is the period after which moon phases repeat (approximately) on the same calendar dates.'>Golden Number "+GoldenNumber+"; </SPAN>";var indic=Indiction();otxt=otxt+"<SPAN TITLE='The 15-year indiction cycle was a Roman tax cycle of unknown origin'>Indiction "+indic+"</SPAN>; ";if(rexyear>0&&Year<889){otxt=otxt+"Anno "+rexyear+" regni domni "+rex;}
otxt=otxt+"</td></tr>";}
FirstWeekDay=WeekDay(YearData[LeapYear].MonthSt[month]);for(i=1;i<7;i++){if(i==1)
otxt=otxt+"<td style='color:red; background:whitesmoke;border-bottom:1px dotted gray' width=14.3% align=center><b>";else
otxt=otxt+"<td style='background:whitesmoke;border-bottom:1px dotted gray' width=14.3% align=center><b>";if(formtype){otxt=otxt+WeekDayName[i]+"</b><br>"+LatDayName[i];}
else
otxt=otxt+"<b>"+WeekDayName[i].charAt(0)+"</b>";otxt=otxt+"</b></td>";}
otxt=otxt+"<td style='background:whitesmoke;border-bottom:1px dotted gray' width=14.3% align=center><b>";if(formtype){otxt=otxt+WeekDayName[i]+"</b><br>"+LatDayName[i];}
else
otxt=otxt+"<b>"+WeekDayName[i].charAt(0)+"</b>";otxt=otxt+"</b></td></tr>";otxt=otxt+"<tr>";y=0;for(i=WeekDay(YearData[LeapYear].MonthSt[month])-1;i>0;i--){y++;otxt=otxt+PutBlankDay();}
i=1;for(y=7-y;y>0;y--){otxt=otxt+PutDay(i,month);i++;}
otxt=otxt+"</tr>";otxt=otxt+"<tr>";for(i=i;i<=YearData[LeapYear].MonthLength[month];i++){otxt=otxt+PutDay(i,month);if((i+FirstWeekDay-1)%7==0){otxt=otxt+"</tr><tr>";}}
with(YearData[LeapYear]){for(i=7-WeekDay(MonthSt[month]+MonthLength[month]-1);i>0;i--){otxt=otxt+PutBlankDay();}}
otxt=otxt+"</tr></table></center>";if(formtype){otxt=otxt+'<p style="margin:0px;Padding:0.5em;background:whitesmoke;">Based on the <a href="http://www.wallandbinkley.com/mcc/" target="_blank">Medieval Calendar Calculator</a>, &copy; 1999 Peter Binkley. May be freely distributed and reproduced</p>';}
oCalData.innerHTML=otxt;}
function LoadCalendar(s){if(s=="auto"){if(firstVisit){s=DefaultCalSource;firstVisit=false;}}
if(s=="custom"){s=prompt("Enter the URL or directory path and file name of your customized calendar.","")}
if((s!=null)&&(s!="")&&(s!="auto")){lowerFrame.document.location.href=s;DefaultCalSource=s;}}
function HandleYear(form){if(YearOK(form.year.value)){calcEaster();ShowSundays();}
else{alert("The year you entered ("+form.year.value+") is out of bounds.");}}
function HandleMonth(year,month,day){if(YearOK(year)){calcEaster();ShowMonth(month,day,true);}
else{alert("The year you entered ("+year+") is out of bounds.");}}
function ShowYear(form){var otxt="";var oCalData=document.getElementById("caldata");if(YearOK(form.year.value)){calcEaster();otxt=otxt+"<b>Calendar for "+Year;if(LeapYear)
otxt=otxt+" (Leap Year)";otxt=otxt+"</b>";otxt=otxt+"<b>Calendar:</b> "+CalendarName+"<br>";otxt=otxt+"Dominical Letter: "+DomLetName[DominicalLetter]+"; ";otxt=otxt+"Golden Number: "+GoldenNumber+"; ";otxt=otxt+"Indiction: "+Indiction();otxt=otxt+"<p>";otxt=otxt+"<table width=100% border=1><tr>";for(i=0;i<=TopFeastClass;i++){otxt=otxt+"<td width="+(100/(TopFeastClass+1))+"%>"+FeastClassName[i]+"</td>";}
otxt=otxt+"</tr><tr>";for(i=0;i<=TopFeastClass;i++){otxt=otxt+"<td bgcolor="+FeastClassColor[i]+">&nbsp;</td>";}
otxt=otxt+"</tr></table>";for(YearRow=0;YearRow<6;YearRow++){otxt=otxt+"<table width=100% border=0>";otxt=otxt+"<tr>";for(YearCol=1;YearCol<=2;YearCol++){otxt=otxt+"<td valign=top>";otxt=otxt+"<b><center>"+MonthName[(2*YearRow)+YearCol]+"</center></b>";otxt=otxt+"</td>";}
otxt=otxt+"</tr></table>";}
oCalData.innerHTML=otxt;}
else{alert("The year you entered ("+form.year.value+") is out of bounds.");}}
function PrepareDebug(){debugWindow=window.open('','debugWin');}
function setCalendar(){CalendarName="Generic";CalendarSource="C.R. Cheney, ed., <i>Handbook of Dates for Students of English History</i>, RHS Guides and Handbooks 4 (London, 1945; rpt. with corr. 1981)";CalendarCreator="Peter Binkley";CalendarCreatorEmail="peter.binkley@utoronto.ca";CalendarNotes=new Array;CalendarNotes[0]="This calendar includes all the major feasts, but not the ordinary festa.";WeekDayName=new Array("none","S","M","T","W","T","F","S");MonthName=new Array("none","January","February","March","April","May","June","July","August","September","October","November","December","January");MonthAbbr=new Array("","Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Sept.","Oct.","Nov.","Dec.","Jan.");LatDayName=new Array("","dies dominica","feria secunda","feria tertia","feria quarta","feria quinta","feria sexta","dies sabbati");TopFeastClass=6;FeastClassTextColor="White";FeastClassColor=new Array("#FF0000","#FFD700","#D700FF","#00CFA7","#000000","#B8860B","#0000FF");FeastClassName=new Array("Principale","Duplex","Semiduplex","Simplex","Ember","Sunday","Other");CreateYearArray();MakeImmovableFeast("St. Agatha",5,2);MakeImmovableFeast("St. Agnes",21,1);MakeImmovableFeast("All Saints",1,11);MakeImmovableFeast("All Souls",2,11);MakeImmovableFeast("St. Ambrose",4,4);MakeImmovableFeast("St. Andrew",30,11);MakeImmovableFeast("St. Anne",26,7);MakeImmovableFeast("St. Anselm",21,4,3,1109);MakeImmovableFeast("St. Augustine of Canterbury",26,5,3,604);MakeImmovableFeast("St. Augustine of Hippo",28,8);MakeImmovableFeast("St. Barnabas",11,6);MakeImmovableFeast("St. Bartholomew",24,8);MakeImmovableFeast("St. Basil",14,6);MakeImmovableFeast("St. Benedict",21,3,3,543);MakeImmovableFeast("St. Bernard",21,8,3,1153);MakeImmovableFeast("BVM Annunciation",25,3);MakeImmovableFeast("BVM Assumption",15,8);MakeImmovableFeast("BVM Conception",8,12);MakeImmovableFeast("BVM Nativity",8,9);MakeImmovableFeast("BVM Purification",2,2);MakeImmovableFeast("St. Cecilia",22,11);MakeImmovableFeast("Christmas",25,12);MakeImmovableFeast("Circumcision",1,1);MakeImmovableFeast("St. Clare",12,8,3,1435);MakeImmovableFeast("St. Damasus",11,12);MakeImmovableFeast("St. David",1,3,3,544);MakeImmovableFeast("St. Dionysius",9,10);MakeImmovableFeast("St. Dominic",4,8,3,1234);MakeImmovableFeast("St. Edith",16,9);MakeImmovableFeast("Epiphany",6,1);MakeImmovableFeast("St. Eugenia",16,3);MakeImmovableFeast("St. Eustachius",2,11);MakeImmovableFeast("Exaltatio Crucis",14,9);MakeImmovableFeast("St. Felix",8,3);MakeImmovableFeast("St. Francis",4,9,3,1228);MakeImmovableFeast("St. George",23,4);MakeImmovableFeast("St. Gregory",12,3);MakeImmovableFeast("St. Guthlac",11,4);MakeImmovableFeast("St. Hilary",13,1);MakeImmovableFeast("Holy Innocents",28,12);MakeImmovableFeast("Inventio Crucis",3,5);MakeImmovableFeast("St. Isidore",2,1);MakeImmovableFeast("St. James",25,7);MakeImmovableFeast("St. John the Baptist, Nativity",24,6);MakeImmovableFeast("St. John the Evangelist",27,12);MakeImmovableFeast("St. John at the Lateran Gate",6,5);MakeImmovableFeast("Lammas",1,8);MakeImmovableFeast("St. Laurence",10,8);MakeImmovableFeast("St. Luke",18,9);MakeImmovableFeast("St. Lucy",13,12);MakeImmovableFeast("St. Mark",25,4);MakeImmovableFeast("St. Martin",11,11);MakeImmovableFeast("St. Martin (translation)",4,7);MakeImmovableFeast("St. Mary Magdalene",22,7);MakeImmovableFeast("St. Mathias",24,2);MakeImmovableFeast("St. Matthew",21,9);MakeImmovableFeast("St. Michael",29,9);MakeImmovableFeast("Midsummer",24,6);MakeImmovableFeast("St. Nicholas",6,12);MakeImmovableFeast("St. Patrick",17,3);MakeImmovableFeast("St. Paul, conversion",25,1);MakeImmovableFeast("St. Paul, decollation",30,6);MakeImmovableFeast("St. Paul, translation",25,1);MakeImmovableFeast("St. Peter in cathedra",22,2);MakeImmovableFeast("St. Peter and Paul",29,6);MakeImmovableFeast("St. Peter ad vincula",1,8);MakeImmovableFeast("Sts. Philip & James",1,5);MakeImmovableFeast("St. Scholastica",10,2);MakeImmovableFeast("St. Simon Judas",28,10);MakeImmovableFeast("St. Stephan",26,12);MakeImmovableFeast("St. Thomas of Canterbury, translation",7,7,3,1222);MakeImmovableFeast("St. Thomas of Canterbury",29,12,3,1173);MakeImmovableFeast("St. Thomas the Apostle",21,12);MakeImmovableFeast("St. Thomas of Hereford",2,10,3,1320);MakeImmovableFeast("St. Urban",25,5);Sept=new MovableFeast("Septuagesima",5);Sex=new MovableFeast("Sexagesima",5);Quin=new MovableFeast("Quinquagesima",5);Quad[1]=new MovableFeast("Quadragesima",5);for(i=2;i<=4;i++){Quad[i]=new MovableFeast("Lent "+i,5);}
Pass=new MovableFeast("Passion",5);Palm=new MovableFeast("Palm",5);Easter=new MovableFeast("Easter",0);Pascha[1]=new MovableFeast("Quasimodo",5);for(i=2;i<=5;i++){Pascha[i]=new MovableFeast("Easter "+i,5);}
Pascha[6]=new MovableFeast("Rogation",5);Ascen=new MovableFeast("Ascension 1",5);Pent=new MovableFeast("Pentecost",0);Trinity=new MovableFeast("Trinity",0);for(i=1;i<=27;i++){TrinSun[i]=new MovableFeast("Trinity "+i,5);}
for(i=1;i<=4;i++){Advent[i]=new MovableFeast("Advent "+i,5);}
for(i=1;i<=6;i++){Epiph[i]=new MovableFeast("Epiphany "+i,5);}
Shrove=new MovableFeast("Shrove Tuesday",6);Ash=new MovableFeast("Ash Wednesday",6);GoodFri=new MovableFeast("Good Friday",6);Ascension=new MovableFeast("Ascension",0);CorpusC=new MovableFeast("Corpus Christi",0);for(i=1;i<=12;i++){Ember[i]=new MovableFeast("Ember",4);}}
function doSundays(form){if((typeof(form.year.value)=="undefined")||(form.year.value=="")){alert('You must enter a year!');form.year.focus();form.year.select();}
else{HandleYear(form);}}
function doYear(form){if((typeof(form.year.value)=="undefined")||(form.year.value=="")){alert('You must enter a year!');form.year.focus();form.year.select();}
else{ShowYear(form);}}
function doMonth(year,month){if((typeof(year)=="undefined")||(year=="")){alert('You must enter a year!');}
else{HandleMonth(year,month);}}