/// <summary>
        /// Handles clicks to the Travel Mode button and
        /// update selected travel mode.
        /// </summary>
        private void TravelMode_Click(object sender, RoutedEventArgs e)
        {
            ToggleButton btn = (ToggleButton)sender;

            if (RouteDatas.Count > 0)
            {
                RouteDatas.Clear();
            }

            driveButton.IsChecked = false;
            busButton.IsChecked   = false;
            walkButton.IsChecked  = false;

            string selectedMode = btn.Name.ToString();

            switch (selectedMode)
            {
            case "driveButton":
                travelMode            = TravelMode.car;
                driveButton.IsChecked = true;
                break;

            case "busButton":
                travelMode          = TravelMode.bus;
                busButton.IsChecked = true;
                break;

            case "walkButton":
                travelMode           = TravelMode.pedestrian;
                walkButton.IsChecked = true;
                break;

            default:
                travelMode = TravelMode.car;
                break;
            }

            GetRouteDirections();
        }
        /// <summary>
        /// Handles clicks to the Close RouteDirection Grid button and
        /// collapse RouteDirectionGrid.
        /// </summary>
        private void CloseRouteDirectionGrid_Click(object sender, RoutedEventArgs e)
        {
            TravelTimeOptionGrid.Visibility = Visibility.Collapsed;
            leaveNowButton.IsChecked        = true;
            leaveatButton.IsChecked         = false;
            arrivebyButton.IsChecked        = false;

            timePicker.Time         = DateTime.Now.TimeOfDay;
            timePicker.SelectedTime = DateTime.Now.TimeOfDay;

            if (calendarView.SelectedDates.Count > 0)
            {
                calendarView.SelectedDates.Clear();
                calendarView.SelectedDates.Add(DateTime.Now);
            }

            RouteDirectionSplitView.IsPaneOpen = false;

            if (RouteDatas.Count > 0)
            {
                RouteDatas.Clear();
            }
        }
        /// <summary>
        /// Search routes to selected destination/waypoints
        /// </summary>
        private async void GetRouteDirections()
        {
            if (RouteDatas == null)
            {
                return;
            }

            if (RouteDatas.Count > 0)
            {
                RouteDatas.Clear();
            }

            if (RouteWaypoints.Count < 2)
            {
                return;
            }

            List <BasicGeoposition> pts = RouteWaypoints.Select(loc => loc.Position).ToList();

            DateTime dateTime = DateTime.Now.AddMinutes(1);

            if ((leaveatButton.IsChecked.Value) || (arrivebyButton.IsChecked.Value))
            {
                var dts = calendarView.SelectedDates.ToList();
                dateTime = dts[0].DateTime.Date.AddMinutes(timePicker.SelectedTime.Value.TotalMinutes);
            }

            var avoids = GetAvoids();

            var language = (LanguageComboBox.SelectedItem as ComboBoxItem).Tag.ToString();

            RouteDirectionsResponse results = new RouteDirectionsResponse();

            if (leaveatButton.IsChecked.Value || leaveatButton.IsChecked.Value)
            {
                results = await LocationHelper.GetRouteDirections(pts, language, travelMode, avoids, routeType, RouteOptionsCountComboBox.SelectedIndex, dateTime, null);
            }
            else
            {
                results = await LocationHelper.GetRouteDirections(pts, language, travelMode, avoids, routeType, RouteOptionsCountComboBox.SelectedIndex, null, dateTime);
            }

            if (results == null)
            {
                return;
            }

            foreach (var route in results.routes)
            {
                var routedata = new RouteData()
                {
                    Route              = route,
                    IsLeaveNow         = leaveNowButton.IsChecked.Value,
                    IsArriveBy         = arrivebyButton.IsChecked.Value,
                    IsLeaveAt          = leaveatButton.IsChecked.Value,
                    IsShowed           = false,
                    StartLocationLable = RouteWaypoints[0].Name,
                    EndLocationLabel   = RouteWaypoints[RouteWaypoints.Count - 1].Name
                };

                RouteDatas.Add(routedata);
            }
        }