//<![CDATA[

map = new GMap2(document.getElementById("googlemap"),{
  draggableCursor: 'crosshair',draggingCursor: 'pointer'
});

map.setCenter(new GLatLng(42.46934289608532, 140.85613667964935), 15);
map.addControl(new GLargeMapControl());
map.enableContinuousZoom();
new GKeyboardHandler(map);
GEvent.addListener(map,"mousemove",move);
window.onload = function() {
GEvent.addListener(map, "click", function(marker, latlng){
marker ? map.removeOverlay(marker) : map.addOverlay(new GMarker(latlng));
geocoder = new GClientGeocoder();
	} );
}

var geocoder = null;

function showAddress(address) {
	if (geocoder) {
		geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					alert(address + " Not Found");
				} else {
					map.setCenter(point, 15);
					var marker = new GMarker(point);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(address);
				}
			}
		);
	}
}

var line_color = "#64139f";

function shortForm10000(x) {
	return Math.floor(x*10000)/10000;
}

function shortForm1000(x) {
	return Math.floor(x*1000)/1000;
}

function shortForm100(x) {
	return Math.floor(x*100)/100;
}

function shortForm10(x) {
	return Math.floor(x*10)/10;
}

function move(latlng) {
	var p = document.getElementById("postext");
	innerHTML = "" + shortForm10000(latlng.lat()) + " , " + shortForm10000(latlng.lng()) ;
}

var plottedPoints = [];
var distance_passed = 0;
var distance_diredt = 0;
var routeLine = null;

GEvent.addListener(map, "click", function(overlay, plottedPoint) {
	plottedPoints.push(plottedPoint);
	map.clearOverlays();
	routeLine = new GPolyline(plottedPoints,line_color,4,0.5, {geodesic:true});
	map.addOverlay(routeLine);
		if (plottedPoints.length >= 2) {
			distance_passed += plottedPoints[plottedPoints.length-2].distanceFrom(plottedPoints[plottedPoints.length-1]) /1000;
		}
		else{
			distance_passed = 0;
		}
	distance_direct = plottedPoints[0].distanceFrom(plottedPoints[plottedPoints.length-1]) /1000;
	document.getElementById("all_sect").innerHTML = shortForm1000(distance_passed) + " km";
	document.getElementById("direct").innerHTML = shortForm1000(distance_direct) + " km";
});

function undoPrev(){
	if (plottedPoints.length >= 2) {
		distance_passed -= plottedPoints[plottedPoints.length-2].distanceFrom(plottedPoints[plottedPoints.length-1]) /1000;
	}
	else {
		distance_passed = 0;
	}
	plottedPoints.pop();
	distance_direct = plottedPoints[0].distanceFrom(plottedPoints[plottedPoints.length-1]) /1000;
	if (plottedPoints.length >= 2){
		detour = distance_passed / distance_direct * 100;
	}
	else {
		detour = 100;
	}
	map.clearOverlays();
	routeLine = new GPolyline(plottedPoints,line_color,4,0.5, {geodesic:true});
	map.addOverlay(routeLine);
	document.getElementById("all_sect").innerHTML = shortForm100(distance_passed) + " km";
	document.getElementById("direct").innerHTML = shortForm100(distance_direct) + " km";
}

function clearResults(){
	plottedPoints = new Array();
	routeLine = null;
	map.clearOverlays();
	distance_passed = 0;
	distance_direct = 0;
	detour = "-";
	document.getElementById("all_sect").innerHTML = "0 km";
	document.getElementById("direct").innerHTML = "0 km";
}

//]]>
