function Calendar(){this.Settings=new Array();this.Settings.greeting="Aloha";this.Settings.showFullMonthNames=0;this.Settings.oneLineMobileTitleBar=1;this.Settings.showReloadButtons=1;try{var test=CalData.length;}
catch(Err){var eMsg="cal-data.js is malformed (bad syntax). Calendar data array cannot be initialized.\n\n";for(member in Err)eMsg+=member+": "+Err[member]+"\n";alert(eMsg);}
this.Settings.futureMonthsAdmin=DB.Cal.MonthsFutureAdmin;this.Settings.futureMonthsPublic=DB.Cal.MonthsFuturePublic;this.Settings.pastMonthsAdmin=DB.Cal.MonthsPastAdmin;this.createLoginMenus=createLoginMenus;this.getCal=getCal;this.getDayOfWeek=getDayOfWeek;this.getMonthName=getMonthName;this.getNumDaysInMonth=getNumDaysInMonth;this.getReadAllLogInGUI=getReadAllLogInGUI;this.init=init;this.logInReadAll=logInReadAll;this.morphView=morphView;this.pollData=pollData;this.pollDataHeader=pollDataHeader;this.getLegend=getLegend;this.writeMobileCal=writeMobileCal;this.MsgCal=new Array();this.MsgCal.BackToBack="Click to add a back-to-back<span class='TooltipBullet'>&#149;</span>Click background to reset";this.MsgCal.Confirmed="Confirmed Reservation";this.MsgCal.ConfirmedShort="Confirmed";this.MsgCal.Edit="Click to edit<span class='TooltipBullet'>&#149;</span>Right-click to view";this.MsgCal.Help="Calendar Help, Tips & FAQs";this.MsgCal.LogOff="Log-off to end your session";this.MsgCal.LogOffReadAll="Cancel read-all access";this.MsgCal.Available="Available Night";this.MsgCal.Pending="Pending Reservation<span class='TooltipBullet'>&#149;</span>On hold";this.MsgCal.PendingShort="Pending";this.MsgCal.Publish="Save calendar data";this.MsgCal.Search="Search calendar by guest name";this.MsgCal.Today="Today";this.CarryBookingForward=new Array();this.userWithWritePrivileges=(GetCookie("userWithWritePrivileges"));if(this.userWithWritePrivileges)this.userWithWritePrivileges=this.userWithWritePrivileges.replace(/_/, " " );
this.userHasReadAllPrivileges=0;if(GetCookie("userHasReadAllPrivileges"))this.userHasReadAllPrivileges=1;this.publicUser=(!this.userWithWritePrivileges&&!this.userHasReadAllPrivileges);this.calPending=0;this.CalHash=new Array();this.dataLastModified="";this.Request=null;this.timer=0;this.dataFile="cal-data.js";function writeMobileCal(){var Today=getToday();var todayDate=Today.getDate();var FirstDayOfThisMon=new Date(Today.getFullYear(),Today.getMonth(),1);var nYr,nMon;var FirstDayOfMon;var H=new Array();var nProps=CalData.length-1;var multipleProps=(nProps>1);for(var pNum=0;pNum<nProps;pNum++){nYr=Today.getFullYear();nMon=Today.getMonth();var Bookings=CalData[pNum];var pName=Bookings[0];var nBookingMembers=Bookings.length;for(var bookingNum=1;bookingNum<nBookingMembers;bookingNum++){var Booking=Bookings[bookingNum];var BookingDates=Booking[0];var bookingStatus=Booking[1];var In=new Date(BookingDates[2]+2000,BookingDates[0]-1,BookingDates[1]);var Out=new Date(BookingDates[5]+2000,BookingDates[3]-1,BookingDates[4]);var Occ=In;if(Out>FirstDayOfThisMon){while(Occ<Out){this.CalHash[pName+"_"+(Occ.getMonth()+1)+"_"+Occ.getDate()+"_"+Occ.getFullYear()]=bookingStatus;Occ=new Date(Occ.getFullYear(),Occ.getMonth(),Occ.getDate()+1);}}}
if(pNum>0)H.push("<hr>");for(var nMonths=0;nMonths<DB.Cal.MonthsFuturePublic;nMonths++){FirstDayOfMon=new Date(nYr,nMon,1);var mo=FirstDayOfMon.gMN((multipleProps&&this.Settings.oneLineMobileTitleBar)?3:0);var firstDayThisMon=FirstDayOfMon.gDN();H.push("<div class='mCalWrapper'>");H.push("<table>");H.push("<tbody>");var developerMode=(G.local||G.local)?1:0;var moStyle="",moTitle="",moClick="";if(developerMode){moStyle=" style='cursor:pointer;'";moTitle=" title='Reload \u2022 Developer Mode'";moClick=" onClick='document.location.reload( true );'";}
H.push("<tr>");H.push("<th colspan='7'");H.push("id='");H.push(nMon+1);H.push("_");H.push(nYr);H.push("'");H.push(moClick);H.push(moStyle);H.push(moTitle);H.push(">");H.push(mo);H.push(" ");H.push(nYr);if(multipleProps){if(this.Settings.oneLineMobileTitleBar){H.push(" <span>&#149;</span> ");H.push(pName);}
else{H.push("<div>");H.push(pName);H.push("</div>");}}
H.push("</th>");H.push("</tr>");H.push("<tr>");H.push("<td>Su</td>");H.push("<td>Mo</td>");H.push("<td>Tu</td>");H.push("<td>We</td>");H.push("<td>Th</td>");H.push("<td>Fr</td>");H.push("<td>Sa</td>");H.push("</tr>");var nDay=0;var spacer="<td></td>";var lastRow=false;for(var nRow=1;nRow<7;nRow++){if(lastRow)break;H.push("<tr>");for(var nCol=1;nCol<=7;nCol++){if(nDay==0){if(firstDayThisMon=="Sunday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Monday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Tuesday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Wednesday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Thursday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Friday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);if(firstDayThisMon=="Saturday")H.push(subGetDate());else
H.push((nDay)?subGetDate():spacer);}
if(nRow>1){var nDaysInMonth=this.getNumDaysInMonth(nMon+1,nYr);if(nDay<nDaysInMonth)H.push(subGetDate());else{lastRow=true;H.push(spacer);}}}
H.push("</tr>");}
H.push("</tbody>");H.push("</table>");H.push("</div>");nMon++;if(nMon>11){nMon=0;nYr++;}}}
H.push("<div class='mCalLastUpdated'>");H.push("Calendar Last updated ");H.push("<nobr>");var LastUpdate=new Date(CalData[CalData.length-1][1]);H.push(LastUpdate.gDN());H.push(" ");H.push(LastUpdate.getMonth()+1);H.push("/");H.push(LastUpdate.getDate());H.push("/");H.push(LastUpdate.getFullYear()-2000);H.push("</nobr>");H.push("</div>");var htm=H.join("");gId("MobileCalOut").innerHTML=htm;function subGetDate(){nDay++;var bookingStatus=Cal.CalHash[pName+"_"+(nMon+1)+"_"+nDay+"_"+nYr];var cls="";var itsToday=(nMonths==0&&nDay==todayDate);if(bookingStatus){if(itsToday)cls=(bookingStatus==1)?"mCalBooked mCalToday":"mCalPending mCalToday";else
cls=(bookingStatus==1)?"mCalBooked":"mCalPending";}
else if(itsToday)cls="mCalToday";return "<td class='"+cls+"'>"+nDay+"</td>";}}
function pollData(){this.Request=getAjaxRequest();if(this.Request){this.Request.onreadystatechange=function(){if(Cal.Request.readyState==4){if(Cal.Request.status==200||Cal.Request.status==304){eval(Cal.Request.responseText);if(Cal.userWithWritePrivileges)document.AspForm.EditedJS.value=Cal.Request.responseText;gId("OutputCalendar").innerHTML=Cal.getCal();Cal.init();Cal.dataLastModified=Cal.Request.getResponseHeader("Last-Modified");clearTimeout(Cal.timer);if(Cal.userWithWritePrivileges)CM.pollAdministrators();else if(Cal.publicUser)Cal.pollDataHeader();}
else
Cal.timer=setTimeout("Cal.pollData();",1000);}}
this.Request.open("GET",Cal.dataFile+"?"+Math.random());this.Request.send(null);}}
function pollDataHeader(){this.Request=getAjaxRequest();if(this.Request){this.Request.onreadystatechange=function(){if(Cal.Request.readyState==4){if(Cal.Request.status){if(Cal.dataLastModified){if(Cal.dataLastModified!=Cal.Request.getResponseHeader("Last-Modified")){clearTimeout(Cal.timer);Cal.pollData();}
else
Cal.dataLastModified=Cal.Request.getResponseHeader("Last-Modified");}
else
Cal.dataLastModified=Cal.Request.getResponseHeader("Last-Modified");Cal.timer=setTimeout("Cal.pollDataHeader();",5000);}}}
this.Request.open("HEAD",Cal.dataFile+"?"+Math.random());this.Request.send(null);}}
function logInReadAll(){var Form=document.LogIn;var PW=Form.pw;PW.value=PW.value.trim();if(PW.value){if(Form.remember_pw.checked)SetCookie("pwReadAll",PW.value,365);var AspForm=document.AspForm;AspForm.ASP_Job.value="Calendar_Readonly_Login";AspForm.Calendar_Readonly_Password.value=PW.value;AspForm.submit();}
else
PW.focus();return false;}
function getReadAllLogInGUI(){var pwReadAll=(GetCookie("pwReadAll"))?GetCookie("pwReadAll"):"";var pwChecked=(pwReadAll)?" checked='checked'":"";var gui="<form name='LogIn' style='margin:0px;'><table align='center'><tr><td><table align='center'><tr><td class='cmField' style='padding-top:6px;'><a href='javascript:void(0);' onClick='togglePassword( this ); showPasswordTip( this );' onMouseover='showPasswordTip( this );' tabindex='-1' class='pw'>Password</a></td><td class='cmValue' style='padding-top:6px;' id='tdBookingID'><input type='"+((G.live)?"password":"text")+"' name='pw' id='pw' autocomplete='off' value='"+pwReadAll+"' class='cmText' onMouseover='this.title=Msg.PW;' onkeypress='if( window.event && window.event.keyCode == 13 || event.which == 13 ) { return Cal.logInReadAll(); }' /></td></tr><tr><td align='center' colspan='2' class='cmValue' style='padding-top:6px; white-space:nowrap;'><input type='checkbox' id='remember_pw' name='remember_pw' onMouseover='this.title=Msg.RememberMe;' onClick='if( checked ) { var pw = document.LogIn.pw.value.trim(); if( pw ) SetCookie( \"pwReadAll\", pw, 365 ); } else DeleteCookie( \"pwReadAll\" );'"+pwChecked+" /><label for='remember_pw'> Remember Me</label></td></tr><tr><td align='center' colspan='2' style='padding:10px 0px 0px 0px; white-space:nowrap;'><input type='submit' name='OK' value='OK' class='logInButtons' onClick='return Cal.logInReadAll( this );' /><input type='button' value='Cancel' class='logInButtons' onClick='DW.removeWin();' /></td></tr></table></td></tr></table></form>";DW.createWindow(["Read-Only Login",gui],[0,300,0],null,null,6,[4,0,0],null,1);(pwReadAll)?setTimeout("document.LogIn.OK.focus();",100):setTimeout("document.LogIn.pw.focus();",100);return false;}
function getLegend(){var htm="<table align='center'><tr><td><fieldset class='calDesignation'><legend align='center'>&nbsp;Calendar Designations&nbsp;</legend><table align='center'><tr><td class='designation'>Available Nights</td><td class='calDays calHiRes'>&nbsp;01 02 03&nbsp;</td><td class='designation' style='padding-left:30px;'>Reserved Nights</td><td class='calDays calHiRes'>&nbsp;<span class='calBooked'>01 02 03</span>&nbsp;</td><td class='designation' style='padding-left:30px;'>Pending Nights</td><td class='calDays calHiRes'>&nbsp;<span class='calPending'>01 02 03</span>&nbsp;</td></tr></table></fieldset></td></tr></table>";return htm;}
function getCal(){for(var i=0;i<CalData.length-1;i++)this.CarryBookingForward[CalData[i][0]]=[0,""];var Today=new Date();var thisYear=Today.getFullYear();var thisMonth=Today.getMonth()+1;var thisDay=Today.getDate();var pastMonths=(this.publicUser)?0:this.Settings.pastMonthsAdmin;var numMonths=(this.publicUser)?this.Settings.futureMonthsPublic:this.Settings.futureMonthsAdmin+this.Settings.pastMonthsAdmin;var firstDayOfFirstMonth=new Date(thisYear,thisMonth-1-pastMonths,1).getTime();var htm="";var nProps=CalData.length-1;var winWid=gBM()[0];var fSizeCls=(winWid>=1250)?"calHiRes":"calLoRes";htm+="<table align='center' class='calMaster' id='CalMaster'>";for(var monCounter=0;monCounter<numMonths;monCounter++){var htmRow="";var nMonthThisRow=thisMonth+monCounter-pastMonths-1;var factor=Math.floor(nMonthThisRow/12);var nMonth=nMonthThisRow-(factor*12);var nYear=thisYear+factor;var FirstDayOfThisMonth=new Date(nYear,nMonth,1);var theYear=FirstDayOfThisMonth.getFullYear();var theMonth=FirstDayOfThisMonth.getMonth()+1;var theDay=FirstDayOfThisMonth.getDay();var nDaysThisMonth=this.getNumDaysInMonth(theMonth,theYear);htmRow+="<tr><td colspan='2' class='calSpacer'>&nbsp;</td></tr>";if(monCounter-pastMonths==0){if(this.userWithWritePrivileges){htmRow+="<tr><td align='center' colspan='2'><div class='calGreeting' id='CalGreeting'></div><div class='calSearchGUI' id='CalSearchGUI'></div></td></tr><tr><td colspan='2' class='calButtonsTop' id='calButtonsTop'><table align='center' class='pfHide'><tr align='center'><td><input type='button' id='PublishCalendarTop' class='buttonCalPublish' value='Publish' disabled='disabled' /></td><td><input type='button' id='LogOffCalendarTop' class='buttonCalReset' value='Log Off' /></td>";if(G.local&&this.Settings.showReloadButtons)htmRow+="<td><input type='button' class='buttonCalReset' value='Reload' onClick='document.location.reload();' onContextMenu='document.location.reload(true); return false;' title='Local only' /></td>";htmRow+="</tr></table></td></tr>";}
else
htmRow+="<tr><td align='center' colspan='2'><div class='calGreeting' id='CalGreeting'></div><div class='calSearchGUI' id='CalSearchGUI'></div></td></tr>";if(nProps>1)htmRow+="<tr class='pfHide'><td colspan='2'><div class='RentalsRB' id='RentalsRB'></div></td></tr>";}
htmRow+="<tr><td class='calMon "+fSizeCls+"'>"+this.getMonthName(theMonth,this.Settings.showFullMonthNames)+" "+theYear.toString().substring(2,4)+"</td><td class='calDaysWeek "+fSizeCls+"'>&nbsp;";var nDay=theDay;for(var i=1;i<=nDaysThisMonth;i++){var dayOfWeek=this.getDayOfWeek(nDay,2);var dayOfWeekLong=this.getDayOfWeek(nDay);nDay=(nDay<6)?nDay+1:0;var today=(thisYear==theYear&&thisMonth==theMonth&&thisDay==i);var todayOut=(window.Cal)?"Today is "+dayOfWeekLong+" "+this.getMonthName(theMonth,1)+" "+i+", "+theYear:"";htmRow+=(today)?"<span class='calToday' onMouseover='Tip.showIt( \""+todayOut+"\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );'>"+dayOfWeek+"</span> ":dayOfWeek+" ";}
htmRow+="&nbsp;</td></tr>";for(var propNum=0;propNum<nProps;propNum++){var propName=CalData[propNum][0];var Bookings=CalData[propNum].slice(1);var openedSpans=0,closedSpans=0;htmRow+="<tr class='prop"+propNum+"'><td class='calProp "+fSizeCls+"'><span class='calProp'>"+propName+"</span></td><td class='calDays "+fSizeCls+"' id='"+(propNum+1)+"_"+theMonth+"_"+(theYear-2000)+"'>&nbsp;";for(var dayOfMon=1;dayOfMon<=nDaysThisMonth;dayOfMon++){var output=((dayOfMon<10)?"0"+dayOfMon:dayOfMon)+"";if(this.CarryBookingForward[propName][0]){openedSpans++;output=this.CarryBookingForward[propName][1]+output;this.CarryBookingForward[propName][0]=0;}
for(var bookingNum=0;bookingNum<Bookings.length;bookingNum++){var ckInMon=Bookings[bookingNum][0][0];var ckInDay=Bookings[bookingNum][0][1];var ckInYr=Bookings[bookingNum][0][2];var ckOutMon=Bookings[bookingNum][0][3];var ckOutDay=Bookings[bookingNum][0][4];var ckOutYr=Bookings[bookingNum][0][5];if(monCounter==0){var ckInDateMS=new Date(ckInYr+2000,ckInMon-1,ckInDay).getTime();var ckOutDateMS=new Date(ckOutYr+2000,ckOutMon-1,ckOutDay).getTime();if(ckInDateMS<firstDayOfFirstMonth&&ckOutDateMS>firstDayOfFirstMonth){ckInDay=1;ckInMon=theMonth;ckInYr=theYear-2000;}}
var begStrikeThrough=(theMonth==ckInMon&&dayOfMon==ckInDay&&theYear-2000==ckInYr);if(ckOutDay-1==0){ckOutMon--;if(ckOutMon==0){ckOutMon=12;ckOutYr--;}
ckOutDay=getNumDaysInMonth(ckOutMon,ckOutYr+2000)+1;}
if(begStrikeThrough){var bookType=Bookings[bookingNum][1];switch(bookType){case 1:openedSpans++;output="<span class='calBooked'>"+output;this.CarryBookingForward[propName][1]="<span class='calBooked'>";break;case 2:openedSpans++;output="<span class='calPending'>"+output;this.CarryBookingForward[propName][1]="<span class='calPending'>";this.calPending=1;break;default:alert("Switch/Case Error at Cal.getCal: begStrikeThrough");}}
var endStrikeThrough=(theMonth==ckOutMon&&dayOfMon==ckOutDay-1&&theYear-2000==ckOutYr);if(endStrikeThrough){closedSpans++;output+="</span>";}}
htmRow+=output+" ";}
if(openedSpans>closedSpans){htmRow+="</span>";this.CarryBookingForward[propName][0]=1;}
htmRow+="&nbsp;</td></tr>";}
htm+=htmRow;}
htm+="<tr><td colspan='2' class='calLastUpdate'>Calendar last updated <span class='calLastUpdate'>by <span id='calLastUpdateUserID'>"+CalData[CalData.length-1][0]+"</span></span> on <span id='calLastUpdateTimeID'>"+new Date(CalData[CalData.length-1][1]).gDO()+"</span></td></tr>";if(this.userWithWritePrivileges){htm+="<tr class='pfHide'><td colspan='2' class='calButtonsBot' id='calButtonsBot'><table align='center'><tr align='center'><td><input type='button' id='PublishCalendarBot' class='buttonCalPublish' value='Publish' disabled='disabled' /></td><td><input type='button' class='buttonCalReset' id='LogOffCalendarBot' value='Log Off' /></td>";if(G.local&&this.Settings.showReloadButtons)htm+="<td><input type='button' class='buttonCalReset' value='Reload' onClick='document.location.reload();' onContextMenu='document.location.reload(true); return false;' title='Local only' /></td>";htm+="</tr></table></td></tr>";}
htm+="</table>";htm=htm.replace(/\s<\/span>/g, "</span> " );
htm+="";if(window.CalAdmin)CalAdmin.searchGuests(0);return htm;}
function init(){try{gId("OutputLegend").innerHTML=Cal.getLegend();gId("OutputCalendar").innerHTML=Cal.getCal();var searchCal="&nbsp; &#149; &nbsp;<a href='javascript:void(0);' onclick='Tip.removeAll(); CalAdmin.showSearchGUI(); return false;' onMouseover='if( window.Cal ) Tip.showIt( \""+this.MsgCal.Search+"\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );' class='cal' id='CalSearch'>Search</a>";var CalGreeting=gId("CalGreeting");if(this.userWithWritePrivileges){var Cells=gTn("td");for(var i=0;i<Cells.length;i++){if(Cells[i].className.indexOf("calDays ")==0){var data=Cells[i].innerHTML;var newData=data;for(k=1;k<=31;k++){var day=(k<10)?"0"+k:""+k;var Days=data.split(day);Days[0]=Days[0].toLowerCase();var dateOpen=(Days[0].split("span").length%2)?true:false;if(dateOpen){newData=newData.split(day).join("<span onClick='CalAdmin.setDates( this, event );' onMouseOver='if( window.Cal ) return CalAdmin.highlight( this, 1, event );' onMouseOut='Tip.removeAll(); if( window.Cal ) return CalAdmin.highlight( this, 0, event );' onMouseMove='Tip.setPosition( event );' class='calOpen'>"+day+"</span>");}}
Cells[i].innerHTML=newData;}}
document.body.onclick=CalAdmin.clearStartDate;var Spans=gTn("span");for(var i=0;i<Spans.length;i++){if(Spans[i].className=="calBooked"||Spans[i].className=="calPending"){Spans[i].onclick=function(event){if(window.Cal){Tip.removeAll();CalAdmin.getEditResGUI(this,event,1);}}
Spans[i].oncontextmenu=function(event){if(window.Cal){Tip.removeAll();return CalAdmin.getReadAllWin(this,event,1);}}
Spans[i].onmousemove=function(event){Tip.setPosition(event);}
Spans[i].onmouseout=function(){Tip.removeAll();}
Spans[i].onmouseover=function(event){CalAdmin.mouseOverStrikeThrough(this,event);}}}
var greeting=this.Settings.greeting+" "+this.userWithWritePrivileges+", you&rsquo;re logged in as Administrator"+searchCal+"&nbsp; &#149; &nbsp;<a href='help/calendar.html' onclick='Tip.removeAll(); Popup.openWin( this.href ); return false;' onMouseover='if( window.Cal ) Tip.showIt( \""+this.MsgCal.Help+"\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );' class='cal'>Instructions</a>";CalGreeting.innerHTML=greeting;var PublishCalendarTop=gId("PublishCalendarTop");PublishCalendarTop.onclick=function(event){Tip.removeAll();CalAdmin.publish(this,event);}
PublishCalendarTop.onmouseover=function(event){Tip.showIt(Cal.MsgCal.Publish,event);}
PublishCalendarTop.onmouseout=function(event){Tip.removeAll();}
PublishCalendarTop.onmousemove=function(event){Tip.setPosition(event);}
var LogOffCalendarTop=gId("LogOffCalendarTop");LogOffCalendarTop.onclick=function(event){Tip.removeAll();CalAdmin.logOff();}
LogOffCalendarTop.onmouseover=function(event){Tip.showIt(Cal.MsgCal.LogOff,event);}
LogOffCalendarTop.onmouseout=function(event){Tip.removeAll();}
LogOffCalendarTop.onmousemove=function(event){Tip.setPosition(event);}
var PublishCalendarBot=gId("PublishCalendarBot");PublishCalendarBot.onclick=function(event){Tip.removeAll();CalAdmin.publish(this,event);}
PublishCalendarBot.onmouseover=function(event){Tip.showIt(Cal.MsgCal.Publish,event);}
PublishCalendarBot.onmouseout=function(event){Tip.removeAll();}
PublishCalendarBot.onmousemove=function(event){Tip.setPosition(event);}
var LogOffCalendarBot=gId("LogOffCalendarBot");LogOffCalendarBot.onclick=function(event){Tip.removeAll();CalAdmin.logOff();}
LogOffCalendarBot.onmouseover=function(event){Tip.showIt(Cal.MsgCal.LogOff,event);}
LogOffCalendarBot.onmouseout=function(event){Tip.removeAll();}
LogOffCalendarBot.onmousemove=function(event){Tip.setPosition(event);}}
if((this.publicUser||this.userHasReadAllPrivileges)&&!this.userWithWritePrivileges){if(this.userHasReadAllPrivileges)var greeting=this.Settings.greeting+", you have read-all privileges&nbsp; &#149; &nbsp;Click reservations for booking info"+searchCal+"&nbsp; &#149; &nbsp;<a href='calendar.aspx' onClick='Tip.removeAll(); DeleteCookie( \"userHasReadAllPrivileges\" );' onMouseover='if( window.Cal ) Tip.showIt( \""+this.MsgCal.LogOffReadAll+"\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );' class='cal'>Log-off</a>";else{var Today=new Date();var greeting=this.Settings.greeting+", it's "+this.getDayOfWeek(Today.getDay())+", "+this.getMonthName(Today.getMonth()+1,1)+" "+Today.getDate()+", "+Today.getFullYear()+"&nbsp; &#149; &nbsp;<a href='javascript:void(0);' onMouseover='Menu.show( this, \"Menu_Cal_Login\", 14, event, 0, 2 );' onClick='Menu.kill( [ \"Menu_Cal_Login\" ] ); getLogInGUI();' onMouseout='Menu.hide([\"Menu_Cal_Login\"]);' class='cal'>Log-in</a>";}
CalGreeting.innerHTML=greeting;var Cells=gTn("td");for(var i=0;i<Cells.length;i++){if(Cells[i].className.indexOf("calDays ")==0){var data=Cells[i].innerHTML;var newData=data;for(k=1;k<=31;k++){var day=(k<10)?"0"+k:""+k;var Days=data.split(day);Days[0]=Days[0].toLowerCase();var dateOpen=(Days[0].split("span").length%2)?true:false;if(dateOpen){newData=newData.split(day).join("<span class='calOpenPub' onMouseover='if( window.Cal ) Tip.showIt( Cal.MsgCal.Available, event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );'>"+day+"</span>");}}
Cells[i].innerHTML=newData;}}
var Spans=gTn("span");for(var i=0;i<Spans.length;i++){if(Spans[i].className=="calBooked"||Spans[i].className=="calPending"){switch(Spans[i].className){case "calBooked":if(this.userHasReadAllPrivileges&&Spans[i].parentNode.id){Spans[i].onclick=function(event){if(window.Cal){Tip.removeAll();return CalAdmin.getReadAllWin(this,event,1);}}
Spans[i].oncontextmenu=function(event){if(window.Cal&&G.live){Tip.removeAll();return CalAdmin.getReadAllWin(this,event,1);}}
Spans[i].onmouseover=function(event){if(window.Cal){Tip.showIt(CalAdmin.getBookingData(this),event);this.style.cursor="pointer";return true;}}}
else{Spans[i].onmouseover=function(event){if(window.Cal){Tip.showIt(Cal.MsgCal.Confirmed,event);this.style.cursor="default";return true;}}}
break;case "calPending":if(this.userHasReadAllPrivileges&&Spans[i].parentNode.id){Spans[i].onclick=function(event){if(window.Cal){Tip.removeAll();return CalAdmin.getReadAllWin(this,event,1);}}
Spans[i].oncontextmenu=function(event){if(window.Cal&&G.live){Tip.removeAll();return CalAdmin.getReadAllWin(this,event,1);}}
Spans[i].onmouseover=function(event){if(window.Cal){Tip.showIt(CalAdmin.getBookingData(this),event);this.style.cursor="pointer";return true;}}}
else{Spans[i].onmouseover=function(event){if(window.Cal){Tip.showIt(Cal.MsgCal.Pending,event);this.style.cursor="default";return true;}}}
break;default:alert("Switch/Case Error at Cal.init()");}
Spans[i].onmousemove=function(event){Tip.setPosition(event);}
Spans[i].onmouseout=function(){Tip.removeAll();}}}}
var nProps=CalData.length-1;if(nProps>1){var calPropNum=GetCookie("calPropNum");calPropNum=(calPropNum)?parseInt(calPropNum):-1;var RentalsRB=gId("RentalsRB");var htm="<span class='show'>Show</span>: &nbsp; <input type='radio' id='showAll' name='rentals' value='-1' onClick='SetCookie( \"calPropNum\", \"-1\" ); Cal.morphView(this); Tip.removeAll();' onMouseover='Tip.showIt( \"Show all rentals\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );'"+((calPropNum==-1)?" checked":"")+" /> <label for='showAll'>All</label>&nbsp;&nbsp;";for(var i=0;i<nProps;i++){var pName=CalData[i][0];htm+="&nbsp; <input type='radio' id='showProp"+i+"' name='rentals' value='"+i+"' onClick='SetCookie( \"calPropNum\", \""+i+"\" ); Cal.morphView(this); Tip.removeAll();' onMouseover='Tip.showIt( \"Show "+pName+" only\", event );' onMouseout='Tip.removeAll();' onMousemove='Tip.setPosition( event );'"+((calPropNum==i)?" checked":"")+" /> <label for='showProp"+i+"'"+((calPropNum==i)?" checked":"")+">"+pName+"</label>&nbsp; &nbsp;";}
RentalsRB.innerHTML=htm;if(calPropNum>=0)this.morphView(null);}
self.status="";}
catch(Err){if(G.local){var err="";for(member in Err)err+=member+": "+Err[member]+"\n";alert("Exception at function Cal.init:\n\n"+err);}
else{self.status="Initializing Cal.init method, one moment please...";setTimeout("Cal.init();",2500);}}}
function morphView(RadioButton){var nRadioButton=(RadioButton)?parseInt(RadioButton.value):parseInt(GetCookie("calPropNum"));var TR=gTn("tr");for(var i=0;i<TR.length;i++){var rePattern=/^prop\d+$/;if( rePattern.test(TR[i].className)){var nPropRow=parseInt(TR[i].className.replace(/^prop/, "" ) );
TR[i].style.display=(nRadioButton==nPropRow||nRadioButton==-1)?"":"none";}}
if(window.CalAdmin)CalAdmin.scrollDownOnLogin();}
function getDayOfWeek(index,nChars){var arrWeekDay=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var theDay=arrWeekDay[index];return(nChars)?theDay.substring(0,nChars):theDay;}
function getMonthName(index,fullName){var arrMonth=["January","February","March","April","May","June","July","August","September","October","November","December"];var month=arrMonth[index-1];return(fullName)?month:month.substring(0,3);}
function getNumDaysInMonth(month,year){var leapYear=false;if(year%4!=0)leapYear=false;else if(year%400==0)leapYear=true;else if(year%100==0)leapYear=false;else leapYear=true;var nDays=31;if(month==4||month==6||month==9||month==11)nDays=30;else if(month==2)nDays=(leapYear)?29:28;return nDays;}
function createLoginMenus(){var M=new Array();M.push("<div onMouseOver='Menu.keepAlive([\"Menu_Cal_Login\"]);' onMouseOut='Menu.hide([\"Menu_Cal_Login\"]);' id='Menu_Cal_Login' class='menu'>");M.push("<table>");M.push("<tr><td class='menu'><a href='javascript:void(0);' onClick='Menu.kill( [ \"Menu_Cal_Login\" ] ); Cal.getReadAllLogInGUI();' class='menu'>Read-Only</a></td></tr>");M.push("<tr><td class='menu'><a href='javascript:void(0);' onClick='Menu.kill( [ \"Menu_Cal_Login\" ] ); getLogInGUI();' class='menu'>Administrator</a></td></tr>");M.push("</table>");M.push("</div>");var Div=gEl("div");Div.innerHTML=M.join("");aCh(Div);}}
Cal=new Calendar();
