//Declare global variables
var geocoder = null;
var router = null;
var routePoints = [];
var routeID = null;

function goMap24() {
	Map24.loadApi( ["core_api", "wrapper_api"] , map24ApiLoaded );
}

function map24ApiLoaded() {
	Map24.MapApplication.init( { NodeName: "maparea" } );
}

function startRouting() {

	var start = document.getElementById("start").value;
	var destination = document.getElementById("destination").value;

	document.getElementById("button_calculate_route").disabled = true;

	var geocoder = new Map24.GeocoderServiceStub();

	geocoder.geocode({
		SearchText: start,
		CallbackFunction: setRouteEndPoint,
		CallbackParameters: {position: "start"}
	});

	geocoder.geocode({
		SearchText: destination,
		CallbackFunction: setRouteEndPoint,
		CallbackParameters: {position: "destination"}
	});
}

function setRouteEndPoint(locations, params){
	routePoints[ params.position ] = locations[0];
	if( typeof routePoints["start"] != "undefined" && typeof routePoints["destination"] != "undefined")
	calculateRoute();
}

function calculateRoute() {
	router = new Map24.RoutingServiceStub();
	router.calculateRoute({
		Start: routePoints["start"],
		Destination: routePoints["destination"],
		DescriptionLanguage: 'de',
		CallbackFunction: displayRoute,
		ShowRoute: false
	});
	document.getElementById("print").disabled = true;
	routePoints = [];
}

function displayRoute( route ){
	routeID = route.RouteID;
	router.showRoute( {
		RouteId: routeID,
		Color: ['#00F', 150]
	});

	var d = new Date(0); d.setSeconds(route.TotalTime);

	if ( (d.getHours()-1) == 0 ) {
		var fahrtzeit = "Fahrtzeit: " + d.getMinutes() + " Minuten<br>"
	} else {
		var fahrtzeit = "Fahrtzeit: " + (d.getHours()-1) + " Stunde(n) " + d.getMinutes() + " Minuten<br>"
	}

	var totalTime = (d.getHours()-1) + ':' + d.getMinutes() + ':' + d.getSeconds()

	var totalLength = (route.TotalLength/1000).toFixed(2)

	var div_content = "<h2>Ihre Route</h2>" ;
	div_content += fahrtzeit
	div_content += "STunde: " + (d.getHours()-1) + " Minuten<br>"
	div_content += "Fahrtzeit: " + d + " Minuten<br>"
	div_content += "Wegstrecke: "+ totalLength +" km<br><br>"

	div_content += "<h2>Wegbeschreibung</h2>";
	div_content += "<ol style='margin: 0; padding: 0; padding-left: 25px;'>";

	for(var i = 0; i < route.Segments.length; i++){
		for(var j = 0; j < route.Segments[i].Descriptions.length; j++){
			div_content += "<li style='list-style-image: none; list-style-type: decimal;'> " + route.Segments[i].Descriptions[j].Text.replace(/(\[|\[\/)[0-9A-Z_]+\]/g, '' ) + "<br>";
		}
	}
	div_content += "</ol>";

	var printme = div_content;
	document.getElementById('routeDescription').innerHTML = div_content;
	document.getElementById("button_hide_route").disabled = false;
	document.getElementById("button_remove_route").disabled = false;
	document.getElementById("print").disabled = false;
}

function showRoute(routeID) {
	router.showRoute({RouteId: routeID});
	document.getElementById("button_show_route").disabled = true;
	document.getElementById("button_hide_route").disabled = false;
	document.getElementById("button_remove_route").disabled = false;
}

function hideRoute(routeID) {
	router.hideRoute({RouteId: routeID});
	document.getElementById("button_show_route").disabled = false;
	document.getElementById("button_hide_route").disabled = true;
	document.getElementById("button_remove_route").disabled = true;
}

function removeRoute(routeID) {
	router.removeRoute({RouteId: routeID});
	document.getElementById("routeDescription").innerHTML = "";
	document.getElementById("button_calculate_route").disabled = false;
	document.getElementById("button_show_route").disabled = true;
	document.getElementById("button_hide_route").disabled = true;
	document.getElementById("button_remove_route").disabled = true;
	document.getElementById("print").disabled = true;
}

function printRouteDescription() {
	var printContent = document.getElementById("routeDescription");
	var windowPrint = window.open('', '' , 'left=0, top=0, width=0, height=0, toolbar=0, scrollbars=0, status=0');
	windowPrint.document.write(printContent.innerHTML);
	windowPrint.document.close();
	windowPrint.focus();
	windowPrint.print();
	windowPrint.close();
}


