
// javascript for transport carbon emissions calculator


// Unit Distance Lists
var distance = new Array();

distance['kilometers'] = new Array('14400');
distance['miles'] = new Array('9000');


// Fuel Lists
var fuelType = new Array();

fuelType['car']= new Array('petrol', 'diesel');
fuelType['hybrid']= new Array('petrol-electric');
fuelType['motorcycle']= new Array('motorcycle-petrol');


// Engine Size Lists
var engineSize = new Array();

engineSize['car'] = new Array();
engineSize['car']['petrol'] = new Array('less than 1.4l', '1.4 to 2l', 'greater than 2l');
engineSize['car']['diesel'] = new Array('less than 1.7l', '1.7 to 2l', 'greater than 2l');

engineSize['hybrid'] = new Array();
engineSize['hybrid']['petrol-electric'] = new Array('medium', 'large');

engineSize['motorcycle'] = new Array();
engineSize['motorcycle']['motorcycle-petrol'] = new Array('less than 125cc', '125 to 500cc', 'greater than 500cc');


//Look-up Table Lists
var lookUp = new Array();

lookUp['car'] = new Array();
lookUp['car']['petrol'] = new Array();
lookUp['car']['petrol']['less than 1.4l'] = new Array();
lookUp['car']['petrol']['1.4 to 2l'] = new Array();
lookUp['car']['petrol']['greater than 2l'] = new Array();
lookUp['car']['petrol']['less than 1.4l']['kilometers'] = new Array('0.183');
lookUp['car']['petrol']['1.4 to 2l']['kilometers'] = new Array('0.216');
lookUp['car']['petrol']['greater than 2l']['kilometers'] = new Array('0.296');
lookUp['car']['petrol']['less than 1.4l']['miles'] = new Array('0.293');
lookUp['car']['petrol']['1.4 to 2l']['miles'] = new Array('0.346');
lookUp['car']['petrol']['greater than 2l']['miles'] = new Array('0.474');

lookUp['car']['diesel'] = new Array();
lookUp['car']['diesel']['less than 1.7l'] = new Array();
lookUp['car']['diesel']['1.7 to 2l'] = new Array();
lookUp['car']['diesel']['greater than 2l'] = new Array();
lookUp['car']['diesel']['less than 1.7l']['kilometers'] = new Array('0.151');
lookUp['car']['diesel']['1.7 to 2l']['kilometers'] = new Array('0.188');
lookUp['car']['diesel']['greater than 2l']['kilometers'] = new Array('0.263');
lookUp['car']['diesel']['less than 1.7l']['miles'] = new Array('0.242');
lookUp['car']['diesel']['1.7 to 2l']['miles'] = new Array('0.301');
lookUp['car']['diesel']['greater than 2l']['miles'] = new Array('0.421');

lookUp['hybrid'] = new Array();
lookUp['hybrid']['petrol-electric'] = new Array();
lookUp['hybrid']['petrol-electric']['medium'] = new Array();
lookUp['hybrid']['petrol-electric']['large'] = new Array();
lookUp['hybrid']['petrol-electric']['medium']['kilometers'] = new Array('0.126');
lookUp['hybrid']['petrol-electric']['large']['kilometers'] = new Array('0.224');
lookUp['hybrid']['petrol-electric']['medium']['miles'] = new Array('0.202');
lookUp['hybrid']['petrol-electric']['large']['miles'] = new Array('0.358');

lookUp['motorcycle'] = new Array();
lookUp['motorcycle']['motorcycle-petrol'] = new Array();
lookUp['motorcycle']['motorcycle-petrol']['less than 125cc'] = new Array();
lookUp['motorcycle']['motorcycle-petrol']['125 to 500cc'] = new Array();
lookUp['motorcycle']['motorcycle-petrol']['greater than 500cc'] = new Array();
lookUp['motorcycle']['motorcycle-petrol']['less than 125cc']['kilometers'] = new Array('0.073');
lookUp['motorcycle']['motorcycle-petrol']['125 to 500cc']['kilometers'] = new Array('0.094');
lookUp['motorcycle']['motorcycle-petrol']['greater than 500cc']['kilometers'] = new Array('0.129');
lookUp['motorcycle']['motorcycle-petrol']['less than 125cc']['miles'] = new Array('0.117');
lookUp['motorcycle']['motorcycle-petrol']['125 to 500cc']['miles'] = new Array('0.150');
lookUp['motorcycle']['motorcycle-petrol']['greater than 500cc']['miles'] = new Array('0.206');



function setFuel()
  {
  vehicleSel = document.getElementById('typeVehicle');
  fuelSel = document.getElementById('fuelType');

  fuelList = fuelType[vehicleSel.value];

  changeSelect(fuelSel, fuelList);

  setEngine();
  }


function setEngine()
  {
  vehicleSel = document.getElementById('typeVehicle');
  fuelSel = document.getElementById('fuelType');
  engineSel = document.getElementById('engine');

  engineList = engineSize[vehicleSel.value][fuelSel.value];
  
  changeSelect(engineSel, engineList);

  setLookUp();
  }


function setLookUp()
  {
  vehicleSel = document.getElementById('typeVehicle');
  fuelSel = document.getElementById('fuelType');
  engineSel = document.getElementById('engine');
  lookUpSel = document.getElementById('lookUp');
  unitSel = document.getElementById('unit');

  lookUpList = lookUp[vehicleSel.value][fuelSel.value][engineSel.value][unitSel.value];
  
  changeSelect(lookUpSel, lookUpList);
  }



function changeSelect(fieldObj, valuesAry, optTextAry, selectedValue) 
  {
  //Clear the select list
  fieldObj.options.length = 0;

  //Set the option text to the values if not passed
  optTextAry = (optTextAry)?optTextAry:valuesAry;

  //Itterate through the list and create the options
  for (i in valuesAry) 
    {
    selectFlag = (selectedValue && selectedValue==valuesAry[i])?true:false;
    fieldObj.options[fieldObj.length] = new Option(optTextAry[i], valuesAry[i], false, selectFlag);
    }
  }


// function to update the default distance driven depending on type of car and units selected
function update(value)
  {
  vehicleSel = document.getElementById('typeVehicle');

  if (value == "kilometers")
    {
    if ((vehicleSel.value == "car") || (vehicleSel.value == "hybrid"))
      {
      document.getElementById('distanceDriven').value="14400";
      }
    else if (vehicleSel.value == "motorcycle")
      {
      document.getElementById('distanceDriven').value="8800";
      }
    }
  else if (value == "miles")
    {
    if ((vehicleSel.value == "car") || (vehicleSel.value == "hybrid"))
      {
      document.getElementById('distanceDriven').value="9000";
      }
    else if (vehicleSel.value == "motorcycle")
      {
      document.getElementById('distanceDriven').value="5500";
      }
    }
  }


// function to update the default distance driven depending on type of car and units selected
function updateDistance(value)
  {
  unitSel = document.getElementById('unit');

  if ((value == "car") || (value == "hybrid"))
    {
    if (unitSel.value == "kilometers")
      {
      document.getElementById('distanceDriven').value="14400";
      }
    else if (unitSel.value == "miles")
      {
      document.getElementById('distanceDriven').value="9000";
      }
    }
  else if (value == "motorcycle")
    {
    if (unitSel.value == "kilometers")
      {
      document.getElementById('distanceDriven').value="8800";
      }
    else if (unitSel.value == "miles")
      {
      document.getElementById('distanceDriven').value="5500";
      }
    }
  }

