/* © Written by cwdjrxyz@yahoo.com in 2002 and greatly revised in May 2003. */

var all =(document.all) ? 1 : -1 ;
var an=navigator.appName ;
var gbi=(document.getElementById) ? 1 : -1 ;

if (gbi<0 && an=="Netscape") {
alert ("Your NN4 or earlier browser is too old");
                                                         }
if (gbi<0 && all<0) {
alert ("Your browser is unknown and probably will not work.") ;
                                                }

function dt() {   // date and time in status bar
var cd=new Date();
var t=cd.toLocaleString();
window.status=t ;
setTimeout('dt()',1000) ;
                     }

function sass(all,gbi) {
if (document.getElementById){ document.getElementById('moon').style.visibility="visible"};
if(document.all && !document.getElementById)document.all["moon"].style.visibility="visible" ;
setTimeout("insult()",2000) ;
                       }

function insult() {
var flip=Math.floor((pun.length)*Math.random());
if (flip>=pun.length) {blab=pun[(pun.length)-1]};
if (flip<0) {blab=pun[0]};
if (flip>=0 && flip<pun.length) {blab=pun[flip]};
alert(blab);
setTimeout("over()",3000) ;
                          }

function over() {
alert("You entered bad data, dumb human! We computers are more perfect --- HAL.") ;
location="perpetual_calendar3.html" ;
                        }

document.bgColor="000000" ;

document.write('<div style="position:absolute; top:62px; left:15px; width:515px; height:780px; background-color: #ff0000; color: #000000; z-index:1; text-align:center; font-weight:bold"><br /><br /><br />.<\/div>')

document.write('<div id="moon" style="position:absolute; top:100px; left:150px; z-index:4; visibility:hidden"><img src="rude_pic.jpg" alt="moon"><\/div>') ;

var yr
yr=prompt("Enter Year: Range: 1 - 60000 AD. Enter w/o input for current year.","") ;
if (yr==null) {history.back()} ;
if (yr==0) {cld=new Date() ; yr=cld.getFullYear()} ;  // this year
var YR=yr ;

if (yr==1752){alert("Gregorian reform. Days dropped in Sept.1752")};
var dick=1 ;  var nobc=1                                // detect bad input data
if (yr=="") {dick=-1} ;
for (i=0;i<yr.length;i++) {
   if (yr.charAt(i) < "0") {dick=-1} ;
   if (yr.charAt(i) > "9") {dick=-1} ;
   if (yr.charAt(i)=="-") {nobc=-1} ;
                                     }  
if (nobc<0) {dick=-1 ; alert("We do not do BC dates") } ;
if (yr>60000) {dick=-1 ; alert("Year is too large") } ;    
if (dick<1) {sass()}

else {                       // start very long conditional if data good


/* begin selection of one of 14 year types for a date. Get parameters for year type selected. Write page heading. */

var sdm = new Array ; 
var ndm = new Array ; 

var sda, yrs , yre;
if (YR<1752) {sda=7 ; yrs=1 ; yre=1751 } ;
if (YR>1752 && YR<8000) {sda=2 ; yrs=1753 ; yre=7999} ;
if (YR>7999 && YR<15000) {sda=7 ; yrs=8000 ; yre=14999} ;
if (YR>14999 && YR<22500) {sda=4; yrs=15000; yre=22499} ;
if (YR>22499 && YR<30000) {sda=6; yrs=22500; yre=29999} ;
if (YR>29999 && YR<37500) {sda=7 ; yrs=30000 ; yre=37499} ;
if (YR>37499 && YR<45000) {sda=2 ; yrs=37500 ; yre=44999} ;
if (YR>44999 && YR<52500) {sda=4 ; yrs=45000 ; yre=52499} ;
if (YR>52499) {sda=6 ; yrs=52500 ; yre=60000}
if (YR==1752) {sday=4; val=15} ;

var year , val , va ;
for (year=yrs;year<(yre+1);year++) {
if (sda>7) {sda=sda-7} ;
var sday=sda , endyear=year ;
var test1=year%4 , test2=year%100 , test3=year%400 ;

if (YR>1752) {
if (test1==0 && test2>0 || test1==0 && test2==0 && test3==0) {sda=sda+2 ; val=sday+7}
else {sda=sda+1 ; val=sday} ;
                      }

if (YR<1752) {
if (test1==0) {sda=sda+2 ; val=sday+7}
else {sda =sda+1; val=sday} ;
                      }
if (year==YR) {va=val ; year=yre+1 }
                                                           }


/* arrays of monthly start days for each calendar type */
var sdm1 = new Array('c1',1,4,4,7,2,5,7,3,6,1,4,6) ;
var sdm2 = new Array('c2',2,5,5,1,3,6,1,4,7,2,5,7) ;
var sdm3 = new Array('c3',3,6,6,2,4,7,2,5,1,3,6,1) ;
var sdm4 = new Array('c4',4,7,7,3,5,1,3,6,2,4,7,2) ;
var sdm5 = new Array('c5',5,1,1,4,6,2,4,7,3,5,1,3) ;
var sdm6 = new Array('c6',6,2,2,5,7,3,5,1,4,6,2,4) ;
var sdm7 = new Array('c7',7,3,3,6,1,4,6,2,5,7,3,5) ;
var sdm8 = new Array('c8',1,4,5,1,3,6,1,4,7,2,5,7) ;
var sdm9 = new Array('c9',2,5,6,2,4,7,2,5,1,3,6,1) ;
var sdm10 = new Array('c10',3,6,7,3,5,1,3,6,2,4,7,2) ;
var sdm11 = new Array('c11',4,7,1,4,6,2,4,7,3,5,1,3) ;
var sdm12 = new Array('c12',5,1,2,5,7,3,5,1,4,6,2,4) ;
var sdm13 = new Array('c13',6,2,3,6,1,4,6,2,5,7,3,5) ;
var sdm14 = new Array('c14',7,3,4,7,2,5,7,3,6,1,4,6) ;
var sdm1752 = new Array('c1752',4,7,1,4,6,2,4,7,3,1,4,6) ;

 /*  days per month for plain, leap, and 1752 years  */
var ndmp= new Array('c2',31,28,31,30,31,30,31,31,30,31,30,31) ;
var ndml= new Array('c2',31,29,31,30,31,30,31,31,30,31,30,31) ;
var ndm1752= new Array('c1752',31,29,31,30,31,30,31,31,19,31,30,31) ; 
/* logic to select proper year type arrays for year chosen */

switch (va)
{
case 1 : sdm=sdm1 ; ndm=ndmp ; break ;
case 2 : sdm=sdm2 ; ndm=ndmp ; break ;
case 3 : sdm=sdm3 ; ndm=ndmp ; break ;
case 4 : sdm=sdm4 ; ndm=ndmp ; break ;
case 5 : sdm=sdm5 ; ndm=ndmp ; break ;
case 6 : sdm=sdm6 ; ndm=ndmp ; break ;
case 7 : sdm=sdm7 ; ndm=ndmp ; break ;
case 8 : sdm=sdm8 ; ndm=ndml ; break ;
case 9 : sdm=sdm9 ; ndm=ndml ; break ;
case 10 : sdm=sdm10 ; ndm=ndml ; break ;
case 11 : sdm=sdm11 ; ndm=ndml ; break ;
case 12 : sdm=sdm12 ; ndm=ndml ; break ;
case 13 : sdm=sdm13 ; ndm=ndml ; break ;
case 14 : sdm=sdm14 ; ndm=ndml ; break ;
default : if (yr==1752) {sdm=sdm1752 ; ndm=ndm1752}
                              else { alert("Logic Error. Reload.") }
}

if (yr>60000) {
var sdm = new Array('c3',3,6,6,2,4,7,2,5,1,3,6,1) ; // default 
var ndm = new Array('c3',0,0,0,0,0,0,0,0,0,0,0,0) ; // default 
                                   } ;

document.write('<p style="position:absolute; left:18px; top:1px; width:508px; color: #ff0000; text-align:center; font-weight:bold; background-color:transparent; font-size:large"><br />'+yr+'<\/p>') ;  // year at top of page

/* Selection of year type and parameters completed  */ 

var day = new Array('blank','S','M','T','W','T','F','S') ;

var month = new Array('blank','JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUN','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER') ;

var flip=1 ;   // logic switch to alternate colors
var dv=194 ; var dh=170 // vert. and horiz. displacements for months
var cd=1 // ; month counter
var k,l
for (l=1;l<5;++l) {                      // start l loop
var tp=65 + (l-1)*dv ;                                    // vertical displacement
for (k=1;k<4;++k) {                   // start k loop
var lf=18 + (k-1)*dh                                      // horizontal displacement
 
var sd=sdm[cd] ; var nd=ndm[cd] ;
if(flip==1) {var bgch="#eeccee"} else {var bgch="#cceecc"} ;
document.write('<div style="position:absolute; top:'+tp+'px; left:'+lf+'px;width:168px; height:24px; text-align:center; z-index:2; color: #000077; background-color:'+bgch+';font-size:16px; font-weight:bold">'+month[cd]+'<\/div>')

var i,j,ctr,y,x
i=1; j=1 ; ctr=1  ; y= 65 + 24 + (l-1)*dv ;
if (flip==1) {bgc="#ccccee"} else {bgc="#eeeecc"}  ;
for (j=1;j<8;++j) {
x=18 + (k-1)*dh
for (i=1;i<8;++i) {
if (ctr<8) {ch=day[i]} ;
if (ctr>7 && ctr<7+sd) {ch="."}
if (ctr>=(7+sd) && ctr<(nd+sd+7)) {ch=ctr-7-sd+1}
if (ctr>nd+7+sd-1) {ch="."}

/* correction for 1752, 12 days dropped in Sept. */
if (yr==1752 && l==3 && k==3 && ctr>=(7+sd+2) && ctr<=(nd+7+sd-1))
{ch = ch+11} ;

/* start detection of 6 variable official holidays  */

var pda,kda,cda,lab,mem,tgy
if (sdm[2]>2){pda=24-sdm[2]} ; if (sdm[2]==1){pda=16};
if (sdm[2]==2){pda=15} ;    // Presidents day 

if (sdm[1]>2){kda=24-sdm[1]} ; if (sdm[1]==1){kda=16}; if (sdm[1]==2){kda=15} ;    // King day

if (sdm[10]>2){cda=17-sdm[10]} ; if (sdm[10]==1){cda=9} ;
if (sdm[10]==2){cda=8} ;  // Columbus day

if (sdm[9]>2){lab=10-sdm[9]} ; if (sdm[9]==1){lab=2} ; if (sdm[9]==2){lab=1} ; //  Labor day

if (sdm[5]<7){mem=31-sdm[5]} ; if (sdm[5]==7){mem=31}  // Mem. da

if (sdm[11]<6){tgy=6-sdm[11]+21} ; if (sdm[11]==6){tgy=28} ; if (sdm[11]==7){tgy=27} ;  // Thanksgiving detection

/* logic for labeling holidays in color */
if (l==4 && k==3 && ch==25 || l==1 && k==1 && ch==1 || l==3 && k==1 && ch==4 && yr>1775 || l==4 && k==2 && ch==11 && yr>1937 || l==4 && k==2 && ch==tgy && yr>1620 || l==2 && k==2 && ch==mem && yr>1867 || l==3 && k==3 && ch==lab && yr>1881 || l==4 && k==1 && ch==cda && yr>1936 || l==1 && k==1 && ch==kda && yr>1985  || l==1 && k==2 && ch==pda && yr>1795) { tc="#ff0000"} 
else {tc="#000000"}

if (ctr<8) {tc="#663300"} ;    // day names different color

document.write('<div style="position:absolute; top:'+y+'px; left:'+x+'px;width:24px; height:24px; text-align:center; z-index:2; background-color:'+bgc+'; color:'+tc+'; font-size: 12px; font-weight:bold">'+ch+'<\/div>')
x=x+24  ;
ctr=ctr+1 ;
                           }    // end of i for loop
y=y+24  ;
                           }    // end of j for loop
cd=cd+1 ;  flip=(-flip) ;
                           }    // end of k for loop
                           }    // end of l for loop
                           }    // end very long conditional 

document.write('<div style="position:absolute; left:1px; top:1px; z-index:8"><a href="http://validator.w3.org/check/referer"><img src="x1logo.gif" alt="Valid XHTML 1.1 !" height="23" width="64"><\/a><\/div>')

document.write('<div style="position:absolute;visibility:visible;left:479px;top:1px;z-index:6"><a href="http://jigsaw.w3.org/css-validator"><img src="csslogo.gif" width="64" height="23" alt="w3c css logo"><\/a><\/div>')
