<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Channel Islands Map Browser, J.G.Harston
     See JGH/Progs/php for source code                     -->
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="Author" content="Jonathan Graham Harston">
<title>Channel Isles Map Browser</title>
</head>

<body>
<?php
// v1.00 27-Jul-2009 JGH: First working version
// v1.01 29-Apr-2012 JGH: Added link to 1:100,000 version
// v1.02 02-Jun-2012 JGH:
//       Defaults working (JJR), for loop used, merged map.php and map100.php
//       into one.
// Todo: Use standard grid refs, eg WV123456, etc
//       Use javascript to refresh maps without reloading page


$gridref $_GET["g"];                      // Grid reference, eg g=064048
$zoom=$_GET["z"];                           // Zoom level, eg z=50

if ($gridref == ""$gridref "064048";    // Set defaults
if ($zoom == ""$zoom "50";

// Set bounds according to zoom level
if ($zoom <=75) {
  
$range=1;                                 // 1:50,000, 3 columns x 3 rows
  
$zoom=50;
} else {
  
$range=4;                                 // 1:100,000, 9 columns x 9 rows
  
$zoom=100;
}

echo 
'<table border="1" cellpadding="0" cellspacing="0">' "\n";
for (
$row=$range$row>=-$range$row--) {
  echo 
'<tr>'; echo "\n";
  for (
$col=-$range$col<=$range$col++) {
    
// stepping by col, gridref steps by 1000
    // stepping by row, gridref steps by 1
    //
    // eg 3x3 grid
    //  -999   +1  +1001
    //  -1000   0  +1000
    //  -1001  -1  +999
    //
    //  gridref+row+1000*col

    
echo '<td><a href="map.php?g='; echo $gridref+$row+1000*$col; echo "&amp;z="; echo $zoom; echo '">';
    echo 
'<img ';
    if (
$zoom == 100) echo 'width="50" ';
    echo 
'border="0" src="../'; echo mappath($gridref+$row+1000*$col); echo '.gif"></a>';
    echo 
"\n";
  }

  
// First row has caption and links in final column
  
if($row==$range) {
    echo 
'<td valign="top" rowspan="' . (2*$range+1) . '">&nbsp;<b>Channel Islands Map Browser</b>&nbsp;<br>'; echo "\n";
    echo 
'&nbsp;J.G.Harston<br><br>'; echo "\n";

    echo 
'&nbsp;Central grid square: <b>';
    
$temp mappath($gridref);
    echo 
strtoupper($temp[4]) . strtoupper($temp[5]) . $temp[7] . $temp[8] . $temp[10] . $temp[11];
    echo 
'</b><br>'; echo "\n";

    echo 
'&nbsp;Map scale: ';
    echo 
zoomlink("map.php?g=" $gridref "&amp;z=50",  "1:50,000",  $zoom==50) . " ";
    echo 
zoomlink("map.php?g=" $gridref "&amp;z=100""1:100,000"$zoom==100) . "<br><br>\n";

    echo 
'&nbsp;Click on grid squares to scroll, or:<br>';
    echo 
"\n";
    echo 
'&nbsp;<a href="map.php?g=064048&amp;z=' $zoom '">Jersey</a><br>'; echo "\n";
    echo 
'&nbsp;<a href="map.php?g=033079&amp;z=' $zoom '">Guernsey</a><br>'; echo "\n";
    echo 
'&nbsp;<a href="map.php?g=056109&amp;z=' $zoom '">Alderney</a><br>'; echo "\n";
    echo 
'<br><br><br>&nbsp;<a href="notes.txt">notes.txt</a>'; echo "\n";
  }
  echo 
"\n";
}
echo 
"</table>\n";


// mappath()
// ---------
// Convert numeric grid reference into Grid/Eastings/Northings path
//
function mappath($ref) {
  
$ref $ref 1000000;                    // ensure all zeroes present
  
$ref "$ref";                            // convert to string
  
if ($ref[4] == "0"$path "wv" $ref;  // wv10EE0NN
  
if ($ref[4] == "1"$path "wa" $ref;  // wa10EE1NN
  
$path="50k/" $path[0] . $path[1] . "/" $path[4] . $path[5] . "/" $path[7] . $path[8];
  return 
$path;
}

// zoomlink()
// ----------
// Give link/bold string for link to zoom levels
//
// zoomlink("map.php?g=.$gridref."&amp;z=100", "1:100,000", $zoom==100)
// zoomlink("map.php?g=.$gridref."&amp;z=50", "1:50,000", $zoom==50)
//
// Gives, eg:  <b>1:50,000</b>
//             <a href="link">1:100,000</a>
//
function zoomlink($link$text$iszoom) {
  if (
$iszoom) { 
    return 
"<b>" $text "</b>";
  } else {
    return 
'<a href="' $link '">' $text '</a>';
  }
}

?>

</body>
</html>