﻿		var objMap;
		var iconDir;
		var iconTrail;
		var iconPOI;
		var aryMarkers = [];
		var objBounds = null;
		var objDiv;
		var objCenter;
		var intMapZoom;
		var objOpenBubble;
		var strMaxHTML;
		var blnOpenBubble = false;
		var objBubble;
		var objStem;
		var blnMaxBubble = false;
		var strIMG = "/images/googlemaps/";
		var strDIR = "/images/googlemaps/lightbluenumbered/";
		var strPOI = "/images/googlemaps/poi/";
		var objBubbleMarker;
		var strBubbleHTML;

		var strStart = '<table border="0" cellpadding="0" cellspacing="0">';
		
		var strMaxStart = '<table width="676" border="0" cellpadding="0" cellspacing="0">';
		
		var strCloseButton = '<a href="javascript:void(0)" onclick="HideBubble();">' +
			'<img src="close.gif" width="12" height="12" alt="Close window" title="Close window"></a>';

		var strCloseMaxButton = '<a href="javascript:void(0)" onclick="MinBubble();">' +
			'<img src="close.gif" width="12" height="12" alt="Close window" title="Close window"></a>';
		
		var strMaxButton = '<a href="javascript:void(0)" onclick="MaxBubble();">' +
			'<img src="plus.gif" width="12" height="12" alt="More information" title="More information"></a>';
			
		var strMoreInfo = '<a href="javascript:void(0)" onclick="MaxBubble();">More&nbsp;information</a>';
		
		// var strCloseMax = '<a href="javascript:void(0)" onclick="HideBubble();">Return to map</a>';
		var strCloseMax = '<a href="javascript:void(0)" onclick="MinBubble();">Return to map</a>';

		objBubble = document.getElementById("bubble");
		objStem = document.getElementById("stem");
        objMap = document.getElementById("map");
		function HideBubble() {
			blnOpenBubble = false;
			objOpenBubble = null;
			blnMaxBubble = false;
			with (objBubble) {
				style.visibility = "hidden";
				style.width = "";
				style.height = "";
			}
			objStem.style.visibility = "hidden";
		}		
		

		
		function MinBubble() {
			HideBubble();
			ShowBubble(objBubbleMarker, strBubbleHTML, false);
		}
		
		
		function MoveBubble() {
			if ((blnOpenBubble) && (! blnMaxBubble)) {
				ShowBubble(objOpenBubble,"", true);
			}
		}
		
		function ShowBubble(objBMarker, strBHTML, blnMove) {
			var objMPoint = objBMarker.getPoint();
    objBubble = document.getElementById("bubble");
    objStem = document.getElementById("stem");
    objMap = map;
    objDiv = document.getElementById("map");
			if (! blnMove) {
				objBubble.innerHTML = strBHTML;
			}

			var objPixel = objMap.fromLatLngToDivPixel(objMPoint);
		
			// map world relative to map container
			var dragObject = objMap.getPane(G_MAP_MAP_PANE).parentNode;
			var x = objPixel.x + parseInt(dragObject.style.left);
			var y = objPixel.y + parseInt(dragObject.style.top);
			
							

			// map container relative to the page
			x += objMap.getContainer().offsetLeft;
			y += objMap.getContainer().offsetTop;

			var vx = objBMarker.getIcon().iconAnchor.x - objBMarker.getIcon().infoWindowAnchor.x;
			var vy = objBMarker.getIcon().iconAnchor.y - objBMarker.getIcon().infoWindowAnchor.y;
			var offset = new GPoint(vx,vy)

			y -= offset.y;
			x -= offset.x;

			x = parseInt(x);
			y = parseInt(y);

			var h = objBubble.offsetHeight;
			var w = objBubble.offsetWidth;

			if (! blnMove) {
				objBubble.style.left = x + "px";
				objBubble.style.top = ((y - h) - 23) + "px";

				objStem.style.left = x + "px";
				objStem.style.top = (y - 24) + "px";

				objBubble.style.visibility = "visible";
				objStem.style.visibility = "visible";
				blnOpenBubble = true;
				objOpenBubble = objBMarker;
				
			} else {
			
				if ((y < objDiv.offsetTop) || (x < objDiv.offsetLeft) || (y > (objDiv.offsetTop + objDiv.offsetHeight)) || 
				(x > (objDiv.offsetLeft + objDiv.offsetWidth))) {



					objBubble.style.visibility = "hidden";
					objStem.style.visibility = "hidden";
					
				} else {
				
					objBubble.style.left = x + "px";
					objBubble.style.top = ((y - h) - 23) + "px";

					objStem.style.left = x + "px";
					objStem.style.top = (y - 24) + "px";

					objBubble.style.visibility = "visible";
					objStem.style.visibility = "visible";
				}
			}
		}


		
		
		function RemoveOverlays() {
			document.getElementById("infodiv").innerHTML = "";
			objMap.clearOverlays();
		}
		
		
		
		// A function to hide the loading message
		function hideLoad() {
			intMoveCount = 0;
			var loaddiv = document.getElementById("loaddiv");
			if (loaddiv === null) {
				return;
			}
			//div found
			loaddiv.style.visibility="hidden";
			return;
		}

		// A function to show the loading message
		function showLoad(divmsg) {
			var loaddiv = document.getElementById("loaddiv");
			if (loaddiv === null) {
				return;
			}
			//div found
			loaddiv.innerHTML = divmsg + '<br /><br /><img src="loader.gif" width="110" height="12" border="0">';
			loaddiv.style.visibility="visible";
			return;
		}

		if (document.namespaces) { // only exists in IE, only needed in IE
			document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
		}

		function UnloadGoogleMaps() {
			objMap = null;
			iconDir = null;
			iconTrail = null;
			iconPOI = null;
			aryMarkers = null;
			objBounds = null;
			objDiv = null;
			objCenter = null;
			objOpenBubble = null;
			objBubble = null;
			objStem = null;
			GUnload();
		}

		//window.onload = LoadGoogleMaps;
		window.onunload = UnloadGoogleMaps;
		
		
		
		
		function LoadPortsMap()
            {
                map = new GMap2(document.getElementById("map"));
                map.addControl(new GLargeMapControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(40.818246, -1.079149), 1);
                map.getPane(G_MAP_FLOAT_SHADOW_PANE).style.visibility = "hidden";  
                
                                			GEvent.addListener(map, "move", function() {
				MoveBubble();
			});
                
                		
                GEvent.addListener(map, "click", function(marker, point){
	                if (! marker) {
		                HideBubble();
	                }
                });        
            }
       
       
       
       
       
    function findAddress(address)
    {

            geocoder.reset();
            geocoder.getLocations(address, GeoCodeResult);
            
            
            
    }
    
    function geoAddressSet(i)
    {
    
        var place = addresses.Placemark[i];
        var point = new GLatLng(place.Point.coordinates[1],  place.Point.coordinates[0]);
                         
        map.setCenter(point,7);    
    
        var mapList = document.getElementById("divAddressSelector");
        mapList.className = 'mapAddressSelectorHide';
    }
    
    
    function GeoCodeResult(response)
    {
    
        if (!response || response.Status.code != 200) {
            alert('No matching address was found');
            return;
        }
       
        addresses = response;
        
        if (response.Placemark.length > 1)
        {
        
            var mapList = document.getElementById("divAddressSelector");
            var html = "<table><tr><td align=\"right\">";
            html += "<a href=\"javascript:GeoCodeResultHide()\"><img src=\"../images/maps/BubbleClose.gif\"/><a>";
            html += "</td><tr><td>"
            html += "More than one matching address found.<br/>Please select from the list below:<br/><br/>";
            
            for(i=0;i<response.Placemark.length; i++)
            {
                var place = response.Placemark[i];
                var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
                            
                html += "<a href='javascript:geoAddressSet(" + i + ");'>" + place.address + "</a><br>";
                
                
           }
            
            html += "</td></tr>"
            mapList.innerHTML = html;
            mapList.className = 'mapAddressSelector';
        }
        else
        {
        
            var place = response.Placemark[0];
            var point = new GLatLng(place.Point.coordinates[1],  place.Point.coordinates[0]);
                            
            map.setCenter(point,9);             
        }
    
    }
    

    function GeoCodeResultHide()
    {

        var mapList = document.getElementById("divAddressSelector");
        mapList.className = 'mapAddressSelectorHide';
    }