package com.worklight.location.internal;

import com.worklight.location.api.WLConfidenceLevel;
import com.worklight.location.api.geo.WLCoordinate;
import com.worklight.location.api.geo.WLGeoUtils;
import com.worklight.location.api.geo.WLPolygon;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class InternalGeoUtils
{
  private static double EARTH_RADIUS = 6371000.0D;

  public static double distanceFromLineSegment(WLCoordinate paramWLCoordinate1, WLCoordinate paramWLCoordinate2, WLCoordinate paramWLCoordinate3)
  {
    return WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, nearestPointOnLineSegment(paramWLCoordinate1, paramWLCoordinate2, paramWLCoordinate3));
  }

  public static boolean isDistanceWithinConfidenceLevel(double paramDouble1, WLConfidenceLevel paramWLConfidenceLevel, double paramDouble2)
  {
    switch (1.$SwitchMap$com$worklight$location$api$WLConfidenceLevel[paramWLConfidenceLevel.ordinal()])
    {
    default:
      throw new AssertionError("Unknown WLConfidenceLevel value " + paramWLConfidenceLevel);
    case 2:
      if (paramDouble1 <= 0.5D * paramDouble2)
        break;
    case 1:
    case 3:
    }
    do
    {
      return true;
      return false;
    }
    while (paramDouble1 > 2.05D * paramDouble2);
    return false;
  }

  public static boolean isInsidePolygonBoundary(WLCoordinate paramWLCoordinate, WLPolygon paramWLPolygon)
  {
    WLPolygon localWLPolygon = transformPolygon(paramWLPolygon);
    WLCoordinate localWLCoordinate1 = paramWLCoordinate;
    if (!paramWLPolygon.equals(localWLPolygon))
      localWLCoordinate1 = transformCoordinate(paramWLCoordinate);
    double d1 = localWLCoordinate1.getLongitude();
    double d2 = localWLCoordinate1.getLatitude();
    HashMap localHashMap = new HashMap();
    double d3 = 180.0D / (1 + localWLPolygon.length);
    int i = 0;
    if (i < localWLPolygon.length)
    {
      double d9 = localWLPolygon.get(i).getLongitude();
      double d10 = localWLPolygon.get(i).getLatitude();
      if (d9 - d1 == 0.0D)
        localHashMap.put(Integer.valueOf(0), Integer.valueOf(1));
      while (true)
      {
        i++;
        break;
        localHashMap.put(Integer.valueOf((int)Math.floor((90.0D + Math.atan((d10 - d2) / (d9 - d1))) / d3)), Integer.valueOf(1));
      }
    }
    double d4 = 1.0D;
    int j = 0;
    int k;
    double d5;
    int m;
    label250: WLCoordinate localWLCoordinate2;
    WLCoordinate localWLCoordinate3;
    if (j <= localWLPolygon.length)
    {
      if ((localHashMap.containsKey(Integer.valueOf(j))) && (((Integer)localHashMap.get(Integer.valueOf(j))).intValue() != 1))
        d4 = Math.tan(d3 * (0.5D + j) - 90.0D);
    }
    else
    {
      k = 0;
      d5 = d2 - d4 * d1;
      m = 0;
      if (m >= localWLPolygon.length)
        break label534;
      int n = (m + 1) % localWLPolygon.length;
      localWLCoordinate2 = localWLPolygon.get(m);
      localWLCoordinate3 = localWLPolygon.get(n);
      if (localWLCoordinate2.getLongitude() > localWLCoordinate3.getLongitude())
      {
        localWLCoordinate2 = localWLPolygon.get(n);
        localWLCoordinate3 = localWLPolygon.get(m);
      }
      if (d1 <= localWLCoordinate3.getLongitude())
        break label339;
    }
    while (true)
    {
      m++;
      break label250;
      j++;
      break;
      label339: double d6 = d5 + d4 * localWLCoordinate2.getLongitude();
      double d7 = d5 + d4 * localWLCoordinate3.getLongitude();
      int i1 = sign(localWLCoordinate2.getLatitude() - d6);
      int i2 = sign(localWLCoordinate3.getLatitude() - d7);
      if ((i1 == i2) && (i2 == 0) && (d1 >= localWLCoordinate2.getLongitude()))
        return true;
      if ((i1 != i2) && (i1 + i2 <= 0))
        if ((d1 <= localWLCoordinate2.getLongitude()) || (i2 == 0))
        {
          k++;
        }
        else
        {
          double d8 = localWLCoordinate3.getLongitude() - localWLCoordinate2.getLongitude();
          if (d8 == 0.0D)
            k++;
          else if (sign(d8 * (d2 - localWLCoordinate2.getLatitude()) - (localWLCoordinate3.getLatitude() - localWLCoordinate2.getLatitude()) * (d1 - localWLCoordinate2.getLongitude())) * sign(d8) == i2)
            k++;
        }
    }
    label534: return k % 2 == 1;
  }

  public static double max(double[] paramArrayOfDouble)
  {
    double d1 = 4.9E-324D;
    int i = paramArrayOfDouble.length;
    for (int j = 0; j < i; j++)
    {
      double d2 = paramArrayOfDouble[j];
      if (d1 < d2)
        d1 = d2;
    }
    return d1;
  }

  public static double min(double[] paramArrayOfDouble)
  {
    double d1 = 1.7976931348623157E+308D;
    int i = paramArrayOfDouble.length;
    for (int j = 0; j < i; j++)
    {
      double d2 = paramArrayOfDouble[j];
      if (d1 > d2)
        d1 = d2;
    }
    return d1;
  }

  public static WLCoordinate nearestPointOnLineSegment(WLCoordinate paramWLCoordinate1, WLCoordinate paramWLCoordinate2, WLCoordinate paramWLCoordinate3)
  {
    if (paramWLCoordinate2.equals(paramWLCoordinate3))
      return paramWLCoordinate2;
    double d1 = paramWLCoordinate2.getLatitude();
    double d2 = paramWLCoordinate2.getLongitude();
    double d3 = paramWLCoordinate1.getLatitude();
    double d4 = paramWLCoordinate1.getLongitude();
    double d5 = paramWLCoordinate2.getLatitude();
    double d6 = paramWLCoordinate2.getLongitude();
    double d7 = paramWLCoordinate3.getLatitude();
    double d8 = paramWLCoordinate3.getLongitude();
    double d9 = 0.0D;
    double d10 = WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, paramWLCoordinate2);
    double d11 = 1.0D;
    double d12 = WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, paramWLCoordinate3);
    WLCoordinate localWLCoordinate = new WLCoordinate((d5 + d7) / 2.0D, (d6 + d8) / 2.0D, 0.0D);
    double d13 = 0.5D;
    double d14 = WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, localWLCoordinate);
    int i;
    int j;
    double d15;
    double d24;
    double d25;
    if (d10 < d12)
    {
      i = 1;
      j = 0;
      d15 = d1;
      if (j < 30)
      {
        if (d12 < d10)
        {
          double d39 = d9;
          d9 = d11;
          d11 = d39;
          double d40 = d10;
          d10 = d12;
          d12 = d40;
        }
        if (d14 < d12)
        {
          double d35 = d11;
          d11 = d13;
          d13 = d35;
          double d36 = d12;
          d12 = d14;
          d14 = d36;
          if (d12 < d10)
          {
            double d37 = d9;
            d9 = d11;
            d11 = d37;
            double d38 = d10;
            d10 = d12;
            d12 = d38;
          }
        }
        d24 = d6 + d9 * (d8 - d6);
        d25 = d5 + d9 * (d7 - d5);
        if ((d9 == d11) || (d9 == d13))
          break label932;
        if (d11 != d13)
          break label545;
        d2 = d24;
        d15 = d25;
      }
    }
    while (true)
    {
      label296: double d23;
      double d16;
      if (d14 < d10)
      {
        double d21 = d13;
        d10 = d14;
        double d22 = d6 + d21 * (d8 - d6);
        d23 = d5 + d21 * (d7 - d5);
        d16 = d22;
      }
      for (double d17 = d23; ; d17 = d15)
      {
        double d18 = ((d4 - d6) * (d8 - d6) + (d3 - d5) * (d7 - d5)) / ((d8 - d6) * (d8 - d6) + (d7 - d5) * (d7 - d5));
        double d19;
        if ((d18 >= 0.0D) && (d18 <= 1.0D) && (WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, new WLCoordinate(d5 + d18 * (d7 - d5), d6 + d18 * (d8 - d6), 0.0D)) < d10))
          d19 = d6 + d18 * (d8 - d6);
        for (double d20 = d5 + d18 * (d7 - d5); ; d20 = d17)
        {
          if ((sign(d20 - d5) == sign(d20 - d7)) && (sign(d19 - d6) == sign(d19 - d8)))
          {
            if (i == 0)
              break label899;
            d19 = d6;
          }
          for (d20 = d5; ; d20 = d7)
          {
            return new WLCoordinate(d20, d19, 0.0D);
            i = 0;
            break;
            label545: double d26 = min(new double[] { d9, d11, d13 });
            double d27 = max(new double[] { d9, d11, d13 });
            if (d27 - d26 < 0.001D)
            {
              double d34 = min(new double[] { d10, d12, d14 });
              if (max(new double[] { d10, d12, d14 }) - d34 < 0.5D)
              {
                d2 = d24;
                d15 = d25;
                break label296;
              }
            }
            double d28 = (d12 - d10) / (d11 - d9);
            double d29 = (d14 - d12 - d28 * (d13 - d11)) / ((d13 - d11) * (d13 - d9));
            double d30 = d28 - d29 * (d11 + d9);
            double d32;
            if (d29 != 0.0D)
              d32 = -d30 / (2.0D * d29);
            while (true)
            {
              double d33 = WLGeoUtils.getDistanceBetweenCoordinates(paramWLCoordinate1, new WLCoordinate(d5 + d32 * (d7 - d5), d6 + d32 * (d8 - d6), 0.0D));
              d13 = d32;
              d14 = d33;
              j++;
              d2 = d24;
              d15 = d25;
              break;
              double d31 = d9;
              if ((d31 == d26) || (d31 == d27))
                d31 = d11;
              if ((d31 == d26) || (d31 == d27))
                d31 = d13;
              if (d27 - d31 > d31 - d26)
                d32 = Math.min(1.0D, d31 + 0.382D * (d27 - d31));
              else
                d32 = Math.max(0.0D, d31 - 0.382D * (d31 - d26));
            }
            label899: d19 = d8;
          }
          d19 = d16;
        }
        d16 = d2;
      }
      label932: d2 = d24;
      d15 = d25;
    }
  }

  public static double radians(double paramDouble)
  {
    return 3.141592653589793D * paramDouble / 180.0D;
  }

  public static double radiansToMeters(double paramDouble)
  {
    return paramDouble * EARTH_RADIUS;
  }

  public static int sign(double paramDouble)
  {
    if (paramDouble > 0.0D)
      return 1;
    if (paramDouble < 0.0D)
      return -1;
    return 0;
  }

  public static WLCoordinate transformCoordinate(WLCoordinate paramWLCoordinate)
  {
    return new WLCoordinate(paramWLCoordinate.getLatitude(), transformLongitude(paramWLCoordinate.getLongitude()), 0.0D);
  }

  public static double transformLongitude(double paramDouble)
  {
    if (paramDouble > 0.0D)
      return paramDouble - 180.0D;
    return paramDouble + 180.0D;
  }

  public static WLPolygon transformPolygon(WLPolygon paramWLPolygon)
  {
    double[] arrayOfDouble = new double[paramWLPolygon.length];
    for (int i = 0; i < arrayOfDouble.length; i++)
      arrayOfDouble[i] = paramWLPolygon.get(i).getLongitude();
    if (max(arrayOfDouble) - min(arrayOfDouble) < 180.0D)
      return paramWLPolygon;
    ArrayList localArrayList = new ArrayList();
    for (int j = 0; j < paramWLPolygon.length; j++)
      localArrayList.add(new WLCoordinate(paramWLPolygon.get(j).getLatitude(), transformLongitude(paramWLPolygon.get(j).getLongitude()), 0.0D));
    return new WLPolygon(localArrayList);
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.worklight.location.internal.InternalGeoUtils
 * JD-Core Version:    0.6.2
 */