var maxExtension = maxTripLength - minTripLength;
var oneday = 86400000;
var bLoading = false;

function makeDateArray (dateList, lblDefaultDate, dy, dm, dd, ry, rm, rd)
{
  var options = new Array();
  var newDate = new Date (dy, dm - 1, dd);
  var dateVar = 0;

  p = Date.parse (newDate) + (oneday * (minTripLength-1));

  //options[0] = new Option ("-- Please Select a Return Date --",0);

  for (i = 0; i < maxExtension+1; i++) {
    date = new Date();
    date.setTime (p);

    weekday = date.getDay();
    weekday = ((weekday==0)?"Sunday":(weekday==1)?"Monday":(weekday==2)?"Tuesday":(weekday==3)?"Wednesday":(weekday==4)?"Thursday":(weekday==5)?"Friday":"Saturday");

    month = date.getMonth() + 1;

    var monthName = ((month==1)?"January":(month==2)?"February":(month==3)?"March":(month==4)?"April":(month==5)?"May":(month==6)?"June":(month==7)?"July":(month==8)?"August":(month==9)?"September":(month==10)?"October":(month==11)?"November":"December");

    day = date.getDate();
    year = date.getFullYear();

    options [i] = new Option (weekday + ", " + monthName + " " + day + ", " + year, p);
    try {
      if (i == 0)
        lblDefaultDate.innerText = weekday + ", " + monthName + " " + day + ", " + year;
      }
    catch(e) {
    }


    if ((year == ry) && (month == rm) && (day == rd)) {
      dateVar = i;
    }
    p += oneday;
  }

  options [dateVar].selected = true;

  makeOptionsList (dateList, options);
}

function makeOptionsList (selector, options)
{
  var datelength = selector.options.length

      for (i = datelength; i > 0; i--) {
            selector.options [i] = null;
        }

  for (i = 0; i < options.length; i++) {
    selector.options [i] = options [i];
  }
}

function saveDate (selector, year, month, day)
{
  var date = new Date();

  date.setTime (selector [selector.selectedIndex].value);

  year.value = date.getFullYear();
  day.value = date.getDate();
  month.value = date.getMonth() + 1;
}

function setupDate (selector, lblDefaultDate, dy, dm, dd, ry, rm, rd)
{
  if ((dy != 0) && (dm != 0) && (dd != 0)) {
    makeDateArray (selector, lblDefaultDate, dy, dm, dd, ry, rm, rd);
  }
}

// -----------------

function savePrefDate()
{
  var dropDown = document.CustomerBookingForm.prefReturnDates;
  var form = document.CustomerBookingForm;

  if (dropDown [dropDown.selectedIndex].value != 0) {
    saveDate (dropDown, form.returnYear, form.returnMonth, form.returnDay);
    }
}

function saveAltDate()
{
  var dropDown = document.CustomerBookingForm.altReturnDates;
  var form = document.CustomerBookingForm;

  if (dropDown [dropDown.selectedIndex].value != 0) {
    saveDate (dropDown, form.returnAltYear, form.returnAltMonth, form.returnAltDay);
  }
}

function changePrefDates()
{
  var form = document.CustomerBookingForm;
  form.returnYear.value = 0;
  form.returnMonth.value = 0;
  form.returnDay.value = 0;
  setupPrefDates();
}

function changeAltDates()
{
  var form = document.CustomerBookingForm;
  form.returnAltYear.value = 0;
  form.returnAltMonth.value = 0;
  form.returnAltDay.value = 0;
  setupAltDates();
}

function setupPrefDates()
{
  if (maxExtension == 0) return;

  var form = document.CustomerBookingForm;

  setupDate (form.prefReturnDates,
    form.lblReturnDate,
    form.departYear [form.departYear.selectedIndex].value,
    form.departMonth [form.departMonth.selectedIndex].value,
    form.departDay [form.departDay.selectedIndex].value,
    form.returnYear.value,
    form.returnMonth.value,
    form.returnDay.value);

  savePrefDate();
}

function setupAltDates(type)
{
  if (maxExtension == 0) return;

  var form = document.CustomerBookingForm;

  setupDate (form.altReturnDates,
    null,
    form.departAltYear [form.departAltYear.selectedIndex].value,
    form.departAltMonth [form.departAltMonth.selectedIndex].value,
    form.departAltDay [form.departAltDay.selectedIndex].value,
    form.returnAltYear.value,
    form.returnAltMonth.value,
    form.returnAltDay.value);

  saveAltDate();
}

function setupDateSelections()
{
//  bLoading = true;
  setupPrefDates();
  setupAltDates();
  ChangeHotelRooms();
  bLoading = false;
}

function ChangeHotelRooms()
{
  try {
    makeRoomTypeArray(document.CustomerBookingForm.lstRoomType, document.CustomerBookingForm.lstNumPeople.value, true, document.CustomerBookingForm.lstRoomType [document.CustomerBookingForm.lstRoomType.selectedIndex].value);
    makeRoomTypeArray(document.CustomerBookingForm.lstRoomType2, document.CustomerBookingForm.lstNumPeople.value, false, document.CustomerBookingForm.lstRoomType2 [document.CustomerBookingForm.lstRoomType2.selectedIndex].value);

    if (document.CustomerBookingForm.lstNumPeople.value == 4) {
      document.CustomerBookingForm.lstRoomType2.disabled = false;
      }
    else {
      document.CustomerBookingForm.lstRoomType2.disabled = true;
      }
    }
  catch(e) {
  }
}

function makeRoomTypeArray (RoomTypeList, NumTraveler, IsRoom1, SelectedValue)
{
  var options = new Array();
  var SelectedIndex = -1;

  if (NumTraveler == 1 && IsRoom1) {
    options [0] = new Option ("Single", 3);
    }
  else if ((NumTraveler == 2 && IsRoom1) || NumTraveler == 4) {
    options [0] = new Option ("Double = 1 Double Bed", 1);
    options [1] = new Option ("Twin = 2 Twin Beds", 2);
    if (SelectedValue == 1) {
      SelectedIndex = 0
      }
    if (SelectedValue == 2) {
      SelectedIndex = 1
      }
    }
  else if (NumTraveler == 3 && IsRoom1) {
    options [0] = new Option ("Triple", 4);
    }
  else {
    options [0] = new Option ("", 0);
    }
  makeOptionsList (RoomTypeList, options);
  if (SelectedIndex != -1) {
    RoomTypeList.selectedIndex = SelectedIndex
    }
}
