	// *****************************************************
	// *****************************************************
	function setItineraryOptions() {
		var vehicleType = document.forms["GetRouteForm"].GetRoute_vehicleType;
		if ((vehicleType.value == "2") || (vehicleType.value == "3")) {
			unDisplayDocElement("TR_ItiType");
			unDisplayDocElement("TR_ItiPreferences");
			unDisplayDocElement("TR_ItiConsumption1");
			unDisplayDocElement("TR_ItiConsumption2");
			unDisplayDocElement("TR_tollCategory");
		} else {
			displayDocElement("TR_ItiType");
			displayDocElement("TR_ItiPreferences");
			displayDocElement("TR_ItiConsumption1");
			displayDocElement("TR_ItiConsumption2");
			displayDocElement("TR_tollCategory");
		}
	};
	
	// *****************************************************
	// function which calculates route
	// *****************************************************	
	function getRoute(f) {
		var itiDate = f.elements["GetRoute_itiDate"].value;
		var vehicleType = f.elements["GetRoute_vehicleType"].value;
		var itiType = f.elements["GetRoute_itiType"].value;
		var favourMotorways = f.elements["GetRoute_favourMotorways"].checked;
		var avoidCrossingBorders = f.elements["GetRoute_avoidCrossingBorders"].checked;
		var avoidTolls = f.elements["GetRoute_avoidTolls"].checked;
		var avoidRoadTaxAreas = f.elements["GetRoute_avoidRoadTaxAreas"].checked;
		var avoidOffroadConnections = f.elements["GetRoute_avoidOffroadConnections"].checked;
		var avoidMountainPass = f.elements["GetRoute_avoidMountainPass"].checked;	
		var itiPref = new ItineraryPreferences(favourMotorways, avoidCrossingBorders, avoidTolls, avoidRoadTaxAreas, avoidOffroadConnections, avoidMountainPass);
		
		var fuelCost = new Cost(f.elements["GetRoute_fuelPrice"].value, f.elements["GetRoute_fuelCurr"].value);
		var fuelConsumption = new Array();
		fuelConsumption[fuelConsumption.length] = f.elements["GetRoute_urbanConsumption"].value;
		fuelConsumption[fuelConsumption.length] = f.elements["GetRoute_roadConsumption"].value;
		fuelConsumption[fuelConsumption.length] = f.elements["GetRoute_highwayConsumption"].value;
		var itiOptions = new ItineraryOptions(itiDate, vehicleType, itiType, itiPref, fuelCost, fuelConsumption);
		var detailLevel = f.elements["GetRoute_detailLevel"].value;
		var language = f.elements["GetRoute_language"].value;
		var instructionsFormat = f.elements["GetRoute_format"].value;
		var tollCategory = f.elements["GetRoute_tollCategory"].value;
		var presentationOptions = new ExtendedPresentationOptions(detailLevel, language, instructionsFormat, tollCategory);
		var responseElts = f.elements["GetRoute_responseElements"].value;
		var mapDefCalc = f.elements["GetRoute_MapdefExpected"].value;
		var mainMapWidth = f.elements["GetRoute_MainMapWidth"].value;
		var mainMapHeight = f.elements["GetRoute_MainMapHeight"].value;
		var blocMapWidth = f.elements["GetRoute_DetailMapWidth"].value;
		var blocMapHeight = f.elements["GetRoute_DetailMapHeight"].value;
		var responseOptions = new ResponseOptions(responseElts, mapDefCalc, mainMapWidth, mainMapHeight, blocMapWidth, blocMapHeight);
		var itiRequest = new ItineraryRequest(locDefinitionList, itiOptions, presentationOptions, responseOptions);
		var vehicleType = document.forms["GetRouteForm"].GetRoute_vehicleType;
		if ((vehicleType.value == "2") || (vehicleType.value == "3")) {		
			routeCalculation_getRouteNonMotorized(itiRequest);
		} else {
			routeCalculation_getRoute(itiRequest);
		}
	};
	
	var currentItiTrace = null;
	
	var locDefinitionList = new Array();
	
	// *****************************************************
	// *****************************************************
	function addLocDefinition(locId, tableName) {
		var locDef = new LocDefinition(null, locId, null);
		insertLocDefinition(locDef, tableName);
	};

	// *****************************************************
	// *****************************************************
	function insertLocDefinition(locDef, tableName) {
		locDefinitionList[locDefinitionList.length] = locDef;
	};
	
	// *****************************************************
	// Delete selected "Location Definition"
	// *****************************************************
	function delLocDefinition(tableName) {
		if (locDefinitionList.length > 0) {
			var tmpLocDefinitionList = new Array();
			for(cpt=0; cpt< locDefinitionList.length; cpt++) {
				if (!document.getElementById('locDef'+cpt).checked) {
					tmpLocDefinitionList[tmpLocDefinitionList.length] = locDefinitionList[cpt];
				}
			}
	
			oTable = document.getElementById(tableName);
			nbitem = locDefinitionList.length;
		
			for (curr_row = nbitem; curr_row > 0; curr_row--) {
			  oTable.deleteRow(curr_row);
			}		
			
			locDefinitionList = new Array();
			for(cpt=0; cpt< tmpLocDefinitionList.length; cpt++) {
				insertLocDefinition(tmpLocDefinitionList[cpt], tableName);
			}
		}
	};		

	// *****************************************************
	// Function which geocode an address (return null or a FoundLocationList)
	// *****************************************************	
	function searchAddresse(inputAddress, mode, ambi) {
		//alert("searchAdress : "  + ambi);
		var oInputAddressList = new Array();
		oInputAddressList[oInputAddressList.length] = inputAddress;
		geocoding_getLocationList_sync(ambi, mode, oInputAddressList);
		if ((foundLocationsListArray != null) && (foundLocationsListArray.length > 0)) {
			if (foundLocationsListArray[0].size == 1) {
				//addLocDefinition(foundLocationsListArray[0].foundLocations[0].locDesc.locid, 'StopoversTable');
				return true;
			}
		}
		return false;
	};
	
	// *****************************************************
	// function which allows to display the form to specify an "input address"
	// *****************************************************
	function showInputAddressFormLayer() {
		disableFormElements(document.forms["GetRouteForm"]);
		showDocElement('InputAddressFormLayer');

		var f = document.forms["InputAddressForm"];
		
		f.elements["InputAddressForm_add"].onclick = function() {
			var inputAddress = getInputAddress(f);
			closeInputAddressFormLayer(f);
			if (searchAddresse(inputAddress, 0)) {
				enableFormElements(document.forms["GetRouteForm"]);
			}
		};
		
		f.elements["InputAddressForm_cancel"].onclick = function() {
			closeInputAddressFormLayer(f);
			enableFormElements(document.forms["GetRouteForm"]);
		};
	};

	
	// *****************************************************
	// *****************************************************	
	function showhideMapDefinifition(f) {
		if (document.getElementById("GetRoute_MapdefExpected").value == "0") {
			unDisplayDocElement("TR_MapSize");
			unDisplayDocElement("TR_MainmapSize");
			unDisplayDocElement("TR_DetailmapSize");
		} else if (document.getElementById("GetRoute_MapdefExpected").value == "1") {
			displayDocElement("TR_MapSize");
			displayDocElement("TR_MainmapSize");
			unDisplayDocElement("TR_DetailmapSize");
		} else if (document.getElementById("GetRoute_MapdefExpected").value == "2") {
			displayDocElement("TR_MapSize");
			unDisplayDocElement("TR_MainmapSize");
			displayDocElement("TR_DetailmapSize");
		} else if (document.getElementById("GetRoute_MapdefExpected").value == "3") {
			displayDocElement("TR_MapSize");
			displayDocElement("TR_MainmapSize");
			displayDocElement("TR_DetailmapSize");
		}
	};
	
	// *****************************************************
	// *****************************************************	
	function showItineraryTraceOptions() {
		var routeResponse = document.getElementById('GetRoute_responseElements');
		var selectedValue = routeResponse.options[routeResponse.selectedIndex].value;
	};