#~ admin
import pprint,time,traceback,urllib2,os

def loadrows(level):
    lines=open(os.path.join('levels',str(level)+'.txt'),'r').readlines()
    rows=[]
    skipnext=False
    for l in lines:
        if l.startswith("Flash"):
            skipnext=True
            continue
        if skipnext:
            skipnext=False
            continue
        l=l.strip()
        l=[int(c) for c in l]
        rows.append(l)
    rows=boxify(rows)
    import config
    config.maxx,config.maxy=len(rows[0])-1,len(rows)-1
    return rows,config

def getrows(levelnum):
    import config
    
    if config.live:
        rows,levelnum=dlrows()
        config.levelnum=levelnum
    else:
        line=open(os.path.join('levels',str(levelnum)+'.txt'),'r').readline()
        rows=makerows(line)
        config.levelnum=levelnum
#~     print 'got rows:',
#~     pprint.pprint(rows)
    config.maxx=len(rows[0])-1
    config.maxy=len(rows)-1
#~     print 'config set to:',config.maxx,config.maxy
    return rows,config

def makerows(line):
    line=line.replace("FlashVars=","").strip()
    sp=line.split("=")
#~     print sp
    x=int(sp[1].replace("&y",""))
    y=int(sp[2].replace("&board",""))
    b=sp[3]
    b=b.replace(".","0").replace("X","1")
    rows=[]
    while b:
        this=b[:x]
        b=b[x:]
        if len(this)==1:continue
        rows.append([int(c) for c in this])
    return boxify(rows)
    
def boxify(rows):
    x,y=len(rows[0]),len(rows)
#~     print x,y
    for n in range(y):
        rows[n].insert(0,1)
        rows[n].append(1)
    rows.insert(0,[1 for n in range(x+2)])
    rows.append([1 for n in range(x+2)])
    return rows

def getpw():
    l=open('pw.txt','r').readline().strip()
    print l
    return l

def dlrows():
    #print "in getboard",doboard,glogin
    url="http://www.hacker.org/coil/index.php?name=ernie&password="+getpw()
    import urllib,os
    for n in range(100):
        try:
            res=urllib.urlopen(url).readlines()
            break
        except:
            print 'sleeping 10'
            time.sleep(10)
    for l in res:
        l=l.strip()
        if "Level: " in l:
            try:
                lsp=l.split("Level: ")
                levelnum=int(lsp[1].split("<")[0])
                print "i am in level",levelnum
            except:
                traceback.print_exc()
        if l.startswith("FlashVars"):
            line=l
            break
    rows=makerows(line)
#~     pprint.pprint(rows)
    text='\n'.join([''.join([str(c) for c in l]) for l in rows])
    outfile="levels/"+str(levelnum)+".txt"
    if not os.path.exists(outfile):
        out=open(outfile,'w')
        out.write(line)
        out.write("\n\n")
        out.write(text)
        out.close()
    return rows,levelnum



def getd(dv):
    if dv==0:
        return 'R'
    if dv==1:
        return 'D'
    if dv==2:
        return 'L'
    return 'U'

def dodone(sol,start_pos,submit=True):
    
    baseurl="http://www.hacker.org/coil/index.php?name=ernie&password="+getpw()
    baseurl+="&"
    baseurl+="x="+str(start_pos[0]-1)
    baseurl+="&y="+str(start_pos[1]-1)
    baseurl+="&path="
    for s in sol:
        baseurl+=getd(s)
    print "final path is:"
    print baseurl
    init_wait=1
    if not submit:
        print 'not submitting; returning'
        return
    for n in range(1,100):
        try:
            print 'open',
            urllib2.urlopen(baseurl)
            print 'SUBBED!'
            break
        except:
            traceback.print_exc()
            init_wait*=n
            print 'waiting',init_wait
            time.sleep(init_wait)
    print 'reeturning....'
    return
    
    
    
#~ print loadrows('test1')