/****************** Implementation by Felixone.it *******************/

var rmap = null;
var gmpopstyle = "font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;";

var baseIcon = new GIcon();
baseIcon.shadow = GMicshadow;
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function loadRMap() {
  if (GBrowserIsCompatible()) {
    rmap = new GMap2(document.getElementById("rmap"));
    if (GMctrl) rmap.addControl(GMapctrl);
    if (GMtype) rmap.addControl(new GMapTypeControl());
    if (GMscale) rmap.addControl(new GScaleControl());
    if (GMoview) rmap.addControl(new GOverviewMapControl());
    rmap.setCenter(GMcenter, GMzoom);
    rmap.setMapType(G_HYBRID_MAP);
    var maxlat = 0;
    var minlat = 1000;
    var maxlng = -1000;
    var minlng = 1000;
    for (var i=0; i<GMnames.length; i++) {
      if (GMlats[i] != "" && GMlngs[i] != "") {
        var point = new GLatLng(GMlats[i],GMlngs[i]);
        var icon = new GIcon(baseIcon);
        icon.image = GMicon.replace(/##/, GMnum);
        maxlat = Math.max(maxlat,GMlats[i]);
        minlat = Math.min(minlat,GMlats[i]);
        maxlng = Math.max(maxlng,GMlngs[i]);
        minlng = Math.min(minlng,GMlngs[i]);
        var rightlat = (maxlat-minlat)/2 + minlat;
        var rightlng = (minlng-maxlng)/2 + maxlng;
        rightpoint = new GLatLng(rightlat,rightlng);
        rmap.setCenter(rightpoint, GMzoom);
        rmap.addOverlay(createMarker(point, GMnames[i], GMaddrs[i], GMtown[i], GMstate[i], GMcountry[i], GMpic[i], GMlink[i], GMdescr[i], icon));
        if (i > 0) {
          setZoom(GMzoom,minlat,maxlat,minlng,maxlng,rightpoint);
        }
      }
      GMnum++;
    }
  }
}

function createMarker(point, name, address, town, state, country, pic, link, descr, ic) {
  var marker = new GMarker(point, ic);
  if (address != "") address += "<br>";
  if (state != "" && town != "") {
    town += ", " + state+"<br>";
  } else if (town != "") town += "<br>";
  if (country != "") country += "<br>";
  if (pic != "") pic = "<img src='"+pic+"' border='0'><br>";
  if (descr != "") descr += "<br>";
  if (link != "") link = "<a href='"+link+"' target='_blank'>"+link.replace(/^https?:\/\//i,"")+"</a>";
  var gmpophtml = "<table width='210' border='0' cellpadding='0' cellspacing='0' style='"+gmpopstyle+"'><tr><td align='left'><b>"+name+"</b><br>"+address+town+country+"<br></td></tr><tr><td align='left'>"+pic+descr+link+"</td></tr></table>";
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(gmpophtml);
  });
  return marker;
}

function setZoom(z,minlat,maxlat,minlng,maxlng,lastpoint) {
  var zoom = z;
  var bounds = rmap.getBounds();
  var southWest = bounds.getSouthWest();
  var northEast = bounds.getNorthEast();
  if (minlat < southWest.lat() || maxlat > northEast.lat() || minlng < southWest.lng() || maxlng > northEast.lng()) {
    zoom--; rmap.setCenter(lastpoint, zoom);
    setZoom(zoom,minlat,maxlat,minlng,maxlng,lastpoint);
  }
}

