function showMap(direction, latitude, longitude, bubbleinfo) {
  var mapElem = document.getElementById("map");
  var address = direction;
  var info = bubbleinfo;
  
  var depicoolIcon = new GIcon();
  depicoolIcon.image = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";  
  depicoolIcon.iconSize = new GSize(25,37);
  depicoolIcon.shadowSize = new GSize(25,37);
  depicoolIcon.iconAnchor = new GPoint(5,37);
  depicoolIcon.infoWindowAnchor = new GPoint(20, 5);
  depicoolIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
  depicoolIcon.printImage = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";
  depicoolIcon.mozPrintImage = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";
  

  if (!GBrowserIsCompatible()) {
    mapElem.style.display= "none";
    return;
  }
  try {
    geocoder = new GClientGeocoder();
    geocoder.getLatLng(
      address,
      function(point) {
        if (latitude != "" && longitude != "") {
          mapElem.style.display = "block";
          mapElem.style.width = "100%";
          mapElem.style.height = "350px";
          var map = new GMap2(mapElem);
          var coords = new GLatLng(latitude, longitude);
          map.setCenter(coords, 15);
          var marker = new GMarker(coords,depicoolIcon);
          map.addOverlay(marker);
          map.addControl(new GLargeMapControl());
          marker.openInfoWindowHtml(info);
        }
        else if (point) {       
          mapElem.style.display = "block";
          mapElem.style.width = "100%";
          mapElem.style.height = "350px";
          var map = new GMap2(mapElem);
          map.addControl(new GSmallMapControl());
          map.setCenter(point, 15);
          var marker = new GMarker(point,depicoolIcon);
          map.addOverlay(marker);
          marker.openInfoWindowHtml(info);  		
          GEvent.addListener(marker, "click", function() {
        		  marker.openInfoWindowHtml(info);
        		});
        }
        else {
          mapElem.style.display = "none";
        }
      }
    );
  }
  catch(err) {
    mapElem.style.display = "none";
  }
}

function showMultiMap(direction, latitude, longitude, bubbleinfo) {
  
  var depicoolIcon = new GIcon();
  depicoolIcon.image = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";  
  depicoolIcon.iconSize = new GSize(25,37);
  depicoolIcon.shadowSize = new GSize(25,37);
  depicoolIcon.iconAnchor = new GPoint(5,37);
  depicoolIcon.infoWindowAnchor = new GPoint(20, 5);
  depicoolIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
  depicoolIcon.printImage = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";
  depicoolIcon.mozPrintImage = "http://www.depicool.co.uk/extension/ezwebin/design/ezwebin/images/depicool-pointer.gif";

  if (GBrowserIsCompatible()) {
    function createMarker(point,html) {
      var marker = new GMarker(point,depicoolIcon);
      var info = htmlinfoArray[addressesReturned];
      bounds.extend(point);
  		if (addressesRequested==addressesReturned) {
  		  map.setCenter(bounds.getCenter());
  		  map.setZoom(map.getBoundsZoomLevel(bounds));
  		}
  		GEvent.addListener(marker, "click", function() {
  		  marker.openInfoWindowHtml(info);
  		});

  		return marker;
    }

 	  // Creo GeoCoder Max 1.6 query/sec
  	geocoder = new GClientGeocoder();

  	// Display the map, with some controls and set the initial location 
    var mapElem = document.getElementById("map");
    var setLat=0;
    var setLon=0;
    mapElem.style.display = "block";
    mapElem.style.width = "100%";
    mapElem.style.height = "350px";
  	var map = new GMap2(mapElem);
  	map.addControl(new GSmallMapControl());

  	var bounds = new GLatLngBounds();
  	var addressesRequested=0; // counter for number of addresses requested
  	var addressesReturned=0;  // counter for number of geocode results returned (could include non-found results)
    var htmlinfoArray = new Array();
  	  
 	  function showAddress(address){
 	    addressesRequested++; // we've requested another address
 	    geocoder.getLatLng(address,function(point){
 	      addressesReturned++; // a result has been returned
 	      if (!point){mapElem.style.display = "none";}
 	      else {map.addOverlay(createMarker(point, address));}
 	    });
 	  }

    // iterate through arguments for placing the marker
    var ia = 1;
    for (var i = 0; i < showMultiMap.arguments.length; i+=4) {
      var pointaddress = showMultiMap.arguments[i];
      htmlinfoArray[ia] = showMultiMap.arguments[i+3];
 	    showAddress(pointaddress);
      ia+=1;
    }  
	  
  } else {
    mapElem.style.display= "none";
    return;
  }
}
