var map;



var eventListeners=[];

// set Icon defaults
var shadow = "images/shadow50.png";
var iconSize = new GSize(20, 34);
var shadowSize = new GSize(37, 34);
var iconAnchor = new GPoint(9, 34);
var infoWindowAnchor = new GPoint(9, 2);
var infoShadowAnchor = new GPoint(18,25);
var transparent = "images/markerTransparent.png";
var imageMap =[9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,
       19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,
       16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0];

var icon = new GIcon();
icon.image = "http://www.google.com/mapfiles/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
icon.iconAnchor = new GPoint(10, 34);

var nativeIcon = new GIcon();
nativeIcon.image = "images/dk-purple.png";
nativeIcon.shadow = shadow;
nativeIcon.iconSize = iconSize;
nativeIcon.shadowSize = shadowSize;
nativeIcon.iconAnchor = iconAnchor;
nativeIcon.infoWindowAnchor = infoWindowAnchor;
nativeIcon.infoShadowAnchor = infoShadowAnchor;
nativeIcon.transparent = transparent;
nativeIcon.imageMap = imageMap;

var nonNativeIcon = new GIcon();
nonNativeIcon.image = "images/blue.png";
nonNativeIcon.shadow = shadow;
nonNativeIcon.iconSize = iconSize;
nonNativeIcon.shadowSize = shadowSize;
nonNativeIcon.iconAnchor = iconAnchor;
nonNativeIcon.infoWindowAnchor = infoWindowAnchor;
nonNativeIcon.infoShadowAnchor = infoShadowAnchor;
nonNativeIcon.transparent = transparent;
nonNativeIcon.imageMap = imageMap;

var unknownIcon = new GIcon();
unknownIcon.image = "images/lt-blue.png";
unknownIcon.shadow = shadow;
unknownIcon.iconSize = iconSize;
unknownIcon.shadowSize = shadowSize;
unknownIcon.iconAnchor = iconAnchor;
unknownIcon.infoWindowAnchor = infoWindowAnchor;
unknownIcon.infoShadowAnchor = infoShadowAnchor;
unknownIcon.transparent = transparent;
unknownIcon.imageMap = imageMap;

// An array of GIcons, to make the selection easier
var icons = [];
icons[0] = null;
icons[1] = nativeIcon;
icons[2] = null;
icons[3] = null;
icons[4] = unknownIcon;
icons[5] = nonNativeIcon;


var clusterer;

var markerArray=[]; 

var xmlDoc;

var ELEMENT_NODE = 1;


function setCenterToPoint(point)
{
	map.setCenter(point, 17);
}



function createMarker(point,id, icon) {
  var m = new GMarker(point,icon);
  var url = "info.jsp?id="+id;
    GEvent.addListener(m, "click",
        function() {
            GDownloadUrl(url, function(data) {
                m.openInfoWindowHtml(data);
            });
        })
  markerArray.push(m);
  return m;
}

function mapLoad() {
	if (GBrowserIsCompatible()) {
                       
		map = new GMap2(document.getElementById("map"));
		var center = new GLatLng(54.58,-3.25);
		map.setCenter(center, 6, G_HYBRID_MAP);
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());

                GEvent.addListener(map, 'click', function() {
                        map.closeInfoWindow();
                });

                /*var treeType = 'all';
                var html='<div class="htmlControl">'
                                                + '<p><strong>Filter your results:</strong></p>'
                                                + '<form id="SurveyForm" action="">'
                                                + '<input type="radio" id="all" name="treeType" value="all" onClick="selectTreeType(this)"/>'
                                                + '<label for="data-json-all.php">&nbsp; View all trees</label><br/>'
                                                + '<input type="radio" id="cherries" name="treeType" value="cherries" onClick="selectTreeType(this)"/>'
                                                + '<label for="data-json-cherries.php">&nbsp; View cherry trees</label>'
                                                + '<br/><input type="radio" id="all-not-cherries" name="treeType" value="all-not-cherries" onClick="selectTreeType(this)"/>'
                                                + '<label for="data-json-all-not-cherries.php">&nbsp; View all except cherry trees</label>'
                                                + '</form>'
                                                +' </div>';
                var control=new HtmlControl(html);
                map.addControl(control, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7,7)));
                */
                // set radio checked status based on the GET URL value ie all or cherries
        //	$('input:radio[name=treeType]').filter('[value='+treeType+']').attr('checked', true);
                //$('input:radio[name=treeType][value='+treeType+']').attr('checked', true);


                
                GDownloadUrl("markers.jsp?year="+ year,
                  function(data)
                  {
                      var xml = GXml.parse(data);
                      var markers = xml.documentElement.getElementsByTagName("Record");
                      for (var i = 0; i < markers.length; i++)
                      {
                        var id = markers[i].getAttribute('ID');
                        var latitude = markers[i].getAttribute('latitude');
                        var longitude = markers[i].getAttribute('longitude');
                        var identificationId = markers[i].getAttribute('identificationID');

                        var point = new GLatLng(latitude,longitude);
                        var marker = createMarker(point,id,icons[identificationId]);
                      }
                      for (var j=markerArray.length-1;j>=0;j--){
                          map.addOverlay(markerArray[j]);

                      }
                      
                      clusterer = new ClusterMarker(map, {markers:markerArray});
                      //clusterer.fitMapToMarkers()
                      map.returnToSavedPosition();
                      clusterer.refresh(true);
                  });
             
	}
}

function getImageHtml(id){
      var imageHtml = "";
      GDownloadUrl("image-output.jsp?id="+id,
          function(imageData)
          {              
              var xml = GXml.parse(imageData);
              var images = xml.documentElement.getElementsByTagName("image");
              if (images.length > 0){
                  imageHtml = "Images Submitted: <br/>";
                  
                  for (var i = 0; i < images.length; i++)
                  {
                      var thumbNail = images[i].getAttribute('thumbNail');
                      GDownloadUrl("/nature-online/british-natural-history/survey-bluebells/submitting/survey-uploads/moderated/"+thumbNail,
                      function(data, responseCode)
                      {
                          if(responseCode == 200) {
                              imageHtml = imageHtml + "<img src \"/nature-online/british-natural-history/survey-bluebells/submitting/survey-uploads/moderated/" + thumbNail + "\" />";                              
                          }
                      });
                  }
              }
          });          
      return imageHtml;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function addUnLoadEvent(func) {
	var oldonunload = window.onunload;
	if (typeof window.onunload != 'function') {
	  window.onunload = func;
	} else {
	  window.onunload = function() {
	    oldonunload();
	    func();
	  }
	}
}

//addLoadEvent(mapLoad);
addOnload(mapLoad);
addUnLoadEvent(GUnload);

