﻿var maxyearmonth = 201003;

var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

var daysToPickup = 7; // first possible date is today + daysToPickup

var now = new Date();
var startPickup   = new Date(now.getTime() + 1000*60*60*24*daysToPickup); // now

var endDropoffdelta = 12;       // end for drop

function dropoff_open (date) {
  return pickup_open (date);
}

function pickup_open (date) {
  return date.getDay() != 0;
}

function yearmonth_text (yearmonth) {
  var year = Math.floor(yearmonth / 100);
  var month = months[yearmonth % 100 - 1];
  return month + ' ' + year;
}

function get_endday (yearmonth) {
  var endday = 31;
  var year = Math.floor(yearmonth / 100);
  var month = yearmonth % 100;
  if(month == 2)
    endday = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? 29 : 28;
  else if(month == 4 || month==6 || month == 9 || month == 11)
    endday = 30;
  return endday;
}

function changed_dropoffmonth (startmonthyear, startday) {
  var form = window.document.quickquote;
  if(form == null) {
    alert('Error: Form is null');
    return;
  }
  var va_MoYearPU = form.va_MoYearPU;
  var va_DayPU = form.va_DayPU;
  if(va_MoYearPU == null || va_DayPU == null) {
    alert('Error: va_MoYearPU or va_DayPU is null');
    return;
  }

  var va_MoYearDO = form.va_MoYearDO;
  var va_DayDO = form.va_DayDO;
  if(va_MoYearDO == null || va_DayDO == null) {
    alert('Error: va_MoYearDO or va_DayDO is null');
    return;
  }

  if(startmonthyear < 0)
    startmonthyear = parseInt(va_MoYearPU.options[va_MoYearPU.options.selectedIndex].value);
  var yearmonth = parseInt(va_MoYearDO.options[va_MoYearDO.options.selectedIndex].value);
  if(yearmonth < startmonthyear)
    yearmonth = startmonthyear;

  if(startday <= 0)
    startday = (yearmonth == startmonthyear 
    ? va_DayPU.options[va_DayPU.options.selectedIndex].value : 1);
  if(yearmonth == startmonthyear) {
    startday++;
    while(startday <= get_endday(startmonthyear) 
          && !dropoff_open(new Date(Math.floor(startmonthyear / 100), (startmonthyear - 1) % 100, startday)))
      startday++;

    if(startday > get_endday(startmonthyear)) {
      startday = 1;
      startmonthyear += startmonthyear % 100 == 12 ? 89 : 1; // next month
    }
    yearmonth = startmonthyear;
  }

  if(parseInt(va_MoYearDO.options[0].value) != startmonthyear) {
    va_MoYearDO.options[0].value = startmonthyear;
    va_MoYearDO.options[0].text  = yearmonth_text(startmonthyear);
    // Opera 5.11 is buggy here: alert(startmonthyear + ' ' +dropoffMonths.options[0].value);
    for(var i = va_MoYearDO.options.length-1; i > 0; i--)
      va_MoYearDO.options[i] = null;
  }
//  var endmonthyear = startmonthyear + 100;
//  if (endmonthyear > maxyearmonth) {endmonthtear = maxyearmonth};
  var endmonthyear = maxyearmonth;

  while(parseInt(va_MoYearDO.options[va_MoYearDO.options.length - 1].value) < endmonthyear) {
    var current = parseInt(va_MoYearDO.options[va_MoYearDO.options.length - 1].value);
    current += current % 100 == 12 ? 89 : 1;
    va_MoYearDO.options[va_MoYearDO.options.length] = new Option(current);

    va_MoYearDO.options[va_MoYearDO.options.length - 1].value = current;
    va_MoYearDO.options[va_MoYearDO.options.length - 1].text = yearmonth_text(current);
    if(yearmonth == current)
      va_MoYearDO.options.selectedIndex = va_MoYearDO.options.length - 1;
  }
  if(startmonthyear != va_MoYearDO.options[va_MoYearDO.options.selectedIndex].value)
    startday = 1;

  var endday = get_endday(yearmonth);
  var year = Math.floor(yearmonth / 100);
  var month = (yearmonth - 1) % 100;
  var count = 0;
  for(var i=startday; i <= endday; i++) {
    if(dropoff_open(new Date(year, month, i))) {
      if(va_DayDO.options[count] == null)
        va_DayDO.options[count] = new Option();

      va_DayDO.options[count].value = i;
      va_DayDO.options[count].text = i;
      count++;
    }
  }
  for(var i = va_DayDO.options.length - 1; i >= count; i--)
    va_DayDO.options[i] = null;
 
}

function changed_pickupmonth () {
  var form = window.document.quickquote;
  if(form == null) {
    alert('Error: Form is null');
    return;
  }
  var va_MoYearPU = form.va_MoYearPU;
  var va_DayPU = form.va_DayPU;
  if(va_MoYearPU == null) {
    alert('Error: va_MoYearPU or va_DayPU is null');
    return;
  }
  var index = va_MoYearPU.options.selectedIndex;
  var year = startPickup.getYear();
  if(year < 2000)
    year += 1900;
  var startmonthyear = 100 * year + (startPickup.getMonth() + 1);

  if(parseInt(va_MoYearPU.options[0].value) != startmonthyear) {
    var yearmonth = startmonthyear; 
    for(var i = 0; i < va_MoYearPU.options.length; i++) {
      va_MoYearPU.options[i].value = yearmonth;
      va_MoYearPU.options[i].text = yearmonth_text(yearmonth);
      if (yearmonth > maxyearmonth) {
        va_MoYearPU.options.length = i;
        break;
      }
      yearmonth += yearmonth % 100 == 12 ? 89 : 1;
    }
  }

  yearmonth = index >= 0 ? parseInt(va_MoYearPU.options[index].value) : startmonthyear;
  var startday = yearmonth == startmonthyear ? startPickup.getDate() : 1;
  var endday = get_endday(yearmonth);
  year = Math.floor(yearmonth / 100);
  var month = yearmonth % 100 - 1;
  var count = 0;
  for(var i=startday; i <= endday; i++) {
	var day = new Date(year, month , i);
    if(pickup_open(new Date(year, month , i))) {
      if(va_DayPU.options[count] == null)
        va_DayPU.options[count] = new Option();

      va_DayPU.options[count].value = i;
      va_DayPU.options[count].text = i;
      count++;
    }
  }
  for(var i = va_DayPU.options.length - 1; i >= count; i--)
    va_DayPU.options[i] = null;
  va_DayPU.options.selectedIndex = 0;

  changed_dropoffmonth(yearmonth, startday);
}

function changed_pickuplocation () {
  var form = window.document.quickquote;
  if(form == null) {
    alert('Error: Form is null');
    return;
  }
  var va_Region = form.va_Region;
  if(va_Region == null) {
    alert('Error: va_Region is null');
    return;
  }
  // find out which option is active
  var va_RegionActive = va_Region.options.selectedIndex;
  if(va_RegionActive < 0)
    return;
  if(va_RegionActive >= vehicles.length) {
    alert('Error: no vehicles for this location specified');
    return;
  }
  // set the new vehicles
  var va_Cat = form.va_Cat;
  if(va_Region == null) {
    alert('Error: va_Cat is null');
    return;
  }
  var thisVehicles = vehicles[va_RegionActive];
  for(var i=0; i < thisVehicles.length / 2; i++) {
    if(va_Cat.options[i] == null)
      va_Cat.options[i] = new Option();

    va_Cat.options[i].value = thisVehicles[2*i];
    va_Cat.options[i].text = thisVehicles[2*i + 1];
  }
  for(var i = va_Cat.options.length - 1; i >= thisVehicles.length / 2; i--) {
    va_Cat.options[i] = null;
  }
}

function init_page () {
/*  var test = new Date(2002, 2, 24);
  alert(test.getDay()); */
  changed_pickupmonth();
  if (!BookingSelector) changed_pickuplocation();
}
