// avail.js - js routines for rural-france.com Copyright M.J.C. Griffin
// Version 6.0 18Apr06

var addr1 = "gite";
var addr2 = "rural-france";

// Establish Months and Month-length arrays

var months=new Array(13);ml=new Array(13);

months[1]="January";ml[1]=31;
months[2]="February";ml[2]=28;
months[3]="March";ml[3]=31;
months[4]="April";ml[4]=30;
months[5]="May";ml[5]=31;
months[6]="June";ml[6]=30;
months[7]="July";ml[7]=31;
months[8]="August";ml[8]=31;
months[9]="September";ml[9]=30;
months[10]="October";ml[10]=31;
months[11]="November";ml[11]=30;
months[12]="December";ml[12]=31;

var a = 0;  // Available
var b = 1;  // Booked
var r = 2;  // Reserved

// Update Status Tables when bookings/reservations are taken

var PeriodA = new Array();var RentA = new Array();var StatusA = new Array();
var PeriodB = new Array();var RentB = new Array();var StatusB = new Array();

A_StartWeek=30;
B_StartWeek=1;

A_Year=2006;
B_Year=2005;

StatusA[1] = b;
StatusA[2] = b;
StatusA[3] = a;
StatusA[4] = a;
StatusA[5] = a;
StatusA[6] = a;
StatusA[7] = a;
StatusA[8] = r;
StatusA[9] = r;
StatusA[10] = a;
StatusA[11] = b;
StatusA[12] = a;
StatusA[13] = r;
StatusA[14] = a;
StatusA[15] = a;
StatusA[16] = b;
StatusA[17] = b;
StatusA[18] = b;
StatusA[19] = b;
StatusA[20] = b;
StatusA[21] = b;
StatusA[22] = b;
StatusA[23] = b;
StatusA[24] = a;
StatusA[25] = b;
StatusA[26] = b;
StatusA[27] = a;
StatusA[28] = a;
StatusA[29] = a;
StatusA[30] = a;
StatusA[31] = a;
StatusA[32] = a;
StatusA[33] = a;

StatusB[11] = b;
StatusB[12] = b;
StatusB[13] = b;
StatusB[14] = b;
StatusB[15] = b;
StatusB[16] = b;
StatusB[17] = b;
StatusB[18] = b;
StatusB[19] = b;
StatusB[20] = b;
StatusB[21] = b;
StatusB[22] = b;
StatusB[23] = b;
StatusB[24] = b;
StatusB[25] = b;
StatusB[26] = b;
StatusB[27] = b;
StatusB[28] = b;
StatusB[29] = b;
StatusB[30] = a;
StatusB[31] = a;
StatusB[32] = b;

// 

function calcPeriodA(StartDay,StartMonth,StartYear){
   day=StartDay;
   month=StartMonth;
   EndMonth=StartMonth;
   year=StartYear-2000;
   for (j=1;month<11;j++) calcTableARow(j);
   TableALength=j;
}

function calcTableARow(j){
   PeriodA[j]=" "+day+" "+months[month]+" 0"+year;
   EndDay=day+7; if (EndDay>ml[month]) {EndDay=EndDay-ml[month];EndMonth=month+1;}
   PeriodA[j+1]=" "+EndDay+" "+months[EndMonth]+" 0"+year;
   if (month==7||month==8) RentA[j]=HiRate; else if (month==6||month==9) RentA[j]=MidRate; else RentA[j]=LoRate;
   if ((EndDay>4)&&(month!=EndMonth)) {if (EndMonth==7||EndMonth==8) RentA[j]=HiRate; else if (EndMonth==6||EndMonth==9) RentA[j]=MidRate; else RentA[j]=LoRate;}
   if ((EndDay<5)&&(EndDay>2)&&(month!=EndMonth)) {if (EndMonth==7) RentA[j]=MidHiRate; else if (EndMonth==6||EndMonth==10) RentA[j]=MidMidRate;}
   day=EndDay;
   month=EndMonth;
}

function doAvTableA(StartYear,start){
   document.write("<table align='center' cellpadding='0' cellspacing='0' width='600' style='border-collapse:collapse; border:1px solid black;'><col width='30'><col width='140'><col width='135'><col width='135'><col width='160'>");
   document.write("<tr id='AvailabilityTitleBar'><td align='left' colspan='4'>&nbsp;"+StartYear+" Availability, as of "+date.getDate() +" "+ isnMonths[date.getMonth() + 1] +" "+date.getFullYear()+". ~ Reservations: <td align='left'>+ 33 565 31 44 22&nbsp;")
   document.write("<tr id='AvailabilityTitleBar'><td>Week<td>From:<td>To:<td>Status:<td>To book:<tr>");
   for (i=start;i<TableALength;i++) doAvTableARow(i);
   document.write("</table>")
}

function doAvTableARow(i){
   if (StatusA[i]==b) doBookedA(i);
   else if (StatusA[i]==r) doReservedA(i);
   else doAvailableA(i);
}
  
function doAvailableA(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Available1'>"+PeriodA[i]+"<td id='Available1'>"+PeriodA[i+1]+"<td id='Available2'>Available at "+RentA[i]+"<td id='Email'><a href='mailto:"+addr1+"@"+addr2+".com?subject=Can%20I%20reserve%20the%20week%20of%20"+PeriodA[i]+"%20please?' title='Click here to send an email enquiry about this week'>Reserve via email</a></tr>")
}

function doBookedA(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Booked'>"+PeriodA[i]+"<td id='Booked'>"+PeriodA[i+1]+"<td id='Booked'>Booked<td id='Booked'>&nbsp;</tr>");   
}

function doReservedA(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Reserved'>"+PeriodA[i]+"<td id='Reserved'>"+PeriodA[i+1]+"<td id='Reserved'>Reserved<td id='Reserved'>&nbsp;</tr>");   
}

function calcPeriodB(StartDay,StartMonth,StartYear){
   day=StartDay;
   month=StartMonth;
   year=StartYear-2000;
   EndMonth=StartMonth;
   for (j=1;month<11;j++) calcTableBRow(j);
   TableBLength=j;
}

function calcTableBRow(j){
   PeriodB[j]=" "+day+" "+months[month]+" 0"+year;
   EndDay=day+7; if (EndDay>ml[month]) {EndDay=EndDay-ml[month];EndMonth=month+1;}
   PeriodB[j+1]=" "+EndDay+" "+months[EndMonth]+" 0"+year;
   if (month==7||month==8) RentB[j]=HiRate; else if (month==6||month==9) RentB[j]=MidRate; else RentB[j]=LoRate;
   if ((EndDay>4)&&(month!=EndMonth)) {if (EndMonth==7||EndMonth==8) RentB[j]=HiRate; else if (EndMonth==6||EndMonth==9) RentB[j]=MidRate; else RentB[j]=LoRate;}
   if ((EndDay<5)&&(EndDay>2)&&(month!=EndMonth)) {if (EndMonth==7) RentB[j]=MidHiRate; else if (EndMonth==6||EndMonth==10) RentB[j]=MidMidRate;}
   day=EndDay;
   month=EndMonth;
}


function doAvTableB(StartYear,start){
   document.write("<table align='center' cellpadding='0' cellspacing='0' width='600' style='border-collapse:collapse; border:1px solid black;'><col width='30'><col width='140'><col width='135'><col width='135'><col width='160'>");
   document.write("<tr id='AvailabilityTitleBar'><td align='left' colspan='4'>&nbsp;"+StartYear+" Availability, as of "+date.getDate() +" "+ isnMonths[date.getMonth() + 1] +" "+date.getFullYear()+". ~ Reservations: <td align='left'>+ 33 565 31 44 22&nbsp;")
   document.write("<tr id='AvailabilityTitleBar'><td>Week<td>From:<td>To:<td>Status:<td>To book:<tr>");
   for (i=start;i<TableBLength;i++) doAvTableBRow(i);
   document.write("</table>")
}

function doAvTableBRow(i){
   if (StatusB[i]==b) doBookedB(i);
   else if (StatusB[i]==r) doReservedB(i);
   else doAvailableB(i);
}
  
function doAvailableB(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Available1'>"+PeriodB[i]+"<td id='Available1'>"+PeriodB[i+1]+"<td id='Available2'>Available at "+RentB[i]+"<td id='Email'><a href='mailto:"+addr1+"@"+addr2+".com?subject=Can%20I%20reserve%20the%20week%20of%20"+PeriodB[i]+"%20please?' title='Click here to send an email enquiry about this week'>Reserve via email</a></tr>")
}

function doBookedB(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Booked'>"+PeriodB[i]+"<td id='Booked'>"+PeriodB[i+1]+"<td id='Booked'>Booked<td id='Booked'>&nbsp;</tr>");   
}

function doReservedB(i){
   document.write("<tr><td id='AvailabilityTitleBar'>"+i+"<td id='Reserved'>"+PeriodB[i]+"<td id='Reserved'>"+PeriodB[i+1]+"<td id='Reserved'>Reserved<td id='Reserved'>&nbsp;</tr>");   
}
