//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() {

	if ( document.getElementById("start").value == "" ) {
		alert("Tragen Sie bitte Ihre Adresse ein. \n\nz.B.: Gütersloh, Berliner Str. 8\n ");
		document.getElementById("start").focus();
		return false;
	} else {
  		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 totalTime = ((route.TotalTime)/(60) ).toFixed(2)

	var totalLength = (route.TotalLength/1000)

	var div_content = "<h2>Ihre Route</h2>" ;
	div_content += "Fahrtzeit: " + totalTime + " 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();
}

