var map;
var defaultZoom = 13;
var baseLat;
var baseLon;
var originalLat;
var originalLng;
var markerTitle;
var bounds;

// ====== set up marker mouseover tooltip div ======
var tooltip = document.createElement("div");
tooltip.style.visibility="hidden";

function locateOnMap(){
	var address1 = document.getElementById('address1').value;
	var address2 = document.getElementById('address2').value;
	var town = document.getElementById('town').value;
	var postcode = document.getElementById('postcode').value;
	var country = "UK";
	var latitude = document.getElementById('latitude').value;
	var longitude = document.getElementById('longitude').value;
	window.open('/mapdisplay.php?latitude='+latitude+'&longitude='+longitude+'&address1='+address1+'&address2='+address2+'&town='+town+'&postcode='+postcode+'&country='+country,'mapwindow','width=550,height=280,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no');
}

function loadMap(){
	if (document.getElementById('map'))
	{
		if (GBrowserIsCompatible()) {
			markers = new Array();
			currentMarkerId = null;
			highlightMarker = null;
			highlightId = null;

			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.setCenter(new GLatLng(0,0),0);

			bounds = new GLatLngBounds();

			document.getElementById("map").appendChild(tooltip);
			for (i=0; i<officeList.length; i++)
			{
				createTownMarker(i);
			}

			if (baseLat!=0 || baseLon!=0) createLocationMarker();

			map.setZoom(map.getBoundsZoomLevel(bounds));
			map.setCenter(bounds.getCenter());

			if (map.getZoom() > defaultZoom) map.setZoom(defaultZoom);

			defaultZoom = map.getZoom();

			var center = bounds.getCenter();
			originalLat = center.lat();
			originalLng = center.lng();
		}
	}
}

function createLocationMarker(){
	var point = new GLatLng(baseLat, baseLon);
	bounds.extend(point);

	var icon = new GIcon();
	icon.image = '/images2009/icons/dot.png';
	icon.iconSize = new GSize(10, 10);
	icon.iconAnchor = new GPoint(0, 0);
	icon.infoWindowAnchor = new GPoint(0, 0);

	opts = { 
	  "icon": icon,
	  "clickable": false
	};

	var marker = new LabeledMarker(point, opts);

	map.addOverlay(marker);
}

function createTownMarker(arrayId)
{
	var point = new GLatLng(officeList[arrayId].latitude, officeList[arrayId].longitude);
	bounds.extend(point);

	var icon = new GIcon();
	icon.image = '/images2009/icons/office.gif';
	icon.iconSize = new GSize(24, 25);
	icon.iconAnchor = new GPoint(0, 0);
	icon.infoWindowAnchor = new GPoint(0, 0);

	opts = { 
	  "icon": icon,
	  "clickable": true
	};

	var marker = new LabeledMarker(point, opts);
	
	marker.tooltip = '<div class="tooltip">'+officeList[arrayId].town+'<\/div>';

	GEvent.addListener(marker, "click", function() {
		window.location=officeList[arrayId].url;
	});

	//  ======  The new marker "mouseover" and "mouseout" listeners  ======
	GEvent.addListener(marker, "mouseover", function() {
		showTooltip(marker);
	});    
	
	GEvent.addListener(marker, "mouseout", function() {
		tooltip.style.visibility="hidden"
	});        

	map.addOverlay(marker);
}

// ====== This function displays the tooltip ======
// it can be called from an icon mousover or a side_bar mouseover
function showTooltip(marker) {
	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var width = tooltip.offsetWidth/2;
	var xoffset = offset.x - point.x - width
	if (xoffset<0) xoffset = 0;
	if (offset.x - point.x + width > 500)
	{
		xoffset = 500-width;
	}
	var yoffset = - offset.y + point.y;
	if (yoffset>300) yoffset = yoffset - 50;
	else yoffset = yoffset+10;
	var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(xoffset, yoffset)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
}

function resetMap()
{
	var addHandler = false;
	map.setCenter(new GLatLng(originalLat,originalLng),defaultZoom);
}

