function attachMarkerEvent(marker, url)
{
  GEvent.addListener(marker, "click", function() {
                                            window.location = url; 
                    });
}

function initGoogleMap()
{
  var icon = new GIcon();
  icon.image = "/images/icons/map/flag-blue.png";
  icon.shadow = "/images/icons/map/flag-shadow.png";
  icon.iconSize = new GSize(34, 25);
  icon.shadowSize = new GSize(34, 25);
  icon.iconAnchor = new GPoint(1, 23);
  icon.infoWindowAnchor = new GPoint(10, 10);
  icon.transparent = "/images/icons/map/flag-blue.png";

  var ownIcon = new GIcon();
  ownIcon.image = "/images/icons/map/flag-red.png";
  ownIcon.shadow = "/images/icons/map/flag-shadow.png";
  ownIcon.iconSize = new GSize(34, 25);
  ownIcon.shadowSize = new GSize(34, 25);
  ownIcon.iconAnchor = new GPoint(1, 23);
  ownIcon.infoWindowAnchor = new GPoint(10, 10);
  ownIcon.transparent = "/images/icons/map/flag-red.png";

  var element = $("#googleMapCollectors").get(0);

  var map = new GMap2(element);

  map.addMapType(G_SATELLITE_3D_MAP); // Google Earth button

  //map.enableScrollWheelZoom();

  map.addControl(new GLargeMapControl());
  map.addControl(new GHierarchicalMapTypeControl());
  
  map.setCenter(new GLatLng(35, 19), 1); // Budapest, zoom 2

  if (username.toString() != "")
  {
    var ownMarker = new GMarker( new GLatLng(
                                    latitude,
                                    longitude
                                  ), 
                                  {
                                    icon: ownIcon,
                                    draggable: false,
                                    bouncy: false,
                                    title: username.toString()
                                  }
                    );
  
    GEvent.addListener(ownMarker, "click", function() {
                                              window.location = url; 
    });

    map.addOverlay(ownMarker);            
  }
            
  GDownloadUrl("http://hu.numismaticon.com/collectors/list.xml", function(data, responseCode)
  {
                if (responseCode == 200) {
                    var xml = GXml.parse(data);
                    
                    var collectors = xml.documentElement.getElementsByTagName('collector');
                    
                    for (var i = 0; i < collectors.length; ++i) {

                      if ( collectors[i].getAttribute("name") == username.toString() )
                      {
                        continue;
                      }

                      var marker = new GMarker( new GLatLng(
                                                          parseFloat(collectors[i].getAttribute("lat")),
                                                          parseFloat(collectors[i].getAttribute("lng"))
                                                ), 
                                                {
                                                  icon: ( collectors[i].getAttribute("name") == username.toString() ) ? ownIcon : icon,
                                                  draggable: false,
                                                  bouncy: false,
                                                  title: collectors[i].getAttribute("name")
                                                }
                                    );

                      attachMarkerEvent(marker, collectors[i].getAttribute("url"));
                      
                      map.addOverlay(marker);                        
                    }
                    
                } else if (responseCode == -1) {
                    alert("Data request timed out. Please try later.");
                } else { 
                    alert("Request resulted in error. Check if XML file is retrievable.");
                }

            });

            var anim = true;
            
            map.panDirection(0.01, 0);  
            GEvent.addListener(map, "moveend", function() {
                if (anim) {
                    map.panDirection(0.01, 0);
                }
            });

            GEvent.addListener(map, "click", function() {
                anim = false;
            });

            GEvent.addListener(map, "dragstart", function() {
                anim = false;
            });

            GEvent.addListener(map, "zoomstart", function() {
                anim = false;
            });
}

$(document).ready(function() {
  
	if (GBrowserIsCompatible())
  {
    initGoogleMap();
	}
});

$(document.body).unload(function() {
  if (GBrowserIsCompatible())
  {
    GUnload();
  }
});
