var business_class_coeficient = 1.87185226637;
var first_class_coeficient = 3.07722439843;
var airports = [];
var map_airports = {};

function getDistance(lat1, lon1, lat2, lon2) {
  var R = 6371;
  var dLat = (lat2-lat1) * Math.PI / 180;
  var dLon = (lon2-lon1) * Math.PI / 180;
  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * 
          Math.sin(dLon/2) * Math.sin(dLon/2); 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  return R * c;
}
function getCO2(d) {
  return d * 0.41 / 1712;
}
function prepare_airports() {
  for (var i = 0; i < airports_db.length; i++) {
    var k = airports_db[i][0] + ', ' + airports_db[i][1];
    map_airports[k] = airports_db[i];
    airports.push(k);
  }
  delete airports_db;
}
function calculate_distance() {
  var f = $('from_airport').value;
  var t = $('to_airport').value;
  var v = $('via_airport').value;
  if (f == '' || t == '' || !map_airports[f] || !map_airports[t]) {
    alert('Please select a valid airport');
    return false;
  }
  if (v != '' && !map_airports[v]) {
    alert('Please select a valid airport');
    return false;
  }
  var d = 0;
  if (v != '') {
    d = getDistance(map_airports[f][2], map_airports[f][3], map_airports[v][2], map_airports[v][3]);
    d += getDistance(map_airports[v][2], map_airports[v][3], map_airports[t][2], map_airports[t][3]);
  } else {
    d = getDistance(map_airports[f][2], map_airports[f][3], map_airports[t][2], map_airports[t][3]);
  }
  if ($('roundtrip_airport').checked) {
    d *= 2;
  }
  if ($('class2_airport').checked) {
    d *= business_class_coeficient;
  } else if ($('class3_airport').checked) {
    d *= first_class_coeficient;
  }
  d *= $('travellers_airport').value;
  var co2 = getCO2(d);
  $('distance_result').innerHTML = Math.round(d) + 'km. = ' + (Math.round(co2 * 100) / 100) + ' co2 tons <input class="submit_field" type="button" value="Compensate Now" onclick="window.location=\'index.php?page=login&m2=' + (Math.round(co2 * 13)) + '\';"/>';
}