// $Id: booking.js,v 1.4 2007/04/03 07:41:30 clinton Exp $
// supporting javascript for Center Parcs Web booking

var originalDurations = new Array();

var daysinmonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var weekdays = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat','Sun');

// removes the unwanted days from the duration drop down
function removeDuration(y,m,d)
{
  var startDate = document.forms[0].startdate;
  setOriginalDurations();
  var selectElement = document.forms[0].durationSelect;
  var theDate = new Date(y,m-1,d,0,0,0);
  var theDoW = theDate.getDay();
  var days;
  
  // set the start date textbox
  startDate.value = formatDate(theDate,window.CP_dateFormat);

  if (theDoW == 1) { days = 3; }
  if (theDoW == 5) { days = 4; }
  
  // alert(days);
  
  for(i=0; i< selectElement.length; i++)
  {
    if (parseInt(selectElement[i].value) == days) { selectElement[i] = null; }
  }

}

function getOriginalDurations()
{
  var selectElement = document.forms[0].durationSelect;
  for(i=0; i< selectElement.length; i++)
  {
    originalDurations[i] = new Array();
    originalDurations[i][0] = selectElement.options[i].text;
    originalDurations[i][1] = selectElement.options[i].value;
  }

}

function setOriginalDurations()
{
  for(i=0; i< document.forms[0].durationSelect.length; i++)
  {
    document.forms[0].durationSelect[i] = null;
  }

  var selectElement = document.forms[0].durationSelect;
  for(i=0; i< originalDurations.length; i++)
  {
    selectElement[i] = new Option(originalDurations[i][0], originalDurations[i][1]);
  }
  
}

function changedates(initFlag) {
  if (initFlag == null) initFlag = false;
  var monyr = document.forms[0].monthyear.options[document.forms[0].monthyear.selectedIndex].value;
  var dur = document.forms[0].durationSelect.options[document.forms[0].durationSelect.selectedIndex].value;
  var thedate = document.forms[0].dayinmonth;
  var amdate = monyr.substring(0,2)+"/01/"+monyr.substring(3,9); // need american date format!

  var tdate = new Date(amdate);
  var yy = tdate.getFullYear();
  var mm = tdate.getMonth();

  var count = 0;
  var minDate = createDate(document.forms[0].dateRangeStart.value);
  var maxDate = createDate(document.forms[0].dateRangeEnd.value);
    
  if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) daysinmonth[1] = 29;

  var selectedDay = getDropDownValue(thedate);
  
  while (thedate.length > 0) {
    thedate[thedate.length-1] = null; 
  }
  
  for (i=1; i<= daysinmonth[mm]; i++) {
    tdate.setYear(yy);
    tdate.setMonth(mm);
    tdate.setDate(i);    
    if ((tdate.getTime() >= minDate.getTime()) && (tdate.getTime() <= maxDate.getTime())) {
      if ((tdate.getDay() == 1) && ((dur == 7 || dur == 4))) {
        if (overrideDates.isChristmas(tdate) != null) continue;
        thedate[count++] = new Option(i+" "+weekdays[tdate.getDay()]+"",i);
      }
  
      if ((tdate.getDay() == 5) && ((dur == 7 || dur == 3))) {
        if (overrideDates.isChristmas(tdate) == true) continue;
        thedate[count++] = new Option(i+" "+weekdays[tdate.getDay()]+"",i);
      }
      
      if (dur != 7 && dur != 3 && dur != 4) {
        initFlag = true;
        if (overrideDates.isChristmas(tdate) == true) {
          var opts = overrideDates.getOptions(dur, tdate);
          for (var d = 0; d < opts.length; d++) thedate[count++] = opts[d];
        }
      }      
    }
  }
  if (thedate.options.length == 0) {
    if (!initFlag)
      alert("The month you selected ("+document.forms[0].monthyear.options[document.forms[0].monthyear.selectedIndex].text+") has no available dates for the selected duration.");
    var mon = document.forms[0].monthyear.selectedIndex;
    if (mon+1 < document.forms[0].monthyear.options.length) {
      document.forms[0].monthyear.options[mon].selected = false;  
      document.forms[0].monthyear.options[mon+1].selected = true;  
    } else {
      document.forms[0].monthyear.options[mon].selected = false;  
      document.forms[0].monthyear.options[0].selected = true;         
    }
    changedates(initFlag);  
  }
  setDropDown(thedate, selectedDay);
  if(typeof thedate.onchange == "function")  thedate.onchange();
  grabArrDate();
}

function grabArrDate() {
  var form = document.forms[0];
  var monyr = getDropDownValue(form.monthyear);
  var day = getDropDownValue(form.dayinmonth);
  var d = new Date ( monyr.substring(0,2)+"/"+day+"/"+monyr.substring(3));
  form.arrDate.value = formatFSSDate(d);
}

function setMultipleValues(y,m,d) 
{
  var tempdate;
  if (m<10)
  {
    tempdate = "0" + m+ "/" + y;
  }
  else
  {
    tempdate = m+ "/" + y;
  }

  for (var i=0; i<document.forms[0].monthyear.options.length; i++) 
  {
    if (document.forms[0].monthyear.options[i].value==tempdate) 
    {
      document.forms[0].monthyear.selectedIndex=i;
    }
  }

  changedates();
  
  for (var i=0; i<document.forms[0].dayinmonth.options.length; i++) 
  {
    if (document.forms[0].dayinmonth.options[i].value==d) 
    {
      document.forms[0].dayinmonth.selectedIndex=i;
    }
  }

}


function modifyCalendar(which)
{
  resetCalendar();
  var val;
  val = which.options[which.selectedIndex].value;
  
  if (val == -1) {
    populateDDBAry(which.form.monthyear, newyearMonths);  
  } else {
    populateDDBAry(which.form.monthyear, normalMonths);      
  }
  which.form.monthyear.options[which.form.monthyear.options.length-1] = null;
  

  if (val==3) {
    cal.setDisabledWeekDays(0,1,2,3,4,6);
    overrideDates.blackoutDates(cal);
  } else if (val==4)  {
    cal.setDisabledWeekDays(0,2,3,4,5,6);
    overrideDates.blackoutDates(cal);
  } else if (val==7) {
    cal.setDisabledWeekDays(0,2,3,4,6);
    overrideDates.blackoutDates(cal);
  } else { // special date range
    var xmasPeriod = overrideDates[val];
    if (xmasPeriod == null) return;
    cal.setDisabledWeekDays();
    var validDates = new Array();
    for (var i = 0; i < xmasPeriod.bookPatterns.length;i++) {
      if (xmasPeriod.getDate(i,"FSS") >= which.form.dateRangeStart.value)
      validDates[validDates.length] = xmasPeriod.getDate(i,"cal");
    }
    cal.enableOnlyDates(validDates);
  }
}
