
/**
 * 
 * Quick Car Functions
 * -------------------
 * 
 **/

/* requests the quick vehicle sizes data based on the fuel type selected on screen */
function getQuickCarSizes( fuelType ) {
	// get all the car sizes
	executeJSONRequest( 'quick_vehicle/' + version + '/vehiclelist/?PartnerID=' + partnerId + '&VehicleType=Car&FuelType=' + fuelType, 'getQuickCarSizesCallback' );	
}

/* creates the list of quick vehicle sizes */
function getQuickCarSizesCallback( data ) {
	var quickCarSizeList = document.getElementById( 'quick_calculator_car_size' );
	// clear it down
	for( oldCarSize in quickCarSizeList ){
		// remove it
		quickCarSizeList.remove( oldCarSize );
	}
	// add a please select
	var opt = new Option( '- Please select -', '' );
	quickCarSizeList.options[ quickCarSizeList.options.length ] = opt;
	// and add the new car sizes
	for( vehicle in data['details']['vehicle'] ) {
		var value = data['details']['vehicle'][vehicle]['vehicleid'];
		var text = data['details']['vehicle'][vehicle]['detail'];
		var opt = new Option( text, value );
		quickCarSizeList.options[ quickCarSizeList.options.length ] = opt;
	}
}

/* user clicked "Calculate", request the quick project info */
function quickCalculateCar() {
	if ( document.getElementById('quick_car_fuel_petrol').checked || document.getElementById('quick_car_fuel_diesel').checked || document.getElementById('quick_car_fuel_hybrid').checked ) {
		// USING THE QUICK CAR CALCULATOR 1
		// validate the form first
		var validate = new validateForm();
		// fuel type
		if( !document.getElementById('quick_car_fuel_petrol').checked && !document.getElementById('quick_car_fuel_diesel').checked && !document.getElementById('quick_car_fuel_hybrid').checked ) {
			validate.addCustomError( 'Fuel Type' );
		}
		if ( locale == 'us' ) {
			validate.checkNumeric( 'quick_calculator_car_fuel_economy', 'Fuel Economy' );
			validate.checkSelect( 'quick_calculator_car_fuel_economy_units', '', 'Fuel Economy Units' );
		} else {
			// engine size
			validate.checkSelect( 'quick_calculator_car_size', '', 'Engine Size' );
			var unitsSelect = document.getElementById('quick_calculator_car_unit');
			// always check distance
			validate.checkNumeric( 'quick_calculator_car_distance', unitsSelect.options[ unitsSelect.selectedIndex ].text );
		}
		if( validate.numberOfErrors() > 0 ) {
			validate.displayErrors();
			return false;
		}
		// mileage needed to send
		var distance = document.getElementById('quick_calculator_car_distance').value;	
		// vehicle reg (NON MANDATORY, needs to be saved against the transaction)
		var vehicleReg = '';
		/*
		if( document.getElementById('quick_calculator_car_registration').value != '' ) {
			vehicleReg = '&VehicleReg=' + document.getElementById('quick_calculator_car_registration').value;
		}
		*/
		// and make that request
		if ( locale == 'us' ) {
			var unit = document.getElementById('quick_calculator_car_fuel_economy').value;
			var unitsType = document.getElementById('quick_calculator_car_fuel_economy_units').value;
			var distanceType = document.getElementById('quick_calculator_car_unit').value;
			if ( document.getElementById('quick_car_fuel_petrol').checked ) {
				var fuelType = 'petrol';
			} else if ( document.getElementById('quick_car_fuel_diesel').checked ) {
				var fuelType = 'diesel';
			} else if ( document.getElementById('quick_car_fuel_hybrid').checked ) {
				var fuelType = 'lpg';
			}
			executeJSONRequest( 'us_quick_vehicle/' + version + '/calculator/?PartnerID=' + partnerId + '&Distance=' + distance + '&DistanceType=' + distanceType + '&Units=' + unit + '&UnitType=' + unitsType + '&FuelType=' + fuelType + vehicleReg, 'quickCalculateCarCallback' );
		} else {
			// distance unit
			var unit = document.getElementById('quick_calculator_car_unit').value;
			// the vehicle type id
			var vehicleId = document.getElementById('quick_calculator_car_size').value;
			executeJSONRequest( 'quick_vehicle/' + version + '/calculator/?PartnerID=' + partnerId + '&Distance=' + distance + '&Units=' + unit + '&VehicleID=' + vehicleId + vehicleReg, 'quickCalculateCarCallback' );
		}
		return false;
		
	} else if ( ( document.getElementById('quick_car_type_hybrid').checked ) || ( document.getElementById('quick_car_type_small').checked ) || ( document.getElementById('quick_car_type_average').checked ) || ( document.getElementById('quick_car_type_large').checked ) ) {
		// USING THE QUICK CAR CALCULATOR 2
		if ( document.getElementById('quick_car_type_hybrid').checked ) {
			var unit = 40;
			var fuelType = 'lpg';
		} else if ( document.getElementById('quick_car_type_small').checked ) {
			var unit = 30;
			var fuelType = 'petrol';
		} else if ( document.getElementById('quick_car_type_average').checked ) {
			var unit = 22.4;
			var fuelType = 'petrol';
		} else if ( document.getElementById('quick_car_type_large').checked ) {
			var unit = 14;
			var fuelType = 'petrol';
		}
		var unitsType = 'mpg';
		var distance = document.getElementById('quick_calculator_car_distance').value;
		var distanceType = 'miles';
		executeJSONRequest( 'us_quick_vehicle/' + version + '/calculator/?PartnerID=' + partnerId + '&Distance=' + distance + '&DistanceType=' + distanceType + '&Units=' + unit + '&UnitType=' + unitsType + '&FuelType=' + fuelType, 'quickCalculateCarCallback' );
		
		return false;
	} else {
		// NEITHER CALCULATOR SELECTED
		alert('Please select either a fuel or car type');
		return false;
	}
		
}

/* what to do with that magnificent quick car data */ 
function quickCalculateCarCallback( data ) {
	// update the saved transaction list
	updateTransactionList( data );
	// update the choose project panel
	updateChooseProject( 'quick car', round( data['details']['vehicle'][0]['tonnes'], 1 ), data );
	// now show the choose project panel
	showChooseProject( );
}
