using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System.Device.Location;

namespace BingMapsDirectionsTaskSample
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Instanzierung des BingMapsDirectionsTask
        private BingMapsDirectionsTask myBingMapsDirectionsTask = new BingMapsDirectionsTask();
        // Formatierungsinfo fuer Nummern
        private System.Globalization.NumberFormatInfo myNumberFormatInfo = new System.Globalization.NumberFormatInfo();

        // Hauptkonstruktor
        public MainPage()
        {
            InitializeComponent();
            
            // Trennzeichen . fuer Dezimalzahlen festlegen
            myNumberFormatInfo.NumberDecimalSeparator = ".";
        }

        // Ereignismethode der BingMapsDireectionsTask Schaltfaeche
        private void btn_BingMapsDirectionTask_Click(object sender, RoutedEventArgs e)
        {
            /* Demodaten ermittelt durch die BingMaps Webseite
             * Duisburg, NW, Deutschland 51,4314202219248 6,7639497667551
             * Essen, NW, Deutschland 51,4518097043037 7,01061509549618
             */

            // Pruefung, ob fuer Startpunkt die Koordinatenfelder gefuellt sind
            if(tbx_StartCoord1.Text.Equals(String.Empty) || tbx_StartCoord2.Text.Equals(String.Empty))
            {
               // wenn Koordinatenfelder nicht gefuellt, dann nur den Startbegriff an den Task uebergeben
               myBingMapsDirectionsTask.Start = new LabeledMapLocation(tbx_StartLabel.Text, null);
            }
            else
            {
                // wenn Koordinatenfelder gefuellt, dann den Startbegriff und die zwei Koordinaten an den Task uebergeben
                myBingMapsDirectionsTask.Start = new LabeledMapLocation(tbx_StartLabel.Text, new GeoCoordinate(Convert.ToDouble(tbx_StartCoord1.Text, myNumberFormatInfo), Convert.ToDouble(tbx_StartCoord2.Text, myNumberFormatInfo)));              
            }

            // Pruefung, ob fuer Endpunkt die Koordinatenfelder gefuellt sind
            if(tbx_EndCoord1.Text.Equals(String.Empty) || tbx_EndCoord2.Text.Equals(String.Empty))
            {
                // wenn Koordinatenfelder nicht gefuellt, dann nur den Startbegriff an den Task uebergeben
                myBingMapsDirectionsTask.End = new LabeledMapLocation(tbx_EndLabel.Text, null);
            }
            else
            {
                // wenn Koordinatenfelder gefuellt, dann den Startbegriff und die zwei Koordinaten an den Task uebergeben
                myBingMapsDirectionsTask.End = new LabeledMapLocation(tbx_EndLabel.Text, new GeoCoordinate(Convert.ToDouble(tbx_EndCoord1.Text, myNumberFormatInfo), Convert.ToDouble(tbx_EndCoord2.Text, myNumberFormatInfo)));                
            }

            // Dialogfenster des BingMapsDireactionsTask mit Suchergebnis anzeigen
            myBingMapsDirectionsTask.Show();
        }
    }
}