// Google Maps

//<![CDATA[

var map = null;
var geocoder = null;

function load(mapNum) {
  if (GBrowserIsCompatible()) {
	  mapString = "map" + mapNum;
	  if(document.getElementById(mapString).style.width == "580px"){
			document.getElementById(mapString).style.width="0px";
			document.getElementById(mapString).style.height="0px";
			document.getElementById(mapString).style.visibility="hidden";
	  }else {
		document.getElementById(mapString).style.visibility="visible";
		document.getElementById(mapString).style.width="580px";
		document.getElementById(mapString).style.height="300px";
		document.getElementById(mapString).style.border="solid 1px #000000";
		document.getElementById(mapString).style.margin="12px 0 12px 0";
		map = new GMap2(document.getElementById(mapString));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		geocoder = new GClientGeocoder();
	  }	
	
  }
}

function showAddress(address) {     
  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) {
		if (!point) {
		  alert(address + " not found");
		} else {
		  map.setCenter(point, 13);
		  var marker = new GMarker(point);
		  map.addOverlay(marker);
		  marker.openInfoWindowHtml(address);
		}
	  }
	);
  }
  
}


function showAddressByCoordinates(address, lat, lon) {
  
  
  point = new GLatLng(lat,lon);
  map.setCenter(point, 13);
  var marker = new GMarker(point);
  map.addOverlay(marker);
  marker.openInfoWindowHtml(address);
		    
}
function showMapOfTheatreAndRestaurant(theatreLat, theatreLng, exhibitorLogoURL, theatreName, theatreAddress,
										restaurantLat, restaurantLng, restaurantName, restaurantAddress) {
    var bounds = new GLatLngBounds();
    var theatrePoint = new GLatLng(theatreLat, theatreLng);
    var restaurantPoint = new GLatLng(restaurantLat, restaurantLng);
    bounds.extend(theatrePoint);
    bounds.extend(restaurantPoint);
    map.setCenter(bounds.getCenter());
    map.setZoom(map.getBoundsZoomLevel(bounds));

    var latMin = bounds.getSouthWest().lat();
    var lngMin = bounds.getSouthWest().lng();
    var latMax = bounds.getNorthEast().lat();
    var lngMax = bounds.getNorthEast().lng();

    // See if markers are too close to the top or left or right
    var latSpan = map.getBounds().getNorthEast().lat() - map.getBounds().getSouthWest().lat();
    var fractionalDistanceFromTop = (map.getBounds().getNorthEast().lat() - bounds.getNorthEast().lat()) / latSpan;

    var lngSpan = map.getBounds().getNorthEast().lng() - map.getBounds().getSouthWest().lng();
    var fractionalDistanceFromLeft = (map.getBounds().getSouthWest().lng() - bounds.getSouthWest().lng()) / lngSpan;
    var fractionalDistanceFromRight = (map.getBounds().getNorthEast().lng() - bounds.getNorthEast().lng()) / lngSpan;

    //	document.getElementById("mapInfo").innerHTML =
    document.getElementById("mapInfo").innerHTML
		+ "xxxxx" + "</br>";

    //	document.getElementById("mapInfo").innerHTML =
    document.getElementById("mapInfo").innerHTML
		+ "latMin: " + latMin + "<br>"
		+ "lngMin: " + lngMin + "<br>"
		+ "latMax: " + latMax + "<br>"
		+ "lngMax: " + lngMax + "<br>"
		+ "bounds extremes: " +
			"SouthWest: " + bounds.getSouthWest().lat() + " " + bounds.getSouthWest().lng() + "<br>"
		+ "bounds extremes: " +
			"NorthEast: " + bounds.getNorthEast().lat() + " " + bounds.getNorthEast().lng() + "<br>"
		+ "theatre extremes: " +
			"SouthWest: " + latMin + " " + lngMin + "<br>"
		+ "theatre extremes: " +
			"NorthEast: " + latMax + " " + lngMax + "<br>"
		+ "map extremes: " +
			"SouthWest: " + map.getBounds().getSouthWest().lat() + " " + map.getBounds().getSouthWest().lng() + "<br>"
		+ "map extremes: " +
			"NorthEast: " + map.getBounds().getNorthEast().lat() + " " + map.getBounds().getNorthEast().lng() + "<br>"
		+ "latSpan: " + latSpan + "<br>"
		+ "lngSpan: " + lngSpan + "<br>"
		+ "fractionalDistanceFromTop: " + fractionalDistanceFromTop + "<br>"
		+ "fractionalDistanceFromLeft: " + fractionalDistanceFromLeft + "<br>"
		+ "fractionalDistanceFromRight: " + fractionalDistanceFromRight + "<br>"
		+ "centre from bounds.getCenter: lat: " + bounds.getCenter().lat() + " lng : " + bounds.getCenter().lng() + "<br>"
		+ "zoom level from map.getBoundsZoomLevel(bounds): " + map.getBoundsZoomLevel(bounds) + "</br>"
		;

    //	document.getElementById("mapInfo").innerHTML =
    document.getElementById("mapInfo").innerHTML
		+ "xxxxx" + "</br>";

    var minFractionalLatDistance = 0.15
    var minFractionalLngDistance = 0.10

    if (fractionalDistanceFromTop < minFractionalLatDistance) {
        latMax = latMax + latSpan * (minFractionalLatDistance - fractionalDistanceFromTop)
    }

    if (fractionalDistanceFromLeft > minFractionalLngDistance || fractionalDistanceFromRight < minFractionalLngDistance) {
        lngMin = lngMin - lngSpan * (minFractionalLngDistance)
        lngMax = lngMax + lngSpan * (minFractionalLngDistance)
    }

    point = new GLatLng(latMin, lngMin);
    bounds.extend(point);
    point = new GLatLng(latMax, lngMax);
    bounds.extend(point);

    map.setCenter(bounds.getCenter());
    map.setZoom(map.getBoundsZoomLevel(bounds));

    //	document.getElementById("mapInfo").innerHTML =
    document.getElementById("mapInfo").innerHTML
		+ "latMin: " + latMin + "<br>"
		+ "lngMin: " + lngMin + "<br>"
		+ "latMax: " + latMax + "<br>"
		+ "lngMax: " + lngMax + "<br>"
		+ "bounds extremes: " +
			"SouthWest: " + bounds.getSouthWest().lat() + " " + bounds.getSouthWest().lng() + "<br>"
		+ "bounds extremes: " +
			"NorthEast: " + bounds.getNorthEast().lat() + " " + bounds.getNorthEast().lng() + "<br>"
		+ "theatre extremes: " +
			"SouthWest: " + latMin + " " + lngMin + "<br>"
		+ "theatre extremes: " +
			"NorthEast: " + latMax + " " + lngMax + "<br>"
		+ "map extremes: " +
			"SouthWest: " + map.getBounds().getSouthWest().lat() + " " + map.getBounds().getSouthWest().lng() + "<br>"
		+ "map extremes: " +
			"NorthEast: " + map.getBounds().getNorthEast().lat() + " " + map.getBounds().getNorthEast().lng() + "<br>"
		+ "latSpan: " + latSpan + "<br>"
		+ "lngSpan: " + lngSpan + "<br>"
		+ "fractionalDistanceFromTop: " + fractionalDistanceFromTop + "<br>"
		+ "fractionalDistanceFromLeft: " + fractionalDistanceFromLeft + "<br>"
		+ "fractionalDistanceFromRight: " + fractionalDistanceFromRight + "<br>"
		+ "centre from bounds.getCenter: lat: " + bounds.getCenter().lat() + " lng : " + bounds.getCenter().lng() + "<br>"
		+ "zoom level from map.getBoundsZoomLevel(bounds): " + map.getBoundsZoomLevel(bounds) + "</br>"
		;

    //	document.getElementById("mapInfo").innerHTML =
    document.getElementById("mapInfo").innerHTML
		+ "xxxxx" + "</br>";

    // Restaurant marker
    // Create a base icon our marker that specifies the
    // shadow, icon dimensions, etc.
    var baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
    var icon = new GIcon(baseIcon);
    icon.image = "http://www.google.com/mapfiles/markerR.png";
    markerOptions = { icon: icon };
    var restaurantMarker = new GMarker(restaurantPoint, markerOptions);
    GEvent.addListener(restaurantMarker, "click", function() {
        restaurantMarker.openInfoWindowHtml("<br>" + "<b>" + restaurantName + "</b><br/>" + restaurantAddress + "<br/>");
    });
    map.addOverlay(restaurantMarker);

    // Theatre marker
    // Create a base icon our marker that specifies the
    // shadow, icon dimensions, etc.
    var baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
    var icon = new GIcon(baseIcon);
    icon.image = "http://www.google.com/mapfiles/ms/icons/green-dot.png";
    markerOptions = { icon: icon };
    var theatreMarker = new GMarker(theatrePoint, markerOptions);
    GEvent.addListener(theatreMarker, "click", function() {
        if (exhibitorLogoURL != "") {
            theatreMarker.openInfoWindowHtml("<img src=\"" + exhibitorLogoURL + "\"/>" + "<br>" + "<b>" + theatreName + "</b><br/>" + theatreAddress + "<br/>");
        }
        else {
            theatreMarker.openInfoWindowHtml("<br>" + "<b>" + theatreName + "</b><br/>" + theatreAddress + "<br/>");
        }
    });
    map.addOverlay(theatreMarker);

}


//]]>


