/**
 * @author JJR
 * @title 
 */

//load Google Map
var address;
var geocoder;
var gmarkers = [];
var html;
var htmls =[];
var i = 1;
var id = 1;
var icon;
var label;
var map;
var marker;
var markers;
var randomnumber;
var select_html;
var side_bar_html = "";
var xml;

function load() {
  if (GBrowserIsCompatible()) {

	var map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	  map.addControl(new GMapTypeControl());
	  map.addControl(new GScaleControl());
      map.setCenter(new GLatLng(52.67305135923188, 5.47119140625 ), 8);
	var geocoder = new GClientGeocoder();
	//geocoder.setBaseCountryCode("nl");

	//add controls
    map.addControl(new GMapTypeControl());

	//create randomnumber to prevent caching and retrieve xml file
	var randomnumber=Math.floor(Math.random()*11111)
    GDownloadUrl("phpsqlajax_genxml2.php?random="+randomnumber, function(data, responseCode) {
    var xml = GXml.parse(data);

	//store markers in markers array
    var markers = xml.documentElement.getElementsByTagName("marker");
    select_html += '<\/select>';
     
    function handleSelected(opt) {
     var i = opt.selectedIndex - 1; 
        if (i > -1) {
          GEvent.trigger(gmarkers[i],"click");
        }
        else {
          map.closeInfoWindow();
        }
      }

	// create marker icon
	function getIcon(iconimg){
        icon = new GIcon();
        icon.image = "images/"+iconimg;
        icon.iconSize = new GSize(24, 23);
        icon.iconAnchor = new GPoint(0, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
        return icon;
}

	//loop over the markers array
    for (var i = 0; i < markers.length; i++) {
		var address = markers[i].getAttribute("address");
		var html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
		var label = markers[i].getAttribute("label");
	    var icon = getIcon (markers[i].getAttribute("iconimg"));
		showAddress(map,geocoder,address,html,label+'<br/>'+address+'<br/>',icon);
    } //close for loop

  	}); //close GDownloadUrl
  } //close GBrowserIsCompatible
} //close load

//Create marker and set up event window
function createMarker(point,html,label,icon){
  var marker = new GMarker(point,icon);
  GEvent.addListener(marker, "click", function() {
     marker.openInfoWindowHtml(html);
  });
  // save the info we need to use later for the side_bar
  gmarkers[i] = marker;
  htmls[i] = html;
  // add a line to the side_bar html
  side_bar_html += '<a href="javascript:myclick(' + i + ')">' + label + '</a><br>';
  //document.getElementById("side_bar").innerHTML = side_bar_html;
  //i++;
  
  return marker;
}

//showAddress
function showAddress(map,geocoder,address,html,label,icon) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + " niet gevonden");
      } else {
        map.setCenter(point, 8);
        var marker = createMarker(point,html+'<br/><br/>'+address,label,icon);
        map.addOverlay(marker);
		map.addControl(new GMapTypeControl());
      }
    }
  );
}

// This function picks up the click and opens the corresponding info window
function myclick(i) {
	GEvent.trigger(gmarkers[i], "click");
}