// Do not edit this compressed file. Download, rename & edit the master version of it.
function getBodySize(){var bodyWid=-1,bodyHgt=-1;if(IE){var Body=(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body;if(Body){bodyWid=Body.clientWidth;bodyHgt=Body.clientHeight;}}
else{bodyWid=window.innerWidth;bodyHgt=window.innerHeight;}
return[bodyWid,bodyHgt];}
calMonthsFutureAdmin=0;calMonthsPastAdmin=0;function Calendar(){this.Settings=new Array();this.Settings.greeting="Aloha";this.Settings.showFullMonthNames=0;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=calMonthsFutureAdmin;this.Settings.futureMonthsPublic=calMonthsFuturePublic;this.Settings.pastMonthsAdmin=calMonthsPastAdmin;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.getLegend=getLegend;this.Msg=new Array();this.Msg.backToBack="Click to add a back-to-back; click background to reset";this.Msg.confirmed="Confirmed Reservation";this.Msg.confirmedShort="Confirmed";this.Msg.edit="Click to edit; right-click for read-only";this.Msg.help="Calendar Help, Tips & FAQs";this.Msg.logOff="All Finished? Log-off to end your session";this.Msg.logOffReadAll="Cancel read-all access";this.Msg.available="Available for check-in";this.Msg.pending="Pending Reservation (on hold)";this.Msg.pendingShort="Pending";this.Msg.publish="Save your new calendar data to the web";this.Msg.searchCal="Search calendar by guest name";this.Msg.today="Today";this.CarryBookingForward=new Array();this.publicUser=true;this.calPending=0;this.dataLastModified="";this.Request=null;this.timer=0;this.dataFile="cal-data.js";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,expDate12Mon);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(evt){if(!evt)evt=window.event;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='fwField' style='padding-top:6px;'>Password</td><td class='fwValue' style='padding-top:6px;' id='tdBookingID'><input type='"+((live)?"password":"text")+"' name='pw' autocomplete='off' value='"+pwReadAll+"' class='fwText' title='Case sensitive read-all password' onkeypress='if( window.event && window.event.keyCode == 13 || event.which == 13 ) { return Cal.logInReadAll(); }' /></td></tr><tr><td align='center' colspan='2' class='fwValue' style='padding-top:6px; white-space:nowrap;'><input type='checkbox' id='remember_pw' name='remember_pw' onClick='if( checked ) { var pw = document.LogIn.pw.value.trim(); if( pw ) SetCookie( \"pwReadAll\", pw, expDate12Mon ); } 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,evt,6,[2,0,0]);(pwReadAll)?setTimeout("document.LogIn.OK.focus();",100):setTimeout("document.LogIn.pw.focus();",100);return false;}
function getLegend(){var htm="<table align='center' class='calLegend'><tr><td class='designation'>Available</td><td class='calDays calHiRes'>&nbsp;01 02 03&nbsp;</td><td class='designation' style='padding-left:40px;'>Reserved</td><td class='calDays calHiRes'>&nbsp;<span class='calBooked'>01 02 03</span>&nbsp;</td><td class='designation' style='padding-left:40px;'>Pending</td><td class='calDays calHiRes'>&nbsp;<span class='calPending'>01 02 03</span>&nbsp;</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=getBodySize()[0];var fSizeCls=(winWid>=1250)?"calHiRes":"calLoRes";htm+="<table align='center' class='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){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);htmRow+=(today)?"<span class='calToday' title='"+((window.Cal)?this.Msg.today+": "+dayOfWeekLong+" "+theMonth+"/"+i+"/"+(theYear-2000):"")+"'>"+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]).toLocaleString()+"</span></td></tr>";htm+="</table>";htm=htm.replace(/\s<\/span>/g, "</span> " );
htm+="";if(window.CalAdmin)CalAdmin.searchGuests(0);return htm;}
function init(){try{var searchCal="&nbsp; &#149; &nbsp;<a href='javascript:void(0);' onclick='CalAdmin.showSearchGUI(); return false;' title='"+this.Msg.searchCal+"' class='cal' id='CalSearch'>Search</a>";var CalGreeting=document.getElementById("CalGreeting");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();CalGreeting.innerHTML=greeting;var Cells=document.getElementsByTagName("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' title='"+this.Msg.available+"'>"+day+"</span>");}}
Cells[i].innerHTML=newData;}}
var Spans=document.getElementsByTagName("span");for(var i=0;i<Spans.length;i++){if(Spans[i].className=="calBooked"||Spans[i].className=="calPending"){switch(Spans[i].className){case "calBooked":Spans[i].onmouseover=function(){if(window.Cal){this.title=Cal.Msg.confirmed;this.style.cursor="default";return true;}}
break;case "calPending":Spans[i].onmouseover=function(){if(window.Cal){this.title=Cal.Msg.pending;this.style.cursor="default";return true;}}
break;default:alert("Switch/Case Error at Cal.init()");}}}
var nProps=CalData.length-1;if(nProps>1){var calPropNum=GetCookie("calPropNum");calPropNum=(calPropNum)?parseInt(calPropNum):-1;var RentalsRB=document.getElementById("RentalsRB");var htm="<span class='show'>Show</span>: <input type='radio' id='showAll' name='rentals' value='-1' onClick='SetCookie( \"calPropNum\", \"-1\" ); Cal.morphView(this);' title='Show all rentals'"+((calPropNum==-1)?" checked":"")+" /><label for='showAll' title='Show all rentals'>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);' title='Show "+pName+" only'"+((calPropNum==i)?" checked":"")+" /><label for='showProp"+i+"' title='Show "+pName+" only'"+((calPropNum==i)?" checked":"")+">"+pName+"</label>&nbsp;&nbsp;";}
RentalsRB.innerHTML=htm;if(calPropNum>=0)this.morphView(null);}
if(qStr&&qStr.getVal("cancelForceLogin")=="yes"){document.getElementById("CalGreeting").className="off";document.getElementById("calButtonsTop").className="off";document.getElementById("calButtonsBot").className="off";}
self.status="";}
catch(Err){if(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=document.getElementsByTagName("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 Menus=new Array();var Div=document.createElement("div");Div.id="Cal_Login";Div.className="menu";Div.onmouseover=function(){Menu.keepAlive(["Cal_Login"]);}
Div.onmouseout=function(){Menu.hide([["Cal_Login"]]);}
Menus.push("<table align='left' class='menuBorder'>");Menus.push("<tr><td><a href='javascript:void(0);' onClick='Menu.kill( [ \"Cal_Login\" ] ); Cal.getReadAllLogInGUI( event );' class='menu'><div onMouseOver='Menu.on(this);' onMouseOut='Menu.off(this);' class='menuItemOff'><div class='menuItem'>Read-Only</div></div></a></td></tr>");Menus.push("<tr><td><a href='javascript:void(0);' onClick='Menu.kill( [ \"Cal_Login\" ] ); getLogInGUI( event, [2,0,0] );' class='menu'><div onMouseOver='Menu.on(this);' onMouseOut='Menu.off(this);' class='menuItemOff'><div class='menuItem'>Administrator</div></div></a></td></tr>");Menus.push("</table>");Div.innerHTML=Menus.join("");document.body.appendChild(Div);}}
Cal=new Calendar();
