function validate(theForm ) {
  if ( checkDate( theForm.sDay.value, theForm.sMonth.selectedIndex, theForm.sYear.value) != true) return false;
  if ( checkDate( theForm.eDay.value, theForm.eMonth.selectedIndex, theForm.eYear.value) != true) return false;

  // check for pre-1970
  if ((theForm.sYear.value < 1970) || (theForm.eYear.value < 1970)) return false;
  return true;
}

function calcCost( period, theForm)
{
  if (validate(theForm) != true) {
     return -1;
  }
  var vehicle = hireList[theForm.vehicle.selectedIndex];
  var vType = vehicle.name;
  var today = new Date();
  var sDate = new Date( theForm.sYear.value,  theForm.sMonth.selectedIndex, theForm.sDay.value);
  var eDate = new Date( theForm.eYear.value,  theForm.eMonth.selectedIndex, theForm.eDay.value);
  // now calculate difference between two
  var diff = eDate-sDate;
  // express difference in days
  diff = (diff / (24*60*60*1000));

  // alert('diff =' + diff + '\ntoday =' + today + '\nsDate =' + sDate +  '\neDate =' + eDate + '\nVehicle =' + vehicle);

  if ((sDate < today) || (diff <= 0)) {
	return -1;
	}
  sDate.setHours(8);
  eDate.setHours(8);

  period["weeks"] = Math.floor(diff / 7);
  period["days"] = Math.round(diff % 7);
  var cost = 0;
  if (period["weeks"] > 0) {
    cost = vehicle.weekRate * period["weeks"];
  }
  if (period["days"] > 0) {
    cost += vehicle.dayRate * period["days"]; 
  }
  cost = twoPlaces( cost);
  
  return( cost)
}

function doQuote()
{
	var period = new Array();
	var str = '';
	var cost = -1;
	cost = calcCost( period, document.hire);
	if (cost >= 0) {
	   document.hire.cost.value = '£' + cost;
	   if (period["weeks"] > 0) {
		   str += period["weeks"] + ' weeks';
       }
       if (period["days"] > 0) {
	       str += ' ' + period["days"] + ' days';
       }
	   
	   document.hire.period.value = str;
    } else {
	   document.hire.cost.value = '------';
	   document.hire.period.value = '-----------';
    }    
}

function selMonth( fname, arr, sel) {
  var str='';
  if (sel < 0) {
	  str += '<select name="' + fname +'" size="1">';
  } else {
  	  str += '<select name="' + fname +'" size="1" onchange="doQuote()">';
  }

  for ( var i = 0; i < arr.length; i++) {
    if (sel == i) {
      str += '<option selected>' + arr[i] + '\n';
    } else {  
      str += '<option>' + arr[i] + '\n';
    }
  }
  str += '</select>';
  return( str);
}

function genOption2( arr, property) {
  var str = '';
  for ( var i = 0; i < arr.length; i++) {
    var item = arr[i];
    var q = item[property];
    str += '<option>' + q + '\n';
  }
  return( str);
}

function dayField( fname, day)
{
   return( '<input type="text" name="' + fname + '" size="2" maxlength="2" value="' + day + '" onchange="doQuote()" >' );
}

function yearField( fname, year)
{
	return( '<input type="text" name="' + fname + '" size="4" maxlength="4" value="' + year + '" onchange="doQuote()">');
}

var one_day = 24*3600*1000;
var d = new Date(); with (d) setTime( getTime()+one_day);

var vList = genOption2(hireList, 'name');
var bList = selMonth("bMonth", monthName, -1);
var sList = selMonth("sMonth", monthName, d.getMonth());
var eList = selMonth("eMonth", monthName, d.getMonth());

function hireStart()
{
	document.writeln( dayField("sDay", d.getDate()) + '/' + sList + yearField("sYear", d.getFullYear()));
}

function hireEnd()
{
	document.writeln( dayField("eDay", d.getDate()) + '/' + eList + yearField("eYear", d.getFullYear()));
}

function bookingDate()
{
   document.writeln( 'Earliest booking date: <b>' + prtDMY( d) + '</b>');
}

function vehicles()
{
	document.writeln( 

'<select name="vehicle" size="1" value="0" onchange="doQuote()">' +
vList +
'</select>'
);
}


// document.open();
// document.writeln( quoteStart()+quoteHead("BAR Garages:Quote/Reservation")+'<body>' + quoteTitle("Hire Quote") );

function validHire(theForm)
{

	// Start ------->
	if (!validRequired(theForm.hName,"Name"))
		return false;

	if (!validEmail(theForm.eMail,"Email Address",true))
		return false;

	// <--------- End
	
	alert("This is a valid form");
	
	return true;
}
