// ************************************************************************************ // This Script is copyrighted by Jeff Margenau, Design Solutions, http://xmlo.com/design // Use is illegal without express permission from Jeff Margenau at jeff@xmlo.com // ************************************************************************************ var eventm=new Array var quick=true var ex='' var oute='' var monthout='' var O2='' var stopper=1 var startDay=0; var oldxcombo='' var stylewanted='Weekly' now=new Date() var lastday='None Selected' var se=new Array(); var startDayx=dd; var startDatex=new Date(); var columnx var co=0 var donalready var datecounterx var LSch var evstx var evendx var gotevents var finish=1 var todaymessage='' var one_day=1000*60*60*24 var calswitch=0 var dw var dd var column var sunempty='

The library building is closed on Sundays. On our Web site you still can:

' var agendaempty='

Open agenda
We are available! Stop in and see what we have to offer.

' function datex(xdate){ se=new Array();se1=new Array() se0=xdate.split(" ") se1=se0[0].split("-") se2=se0[1].split(":");se1[1]-- LSch=new Date(se1[0],se1[1],se1[2],se2[0],se2[1],se2[2]) se[0]=LSch.getDay() se[1]=LSch.getHours() se[2]=LSch.getMinutes() se[2]=se[2]<10?"0"+se[2]:se[2] TTF=se[1]>11?"pm":"am" se[1]=se[1]>12?(se[1]-12):se[1] se[1]=se[1]==0?12:se[1] se[3]=LSch.getFullYear() se[4]=LSch.getMonth() se[5]=LSch.getDate() return LSch,se,TTF } function Nxq(ele){ document.getElementById(ele).innerHTML=Calendar(mm,yy) } function Nx2(x){ if(x!=0){O2='

Help for the Calendar Viewer

There are several calendar views available including printable version. Use the "Daily", "Weekly", and "Monthly" buttons to select the caldendar type. Use the small calendar navigator to select dates.

  1. Daily: Click the "Daily" button to view daily calendars.
  2. Weekly: Click the "Weekly" button above to view weekly calendars.
  3. Monthly: Click the "Monthly" button above to view monthly calendars.
  4. Print: Click the "Print" button to create printable calendars.


'} if(stopper==0)s(1,'calday') document.getElementById("calday").innerHTML=O2 } function tense() { ftp='today:' var Ca=new Date() var Ca2=new Date() Ca2.setFullYear(yy) Ca2.setMonth(mm) Ca2.setDate(dd) if(Ca>Ca2){ftp='the past date of:'} if(Ca'; firstDay = new Date(Year,Month,1); startDay = firstDay.getDay(); if (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0)){days[1] = 29} else{days[1] = 28} output += ''; for (i=0; i<7; i++) output += ''; output += ''; var column = 0; var nextMonth = Month + 1;var nxtyr=Year if (nextMonth == 12) {nextMonth = 0;nxtyr=Year+1} var lastMonth = Month - 1;var lstyr=Year if (lastMonth == -1) {lastMonth = 11;lstyr=Year-1} bluecount=0 // monthly output for last days of month before the current month for (i=0; i'; // change mouseovers below to onclicks to change behavior THIS WAS DONE PROGRAMATICALLY for (i=1; i<=days[Month]; i++, column++) {if(eventm[i]==''){bgc="whitesmoke"}else{bgc="#E7E7AF"}; if((i>=startDayx && i=startDayx && i'} // onmouseover="changeDay('+column+',' + i + ','+Month+','+Year+');" else{ if(mmm!=mm || yyy!=yy || ddd!=dd){bgc2="#b4ddf4";bluecount++}else{ // monthly output for today bgc2="gold"}; output += ''}; if (column == 6) { output += ''; column = -1; } } if (column > 0) { // monthy output for days after the end of this particular month for (i=1; column<7; i++, column++){ if((i<= 8-bluecount) && stylewanted=="Weekly"){bgc="#b4ddf4"}else{bgc="transparent"} output += '' } } output += '
 ' + d0w[i] +' 
' + '
' var xch1 var xch2 var NextDate //alert(bluecount) O2=''; bg='#ffffff' NextDate= new Date() NextDate.setMonth(0) NextDate.setDate(1) xch1= new Date() xch1.setMonth(0) xch1.setDate(1) xch2= new Date() xch2.setMonth(0) xch2.setDate(1) NextDate.setFullYear(yy) NextDate.setMonth(mm) NextDate.setDate(dd) NextDate.setHours(0) NextDate.setMinutes(0) NextDate.setSeconds(0) EventDateend=0 O2+='' if (stylewanted=='Daily'){ todaymessage=(mm==mmm && dd==ddd && yy==yyy)?'Today at the Library - ':'' exbt='' O2+='' xch1.setFullYear(yy) xch1.setMonth(mm) xch1.setDate(dd) xch1.setHours(0) xch1.setMinutes(0) xch1.setSeconds(0) xch2.setFullYear(yy) xch2.setMonth(mm) xch2.setDate(dd+1) xch2.setHours(0) xch2.setMinutes(0) xch2.setSeconds(0) xch2.setSeconds(xch2.getSeconds()-1) } else if (stylewanted=='Weekly'){ exbt='' xch1.setFullYear(yy) xch1.setMonth(mm) xch1.setDate(dd) xch1.setHours(0) xch1.setMinutes(0) xch1.setSeconds(0) xch2.setFullYear(yy) xch2.setMonth(mm) xch2.setDate(dd) xch2.setDate(xch2.getDate()+7) xch2.setHours(0) xch2.setMinutes(0) xch2.setSeconds(0) xch2.setSeconds(xch2.getSeconds()-1) dw=xch1.getDay() O2+='' } else if (stylewanted=='Monthly'){ xch1.setFullYear(yy) xch1.setMonth(mm) xch1.setDate(1) xch1.setHours(0) xch1.setMinutes(0) xch1.setSeconds(0) xch2.setFullYear(yy) xch2.setMonth(mm+1) xch2.setDate(1) xch2.setHours(0) xch2.setMinutes(0) xch2.setSeconds(0) xch2.setSeconds(xch2.getSeconds()-1) O2+='' //dd=1;startDayx=1; } //else if (stylewanted=='Yearly'){ //firstt=0 //xcombo=NextDate.getMonth() //xch1= new Date() //xch1.setMonth(0) //xch1.setDate(1) //xch1.setHours(0) //xch1.setMinutes(0) //xch1.setSeconds(0) //xch2= new Date() //xch2.setMonth(0) //xch2.setDate(1) //xch2.setHours(0) //xch2.setMinutes(0) //xch2.setSeconds(0) //xch2.setFullYear(xch2.getFullYear()+1) //xch2.setSeconds(xch2.getSeconds()-1) //mm=1;dd=1;startDayx=1; //} exb=' (EventDate.getDate()==xch1.getDate() && EventDate.getMonth()==xch1.getMonth() && EventDate.getFullYear()==xch1.getFullYear()) || (EventDate > xch1 && EventDate < xch2)' didmonth=0 previousdateloop=dd oldxcombo=NextDate.getMonth() for (j=0; j <= eventz.length-1; j++) { if(eventz[j][0]!=''){datex(eventz[j][0]);EventDate=LSch} if(eval(exb)){ etex='' eventtype=typ[eventz[j][3]]+'
' if(eventtype=='General
')eventtype='' if(eventtype=='Closed
')eventtype='' shotime=se[1]+':'+se[2]+' '+TTF+' '; if(se[2]=='00' && se[1]=='12' && TTF=='am'){ if (eventz[j][3]!=6 && eventtype=='' && typ[eventz[j][3]]!='Closed')etex='All day event' if (eventtype!='')etex='' shotime=eventtype+etex } room=''; if (eventz[j][6]!='')room=' in the '+eventz[j][6] apptime=eventz[j][5] if (apptime==' to 12:00 am')apptime=' '; NextDate2=NextDate while(EventDate>=NextDate2){ if(EventDate.getDate()!=NextDate.getDate()){ exbtx='' if(xch1.getMonth() != NextDate.getMonth() && stylewanted=="Weekly" && didmonth==0){ O2+='' didmonth=1} //xcombo=NextDate.getMonth() //if(xcombo!=oldxcombo && stylewanted=='Yearly'){O2+='';} //oldxcombo=xcombo if(NextDate.getDay()==0){calemptymessagex=sunempty}else{calemptymessagex=agendaempty} O2+=''+exbtx+'' datecounterx++ } NextDate2.setDate(NextDate2.getDate()+1) } NextDate3=new Date() NextDate3.setDate(1) NextDate3.setFullYear(se[3]) NextDate3.setMonth(se[4]) if(xch1.getMonth() != NextDate3.getMonth() && stylewanted=="Weekly" && didmonth==0){O2+='';didmonth=1} if(eventz[j][3]==7 || eventz[j][5]==' to 12:00 am' || eventz[j][5]=='')NextDate.setDate(NextDate.getDate()+1) dateloop=se[5] //xcombo=NextDate.getMonth() //if(stylewanted=='Yearly' && (xcombo!=oldxcombo || firstt==0)){Oextra='';firstt=1;O2+=Oextra} //oldxcombo=xcombo if(stylewanted!='Daily' && EventDate.getDate()!=donealready){ exbtx=''; if(bg=="#E7E7AF"){bg="#ffffff"}else{bg="#E7E7AF"} O2+=''+exbtx+''; } else{ O2+='

'+eventz[j][1]+'
The library is open from '+shotime+apptime+'.

'; datex(eventz[j+1][0]) testdate=se[5] if(testdate!=EventDate.getDate() && stylewanted!='Daily')O2+=''; } EventDateend=EventDate previousdateloop=dateloop } } // END OF ALL EVENTS FOUND if(dw==0){calemptymessage=sunempty}else{calemptymessage=agendaempty} if(stylewanted=='Daily' && gotevents!=1){O2+=''} // BEGIN of test for dates requested with no events after the last date with events found if(stylewanted!="Daily"){finish=1 if(stylewanted=='Monthly'){finish=days[mm]}else if(stylewanted=='Weekly'){finish=7} PreDate=NextDate oldmm=mm PreDate.setDate(PreDate.getDate()-1) if(donealready==0)donealready=dd diffe=finish-datecounterx if(diffe > 0){ for (jx=1; jx <= diffe; jx++) { PreDate.setDate(PreDate.getDate()+1) newmm=PreDate.getMonth() exbtx='' if(newmm!=oldmm && stylewanted=="Weekly" && didmonth==0){ O2+='' oldmm=newmm} // this needs to test the first previous date's .getDay() need date from st if(PreDate.getDay()==0){calemptymessagex=sunempty}else{calemptymessagex=agendaempty} O2+=''+exbtx+'' } // end of jx loop } // end of diffe test } // END of TEST FOR DATES REQUESTED after events O2+='
Previous  |  Next

'+todaymessage+dow2[dw]+' '+names[mm]+' '+dd+', '+yy+'

Subscribe to the Daily Calendar rssgraphic (1K)
Previous  |  Next

Weekly Calendar Starting '+dow2[dw]+' '+names[mm]+' '+dd+', '+yy+'

Previous  |  Next

Monthly Calendar for '+names[mm]+' '+yy+'

'+dow2[NextDate.getDay()]+'
'+NextDate.getDate()+'

'+names[EventDate.getMonth()]+' '+EventDate.getFullYear()+'

'+names[EventDate.getMonth()]+' '+EventDate.getFullYear()+' Yearly Calendar

'+calemptymessagex+'

'+names[EventDate.getMonth()]+' '+EventDate.getFullYear()+'

'+names[NextDate.getMonth()]+' '+NextDate.getFullYear()+' Yearly CalendarXXX

'+dow2[EventDate.getDay()]+'
'+EventDate.getDate()+'
' datecounterx++ } else if(EventDate.getDate()!=donealready){ondate=se[5];O2+='
'} donealready=se[5] lastdayx=se[0] gotevents=1 // THIS LINE PRODUCES ALL EVENT INFO except for open agendas and Sundays if(eventz[j][3]!=7){O2+='

'+eventz[j][1]+'
'+shotime+apptime+room+'
'+''+eventz[j][2]+'

'; datex(eventz[j+1][0]) testdate=se[5] if(testdate!=EventDate.getDate() && stylewanted!='Daily')O2+='

'+calemptymessage+'

'+dow2[PreDate.getDay()]+'
'+PreDate.getDate()+'

'+names[PreDate.getMonth()]+' '+PreDate.getFullYear()+'

'+calemptymessagex+'


' if(stopper==0)Nx2(0) lastday=O2 datecounterx=0 if(printable==1)output='' return output; }