/*
  /modules/geo/directory.js
*/
//------------------------------------------------------------------------------
//  globals
var currentTop = 0;
var currentLeft = 0;
var currentCountry = "";
var currentFeature = "";
var currentAlign = null;
var jgwebtx = "";
var eastChar = "";
var northChar = "";
var southChar = "";
var westChat = "";
//------------------------------------------------------------------------------
function jsclickplus(idofdiv, idoficon)
{
  var jsplus = "/style/" + jgcss + "/plus.gif";
  var jsminus = "/style/" + jgcss + "/minus.gif";
  var jsdiv = document.getElementById(idofdiv);
  var jobj = document.getElementById(idoficon);
  var asrc = jobj.src.split("/");
  var temp = asrc.length - 1;
  if(asrc[temp] == "plus.gif")
  {
    jobj.src = jsminus;
    jsdiv.style.display = "block";
  }
  else
  {
    jobj.src = jsplus;
    jsdiv.style.display = "none";
  }
}
//------------------------------------------------------------------------------
function createMarker(point, jmarkerOptions)
{     
  var jmarker = new GMarker(point, jmarkerOptions);
  GEvent.addListener(jmarker, "click", function()
  { jsdifeatures(point); });
  return jmarker;
}
//------------------------------------------------------------------------------
function jsdilist(alignid, parmsid, jtitle, jcountry, jfeature)
{
  var jalign = document.getElementById(alignid);
  var jparms = document.getElementById(parmsid);
  var alats = new Array();
  var alongs = new Array();
  //----------------------------------------------------------------------------
  //  extract the parms into two arrays
  var minlat = 180;
  var maxlat = -180;
  var minlong = 180;
  var maxlong = -180;
  var aparms = jparms.value.split(",");
  var j = 0;
  for(i=0; i<aparms.length; i+=2)
  {
    alats[j] = aparms[i];
    if(alats[j] < minlat)
      minlat = alats[j];
    if(alats[j] > maxlat)
      maxlat = alats[j];
    var k = i + 1;
    alongs[j] = aparms[k];
    if(alongs[j] < minlong)
      minlong = alongs[j];
    if(alongs[j] > maxlong)
      maxlong = alongs[j];    
    ++j;
  }
  //----------------------------------------------------------------------------
  //  get the dimensions of the control to align to
  var objdim = Element.Methods.getDimensions(jalign);
  var owidth = objdim.width;
  var oheight = objdim.height; 
  //----------------------------------------------------------------------------
  //  get the absolute position of the control to align to
  var jo = Element.Methods.cumulativeOffset(jalign);
  var objTop = jo[1];
  var objLeft = jo[0];
  //----------------------------------------------------------------------------
  //  get the window size
  var ws = winsize();
  var winwidth = ws.x;
  var winheight = ws.y;
  //----------------------------------------------------------------------------
  //  set the x and y positions for the popup
  var poptop = objTop + oheight + 2;
  var availRight = winwidth - objLeft - 30;
  if(availRight >= 500)
    var popleft = objLeft;
  else
  {
    var availLeft = objLeft + owidth - 30;
    if(availLeft >= 500)
      var popleft = objLeft + owidth - 500;
    else
      var popleft = winwidth - 30 - 500;
  } 
  //----------------------------------------------------------------------------
  //  save the current co-ordinates, as well as the current country code and
  //  the feature code
  currentTop = poptop;
  currentLeft = popleft;
  currentCountry = jcountry;
  currentFeature = jfeature; 
  currentAlign = document.getElementById(alignid);
  //----------------------------------------------------------------------------
  //  setup the map
  var stackid = createpopup(false, jtitle, 550, 400, popleft, poptop);
  //----------------------------------------------------------------------------
  //  load the map
  if(GBrowserIsCompatible()) 
  {
    //--------------------------------------------------------------------------
    // create the marker
    var baseIcon = new GIcon();
    baseIcon.iconSize = new GSize(10, 10);
    baseIcon.iconAnchor = new GPoint(5, 5);
    baseIcon.image = "http://www.west3.eu/mappoint.png";
    markerOptions = { icon:baseIcon };    
    //--------------------------------------------------------------------------
    //  create the map
    var map = new GMap2(document.getElementById("idpopupBody" + stackid));
    var bounds = new GLatLngBounds();
    bounds.extend(new GLatLng(minlat, minlong));
    bounds.extend(new GLatLng(maxlat, maxlong));
    map.setCenter(bounds.getCenter());
    var zlevel = map.getBoundsZoomLevel(bounds);
    if(zlevel > 13)
      zlevel = 13;
    map.setZoom(zlevel);
    //--------------------------------------------------------------------------
    //  add the points
    for(i=0; i<alats[i]; i++)
    {
      var jll = new GLatLng(alats[i], alongs[i]);
      var marker = createMarker(jll, markerOptions);
      map.addOverlay(marker);    
    }
    //--------------------------------------------------------------------------
    //  add the map controls 
    map.addControl(new GSmallMapControl());  
    map.addControl(new GMapTypeControl()); 
  }   
}
//------------------------------------------------------------------------------
function jsdifeatures(jpoint)
{
  //----------------------------------------------------------------------------
  var jlat = Math.round(jpoint.y * 100000);
  var jlong = Math.round(jpoint.x * 100000);
  //----------------------------------------------------------------------------
  //  build the url for the AJAX call
  var jurl = "/modules/geo/directory.ajax.php?lang=" + jglang;
  jurl += "&action=loadlines";
  jurl += "&country=" + currentCountry + "&fcode=" + currentFeature;
  jurl += "&lat=" + jlat + "&long=" + jlong + "&km=20";
  //----------------------------------------------------------------------------
  //  get the sign of the lat and long
  if(jlat < 0)
  {
    var jlatchar = southChar;
    var jlatabs = jlat * -1;
  }
  else
  {
    var jlatchar = northChar;
    var jlatabs = jlat;
  }
  if(jlong < 0)
  {
    var jlongchar = westChar;
    var jlongabs = jlong * -1;
  }
  else
  {
    var jlongchar = eastChar;
    var jlongabs = jlong;
  }  
  //----------------------------------------------------------------------------
  //  create the display version of the latitude
  var jlatdeg = Math.floor(jlatabs / 100000); 
  var jlattemp = jlatabs - (jlatdeg * 100000);
  var jlatmin = Math.round(jlattemp / 100000 * 60);
  //----------------------------------------------------------------------------
  //  create the display version of the longitude
  var jlongdeg = Math.floor(jlongabs / 100000);
  var jlongtemp = jlongabs - (jlongdeg * 100000);
  var jlongmin = Math.round(jlongtemp / 100000 * 60);
  //----------------------------------------------------------------------------
  //  create the title
  var jtitle = document.getElementById("idpopupTitleText0").innerHTML + " - ";
  jtitle += jlatdeg + "&deg;" + jlatmin + "&#39; " + jlatchar + ", ";
  jtitle += jlongdeg + "&deg;" + jlongmin + "&#39; " + jlongchar;
  //----------------------------------------------------------------------------
  //  create the popup for the 'features within 20km' display
  showpopup(currentAlign, jurl, true, jtitle, 550, 300);
}
//------------------------------------------------------------------------------
//  show the selected feature on a map 
function jsspshowfeature(jobjid, jdeclat, jdeclong, jname, jpostcode, jplacename,
                jsuburb, jstreet, jcountryname, jtelephone, jfax, jemail,
                jwebsite, jfid)
{ 
  //----------------------------------------------------------------------------
  //  create a new popup
  var jtitle = jname;
  if(jplacename > "")
    jtitle += ", " + jplacename;
  var stackid = createpopup(false, jtitle, 550, 350);
  var popbodyid = document.getElementById("idpopupBody" + stackid);
  var jhtml = "<div id='idsbleft' style='height:100%;width:29%;float:left'>";
  jhtml += "<table cols='1'><tr><td class='wafcaption'>" + jname + "</td></tr>";
  jhtml += "<tr><td>";
  if(jstreet > "")
    jhtml += jstreet + "<br>";
  if(jpostcode > "" || jplacename > "")
  {
    if(jpostcode > "")
      jhtml += jpostcode + " ";
    jhtml += jplacename;
    if(jsuburb > "")
      jhtml += " (" + jsuburb + ")";
    jhtml += "<br>";  
  }
  jhtml += jcountryname + "<br>";
  jhtml += "</td></tr>";
  if(jtelephone > "")
  {
    jhtml += "<tr><td>";
    jhtml += "<img src='/style/" + jgcss + "/phone.gif' style='height:1em;border:none'> ";
    jhtml += jtelephone + "</td></tr>";
  }
  if(jfax > "")
  {
    jhtml += "<tr><td>";
    jhtml += "<img src='/style/" + jgcss + "/fax.gif' style='height:1em;border:none'> ";
    jhtml += jfax + "</td></tr>";
  }  
  if(jwebsite > "" && jwebsite != "http://")
  {
    jhtml += "<tr><td class='wafaligncenter'>";
    jhtml += "<a href='" + jwebsite + "' target='_blank'>" + jgwebtx + "</a>";
    jhtml += "</td></tr>";
  }
  if(jemail > "")
  {
    jhtml += "<tr><td class='wafaligncenter'>";
    jhtml += "<a onclick='jssplinkmail(" + jfid + ")'>";
    jhtml += "<img src='/style/" + jgcss + "/bigemail.gif'>";
    jhtml += "</a></td></tr>";
  }
  jhtml += "</table>";
  jhtml += "</div>";
  jhtml += "<div id='idsbcanvas' style='width:70%;height:100%;float:left'></div>";
  popbodyid.innerHTML = jhtml;
  if (GBrowserIsCompatible()) 
  {
    var map = new GMap2(document.getElementById("idsbcanvas"));
    jll = new GLatLng(jdeclat, jdeclong);
    map.setCenter(jll, 13);
    var marker = new GMarker(jll);
    map.addOverlay(marker); 
    map.addControl(new GMapTypeControl());
    map.addControl(new GSmallMapControl());
  }
}
//------------------------------------------------------------------------------
function jsspeditfeature(jcountry, jid)
{
  var jurl = "/modules/geo/addfeature.php?lang=" + jglang;
  jurl += "&country=" + jcountry + "&id=" + jid;
  window.location = jurl;
}
//------------------------------------------------------------------------------
function jsdiadmhover(jobj, jcountry, degreesWidth, degreesHeight, centreLat, centreLong,
                      jx, jy)
{
  //----------------------------------------------------------------------------
  //  remove any existing tooltip
  hidettip();  
  //----------------------------------------------------------------------------
  //  create the url
  var jurl = "/core/inc/ajadmoutline.php?lang=" + jglang + "&country=" + jcountry;
  jurl += "&degwidth=" + degreesWidth + "&degheight=" + degreesHeight;
  jurl += "&centrelat=" + centreLat + "&centrelong=" + centreLong;
  //----------------------------------------------------------------------------
  //  show the div
  showhover(jobj, jurl, jx);
  return true;
}
//------------------------------------------------------------------------------
// display flight connections in a separate ajax window
function jsflights(jobjid, jtitle, jiata)
{
  jurl = "/modules/geo/ajflights.php?lang=" + jglang + "&iata=" + jiata;
  var jobj = document.getElementById(jobjid);
  showpopup(jobj, jurl, true, jtitle, 300, 250);
}
//------------------------------------------------------------------------------
function jssplinkmail(jfid)
{
  var jurl = "/modules/mail/msend.php?lang=" + jglang + "&link=" + jfid;
  showpopup(null, jurl, false, "");
}

