///////////////////////////////////////////////////////////////////////////
// gempopup.js
///////////////////////////////////////////////////////////////////////////

var map_url;

function popupMap (scale,lng,lat)
{
  popup (scale,lng,lat,'gif');
  return;
}

function popupAir (scale,lng,lat)
{
  popup (scale,lng,lat,'jpg');
  return;
}

function popup (scale,lng,lat,type)
{
  root = './maps';

  lng_ew = lng.substr(0,1);
  lng_val = lng.substr(1,3);
  if (lng_ew == 'e') {
    lng_i = +1 * lng_val;
  } else {
    lng_i = -1 * lng_val;
  }
  lat_ns = lat.substr(0,1);
  lat_val = lat.substr(1,3);
  if (lat_ns == 'n') {
    lat_i = +1 * lat_val;
  } else {
    lat_i = -1 * lat_val;
  }
  scale_i = scale.substr(1,1);
  scale1_i = scale_i + 1;
  scale1_s = ' ' + scale1_i;
  scale1_s = 'z' + scale1_s.substr(scale1_s.length-1,1);
  mid_x = 250;
  mid_y = 250;
  pix_x = 20;
  pix_y = 20;

  map_url = root + '/' + lng.substr(0,3) + '0' + '/' + lng + lat + '/max_' + scale + '_' + lng + '0000_' + lat + '0000' + '.' + type;

  newWin = window.open('',scale,'scrollbars=no,resizable=no,toolbar=no,menubar=no,width=544,height=544');

  newWin.document.writeln('<HTML>');
  newWin.document.writeln('<HEAD><TITLE>GemPopup: ' + lat + ' ' + lng + '</TITLE></HEAD>');
  newWin.document.writeln('<BODY BGCOLOR="#EEEEEE" MARGINWIDTH="2" MARGINHEIGHT="2" LEFTMARGIN="2" TOPMARGIN="2">');
  newWin.document.writeln('<SCRIPT LANGUAGE="JavaScript" SRC="gempopup.js"></SCRIPT>');

  newWin.document.writeln('<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>');
  newWin.document.writeln('<TR>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-nw.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(-1,-1);"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="240" HEIGHT="20"><IMG SRC="imgs/trans.gif" WIDTH="240" HEIGHT="20" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-n.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(0,-1);"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="240" HEIGHT="20"><IMG SRC="imgs/trans.gif" WIDTH="240" HEIGHT="20" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-ne.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(1,-1);"></TD>');
  newWin.document.writeln('</TR><TR>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="240"><IMG SRC="imgs/trans.gif" WIDTH="20" HEIGHT="240" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD COLSPAN="3" ROWSPAN="3" ALIGN="CENTER" WIDTH="500" HEIGHT="500">');
  newWin.document.writeln('<IMG SRC="imgs/init-map.gif" WIDTH="500" HEIGHT="500" BORDER="0" ALT="(click to zoom-in)" USEMAP="#gempopup"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="240"><IMG SRC="imgs/trans.gif" WIDTH="20" HEIGHT="240" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('</TR><TR>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-w.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(-1,0);"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-e.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(1,0);"></TD>');
  newWin.document.writeln('</TR><TR>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="240"><IMG SRC="imgs/trans.gif" WIDTH="20" HEIGHT="240" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="240"><IMG SRC="imgs/trans.gif" WIDTH="20" HEIGHT="240" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('</TR><TR>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-sw.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(-1,1);"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="240" HEIGHT="20"><IMG SRC="imgs/trans.gif" WIDTH="240" HEIGHT="20" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-s.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(0,1);"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="240" HEIGHT="20"><IMG SRC="imgs/trans.gif" WIDTH="240" HEIGHT="20" ALT="(click to zoom out)" ONCLICK="javascript:zoomout();"></TD>');
  newWin.document.writeln('<TD ALIGN="CENTER" WIDTH="20" HEIGHT="20"><IMG SRC="imgs/arrow-se.gif" WIDTH="20" HEIGHT="20" ALT="(click to pan)" ONCLICK="javascript:scroll(1,1);"></TD>');
  newWin.document.writeln('</TR>');
  newWin.document.writeln('</TABLE>');

  newWin.document.writeln('<MAP name="gempopup">');
  for (y = 12; y >= -12; y--) {
    for (x = -12; x <= 12; x++) {
      if ((x == -12) || (x == 12) || (y == -12) || (y == 12))
        newWin.document.writeln('  <AREA HREF="javascript:zoomin(\'' + x + '\',\'' + y + '\')" SHAPE="rect" COORDS="' + (250+pix_x*(x-0.5)) + ',' + (250-pix_y*(y-0.5)) + ',' + (250+pix_x*(x+0.5)) + ',' + (250-pix_y*(y+0.5)) + '" ALT="(click to zoom out)">');
      else
        newWin.document.writeln('  <AREA HREF="javascript:zoomin(\'' + x + '\',\'' + y + '\')" SHAPE="rect" COORDS="' + (250+pix_x*(x-0.5)) + ',' + (250-pix_y*(y-0.5)) + ',' + (250+pix_x*(x+0.5)) + ',' + (250-pix_y*(y+0.5)) + '" ALT="(click to zoom in)">');
    }
  }
  newWin.document.writeln('</MAP>');

  newWin.document.images[6].src = map_url;

  newWin.document.writeln('</BODY>');
  newWin.document.writeln('</HTML>');
  newWin.document.close();
  newWin.focus();

  newWin.map_url = map_url;

  return;
}

function scroll (h, v)
{
//  img_url = document.images[6].src;
  img_url = map_url;
  scale = img_url.substr(img_url.length-23,1);
  lng_ew = img_url.substr(img_url.length-21,1);
  lng_dg = img_url.substr(img_url.length-20,3);
  lng_mn = img_url.substr(img_url.length-17,2);
  lng_sc = img_url.substr(img_url.length-15,2);
  lat_ns = img_url.substr(img_url.length-12,1);
  lat_dg = img_url.substr(img_url.length-11,3);
  lat_mn = img_url.substr(img_url.length-8,2);
  lat_sc = img_url.substr(img_url.length-6,2);
  type = img_url.substr(img_url.length-3,3);

  if (scale == '0') {
    pan = 30;
  } else if (scale == '1') {
    pan = 3;
  } else if (scale == '2') {
    pan = 1 / 3;
  } else if (scale == '3') {
    pan = 1 / 30;
  } else if (scale == '4') {
    pan = 1 / 180;
  }

  if (lng_ew == 'e') {
    lng = +1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  } else {
    lng = -1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  }

  if (h == +1)
    lng += pan;
  if (h == -1)
    lng -= pan;
  while (lng <= -180)
    lng += 360;
  while (lng > 180)
    lng -= 360;
  if (lng >= 0) {
    lng_ew = 'e';
  } else {
    lng_ew = 'w';
    lng = -lng;
  }
  lng += 1E-6;
  lng_deg = Math.floor(lng);
  lng_min = Math.floor((lng - lng_deg) * 60); 
  lng_sec = Math.floor((((lng - lng_deg) * 60) - lng_min) * 60); 
  lng_vdg = ('000' + lng_deg);
  lng_vdg = lng_vdg.substr(lng_vdg.length-3);
  lng_vmn = ('000' + lng_min);
  lng_vmn = lng_vmn.substr(lng_vmn.length-2);
  lng_vsc = ('000' + lng_sec);
  lng_vsc = lng_vsc.substr(lng_vsc.length-2);
  lng_val = lng_vdg + lng_vmn + lng_vsc;

  if (lat_ns == 'n') {
    lat = +1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  } else {
    lat = -1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  }
  if (v == +1)
    lat -= pan;
  if (v == -1)
    lat += pan;
  if (scale == '0') {
    if (lat < -60)
      lat = -60;
    if (lat > 60)
      lat = 60;
  } else {
    if (lat < -75)
      lat = -75;
    if (lat > 75)
      lat = 75;
  }
  if (lat >= 0) {
    lat_ns = 'n';
  } else {
    lat_ns = 's';
    lat = -lat;
  }
  lat += 1E-6;
  lat_deg = Math.floor(lat);
  lat_min = Math.floor((lat - lat_deg) * 60); 
  lat_sec = Math.floor((((lat - lat_deg) * 60) - lat_min) * 60); 
  lat_vdg = ('000' + lat_deg);
  lat_vdg = lat_vdg.substr(lat_vdg.length-3);
  lat_vmn = ('000' + lat_min);
  lat_vmn = lat_vmn.substr(lat_vmn.length-2);
  lat_vsc = ('000' + lat_sec);
  lat_vsc = lat_vsc.substr(lat_vsc.length-2);
  lat_val = lat_vdg + lat_vmn + lat_vsc;

  path = img_url.substr(0,img_url.length-42);
  dirs = lng_ew + lng_val.substr(0,2) + '0' + "/" + lng_ew + lng_vdg + lat_ns + lat_vdg + "/";
  file = 'max_z' + scale + '_' + lng_ew + lng_val + "_" + lat_ns + lat_val + "." + type;
  map_url = path + dirs + file;
  document.title = 'GemPopup: ' + lat_ns + lat_vdg + ':' + lat_vmn + ':' + lat_vsc + ' ' + lng_ew + lng_vdg + ':' + lng_vmn + ':' + lng_vsc;
  document.images[6].src = path + dirs + file;

  return;
}

function zoomin (x, y)
{
//  img_url = document.images[6].src;
  img_url = map_url;
  scale = img_url.substr(img_url.length-23,1);
  lng_ew = img_url.substr(img_url.length-21,1);
  lng_dg = img_url.substr(img_url.length-20,3);
  lng_mn = img_url.substr(img_url.length-17,2);
  lng_sc = img_url.substr(img_url.length-15,2);
  lat_ns = img_url.substr(img_url.length-12,1);
  lat_dg = img_url.substr(img_url.length-11,3);
  lat_mn = img_url.substr(img_url.length-8,2);
  lat_sc = img_url.substr(img_url.length-6,2);
  type = img_url.substr(img_url.length-3,3);

  if ((x == -12) || (x == 12) || (y == -12) || (y == 12)) {
    zoomout();
    return;
  }

  if (scale < 4)
    scale1 = (1 * scale) + 1;
  else
    scale1 = scale;

  if (scale == 0) {
    pan = 30;
    pix_x = 10;
    pix_y = 12;
  } else if (scale == 1) {
    pan = 3;
    pix_x = 81;
    pix_y = 102;
  } else if (scale == 2) {
    pan = 1 / 3;
    pix_x = 730;
    pix_y = 912;
  } else if (scale == 3) {
    pan = 1 / 30;
    pix_x = 8208;
    pix_y = 10260;
  } else if (scale == 4) {
    pan = 1 / 180;
    pix_x = 43776;
    pix_y = 54720;
  }
  if (scale1 == 0) {
    pan1 = 30;
  } else if (scale1 == 1) {
    pan1 = 3;
  } else if (scale1 == 2) {
    pan1 = 1 / 3;
  } else if (scale1 == 3) {
    pan1 = 1 / 30;
  } else if (scale1 == 4) {
    pan1 = 1 / 180;
  }

  if (lng_ew == 'e') {
    lng = +1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  } else {
    lng = -1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  }

  lng1 = lng + (x * 20 / pix_x);
  lng1 = Math.round(lng1 / pan1) * pan1;

  if (lng1 >= 0) {
    lng1_ew = 'e';
  } else {
    lng1_ew = 'w';
    lng1 = -lng1;
  }
  lng1 += 1E-6;
  lng1_deg = Math.floor(lng1);
  lng1_min = Math.floor((lng1 - lng1_deg) * 60); 
  lng1_sec = Math.floor((((lng1 - lng1_deg) * 60) - lng1_min) * 60); 
  lng1_vdg = ('000' + lng1_deg);
  lng1_vdg = lng1_vdg.substr(lng1_vdg.length-3);
  lng1_vmn = ('000' + lng1_min);
  lng1_vmn = lng1_vmn.substr(lng1_vmn.length-2);
  lng1_vsc = ('000' + lng1_sec);
  lng1_vsc = lng1_vsc.substr(lng1_vsc.length-2);
  lng1_val = lng1_vdg + lng1_vmn + lng1_vsc;

  if (lat_ns == 'n') {
    lat = +1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  } else {
    lat = -1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  }

  lat1 = lat + (y * 20 / pix_y);
  lat1 = Math.round(lat1 / pan1) * pan1;

  if (lat1 >= 0) {
    lat1_ns = 'n';
  } else {
    lat1_ns = 's';
    lat1 = -lat1;
  }
  lat1 += 1E-6;
  lat1_deg = Math.floor(lat1);
  lat1_min = Math.floor((lat1 - lat1_deg) * 60); 
  lat1_sec = Math.floor((((lat1 - lat1_deg) * 60) - lat1_min) * 60); 
  lat1_vdg = ('000' + lat1_deg);
  lat1_vdg = lat1_vdg.substr(lat1_vdg.length-3);
  lat1_vmn = ('000' + lat1_min);
  lat1_vmn = lat1_vmn.substr(lat1_vmn.length-2);
  lat1_vsc = ('000' + lat1_sec);
  lat1_vsc = lat1_vsc.substr(lat1_vsc.length-2);
  lat1_val = lat1_vdg + lat1_vmn + lat1_vsc;

  path = img_url.substr(0,img_url.length-42);
  dirs = lng1_ew + lng1_val.substr(0,2) + '0' + "/" + lng1_ew + lng1_vdg + lat1_ns + lat1_vdg + "/";
  file = 'max_z' + scale1 + '_' + lng1_ew + lng1_val + "_" + lat1_ns + lat1_val + "." + type;
  map_url = path + dirs + file;
  document.title = 'GemPopup: ' + lat1_ns + lat1_vdg + ':' + lat1_vmn + ':' + lat1_vsc + ' ' + lng1_ew + lng1_vdg + ':' + lng1_vmn + ':' + lng1_vsc;
  document.images[6].src = path + dirs + file;

  return;
}

function zoomout ()
{
//  img_url = document.images[6].src;
  img_url = map_url;
  scale = img_url.substr(img_url.length-23,1);
  lng_ew = img_url.substr(img_url.length-21,1);
  lng_dg = img_url.substr(img_url.length-20,3);
  lng_mn = img_url.substr(img_url.length-17,2);
  lng_sc = img_url.substr(img_url.length-15,2);
  lat_ns = img_url.substr(img_url.length-12,1);
  lat_dg = img_url.substr(img_url.length-11,3);
  lat_mn = img_url.substr(img_url.length-8,2);
  lat_sc = img_url.substr(img_url.length-6,2);
  type = img_url.substr(img_url.length-3,3);

  if (scale > 0)
    scale0 = (1 * scale) - 1;
  else
    scale0 = scale;

  if (scale0 == '0') {
    pan0 = 30;
  } else if (scale0 == '1') {
    pan0 = 3;
  } else if (scale0 == '2') {
    pan0 = 1 / 3;
  } else if (scale0 == '3') {
    pan0 = 1 / 30;
  } else if (scale0 == '4') {
    pan0 = 1 / 180;
  }

  if (lng_ew == 'e') {
    lng = +1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  } else {
    lng = -1 * (parseInt(lng_dg,10) + parseInt(lng_mn,10) / 60 + parseInt(lng_sc,10) / 3600);
  }

  lng0 = Math.round(lng / pan0) * pan0;

  while (lng0 <= -180)
    lng0 += 360;
  while (lng0 > 180)
    lng0 -= 360;
  if (lng0 >= 0) {
    lng0_ew = 'e';
  } else {
    lng0_ew = 'w';
    lng0 = -lng0;
  }

  lng0 += 1E-6;
  lng0_deg = Math.floor(lng0);
  lng0_min = Math.floor((lng0 - lng0_deg) * 60); 
  lng0_sec = Math.floor((((lng0 - lng0_deg) * 60) - lng0_min) * 60); 
  lng0_vdg = ('000' + lng0_deg);
  lng0_vdg = lng0_vdg.substr(lng0_vdg.length-3);
  lng0_vmn = ('000' + lng0_min);
  lng0_vmn = lng0_vmn.substr(lng0_vmn.length-2);
  lng0_vsc = ('000' + lng0_sec);
  lng0_vsc = lng0_vsc.substr(lng0_vsc.length-2);
  lng0_val = lng0_vdg + lng0_vmn + lng0_vsc;

  if (lat_ns == 'n') {
    lat = +1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  } else {
    lat = -1 * (parseInt(lat_dg,10) + parseInt(lat_mn,10) / 60 + parseInt(lat_sc,10) / 3600);
  }

  lat0 = Math.round(lat / pan0) * pan0;

  if (scale0 == '0') {
    if (lat0 < -60)
      lat0 = -60;
    if (lat0 > 60)
      lat0 = 60;
  } else {
    if (lat0 < -75)
      lat0 = -75;
    if (lat0 > 75)
      lat0 = 75;
  }
  if (lat0 >= 0) {
    lat0_ns = 'n';
  } else {
    lat0_ns = 's';
    lat0 = -lat0;
  }
  lat0 += 1E-6;
  lat0_deg = Math.floor(lat0);
  lat0_min = Math.floor((lat0 - lat0_deg) * 60); 
  lat0_sec = Math.floor((((lat0 - lat0_deg) * 60) - lat0_min) * 60); 
  lat0_vdg = ('000' + lat0_deg);
  lat0_vdg = lat0_vdg.substr(lat0_vdg.length-3);
  lat0_vmn = ('000' + lat0_min);
  lat0_vmn = lat0_vmn.substr(lat0_vmn.length-2);
  lat0_vsc = ('000' + lat0_sec);
  lat0_vsc = lat0_vsc.substr(lat0_vsc.length-2);
  lat0_val = lat0_vdg + lat0_vmn + lat0_vsc;

  path = img_url.substr(0,img_url.length-42);
  dirs = lng0_ew + lng0_val.substr(0,2) + '0' + "/" + lng0_ew + lng0_vdg + lat0_ns + lat0_vdg + "/";
  file = 'max_z' + scale0 + '_' + lng0_ew + lng0_val + "_" + lat0_ns + lat0_val + "." + type;
  map_url = path + dirs + file;
  document.title = 'GemPopup: ' + lat0_ns + lat0_vdg + ':' + lat0_vmn + ':' + lat0_vsc + ' ' + lng0_ew + lng0_vdg + ':' + lng0_vmn + ':' + lng0_vsc;
  document.images[6].src = path + dirs + file;

  return;
}

 
