var map = null;
marker = null;
var gmarkers = [];
var htmls = [];
var mi = 0;
var tooltip;

function showMap()
{
	if (GBrowserIsCompatible()) {
		map = new GMap2($('map'), {mapTypes:[G_SATELLITE_MAP]});
		map.addControl(new GSmallMapControl());
		// map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		
	//	map.addControl(new GControlAnchor());
		map.enableScrollWheelZoom();
		/*
		map.setCenter(new GLatLng(53.544387634735024, 9.96185302734375), 5);
		var point_0 = new GLatLng(53.544387634735024, 9.96185302734375);
		map.addOverlay(createMarker(point_0, 0, ""));
		var point_1 = new GLatLng(51.50056837235556, -0.12625694274902344);
		map.addOverlay(createMarker(point_1, 0, ""));
		*/
		// ====== set up marker mouseover tooltip div ======
      	tooltip = document.createElement("div");
      	map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
      	tooltip.style.visibility="hidden";
	}
	
}

function placeMap(lat,lng,zoom)
{
	map.setCenter(new GLatLng(lat,lng), zoom);
	map.savePosition();
	// map.returnToSavedPosition();
}
function showSelector()
{
	if (GBrowserIsCompatible()) {
		var lmnt = $('map');
		/*
		lmnt.style.margin = "20px 0";
		lmnt.style.width = "700px";
		lmnt.style.height = "400px";
		*/
		
		map = new GMap2(lmnt);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(52.50598600000000,13.37489000000000), 6);

		var point = new GLatLng(52.50598600000000, 13.37489000000000);
		map.addOverlay(createMarkerDragable(point, 1));
		// drag drop marker
		GEvent.addListener(marker, "dragend", function()
		{
			var p = marker.getPoint();
			$("LocationLo").value = p.lng();
			$("LocationLa").value = p.lat();
		});
		// click result
		GEvent.addListener(map, "click", function(o, p)
		{
			var p = (o) ? o.getPoint() : p;
			marker.setPoint(p);
			$("LocationLo").value = p.lng();
			$("LocationLa").value = p.lat();
		});
		
		// get address
		var address = "Hamburg, Germany";

		// create a local search control and add it to your map
		var lsc = new google.maps.LocalSearch(); 
		var options = {
		      searchFormHint : address
		      };
		map.addControl(new google.maps.LocalSearch(options));
	}
	
	return false;
	
}
function showRegion()
{
	if (GBrowserIsCompatible()) {
		var lmnt = $('map');
		
		map = new GMap2(lmnt);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(52.50598600000000,13.37489000000000), 6);
		
		GEvent.addListener(map, "dragend", function()
		{
			var c = map.getCenter();
			var z = map.getZoom();
			
			$("LocationLo").value = c.lng();
			$("LocationLa").value = c.lat();
			$("LocationZoom").value = z;
		});
		
	}
	
	return false;
	
}
function clearOverlay()
{
	delete(gmarkers);
	gmarkers = [];
	delete(htmls);
	htmls = [];
	mi = 0;
	
	map.clearOverlays();
}
function createMarker(point, number, content, title, image)
{
	var harbourPng = (image == undefined) ? 'rf_anker.png' : image;
	// Create our "tiny" marker icon
	var harbourIcon = new GIcon();
	harbourIcon.image = "http://www.kreuzfahrtguide.com/routefinder/img/" + harbourPng;
	// harbourIcon.shadow = "http://www.hopeglory.com/clients/kreuzfahrt/img/harbour_shadow.png";
	harbourIcon.iconSize = new GSize(23, 24);
	// harbourIcon.shadowSize = new GSize(14, 14);
	harbourIcon.iconAnchor = new GPoint(12, 12);
	harbourIcon.infoWindowAnchor = new GPoint(5, 1);


	var marker = new GMarker(point, {icon:harbourIcon});//, title:tooltip
	marker.tooltip = '<div class="tooltip"><nobr>'+title+'</nobr></div>';    

	GEvent.addListener(marker, "click", function() 
	{
		marker.openInfoWindowHtml(content);
		// content, new GSize(0, -10)
	});

    GEvent.addListener(marker,"mouseover", function()
	{
      	showTooltip(marker);
    });        
    GEvent.addListener(marker,"mouseout", function()
	{
		tooltip.style.visibility="hidden";
    });
	
    gmarkers[mi] = marker;
    htmls[mi] = content;
    mi++;


	return marker;
}

function showTooltip(marker)
{
	if(marker != undefined) {
		tooltip.innerHTML = marker.tooltip;
		var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
		var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
		var anchor=marker.getIcon().iconAnchor;
		var width=marker.getIcon().iconSize.width;
		var height=tooltip.clientHeight;
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
		pos.apply(tooltip);
		tooltip.style.visibility="visible";
	}
}

function listMouseOver(i)
{
	showTooltip(gmarkers[i]);
}
 
function listMouseOut()
{
	tooltip.style.visibility="hidden";
}

function createMarkerDragable(point, number)
{
	// Create our "tiny" marker icon
	var icon = new GIcon();
	icon.image = "http://beta.pictonia.de/img/favicon.png";
	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.iconSize = new GSize(16, 16);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);
	icon.draggable = true;

	marker = new GMarker(point, {draggable:true});//icon
	/*
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("Marker #<b>" + number + "</b>");
	});
	*/
	return marker;
}

