/// <summary>
    /// Convert latitude and longitude to degrees
    /// </summary>
    internal static void ConvertDecimalToDegrees(double vLat, double vLong, SunTimes.LatitudeCoords.Direction vLatDirection, SunTimes.LongitudeCoords.Direction vLongDirection,
                                                 ref int vLatHours, ref int vLatMins, ref int vLatSecs,
                                                 ref int vLongHours, ref int vLongMins, ref int vLongSecs
                                                 )
    {
        //https://stackoverflow.com/questions/27996121/convert-latitude-and-longitude-to-degree

        double lat = vLat;  //-86.0490143029144;
        double lon = vLong; // -45.197069205344;

        if (vLatDirection == LatitudeCoords.Direction.South && lat > 0)
        {
            lat *= -1;                                                             // force the south values to be negative
        }
        if (vLongDirection == LongitudeCoords.Direction.West && lon > 0)
        {
            lon *= -1;                                                              // force the West values to be negative
        }
        //string latDir = (lat >= 0 ? "N" : "S");
        lat = Math.Abs(lat);
        double latMinPart = ((lat - Math.Truncate(lat) / 1) * 60);
        double latSecPart = ((latMinPart - Math.Truncate(latMinPart) / 1) * 60);

        //string lonDir = (lon >= 0 ? "E" : "W");
        lon = Math.Abs(lon);
        double lonMinPart = ((lon - Math.Truncate(lon) / 1) * 60);
        double lonSecPart = ((lonMinPart - Math.Truncate(lonMinPart) / 1) * 60);

        vLatHours  = (int)(Math.Truncate(lat));
        vLatMins   = (int)(Math.Truncate(latMinPart));
        vLatSecs   = (int)(Math.Truncate(latSecPart));
        vLongHours = (int)(Math.Truncate(lon));
        vLongMins  = (int)(Math.Truncate(lonMinPart));
        vLongSecs  = (int)(Math.Truncate(lonSecPart));

        //Console.WriteLine(
        //    Math.Truncate(lat) + " " + Math.Truncate(latMinPart) + " " + Math.Truncate(latSecPart) + " " + latDir
        //    );

        //Console.WriteLine(
        //    Math.Truncate(lon) + " " + Math.Truncate(lonMinPart) + " " + Math.Truncate(lonSecPart) + " " + lonDir
        //    );
    }
        //private void cbPopularLocations_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    //if (this.parentForm.applyingSettings == false)
        //    {
        //        if (cbPopularLocations.SelectedItem.ToString(CultureInfo.InvariantCulture) != "[NONE]")
        //        {
        //            /// more locations: http://www.tageo.com/index-e-as-cities-AU.htm

        //            double lat = 0;
        //            double lng = 0;

        //            FrmMain.GetLatLongByName(cbPopularLocations.SelectedItem.ToString(CultureInfo.InvariantCulture), out lat, out lng);
        //            txtLatitude.Text = lat.ToString(CultureInfo.InvariantCulture);
        //            txtLongitude.Text = lng.ToString(CultureInfo.InvariantCulture);

        //            setLocationInfo();

        //            SetUseSunriseSunset();
        //            doTimerCheckChanged();

        //            SetUseSunriseSunset();
        //            //doTimerCheckChanged();

        //        }
        //        else
        //        {
        //            txtLatitude.Text = "-0.000000";
        //            txtLongitude.Text = "0.000000";

        //        }

        //        // either way, set the values
        //        //setLocationInfo();

        //        //SetUseSunriseSunset();
        //        //doTimerCheckChanged();
        //        //if (parentForm.settings.UseSunriseSunset)
        //        //{
        //        //    GetSunriseSunset();
        //        //}


        //    }
        //}

        //private void GetSunriseSunset()
        //{
        //    int offsetMins = 0;
        //    offsetMins = int.Parse(txtOffsetMins.Text);

        //    SunTimes.LatitudeCoords.Direction latDirection = SunTimes.LatitudeCoords.Direction.South;
        //    SunTimes.LongitudeCoords.Direction longDirection = SunTimes.LongitudeCoords.Direction.East;

        //    if (double.Parse(txtLatitude.Text) > 0) latDirection = SunTimes.LatitudeCoords.Direction.North;
        //    if (double.Parse(txtLongitude.Text) <= 0) longDirection = SunTimes.LongitudeCoords.Direction.West;

        //    parentForm.GetSunriseSunset(double.Parse(txtLatitude.Text), double.Parse(txtLongitude.Text), latDirection, longDirection);

        //    DateTime sunrise = parentForm.sunrise;
        //    DateTime sunset = parentForm.sunset;

        //    sunrise = sunrise.AddMinutes(offsetMins);
        //    sunset = sunset.AddMinutes(offsetMins);

        //    // round mins to nearest 5
        //    double sunriseMins = sunrise.Minute;
        //    double sunsetMins = sunset.Minute;

        //    sunriseMins = MathExtra.RoundCustom(sunriseMins, 5);
        //    sunsetMins = MathExtra.RoundCustom(sunsetMins, 5);

        //    if (sunriseMins > 55) sunriseMins = 55;
        //    if (sunsetMins > 55) sunsetMins = 55;

        //    parentForm.sunrise = new DateTime(sunrise.Year, sunrise.Month, sunrise.Day, sunrise.Hour, (int)(sunriseMins), 0);
        //    parentForm.sunset = new DateTime(sunset.Year, sunset.Month, sunset.Day, sunset.Hour, (int)(sunsetMins), 0);

        //    lblSunriseSunset.Text = ("Sunrise @ " + sunrise.ToString("HH:mm") + "\nSunset @ " + sunset.ToString("HH:mm"));

        //    if (parentForm.settings.UseSunriseSunset)
        //    {
        //        if (cbPopularLocations.SelectedItem.ToString(CultureInfo.InvariantCulture) != "[NONE]")
        //        {
        //            parentForm.settings.LightSunriseTime = parentForm.sunrise;
        //            parentForm.settings.DarkSunsetTime = parentForm.sunset;

        //            // Set the Light and Dark Times
        //            SetLightDarkTimeControls();
        //        }
        //    }

        //}


        private void GetSunriseSunset()
        {
            int offsetMins;// = 0;

            offsetMins = int.Parse(txtOffsetMins.Text, CultureInfo.InvariantCulture);

            SunTimes.LatitudeCoords.Direction  latDirection  = SunTimes.LatitudeCoords.Direction.North;
            SunTimes.LongitudeCoords.Direction longDirection = SunTimes.LongitudeCoords.Direction.East;

            double lat = double.Parse(txtLatitude.Text, CultureInfo.InvariantCulture);
            double lon = double.Parse(txtLongitude.Text, CultureInfo.InvariantCulture);

            if (lat < 0)
            {
                latDirection = SunTimes.LatitudeCoords.Direction.South;
            }
            if (lon < 0)
            {
                longDirection = SunTimes.LongitudeCoords.Direction.West;
            }

            parentForm.GetSunriseSunset(lat, lon, latDirection, longDirection);

            DateTime sunrise = parentForm.sunrise;
            DateTime sunset  = parentForm.sunset;

            sunrise = sunrise.AddMinutes(offsetMins);
            sunset  = sunset.AddMinutes(offsetMins);

            // round mins to nearest 5
            double sunriseMins = sunrise.Minute;
            double sunsetMins  = sunset.Minute;

            sunriseMins = MathExtra.RoundCustom(sunriseMins, 5);
            sunsetMins  = MathExtra.RoundCustom(sunsetMins, 5);

            if (sunriseMins > 55)
            {
                sunriseMins = 55;
            }
            if (sunsetMins > 55)
            {
                sunsetMins = 55;
            }

            parentForm.sunrise = new DateTime(sunrise.Year, sunrise.Month, sunrise.Day, sunrise.Hour, (int)(sunriseMins), 0);
            parentForm.sunset  = new DateTime(sunset.Year, sunset.Month, sunset.Day, sunset.Hour, (int)(sunsetMins), 0);

            lblSunriseSunset.Text = ("Sunrise @ " + sunrise.ToString("HH:mm", CultureInfo.InvariantCulture) + "\nSunset @ " + sunset.ToString("HH:mm", CultureInfo.InvariantCulture));

            if (parentForm.settings.UseSunriseSunset)
            {
                parentForm.settings.LightSunriseTime = parentForm.sunrise;
                parentForm.settings.DarkSunsetTime   = parentForm.sunset;

                // Set the Light and Dark Times
                SetLightDarkTimeControls();

                if (!parentForm.applyingSettings)
                {
                    // if not on NULL ISLAND (0,0)
                    //https://en.wikipedia.org/wiki/Null_Island
                    if ((double.Parse(txtLatitude.Text, CultureInfo.InvariantCulture) == 0 && double.Parse(txtLongitude.Text, CultureInfo.InvariantCulture) == 0) == false)
                    {
                        parentForm.AdjustDesktopImages(); //(false);
                    }
                }
            }
        }