var markers = new Array();
var maps = new Array();

function createMarker(map, key, point, info, link)
{
  var marker = new GMarker(point);
  if(info && info != '')
  {
    GEvent.addListener(marker, "mouseover", function() {
      marker.openInfoWindowHtml(info);
    });
  }
  if(link && link != '')
  {
    GEvent.addListener(marker, "click", function() {
      document.location.href = link;
    });
  }
  markers[key] = marker;
  return marker;
}

function showGInfoWindow(id)
{
  var pts = eval('points' + id);
  if(pts)
  {
    var item = pts[id];
    if(item)
    {
      var marker = markers[item[0]];
      if(marker && item[2] && item[2] != '')
      {
        marker.openInfoWindowHtml(item[2]);
      }
    }
  }
}

function hideGInfoWindow(map)
{
  map.closeInfoWindow();
}

function addMarker(map, point, id, key)
{
  try
  {
    if(map)
    {
      var pts = eval('points' + id);
      if(pts)
      {
        var item = pts[key];
        if(item)
        {
          map.addOverlay(createMarker(map, item[0], point, item[3], item[4]));
        }
      }
    }
  }
  catch(e){alert(e);}
}

function createMap(id, lat, lng, deep, format)
{
  var map = new GMap2(document.getElementById("map" + id));

  /*if(format == 'list')
  {
    map.disableDragging();
  }
  else if(format == 'detail')
  {
    map.addControl(new GSmallMapControl());
  }*/
  map.addControl(new GSmallMapControl());
  GEvent.addListener(map, "mouseout", function() {
      map.closeInfoWindow();
    });
  map.setCenter(new GLatLng(lat, lng), deep);

  return map;
}

function initializeMaps()
{
  for(var m in maps)
  {
    var opts = maps[m];
    if(opts)
    {
      var id = opts[0];
      var map = createMap(id, opts[1], opts[2], opts[3], opts[4]);
      eval('map' + id + " = map;");
      var pts = eval('points' + id);
      for(var i = 0; i < pts.length; i++)
      {
        var point = pts[i];
        if (point)
        {
          var latLng = new GLatLng(point[1], point[2]);
          addMarker(map, latLng, id, i);
        }
      }
    }
  }
}
