
function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;
	
//	alert(fieldLabel);
	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number with no spaces for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  	
 	
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validatelifecalc(form)
{

	if ((form.car1mileage.value != "") )
	{
		if (!validInt(form.car1mileage,"Car 1 Mileage"))
			return false;
		if (!validRequired(form.car1fuel,"Car 1 Fuel Type"))
			return false;
		if (!validInt(form.car1feff,"Car 1 Fuel Efficiency"))
			return false;
	}

	if ((form.car1fuel.value != "") )
	{
		if (!validInt(form.car1mileage,"Car 1 Mileage"))
			return false;
		if (!validRequired(form.car1fuel,"Car 1 Fuel Type"))
			return false;
		if (!validInt(form.car1feff,"Car 1 Fuel Efficiency"))
			return false;
	}

	if ((form.car1feff.value != "") )
	{
		
		if (!validInt(form.car1mileage,"Car 1 Mileage"))
			return false;
		if (!validRequired(form.car1fuel,"Car 1 Fuel Type"))
			return false;
		if (!validInt(form.car1feff,"Car 1 Fuel Efficiency"))
			return false;
	}

	if ((form.car2mileage.value != "") )
	{
		if (!validInt(form.car2mileage,"Car 2 Mileage"))
			return false;
		if (!validRequired(form.car2fuel,"Car 2 Fuel Type"))
			return false;
		if (!validInt(form.car2feff,"Car 2 Fuel Efficiency"))
			return false;
	}

	if ((form.car2fuel.value != "") )
	{
		if (!validInt(form.car2mileage,"Car 2 Mileage"))
			return false;
		if (!validRequired(form.car2fuel,"Car 2 Fuel Type"))
			return false;
		if (!validInt(form.car2feff,"Car 2 Fuel Efficiency"))
			return false;
	}

	if ((form.car2feff.value != "") )
	{
		
		if (!validInt(form.car2mileage,"Car 2 Mileage"))
			return false;
		if (!validRequired(form.car2fuel,"Car 2 Fuel Type"))
			return false;
		if (!validInt(form.car2feff,"Car 2 Fuel Efficiency"))
			return false;
	}

	if ((form.commufuel.value != "") )
	{
		if (!validRequired(form.commufuel,"Commuting transport type"))
			return false;
		if (!validInt(form.commumileage,"Commuting daily return distance"))
			return false;
		if (!validInt(form.commufeff,"Commuting journeys per week"))
			return false;
	}

	if ((form.commumileage.value != "") )
	{
		if (!validRequired(form.commufuel,"Commuting transport type"))
			return false;
		if (!validInt(form.commumileage,"Commuting daily return distance"))
			return false;
		if (!validInt(form.commufeff,"Commuting journeys per week"))
			return false;
	}

	if ((form.commufeff.value != "") )
	{
		if (!validRequired(form.commufuel,"Commuting transport type"))
			return false;
		if (!validInt(form.commumileage,"Commuting daily return distance"))
			return false;
		if (!validInt(form.commufeff,"Commuting journeys per week"))
			return false;
	}

	if ((form.annualfueltype1.value != "") )
	{
		if (!validRequired(form.annualfueltype1,"Annual fuel type 1"))
			return false;
		if (!validInt(form.annualfuel1,"Annual fuel type 1 amount"))
			return false;
		if (!validRequired(form.annualfuelunit1,"Units of type 1 fuel used"))
			return false;
	}

	if ((form.annualfuel1.value != "") )
	{
		if (!validRequired(form.annualfueltype1,"Annual fuel type 1"))
			return false;
		if (!validInt(form.annualfuel1,"Annual fuel type 1 amount"))
			return false;
		if (!validRequired(form.annualfuelunit1,"Units of type 1 fuel used"))
			return false;
	}

	if ((form.annualfuelunit1.value != "") )
	{
		if (!validRequired(form.annualfueltype1,"Annual fuel type 1"))
			return false;
		if (!validInt(form.annualfuel1,"Annual fuel type 1 amount"))
			return false;
		if (!validRequired(form.annualfuelunit1,"Units of type 1 fuel used"))
			return false;
	}

	if ((form.annualfueltype2.value != "") )
	{
		if (!validRequired(form.annualfueltype2,"Annual fuel type 2"))
			return false;
		if (!validInt(form.annualfuel2,"Annual fuel type 2 amount"))
			return false;
		if (!validRequired(form.annualfuelunit2,"Units of type 2 fuel used"))
			return false;
	}

	if ((form.annualfuel2.value != "") )
	{
		if (!validRequired(form.annualfueltype2,"Annual fuel type 2"))
			return false;
		if (!validInt(form.annualfuel2,"Annual fuel type 2 amount"))
			return false;
		if (!validRequired(form.annualfuelunit2,"Units of type 2 fuel used"))
			return false;
	}

	if ((form.annualfuelunit2.value != "") )
	{
		if (!validRequired(form.annualfueltype2,"Annual fuel type 2"))
			return false;
		if (!validInt(form.annualfuel2,"Annual fuel type 2 amount"))
			return false;
		if (!validRequired(form.annualfuelunit2,"Units of type 2 fuel used"))
			return false;
	}

//	if (!validRequired(form.commufuel,"Commuting transport type"))
//		return false;
	if (!validNum(form.commumileage,"Commuting daily return distance"))
		return false;
	if (!validNum(form.commufeff,"Commuting journeys per week"))
		return false;



	if (!validNum(form.car1mileage,"Car 1 Annual Distance Travelled"))
		return false;
//	if (!validRequired(form.car1fuel,"Car 1 Fuel Type"))
//		return false;
	if (!validNum(form.car1feff,"Car 1 Fuel Efficiency"))
		return false;



	if (!validNum(form.car2mileage,"Car 2 Annual Distance Travelled"))
		return false;
//	if (!validRequired(form.car2fuel,"Car 2 Fuel Type"))
//		return false;
	if (!validNum(form.car2feff,"Car 2 Fuel Efficiency"))
		return false;

	
//	if (!validRequired(form.commufuel,"Commuting transport type"))
//		return false;
	if (!validNum(form.commumileage,"Commuting daily return distance"))
		return false;
	if (!validNum(form.commufeff,"Commuting journeys per week"))
		return false;
	
	
//	if (!validRequired(form.annualfueltype1,"Annual fuel type 1"))
//		return false;
	if (!validNum(form.annualfuel1,"Annual fuel type 1 amount"))
		return false;
//	if (!validRequired(form.annualfuelunit1,"Units of type 1 fuel used"))
//		return false;
	
//	if (!validRequired(form.annualfueltype2,"Annual fuel type 2"))
//		return false;
	if (!validNum(form.annualfuel2,"Annual fuel type 2 amount"))
		return false;
//	if (!validRequired(form.annualfuelunit2,"Units of type 2 fuel used"))
//		return false;
	
	
	if (!validNum(form.annualelect, "Annual Household Electricity Usage"))
		return false;
	
	return true;
}



function validatetravel(form)
{
	// Start ------->	
	if (((form.flightstart.value == "") && (form.flightend.value!="")) || ((form.flightend.value == "") && (form.flightstart.value!="")) )
	{
		if (!validRequired(form.flightstart,"Flight Starting point"))
			return false;
		if (!validRequired(form.flightend,"Flight Destination"))
			return false;
		if (!validNum(form.numberpeep,"Number of people"))
			return false;
	}
	if (!validNum(form.numberpeep,"Number of people"))
			return false;
			
	
	if ((form.leg1dist.value != "") || (form.leg1peep.value != "") || (form.leg1units.value != "") || (form.leg1transtype.value != ""))
	{
		if (!validInt(form.leg1dist,"Leg 1 distance"))
				return false;		
		if (!validInt(form.leg1peep,"Leg 1 Number of people"))
				return false;
		if (!validRequired(form.leg1units,"Leg 1 Distance Units"))
				return false;		
		if (!validRequired(form.leg1transtype,"Leg 1 Transport"))
				return false;
	}

	if ((form.leg2dist.value != "") || (form.leg2peep.value != "") || (form.leg2units.value != "") || (form.leg2transtype.value != ""))
	{
		if (!validInt(form.leg2dist,"Leg 2 distance"))
				return false;		
		if (!validInt(form.leg2peep,"Leg 2 Number of people"))
				return false;
		if (!validRequired(form.leg2units,"Leg 2 Distance Units"))
				return false;		
		if (!validRequired(form.leg2transtype,"Leg 2 Transport"))
				return false;
	}

	if ((form.leg3dist.value != "") || (form.leg3peep.value != "") || (form.leg3units.value != "") || (form.leg3transtype.value != ""))
	{
		if (!validInt(form.leg3dist,"Leg 3 distance"))
				return false;		
		if (!validInt(form.leg3peep,"Leg 3 Number of people"))
				return false;
		if (!validRequired(form.leg3units,"Leg 3 Distance Units"))
				return false;		
		if (!validRequired(form.leg3transtype,"Leg 3 Transport"))
				return false;
	}
	
	if ((form.leg4dist.value != "") || (form.leg4peep.value != "") || (form.leg4units.value != "") || (form.leg4transtype.value != ""))
	{
		if (!validInt(form.leg4dist,"Leg 4 distance"))
				return false;		
		if (!validInt(form.leg4peep,"Leg 4 Number of people"))
				return false;
		if (!validRequired(form.leg4units,"Leg 4 Distance Units"))
				return false;		
		if (!validRequired(form.leg4transtype,"Leg 4 Transport"))
				return false;
	}
	
	if ((form.leg5dist.value != "") || (form.leg5peep.value != "") || (form.leg5units.value != "") || (form.leg5transtype.value != ""))
	{
		if (!validInt(form.leg5dist,"Leg 5 distance"))
				return false;		
		if (!validInt(form.leg5peep,"Leg 5 Number of people"))
				return false;
		if (!validRequired(form.leg5units,"Leg 5 Distance Units"))
				return false;		
		if (!validRequired(form.leg5transtype,"Leg 5 Transport"))
				return false;
	}
	
	if ((form.leg6dist.value != "") || (form.leg6peep.value != "") || (form.leg6units.value != "") || (form.leg6transtype.value != ""))
	{
		if (!validInt(form.leg6dist,"Leg 6 distance"))
				return false;		
		if (!validInt(form.leg6peep,"Leg 6 Number of people"))
				return false;
		if (!validRequired(form.leg6units,"Leg 6 Distance Units"))
				return false;		
		if (!validRequired(form.leg6transtype,"Leg 6 Transport"))
				return false;
	}

	if ((form.leg7dist.value != "") || (form.leg7peep.value != "") || (form.leg7units.value != "") || (form.leg7transtype.value != ""))
	{
		if (!validInt(form.leg7dist,"Leg 7 distance"))
				return false;		
		if (!validInt(form.leg7peep,"Leg 7 Number of people"))
				return false;
		if (!validRequired(form.leg7units,"Leg 7 Distance Units"))
				return false;		
		if (!validRequired(form.leg7transtype,"Leg 7 Transport"))
				return false;
	}

	if ((form.leg8dist.value != "") || (form.leg8peep.value != "") || (form.leg8units.value != "") || (form.leg8transtype.value != ""))
	{
		if (!validInt(form.leg8dist,"Leg 8 distance"))
				return false;		
		if (!validInt(form.leg8peep,"Leg 8 Number of people"))
				return false;
		if (!validRequired(form.leg8units,"Leg 8 Distance Units"))
				return false;		
		if (!validRequired(form.leg8transtype,"Leg 8 Transport"))
				return false;
	}
	
	if ((form.leg9dist.value != "") || (form.leg9peep.value != "") || (form.leg9units.value != "") || (form.leg9transtype.value != ""))
	{
		if (!validInt(form.leg9dist,"Leg 9 distance"))
				return false;		
		if (!validInt(form.leg9peep,"Leg 9 Number of people"))
				return false;
		if (!validRequired(form.leg9units,"Leg 9 Distance Units"))
				return false;		
		if (!validRequired(form.leg9transtype,"Leg 9 Transport"))
				return false;
	}

	if ((form.leg10dist.value != "") || (form.leg10peep.value != "") || (form.leg10units.value != "") || (form.leg10transtype.value != ""))
	{
		if (!validInt(form.leg10dist,"Leg 10 distance"))
				return false;		
		if (!validInt(form.leg10peep,"Leg 10 Number of people"))
				return false;
		if (!validRequired(form.leg10units,"Leg 10 Distance Units"))
				return false;		
		if (!validRequired(form.leg10transtype,"Leg 10 Transport"))
				return false;
	}

	if ((form.acc1length.value != "") || (form.acc1peep.value != "") || (form.acc1type.value != ""))
	{
		if (!validInt(form.acc1length,"Accommodation 1 duration"))
				return false;
		if (!validInt(form.acc1peep,"Accommodation 1 Number of people"))
				return false;
		if (!validRequired(form.acc1type, "Accommodation 1 Type"))
				return false;
	}
	
	if ((form.acc2length.value != "") || (form.acc2peep.value != "") || (form.acc2type.value != ""))
	{
		if (!validInt(form.acc2length,"Accommodation 2 duration"))
				return false;
		if (!validInt(form.acc2peep,"Accommodation 2 Number of people"))
				return false;		
		if (!validRequired(form.acc2type, "Accommodation 2 Type"))
				return false;
	}

	if ((form.acc3length.value != "") || (form.acc3peep.value != "") || (form.acc3type.value != ""))
	{
		if (!validInt(form.acc3length,"Accommodation 3 duration"))
				return false;
		if (!validInt(form.acc3peep,"Accommodation 3 Number of people"))
				return false;
		if (!validRequired(form.acc3type, "Accommodation 3 Type"))
				return false;
	}
	
	if ((form.acc4length.value != "") || (form.acc4peep.value != "") || (form.acc4type.value != ""))
	{
		if (!validInt(form.acc4length,"Accommodation 4 duration"))
				return false;
		if (!validInt(form.acc4peep,"Accommodation 4 Number of people"))
				return false;
		if (!validRequired(form.acc4type, "Accommodation 4 Type"))
				return false;
	}
	
	if ((form.acc5length.value != "") || (form.acc5peep.value != "") || (form.acc5type.value != ""))
	{
		if (!validInt(form.acc5length,"Accommodation 5 duration"))
				return false;
		if (!validInt(form.acc5peep,"Accommodation 5 Number of people"))
				return false;
		if (!validRequired(form.acc5type, "Accommodation 5 Type"))
				return false;
	}
		// <--------- End
	
	return true;
}