var alreadyMarked = false;
				
function storeLatLong(lat,lng)
{
	document.googleForm.lat.value = lat;
	document.googleForm.long.value = lng;
}

var lat, lng, zoom;
var map, orgpoint, gDir;
var valda = 0;

function loadGMap()
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("map"));
		gDir= new GDirections(map);
		
		GEvent.addListener(gDir,"error", function()
		{
			alert("Adressen kunde inte sättas på kartan. Prova med en annan startadress, eller med bara postnumret.");
			document.getElementById("roadDescContent").innerHTML = "";
			resetMap();
		});		
		GEvent.addListener
		(
			map, "moveend", function()
			{
				setCookie("karta_latestLat", map.getCenter().lat());
				setCookie("karta_latestLng", map.getCenter().lng());
			}
		);
		GEvent.addListener
		(
			map, "zoomend", function(oldLevel,newLevel)
			{
				setCookie("karta_latestZoom", newLevel);
			}
		);

		orgpoint = new GLatLng(lat, lng);
		
		map.setCenter(orgpoint, zoom);
		map.addControl(new GSmallMapControl());
		
		makeUrval();
	}
}

function addXMLmarkers()
{
	var w,h,infotxt,marker;
	
	document.getElementById("loading").style.visibility="visible";
	
	GDownloadUrl("/xml_mapmarkers.asp?slump="+Math.random()+"&valda="+valda, function(data, responseCode)
	{
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		for (var i = 0; i < markers.length; i++)
		{
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
							parseFloat(markers[i].getAttribute("lng")));
			
			var icon = new GIcon();
			icon.image = "/static/images/ikon/"+markers[i].getAttribute("icon");
			icon.iconSize = new GSize(20,34);
			
			icon.shadow ="/static/images/ikon/skugga.png"
			icon.shadowSize = new GSize(37, 34);
			icon.iconAnchor = new GPoint(9,34);
			icon.infoWindowAnchor = new GPoint(9,10);
			
			marker = new GMarker(point,icon);
			
			infotxt = markers[i].getAttribute("infotxt");
							
			if (infotxt.length > 0)
			{
				infotxt = infotxt.replace(/\[DUBBELFNUTT\]/g, "\"");
				infotxt = infotxt.replace(/\[LEFTTAG\]/g, "<");
				infotxt = infotxt.replace(/\[RIGHTTAG\]/g, ">");
				infotxt = infotxt.replace(/\[OCH\]/g, "&");
				infotxt = infotxt.replace(/\[QUE\]/g, "?");
				infotxt = infotxt.replace(/\[SEMI\]/g, ";");
		
				marker.bindInfoWindowHtml(infotxt, {maxWidth:500});
			}
			
			map.addOverlay(marker);
		}
		document.getElementById("loading").style.visibility="hidden";
	});
}

function makeUrval()
{
	var f = document.urvalForm;
	
	if (f.livsmedel.checked)
		setCookie("kartaUrval_livsmedel", "checked");
	else
		setCookie("kartaUrval_livsmedel", "");
		
	if (f.textil.checked)
		setCookie("kartaUrval_textil", "checked");
	else
		setCookie("kartaUrval_textil", "");
		
	if (f.ovrigt.checked)
		setCookie("kartaUrval_ovrigt", "checked");
	else
		setCookie("kartaUrval_ovrigt", "");
	
	map.clearOverlays();
	addXMLmarkers();	
}

function resetMap()
{
	map.clearOverlays();
	map.setCenter(orgpoint, zoom);
}

function showMap()
{
	document.getElementById("kartknapp").style.display='none';
	document.getElementById("roadDesc").style.display='block';
	document.getElementById("map").style.display='block';
	document.getElementById("mapDisclaimer").style.display='block';	
	loadGMap();
}

function getRoadDesc()
{
	var startpoint = lat + ", " + lng;
	var endpoint = document.roadDescForm.from.value;
	if (endpoint.length > 0)
	{
		setCookie("latestRoadDescStart", endpoint);
		endpoint += ", Sweden";
		map.clearOverlays();
		gDir.loadFromWaypoints([endpoint,startpoint], {getSteps:true,locale:'sv_SE'});
		
		GEvent.addListener(gDir,"load", function()
		{
			setTimeout('customPanel(map,"map",gDir,document.getElementById("roadDescContent"))', 1);
		});
	}
}

function showWayPointDetail(x)
{
	map.showMapBlowup(new GLatLng(x));
}

// ============ custom direction panel ===============
function customPanel(map,mapname,dirn,div)
{
	var html = "";
	
	// === step detail ===
	function detail(point, num, description, dist)
	{
		var target = '"' + mapname+".showMapBlowup(new GLatLng("+point.toUrlValue(6)+"))"  +'"';
		html += '<table style="margin: 0px; padding: 0px; border-collapse: collapse;">';
		html += '  <tr style="cursor: pointer;" onclick='+target+'>';
		html += '    <td style="border-top: 1px solid rgb(205, 205, 205); margin: 0px; padding: 0.3em 3px; vertical-align: top; text-align: right;">';
		html += num;
		html += '    </td>';
		html += '    <td style="border-top: 1px solid rgb(205, 205, 205); margin: 0px; padding: 0.3em 3px; vertical-align: top; width: 100%;">';
		html +=        description;
		html += '    </td>';
		html += '    <td style="border-top: 1px solid rgb(205, 205, 205); margin: 0px; padding: 0.3em 3px 0.3em 0.5em; vertical-align: top; text-align: right;">';
		html +=        dist;
		html += '    </td>';
		html += '  </tr>';
		html += '</table>';
	}
	
	var route = dirn.getRoute(0);
	var geocode = route.getStartGeocode();
	var point = route.getStep(0).getLatLng();
	
	// === Waypoint at the start of each GRoute
	
	html = '<span class="text11">Resan är ' + route.getDistance().html + ' lång och kommer att ta ungefär ' + route.getDuration().html + '.';
	html += ' Klicka på ett av de följande stegen för att visa dess position på kartan.<br/><br/></span>';
	
	for (var j=0; j<route.getNumSteps(); j++)
	{
		var step = route.getStep(j);
		// === detail lines for each step ===
		detail(step.getLatLng(), j+1, step.getDescriptionHtml(), step.getDistance().html);
	}
	
	
	// === the final destination waypoint ===   
	var geocode = route.getEndGeocode();
	var point = route.getEndLatLng();
		
	div.innerHTML = html;
}