<?php
// intair.php
// International Airport database via http://www.partow.net/miscellaneous/airportdatabase/ ... thanks
//AYGA:GKA:GOROKA:GOROKA:PAPUA NEW GUINEA:06:04:54:S:145:23:30:E:5282
//AYLA:LAE::LAE:PAPUA NEW GUINEA:00:00:00:U:00:00:00:U:0000
//AYMD:MAG:MADANG:MADANG:PAPUA NEW GUINEA:05:12:25:S:145:47:19:E:0020
//AYMH:HGU:MOUNT HAGEN:MOUNT HAGEN:PAPUA NEW GUINEA:05:49:34:S:144:17:46:E:5388
//AYNZ:LAE:NADZAB:NADZAB:PAPUA NEW GUINEA:06:34:11:S:146:43:34:E:0239
//AYPY:POM:PORT MORESBY JACKSONS INTERNATIONAL:PORT MORESBY:PAPUA NEW GUINEA:09:26:36:S:147:13:12:E:0146

$alat = 0.0;
$along = 0.0;
$proposed = "<html><head><script type='text/javascript'>    </script></head><body></body></html>";
$prefix = "%20Airport";
$num = 3;
if (isset($_GET['num'])) $num = $_GET['num'];

function pre_great_circle_distance($ptalis, $pgnolis, $one, $two, $three, $four, $five, $six, $seven, $eight, $sanity) {
  global $alat;
  global $along;
  $alat = ($one + ($two / 60.00) + ($three / 3600.0));
  $along = ($five + ($six / 60.00) + ($seven / 3600.0));
  if ($one == 0 && $two == 0 && $three == 0 && $five == 0 && $six == 0 && $seven == 0) {
    return -9.0;
  } else {
    //echo "*" . $sanity . "+++" . $four . "---" . $eight . "*";
    if ($four == "S" && $eight == "U") $alat = -($one + ($two / 60.00) + ($three / 3600.0));
    if ($four == "S" && $eight == "U") $along = -($five + ($six / 60.00) + ($seven / 3600.0));
    if ($four != "S" && $eight == "U") $alat = ($one + ($two / 60.00) + ($three / 3600.0));
    if ($four != "S" && $eight == "U") $along = -($five + ($six / 60.00) + ($seven / 3600.0));
    if ($four == "S" && $eight != "U") $alat = -($one + ($two / 60.00) + ($three / 3600.0));
    if ($four == "S" && $eight != "U") $along = ($five + ($six / 60.00) + ($seven / 3600.0));
    return great_circle_distance($ptalis, $pgnolis, $alat, $along);
  }
}

function great_circle_distance($talis, $gnolis, $latis, $longis) {
  $ourdist=0.0;
  $rgnol=(($gnolis) * pi() / 180.0);
  $rtal=(($talis) * pi() / 180.0);
  $rlong=(($longis) * pi() / 180.0);
  $rlat=(($latis) * pi() / 180.0);
  
    
  $deltalong = abs(((($gnolis)-($longis)) * pi() / 180.0));

  
  $acof = (sin($rtal) * sin($rlat)) + (cos($rtal) * cos($rlat) * cos($deltalong)); // via http://en.wikipedia.org/wiki/Great-circle_distance ... thanks
  
  $ourdist = (round((acos($acof) * 6371000.0) + 0.00001) * 100) / 100;
  return $ourdist;
}

$nsf = -9.0;
$name = "";
$glat = 0.0;
$glong = 0.0;
$mindist = -9.0;
if (isset($_GET['lat']) && isset($_GET['long'])) {
 $adb = @file_get_contents("GlobalAirportDatabase/GlobalAirportDatabase.txt");
 $cols = explode(":", "0000 " . $adb);
 for ($j=0; $j<$num; $j++) {
 for ($i=0; $i<sizeof($cols); $i+=13) {
  if (sizeof($cols) >= 12) {
   $distis = pre_great_circle_distance($_GET['lat'], $_GET['long'], $cols[$i + 5], $cols[$i + 6], $cols[$i + 7], $cols[$i + 8], $cols[$i + 9], $cols[$i + 10], $cols[$i + 11], $cols[$i + 12], $cols[$i + 0]);
   if ($distis >= 0.0 && $distis > $mindist && ($nsf < 0.0 || $distis < $nsf)) {
    $nsf = $distis;
    $name = $cols[$i + 1] . "/" . $cols[$i + 2] . "/" . $cols[$i + 3] . "/" . $cols[$i + 4];
    $glat = $alat;
    $glong = $along;
 //echo $name . " " , $glat . " " . $glong . " " . $nsf . "\n";
   }
  }
 }
 if ($glat != 0.0 || $glong != 0.0) {
   $proposed = str_replace("</script>", "\n parent.document.getElementById('myiframe').src=parent.document.getElementById('myiframe').src + ',[" . round($glat, 4) . "," . round($glong, 4) . ",~Nearest" . $prefix . "%20on%20GlobalAirportDatabase%20" . round($nsf / 1000.0) . "km%20to%20" . $name . "~]';  \n" . "</script>", $proposed);
   $prefix = (str_replace("%20Airport", "", $prefix) . "-");
   $mindist = $nsf;
   $nsf = -9.0;
   $name = "";
   $glat = 0.0;
   $glong = 0.0;
   $distis = 0.0;
 }
}
 echo $proposed;
} else if (isset($_GET['plot']) && 1 == 2) {
 $adb = @file_get_contents("GlobalAirportDatabase/GlobalAirportDatabase.txt");
 $cols = explode(":", "0000 " . $adb);
 for ($i=0; $i<sizeof($cols); $i+=13) {
  if (sizeof($cols) >= 12) {
   $distis = pre_great_circle_distance($_GET['lat'], $_GET['long'], $cols[$i + 5], $cols[$i + 6], $cols[$i + 7], $cols[$i + 8], $cols[$i + 9], $cols[$i + 10], $cols[$i + 11], $cols[$i + 12], $cols[$i + 0]);
   if ($distis >= 0.0 && ($nsf < 0.0 || $distis < $nsf)) {
    //$nsf = $distis;
    $name = $cols[$i + 1] . "/" . $cols[$i + 2] . "/" . $cols[$i + 3] . "/" . $cols[$i + 4];
    $glat = $alat;
    $glong = $along;
    $proposed = str_replace("</script>", "\n parent.document.getElementById('mya').title='" . $glat . "," . $glong . "'; parent.document.getElementById('mya').click(); \n" . "</script>", $proposed);
   }
   echo $proposed;
  }
 }
}

?>