import os
from TRG.Programs import GeoBounds


def point(x, kmllist):

    geocheck = ''

        
    for i in range(len(kmllist)):
        temp = GeoBounds.point(kmllist[i], x)
        if temp != "":
            geocheck = geocheck + temp + '-'
    geocheck = geocheck[:-1]

    return geocheck


def poly(rings, kmllist):
    temp = rings
    count = 0

    # Determine Poly Highs/Lows
    highlat = float(0)
    lowlat = float(90)
    highlong = float(-180)
    lowlong = float(0)
    while temp.find(']]]') != -1:
        if temp.find(']],[[')+1 != temp.find('],[') and temp.find('],[') != -1:
            count = count +1
            lltemp = temp[:temp.find('],[')]
            temp = temp[temp.find('],[')+3:]

        elif temp.find(']],[[')+1 == temp.find('],[') and temp.find('],[') != -1:
            count = count +1
            lltemp = temp[:temp.find(']],[[')]
            temp = temp[temp.find(']],[[')+5:]
            
        else:
            count = count + 1
            lltemp = temp[:temp.find(']]]')]
            temp = temp[temp.find(']]]')+1:]

        swap = lltemp.split(',')
        lltemp = [swap[1],swap[0]]


        if float(lltemp[0]) > highlat:
            highlat = float(lltemp[0])
        if float(lltemp[0]) < lowlat:
            lowlat = float(lltemp[0])
        if float(lltemp[1]) > highlong:
            highlong = float(lltemp[1])
        if float(lltemp[1]) < lowlong:
            lowlong = float(lltemp[1])
        
    # Iterate highs/lows for near to TA
    geocheck1 = []
    temp = ''

    x = str(highlat) + ',' + str(highlong)
    for i in range(len(kmllist)):
        temp = GeoBounds.point(kmllist[i], x)
        if temp != "":
            geocheck1 = geocheck1 + [temp]
    geocheck2 = []
    x = str(lowlat) + ',' + str(highlong)
    for i in range(len(kmllist)):
        temp = GeoBounds.point(kmllist[i], x)
        if temp != "":
            geocheck2 = geocheck2 + [temp]
    geocheck3 = []
    x = str(lowlat) + ',' + str(lowlong) 
    for i in range(len(kmllist)):
        temp = GeoBounds.point(kmllist[i], x)
        if temp != "":
            geocheck3 = geocheck3 + [temp]
    geocheck4 = []
    x = str(highlat) + ',' + str(lowlong)  
    for i in range(len(kmllist)):
        temp = GeoBounds.point(kmllist[i], x)
        if temp != "":
            geocheck4 = geocheck4 + [temp]

    # Merge results to narrow kmllist
    tempkmllist = []

    if geocheck1 != []:
        for t in range(len(geocheck1)):
            if geocheck1[t].find('IN ') != -1:
                val = geocheck1[t][geocheck1[t].find('IN ')+3:]
                tempkmllist = tempkmllist + [val]
            else:
                val = geocheck1[t][geocheck1[t].find('NEAR ')+5:]
                tempkmllist = tempkmllist + [val]


    if geocheck2 != []:
        for t in range(len(geocheck2)):
            if geocheck2[t].find('IN ') != -1:
                val = geocheck2[t][geocheck2[t].find('IN ')+3:]
                tempkmllist = tempkmllist + [val]
            else:
                val = geocheck2[t][geocheck2[t].find('NEAR ')+5:]
                tempkmllist = tempkmllist + [val]


    if geocheck3 != []:
        for t in range(len(geocheck3)):
            if geocheck3[t].find('IN ') != -1:
                val = geocheck3[t][geocheck3[t].find('IN ')+3:]
                tempkmllist = tempkmllist + [val]
            else:
                val = geocheck3[t][geocheck3[t].find('NEAR ')+5:]
                tempkmllist = tempkmllist + [val]

    if geocheck4 != []:
        for t in range(len(geocheck4)):
            if geocheck4[t].find('IN ') != -1:
                val = geocheck4[t][geocheck4[t].find('IN ')+3:]
                tempkmllist = tempkmllist + [val]
            else:
                val = geocheck4[t][geocheck4[t].find('NEAR ')+5:]
                tempkmllist = tempkmllist + [val]

    kmllist2 = []
    tempkmllist2 = []
    if tempkmllist !=[]:
        for c in range(len(tempkmllist)):
            if c == 0:
                tempkmllist2 = tempkmllist2 + [tempkmllist[c]]
            else:
                add = True
                for d in range(len(tempkmllist2)):
                    if tempkmllist2[d] == tempkmllist[c]:
                        add = False
                if add == True:
                    tempkmllist2 = tempkmllist2 + [tempkmllist[c]]


        for e in range(len(tempkmllist2)):
            for f in range(len(kmllist)):
                if kmllist[f].find(tempkmllist2[e]) != -1:
                    kmllist2 = kmllist2 + [kmllist[f]]
                    
    #Check fire perimeter for IN or NEAR
    geocheck = []
    
    for i in range(len(kmllist2)):
        temp = rings
        near = False
        while temp.find(']]]') != -1:
            if temp.find(']],[[')+1 != temp.find('],[') and temp.find('],[') != -1:
                count = count +1
                lltemp = temp[:temp.find('],[')]
                temp = temp[temp.find('],[')+3:]

            elif temp.find(']],[[')+1 == temp.find('],[') and temp.find('],[') != -1:
                count = count +1
                lltemp = temp[:temp.find(']],[[')]
                temp = temp[temp.find(']],[[')+5:]
                
            else:
                count = count + 1
                lltemp = temp[:temp.find(']]]')]
                temp = temp[temp.find(']]]')+1:]

            swap = lltemp.split(',')
            lltemp = [swap[1],swap[0]]
            x = lltemp[0] + ',' + lltemp[1]

            temp2 = GeoBounds.point(kmllist2[i], x)
            if temp2 != "":
                if temp2.find('IN ') != -1:
                    geocheck = geocheck + [temp2]
                    temp = temp[temp.find(']]]')+1:]
                    near = False
                elif temp2.find('NEAR ') != -1:
                    near = True
                    tempnear = temp2
        if near == True:
            geocheck = geocheck + [tempnear]
    
    

    geocheck5 = ''
    for i in range(len(geocheck)):
        geocheck5 = geocheck5 + geocheck[i] + '-'
    geocheck5 = geocheck5[:-1]

    return geocheck5


#main()
#input()