    
    function buildmarker(point, name, desc, style)
    {			 			 
			 var opts = new Object();			 									 
			 			 			 
			 opts.clickable = true;			 
			 opts.icon = defaultIcon;
			 opts.title = name;
			 
			 var marker = new GMarker(point, opts);
		
			 
			 		GEvent.addListener(marker, "dragend", function(overlay, point) {
							refreshValues(marker,map);	  							
						});
						
			 		GEvent.addListener(marker, "click", function() {
    				marker.openInfoWindowHtml(desc);
  				});
  				
  				GEvent.addListener(marker,"mouseover", function() {
					highlightMarker(this);
				 });        
		
				GEvent.addListener(marker,"mouseout", function() {
					blurMarker(this);
				});


			 map.addOverlay( marker );
			 marker.html = desc;			 
			 markers[escape(name.replace(/ /g,'+'))] = marker;
			 bounds.extend(point);			
    }
    
    function buildpolyline(latlngs)
    {			 
			 var polyline = new GPolyline(latlngs);			 
			 map.addOverlay( polyline );			 			 			 
			 
			 for(i=0; i<latlngs.length; i++)
			 {
			 		bounds.extend(latlngs[i]);
			 }
			 			
    }
    
		
		function loadKML()
		{
			map.clearOverlays();
			
			if(typeof kml == "undefined")
			{
				kml = "/globalkml";
			}			 
			
			bounds = new GLatLngBounds();
			
			
				exml = new EGeoXml("exml", map, kml, {createmarker:buildmarker} );
				GEvent.addListener(exml, "parsed", function() {
        			defaultCentre();
				});
			
			
			exml.parse();						
		}
		
		function defaultCentre()
		{			  
			var bounds = map.getBounds();
			map.setZoom(map.getBoundsZoomLevel(bounds));
			map.setCenter(bounds.getCenter());
			//var centre = new GLatLng(0, 0);
			//map.setCenter(centre, 2);
		}
		
		function load()		
		{
			if (GBrowserIsCompatible()) 
			{	
			
			 map = new GMap2(document.getElementById("map"));
			 
			 var centre = new GLatLng(18.25, 33.55);//, 18.25);
			 map.setCenter(centre, 2);
			 
			 map.addControl(new GSmallMapControl());
			 //map.addControl(new GHierarchicalMapTypeControl());	
			 //map.addControl(new GScaleControl(100));
			 
			 map.addMapType(G_PHYSICAL_MAP);
			 map.setMapType(G_PHYSICAL_MAP);   		 									 			 			 			 
			
			 //defaultCentre();
					
			 //marker = new GMarker(centre, {draggable: false});
			 //map.addOverlay(marker);														
			

		     loadKML();
			 
			}
			
			page_loaded = true;
		}
		
		
		
		function mapClick(marker, clickedPoint) 
		{						
			oldMarker = marker;						
		  
			point_marker = new GMarker(clickedPoint, {draggable: true});		  		  		  		  
		  
		  GEvent.addListener(point_marker, "dragend", function() {
		    var index = findMarkerIndex(point_marker);		    
			//alert(index);
		    if (index >= 0) {
		      var nLat = point_marker.getPoint().lat();
		      var nLng = point_marker.getPoint().lng();
		
		      var pLevel = point_markers[index].Level;
		
		      var modifiedPoint = {
		        Latitude: nLat,
		        Longitude: nLng,
		        Level: pLevel
		      };
		
		      polyPoints[index] = modifiedPoint;
		      
		      
		      
		      //createEncodings(false);
		      //document.getElementById('pointList').options[index] = new Option('(' + nLat + ',' + nLng + ') Level: ' + pLevel, index);
		    }
		  	});
		  	
		  point_markers.push(point_marker);
		  
		  polyPoints.push(clickedPoint)
						
			drawCoordinates();
		}
		
				  

    function refreshValues(marker,map)
    {
			var lat = marker.getPoint().y;
			var lng = marker.getPoint().x;
		
			document.getElementById("ride_latitude").value = lat;
			document.getElementById("ride_longitude").value = lng;
		
			updateZoom(map);
		
			//return lat+"<br/>"+lng;
    }

    function updateZoom(map)
    {
			document.getElementById("ride_zoom").value = map.getZoom();
    }
	
	 
	 function blurMarker(marker)
	 {
	 	clearTimeout(panning);
	 	marker.setImage(defaultIcon.image);

	 }
	 
	 function highlightMarker(marker)
	 {
	 	 	marker.setImage("http://metoceanservices.com/sites/metoceanservices.com/files/images/msilogosmall16.png");
	 }
	 
	 function centre(marker)
	 {
	 	highlightMarker(marker);
	 		 	
	 	panning = setTimeout(function() {
			marker.openInfoWindowHtml(marker.html);
			//map.panTo(marker.getPoint());			
		}, 1000);
	 }
	  	 
