var map, manager;
var geocoder = null;


//var centerLatitude = 40.736462, centerLongitude = -73.98777, startZoom = 12;
var centerLatitude = 37.6333, centerLongitude = -120.8833, startZoom = 7;

function createMarkerClickHandler(marker, text, link) {
  return function() {
    marker.openInfoWindowHtml(
      '<h3>' + text + '</h3>' +
      '<p><a href="' + link + '">Wikipedia &raquo;</a></p>'
    );
    return false;
  };
}



function createMarker(pointData) {
  var latlng = new GLatLng(pointData.latitude, pointData.longitude);

      //geocoder loop

    
//      if (geocoder) {
//        geocoder.getLatLng(
//          pointData.addr,
//          function(latlng) {
//            if (!latlng) {
//              alert(pointData.addr + " not found");
//            } else {
            
            
      //start script following success of geocoder



		  var icon = new GIcon();
		  icon.image = 'images/red_marker.png';
		  icon.iconSize = new GSize(28, 28);
		  icon.iconAnchor = new GPoint(16, 16);
		  icon.infoWindowAnchor = new GPoint(25, 7);
		
		  opts = {
		    "icon": icon,
		    "clickable": true,
		    "labelText": pointData.abbr,
		    "labelOffset": new GSize(-16, -16)
		  };
		 
		  //alert("latlong= " + latlng + " & opts = " + opts);
		  var marker = new LabeledMarker(latlng, opts);
		  //alert("marker = " + marker + " pdname = " + pdname + " pdwp = " + pdwp);
		  var handler = createMarkerClickHandler(marker, pointData.name, pointData.wp);
			
		  GEvent.addListener(marker, "click", handler);
		
		  var listItem = document.createElement('li');
		  listItem.innerHTML = '<div class="label">'+pointData.abbr+'</div><a href="' + pointData.wp + '">' + pointData.name + '</a>';
		  listItem.getElementsByTagName('a')[0].onclick = handler;
		
		  document.getElementById('sidebar-list').appendChild(listItem);


              
      //Part of geocoder loop      
//	}
//        }
//        );
//      }
      //END of geocoder loop
      	return marker;
}     



function windowHeight() {
  // Standard browsers (Mozilla, Safari, etc.)
  if (self.innerHeight) {
    return self.innerHeight;
  }
  // IE 6
  if (document.documentElement && document.documentElement.clientHeight) {
   return document.documentElement.clientHeight;
  }
  // IE 5
  if (document.body) {
    return document.body.clientHeight;
  }
  // Just in case. 
  return 0;
}

function handleResize() {
  var height = windowHeight() - document.getElementById('toolbar').offsetHeight - 30;
  document.getElementById('map').style.height = height + 'px';
  document.getElementById('sidebar').style.height = height + 'px';
}

function mapload() {

	
  map = new GMap(document.getElementById("map"));

	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
	map.setMapType(G_PHYSICAL_MAP);
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl ());
	
	//map.addControl(new GOverviewMapControl());          
	
	//Hierarchical Map Type Control
	var mapControl = new GHierarchicalMapTypeControl();
	// Set up map type menu relationships
	mapControl.clearRelationships();
	mapControl.addRelationship(G_SATELLITE_MAP, G_HYBRID_MAP, "Labels", true);
	// Add control after you've specified the relationships
	map.addControl(mapControl);
	//End Hierarchical Map Type Control
	
	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(G_NORMAL_MAP);
	
	geocoder = new GClientGeocoder();



  manager = new MarkerManager(map);
	
  // This is a sorting trick, don't worry too much about it.
  markers.sort(function(a, b) { return (a.abbr > b.abbr) ? +1 : -1; }); 
	
  batch = [];
  for(id in markers) {

    batch.push(createMarker(markers[id]));
  }
  manager.addMarkers(batch, 1);
  manager.refresh();
  
  
}
