var map;
var infowindow;
//var markers = [];

function createmarker(latlng, imagefile, html) {
 var marker = new google.maps.Marker({
  map: map,
  position: latlng,
  icon: imagefile
 });
 google.maps.event.addListener(marker, 'click', function() {
  infowindow.setContent(html);
  infowindow.open(map, marker);
 });
 //markers.push(marker);
}

function loadmap( mapdiv, locations, initzoom ) {
 var firstlat = locations[0][0];
 var firstlon = locations[0][1];
 var firstzoom = 10;
 var myLatlng = new google.maps.LatLng( firstlat, firstlon );   
 if( initzoom ) {
  firstzoom = initzoom;
 }
 var myOptions = {
  zoom: firstzoom,
  center: myLatlng,
  mapTypeControl: true,
  mapTypeControlOptions: { style:google.maps.MapTypeControlStyle.DROPDOWN_MENU },
  mapTypeId: google.maps.MapTypeId.ROADMAP
 }
 map = new google.maps.Map(document.getElementById(mapdiv), myOptions);
 var bounds = new google.maps.LatLngBounds();
 infowindow = new google.maps.InfoWindow();

 for (var i = 0; i < locations.length; i++) {
  var thisone = locations[i];
  var myLatLng = new google.maps.LatLng(thisone[0], thisone[1]);
  var imagefile = 'http://www.google.com/intl/en_us/mapfiles/ms/micons/' + thisone[2] + '.png';
  var html = thisone[3];
  createmarker(myLatLng, imagefile, html);
  bounds.extend(myLatLng);
 }

 if( !initzoom ) {
  var sw = bounds.getSouthWest();
  var ne = bounds.getNorthEast();
  var buffer = 0.005;
  bounds.extend( new google.maps.LatLng( sw.lat() - buffer, sw.lng() - buffer ) );
  bounds.extend( new google.maps.LatLng( ne.lat() + buffer, ne.lng() + buffer ) );
  map.fitBounds(bounds);
 }
}
