<!--

//===========================
//===========================
//===========================
// Game data. Sync this with the server.
tk_kingdom = new Array("No Kingdom","Wei","Wu","Shu","Jin","Han","Scarves","Nanman","Qin")
tk_level = new Array(
        "0.Trainee",
        "1.Trooper",
        "2.Officer",
        "3.Commander",
        "4.Advisor",
        "5.Inspector",
        "6.Secretary",
        "7.Magistrate",
        "8.Governor",
        "9.Marching General",
        "10.Field Commander",
        "11.Van Leader",
        "12.Counselor",
        "13.General",
        "14.Admiral",
        "15.Field Marshal",
        "16.Chief of the Commissariat",
        "17.Imperial Protector",
        "18.Imperial Inspector",
        "19.Imperial Counselor",
        "20.Imperial General",
        "21.General of the Left",
        "22.General of the Right",
        "23.General of the Vanguard",
        "24.General of the Rearguard",
        "25.General of the Cavalry",
        "26.General of the Chariots",
        "27.Tiger General",
        "28.Supreme Commander",
        "29.Supreme Admiral",
        "30.Palace Commander",
        "31.Commander of Capital District",
        "32.Court Counselor",
        "33.Regular Attendant",
        "34.Minister",
        "35.Grand Counselor",
        "36.Grand Commander",
        "37.Grand Minister",
        "38.Chair of the Internal Affairs",
        "39.Chair of the Outer Affairs",
        "40.Chair of the Secretariat",
        "41.Directing Instructor",
        "42.Regent Marshal",
        "43.Imperial Guardian",
        "44.Treasurer",
        "45.Chief Eunuch",
        "46.Prime Minister",
        "47.Marquis-Marchioness",
        "48.Duke-Duchess",
        "49.Prince-Princess",
        "50.Emperor-Empress");


tk_rows = 30
tk_cols = 30

map = new Array()
map[1] = " XX4XXX4mommXm8XXm8mXXXX1XXX1oo";
map[2] = " 4XXXXXXmoo8XmmXXXoXXXXmmmmXooo";
map[3] = " Xomm4XmXomXXXXXXoomm8XmXX1oo1X";
map[4] = " oo4XXX4XX8XXXXX8oo8XXX1XXoooXX";
map[5] = " XomXXmmommXX8mXooXmXXmmXoommm1";
map[6] = " X4mo4XmXooXmmooooXXXX1ooo1mXXX";
map[7] = " XXXooX4mo8Xoooom8XmmXmXXXXXX1X";
map[8] = " XXXXooooomXo8mmXXX8oooX1XXXXXX";
map[9] = " XXXXX4moommomXX8XXmooXXXXXm1Xm";
map[10] = " m4mXmmmoooooooooooooX1mX1mmXXm";
map[11] = " XXXXXooooooooooooooommXXXXooom";
map[12] = " XX4XX4XXoooooXooXooooXXXoooXXX";
map[13] = " ooXoooXmoomXXXXXXm6mmm6mm6XXXm";
map[14] = " ooXmm5mmoo5mm5XXXXXXooooomm6mm";
map[15] = " mm5mXXXXooXXXmXXmmXXXooX6moXXX";
map[16] = " XXXXX5ooooX5XmXmmoXX6oommooXXX";
map[17] = " 5XXXXooX5XXXX5X6XoooXoo6XXooXX";
map[18] = " mXXX5oXXXXmXmmXmmo6XXXommXXmm6";
map[19] = " mm5mmommXX5mooXmXXXXXXXomm6moX";
map[20] = " XXXoooom5mmXXoom6mmm6mmooooooo";
map[21] = " XooooooXXXmXXXoooXXXXXXooomo2m";
map[22] = " 3mo3m3mXoo3oooooXXXXXXooom2ooX";
map[23] = " XmoXmXmm3omoomomXXXXooooomXXo2";
map[24] = " X3oXXXXoooXX7mo7mmmoooom2oX2om";
map[25] = " ooo3XXooXXmXXXoXXXm7oomXXooXXo";
map[26] = " 3XXXX3o3Xm7XXXoo7XXXoo2XX2oX2X";
map[27] = " XXXXooXXXmXXX7XoXX7ooomXXmooXX";
map[28] = " XX3ooXXmm7XXXXXoXXXoooo2Xmmo2X";
map[29] = " XXXXXX3mXXX7mX7o7XmmoooXXX2ooX";
map[30] = " 3mXXXXmmX7XmmoooXXX7mo2mXXXXo2";

cn = new Array()
cn[1] = new Array()
cn[2] = new Array()
cn[3] = new Array()
cn[4] = new Array()
cn[5] = new Array()
cn[6] = new Array()
cn[7] = new Array()
cn[8] = new Array()
cn[9] = new Array()
cn[10] = new Array()
cn[11] = new Array()
cn[12] = new Array()
cn[13] = new Array()
cn[14] = new Array()
cn[15] = new Array()
cn[16] = new Array()
cn[17] = new Array()
cn[18] = new Array()
cn[19] = new Array()
cn[20] = new Array()
cn[21] = new Array()
cn[22] = new Array()
cn[23] = new Array()
cn[24] = new Array()
cn[25] = new Array()
cn[26] = new Array()
cn[27] = new Array()
cn[28] = new Array()
cn[29] = new Array()
cn[30] = new Array()

cn[1][3] = "Tianshui"
cn[1][7] = "Xizhou"
cn[1][14] = "Lukou"
cn[1][18] = "Xian"
cn[1][24] = "Jiaqiao"
cn[1][28] = "Wuhuan"
cn[2][1] = "Didao"
cn[2][11] = "Longyou"
cn[3][5] = "Longxi"
cn[3][21] = "Shangyong"
cn[3][26] = "Guandu"
cn[3][29] = "Baima"
cn[4][3] = "Changan"
cn[4][7] = "Meiwo"
cn[4][10] = "Bingzhou"
cn[4][16] = "Yuanshi"
cn[4][19] = "Saber Pass"
cn[4][23] = "Yejun"
cn[5][13] = "North Bank"
cn[5][30] = "Yuanzhou"
cn[6][2] = "Nanan"
cn[6][5] = "West Bank"
cn[6][22] = "Wei"
cn[6][26] = "Xuchang"
cn[7][7] = "Jieting"
cn[7][10] = "Cat Tail ferry"
cn[7][17] = "East Bank"
cn[7][29] = "Qingzhou"
cn[8][13] = "Jiangyou"
cn[8][19] = "Yanzhou"
cn[8][24] = "Yingchuan"
cn[9][6] = "Liangzhou"
cn[9][16] = "Wancheng"
cn[9][28] = "Xinye"
cn[10][2] = "Tong Pass"
cn[10][22] = "Wancheng"
cn[10][25] = "Juancheng"
cn[12][3] = "Qishan"
cn[12][6] = "East Qishan"
cn[13][19] = "Wuchao"
cn[13][23] = "Runan"
cn[13][26] = "Pingyuan"
cn[14][6] = "Xianbei"
cn[14][11] = "South West Bank"
cn[14][14] = "South Bank"
cn[14][28] = "Hebei"
cn[15][3] = "Qiang"
cn[15][25] = "Xiapei"
cn[16][6] = "Bazhong"
cn[16][12] = "Luoyang"
cn[16][21] = "Puyang"
cn[17][1] = "Yizhou"
cn[17][9] = "Burnt Changan"
cn[17][14] = "Shi Shue Gate"
cn[17][16] = "Fancheng"
cn[17][24] = "Xiapi"
cn[18][5] = "Haaaaaaaaaan"
cn[18][19] = "Xiangcheng"
cn[18][30] = "Dangyang"
cn[19][3] = "Hanzhong"
cn[19][11] = "Tiger Trap Pass"
cn[19][27] = "Hefei"
cn[20][9] = "Chencang"
cn[20][17] = "Xiangyang"
cn[20][21] = "Guangling"
cn[21][29] = "River City"
cn[22][1] = "Lanzhong"
cn[22][4] = "Jiameng Pass"
cn[22][6] = "Wuzhang"
cn[22][11] = "Mianyang"
cn[22][27] = "Nanjing"
cn[23][9] = "Nanchong"
cn[23][30] = "Wu"
cn[24][2] = "Yibin"
cn[24][13] = "Zigui"
cn[24][16] = "Jingzhou"
cn[24][25] = "Wuchang"
cn[24][28] = "Jianye"
cn[25][4] = "Guanan"
cn[25][20] = "Jiaxing"
cn[26][1] = "Ziyang"
cn[26][6] = "Dazhou"
cn[26][8] = "Yuesui"
cn[26][11] = "Gongan"
cn[26][17] = "Guiyang"
cn[26][23] = "Wuling"
cn[26][26] = "Pengchang"
cn[26][29] = "Wuhu"
cn[27][14] = "Nonmen"
cn[27][19] = "Dongting"
cn[28][3] = "Chengdu"
cn[28][10] = "Badicheng"
cn[28][24] = "Niuzhu"
cn[28][29] = "Wujun"
cn[29][7] = "Zangge"
cn[29][12] = "Lingling"
cn[29][15] = "Nanzhao"
cn[29][17] = "Changsha"
cn[29][27] = "Nancheng"
cn[30][1] = "Jianning"
cn[30][10] = "Wuling"
cn[30][20] = "Dongma"
cn[30][23] = "Shouchun"
cn[30][30] = "Kuaji"

//===========================
//===========================
//===========================
// This is the data string of each xml request.
// uid|username|side|row|col|rank|hup|moves|left|acts|axes|resupply|now|view|cities|data
//o = "77|TestB|1|10|20|5|450|30|15|0|70|2007-11-25 23:26:11|2007-11-25 22:26:00|0|1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
uid = ""
username = ''
uside = 0
urow = 11
ucol = 18
urank = 1
uhup = 1
umoves = 0
uleft = 0
uacts = 0
uaxes = 0
uresupply = ""
unow = ""
uview = 0
datac = ""
datao = ""
no_show = false
umovecost = 50
can_act = true

//===========================
//===========================
//===========================
// city holds city possession info (1,2,3,4,5,6,7,8 means city sides, 9,10,11 means field, water, mountain).
city = new Array()
// q holds the defense, user, and hup info of the map sq.
q = new Array()
q[1] = new Array()
q[2] = new Array()
q[3] = new Array()
q[4] = new Array()
q[5] = new Array()
q[6] = new Array()
q[7] = new Array()
q[8] = new Array()
q[9] = new Array()
q[10] = new Array()
q[11] = new Array()
q[12] = new Array()
q[13] = new Array()
q[14] = new Array()
q[15] = new Array()
q[16] = new Array()
q[17] = new Array()
q[18] = new Array()
q[19] = new Array()
q[20] = new Array()
q[21] = new Array()
q[22] = new Array()
q[23] = new Array()
q[24] = new Array()
q[25] = new Array()
q[26] = new Array()
q[27] = new Array()
q[28] = new Array()
q[29] = new Array()
q[30] = new Array()

//===========================
//===========================
//===========================
function init_map()
{
	var oo, i, ii, row, square, count, index, t, oos, iii, eee, flag, ooss
	oo = o.split(":")
	count = 0
	for (i = 1; i <= tk_rows; i++)
	{
		city[i] = new Array()
		row = map[i]
		for (ii = 1; ii <= tk_cols; ii++)
		{
			square = row.charAt(ii)
			if (square == "X") city[i][ii] = 9
			else if (square == "o") city[i][ii] = 10
			else if (square == "m") city[i][ii] = 11
			else city[i][ii] = parseInt(square)
			q[i][ii] = new Array(0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0)
		}
	}
	load_data(o)
	show_menu()
	if (uview >= 0)
	{
	    if ((uview == 3) || (uview == 5)) draw_map2(urow, ucol)
	    else draw_map1()
	}
	else div_map.innerHTML = ""
}

//===========================
function load_data(in_data)
{
	var os, oo, i, ii, row, square, count, index, t, oos, iii, eee, flag, ooss

	os = o.split("|")
	uid = os[0]
	username = os[1]
	uside = parseInt(os[2])
	urow = parseInt(os[3])
	ucol = parseInt(os[4])
	urank = parseInt(os[5])
	uhup = parseInt(os[6])
	umoves = parseInt(os[7])
	uleft = parseInt(os[8])
	uacts = parseInt(os[9])
	uaxes = parseInt(os[10])
	uresupply = os[11]
	unow = os[12]
	uview = parseInt(os[13])
	datac = os[14]
	datao = os[15]
	umovecost = parseInt(os[16])
	oo = datao.split(":")
	count = 0
	for (i = 1; i <= tk_rows; i++)
	{
		city[i] = new Array()
		row = map[i]
		for (ii = 1; ii <= tk_cols; ii++)
		{
		    // Process each square.
		    // Field, water, mountain squares are fixed.
		    // But cities change sides dynamically.
			square = row.charAt(ii)
			if (square == "X") city[i][ii] = 9
			else if (square == "o") city[i][ii] = 10
			else if (square == "m") city[i][ii] = 11
			else
			{
				city[i][ii] = parseInt(datac.charAt(count))
				count++
			}
			
			// Process the q scores (defense, user count, hup).
			// Format of o = :square1x1:square1x2:square1x3....
			// Each square = :a{d1}+B{d2};{u2};{h2}
			// Lower case means defense. Upper case means defense AND player.
			// a,b,c,d,e,f,g,h correspond to side 1,2,3,4,5,6,7,8.
			q[i][ii] = new Array(0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0)
			index = (i-1) * tk_cols + ii
			t = oo[index]
			// Empty square means no defense, no player, or a mountain.
			if (t != "")
			{
    			oos = t.split("+")
    			eee = oos.length
    			// Process each side of a square.
    			for(iii = 0; iii < eee; iii++)
    			{
    			    t = oos[iii]
    			    flag = t.charAt(0)
    			    t = t.substring(1)
    			    switch (flag)
    			    {
    			        case "a":
    			            q[i][ii][1] = parseInt(t)
    			            break;
    			        case "b":
    			            q[i][ii][2] = parseInt(t)
    			            break;
    			        case "c":
    			            q[i][ii][3] = parseInt(t)
    			            break;
    			        case "d":
    			            q[i][ii][4] = parseInt(t)
    			            break;
    			        case "e":
    			            q[i][ii][5] = parseInt(t)
    			            break;
    			        case "f":
    			            q[i][ii][6] = parseInt(t)
    			            break;
    			        case "g":
    			            q[i][ii][7] = parseInt(t)
    			            break;
    			        case "h":
    			            q[i][ii][8] = parseInt(t)
    			            break;
    			        case "A":
    			            ooss = t.split(";")
    			            q[i][ii][1] = parseInt(ooss[0])
    			            q[i][ii][9] = parseInt(ooss[1])
    			            q[i][ii][17] = parseInt(ooss[2])
    			            break;
    			        case "B":
    			            ooss = t.split(";")
    			            q[i][ii][2] = parseInt(ooss[0])
    			            q[i][ii][10] = parseInt(ooss[1])
    			            q[i][ii][18] = parseInt(ooss[2])
    			            break;
    			        case "C":
    			            ooss = t.split(";")
    			            q[i][ii][3] = parseInt(ooss[0])
    			            q[i][ii][11] = parseInt(ooss[1])
    			            q[i][ii][19] = parseInt(ooss[2])
    			            break;
    			        case "D":
    			            ooss = t.split(";")
    			            q[i][ii][4] = parseInt(ooss[0])
    			            q[i][ii][12] = parseInt(ooss[1])
    			            q[i][ii][20] = parseInt(ooss[2])
    			            break;
    			        case "E":
    			            ooss = t.split(";")
    			            q[i][ii][5] = parseInt(ooss[0])
    			            q[i][ii][13] = parseInt(ooss[1])
    			            q[i][ii][21] = parseInt(ooss[2])
    			            break;
    			        case "F":
    			            ooss = t.split(";")
    			            q[i][ii][6] = parseInt(ooss[0])
    			            q[i][ii][14] = parseInt(ooss[1])
    			            q[i][ii][22] = parseInt(ooss[2])
    			            break;
    			        case "G":
    			            ooss = t.split(";")
    			            q[i][ii][7] = parseInt(ooss[0])
    			            q[i][ii][15] = parseInt(ooss[1])
    			            q[i][ii][23] = parseInt(ooss[2])
    			            break;
    			        case "H":
    			            ooss = t.split(";")
    			            q[i][ii][8] = parseInt(ooss[0])
    			            q[i][ii][16] = parseInt(ooss[1])
    			            q[i][ii][24] = parseInt(ooss[2])
    			            break;
    			    }
    			}
			}
		}
	}
}

//===========================
function draw_map1()
{
	var s, i, ii, hf, sco, side, line1, line2, row_begin, row_end, col_begin, col_end
	var u1,u2,u3,u4,u5,u6,u7,u8, uc1,uc2,uc3,uc4,uc5,uc6,uc7,uc8
	var c1,c2,c3,c4,c5,c6,c7,c8, cc1,cc2,cc3,cc4,cc5,cc6,cc7,cc8
	if (uview == 0)
	{
	    row_begin = 1
	    row_end = tk_rows
	    col_begin = 1
	    col_end = tk_cols
	}
	else if (uview == 1)
	{
	    row_begin = 1
	    row_end = 15
	    col_begin = 1
	    col_end = tk_cols
	}
	else if (uview == 2)
	{
	    row_begin = 16
	    row_end = tk_rows
	    col_begin = 1
	    col_end = tk_cols
	}
	else if (uview == 4)
	{
	    row_begin = 8
	    row_end = 22
	    col_begin = 1
	    col_end = tk_cols
	}
    u1 = 0
    u2 = 0
    u3 = 0
    u4 = 0
    u5 = 0
    u6 = 0
    u7 = 0
    u8 = 0
        uc1 = 0
        uc2 = 0
        uc3 = 0
        uc4 = 0
        uc5 = 0
        uc6 = 0
        uc7 = 0
        uc8 = 0
    cc1 = 0
    cc2 = 0
    cc3 = 0
    cc4 = 0
    cc5 = 0
    cc6 = 0
    cc7 = 0
    cc8 = 0

    s = "<table cellspacing=2 cellpadding=0 class=map>"
	
	// This is the top and bottom rows (header_footer).
	for (i = col_begin; i <= col_end; i++)
	{
	    // Corner square.
		if (i == col_begin) hf = "<td class=c>&nbsp;</td>"
		// Legend square.
		hf = hf + "<td class=l valign=middle>" + i + "</td>"
	    // Corner square.
		if (i == col_end) hf = hf + "<td class=c>&nbsp;</td>"
	}
	
	// Add row by row.
	s += "<tr>" + hf + "</tr>"
	for (i = row_begin; i <= row_end; i++)
	{
		for (ii = col_begin; ii <= col_end; ii++)
		{
			sco = q[i][ii]
			side = city[i][ii]
		    u1 = sco[9]
		    u2 = sco[10]
		    u3 = sco[11]
		    u4 = sco[12]
		    u5 = sco[13]
		    u6 = sco[14]
		    u7 = sco[15]
		    u8 = sco[16]
			    uc1 += u1
			    uc2 += u2
			    uc3 += u3
			    uc4 += u4
			    uc5 += u5
			    uc6 += u6
			    uc7 += u7
			    uc8 += u8
			if (side == 1) cc1++;
			if (side == 2) cc2++;
			if (side == 3) cc3++;
			if (side == 4) cc4++;
			if (side == 5) cc5++;
			if (side == 6) cc6++;
			if (side == 7) cc7++;
			if (side == 8) cc8++;
			
			// Legend square.
			if (ii == col_begin) st = "<td class=l valign=middle>" + i + "</td>"
			line1 = underscore(u1,u2,u3,u4)
			line2 = "<br>" + underscore(u5,u6,u7,u8)
			st += "<td valign=middle class=s" + side + " onclick=draw_map2(" + i + "," + ii + ") onmouseover=mouse_over(" + i + "," + ii + ")>" + line1 + line2 + "</td>"
			// Legend square
			if (ii == col_end) st += "<td class=l valign=middle>" + i + "</td>"
		}
		s += "<tr>" + st + "</tr>"
	}
	s += "<tr>" + hf + "</tr>"
	// Statistics below the map.
    s += "<tr><td class=s1>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[1] + " (" + uc1 + " players - " + cc1 + " cities)</td><td class=s2>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[2] + " (" + uc2 + " players - " + cc2 + " cities)</td><td class=s3>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[3] + " (" + uc3 + " players - " + cc3 + " cities)</td><td class=s4>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[4] + " (" + uc4 + " players - " + cc4 + " cities)</td></tr>"
    s += "<tr><td class=s5>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[5] + " (" + uc5 + " players - " + cc5 + " cities)</td><td class=s6>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[6] + " (" + uc6 + " players - " + cc6 + " cities)</td><td class=s7>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[7] + " (" + uc7 + " players - " + cc7 + " cities)</td><td class=s8>&nbsp;</td><td colspan=7 class=s>" + tk_kingdom[8] + " (" + uc8 + " players - " + cc8 + " cities)</td></tr>"
	s += "</table>"
	div_map.innerHTML = s
	can_act = true
}

//===========================
function draw_map2(in_row, in_col)
{
	var s, i, ii, hf, sco, side, line1, line2, row_begin, row_end, col_begin, col_end

    if ((uview != 3) && (uview != 5)) uview = 5

	// This is to prevent redraw when the user clicks on Info.	
	if (no_show)
	{
		no_show = false
		return
	}
	
	row_begin = in_row - ((uview == 3)? 1 : 2)
	if (row_begin < 1) row_begin = 1
	row_end = in_row + ((uview == 3)? 1 : 2)
	if (row_end > tk_rows) row_end = tk_rows
	col_begin = in_col - ((uview == 3)? 1 : 2)
	if (col_begin < 1) col_begin = 1
	col_end = in_col + ((uview == 3)? 1 : 2)
	if (col_end > tk_cols) col_end = tk_cols

    s = "<table cellspacing=2 cellpadding=0 class=mapb>"
	
	// This is the top and bottom rows (header_footer).
	for (i = col_begin; i <= col_end; i++)
	{
	    // Corner square.
		if (i == col_begin) hf = "<td class=c>&nbsp;</td>"
		// Legend square.
		hf = hf + "<td class=lb valign=middle>" + i + "</td>"
	    // Corner square.
		if (i == col_end) hf = hf + "<td class=c>&nbsp;</td>"
	}
	
	// Add row by row.
	s += "<tr>" + hf + "</tr>"
	for (i = row_begin; i <= row_end; i++)
	{
		for (ii = col_begin; ii <= col_end; ii++)
		{
			sco = q[i][ii]
			side = city[i][ii]
			
			// Legend square.
			if (ii == col_begin) st = "<td class=lbb valign=middle>" + i + "</td>"
			st += "<td class=s" + side + "b onclick=draw_map2(" + i + "," + ii + ") valign=middle>"
			// Mountain does not have any content.
			if (side != 11)
			{
				if (side <= 8)
				{
					st += "<a class=s" + side + " href=tk_info.aspx?x=" + ii + "&y=" + i + " target=_blank onclick=\"no_show=true\">" + cn[i][ii] + "</a><br>"
				}
				else
				{
					st += "<a class=s" + side + " href=tk_info.aspx?x=" + ii + "&y=" + i + " target=_blank onclick=\"no_show=true\">info</a><br>"
				}
				st += "pla " + dot(sco[9]) + "_" + dot(sco[10]) + "_" + dot(sco[11]) + "_" + dot(sco[12]) + "<br>"
				st += "hup " + dot(sco[17]) + "_" + dot(sco[18]) + "_" + dot(sco[19]) + "_" + dot(sco[20]) + "<br>"
				st += "def " + dot(sco[1]) + "_" + dot(sco[2]) + "_" + dot(sco[3]) + "_" + dot(sco[4]) + "<br>"
				st += "pla " + dot(sco[13]) + "_" + dot(sco[14]) + "_" + dot(sco[15]) + "_" + dot(sco[16]) + "<br>"
				st += "hup " + dot(sco[21]) + "_" + dot(sco[22]) + "_" + dot(sco[23]) + "_" + dot(sco[24]) + "<br>"
				st += "def " + dot(sco[5]) + "_" + dot(sco[6]) + "_" + dot(sco[7]) + "_" + dot(sco[8])
			}
			st += "</td>"
			// Legend square
			if (ii == col_end) st += "<td class=lbb valign=middle>" + i + "</td>"
		}
		s += "<tr>" + st + "</tr>"
	}
	s += "<tr>" + hf + "</tr>"
	s += "</table>"
	div_map.innerHTML = s
	can_act = true
}

//===========================
function underscore(v1, v2, v3, v4)
{
    if ((v1 == 0) && (v2 == 0) && (v3 == 0) && (v4 == 0)) return "&nbsp;"
    else return ((v1 == 0)? "_" : "" + v1) + ((v2 == 0)? "_" : "" + v2) + ((v3 == 0)? "_" : "" + v3) + ((v4 == 0)? "_" : "" + v4)
}

//===========================
function dot(value)
{
	if (value == 0) return "."
	else return value + ""
}

//===========================
function mouse_over(row, col)
{
	var name, t, sco

	t = city[row][col]
	name = (t <= 8)? cn[row][col] : ""
	name += " " + col + "x" + row

	if (t != 11)
	{
		sco = q[row][col]
		name += " (def: " + sco[1] + "_" + sco[2] + "_" + sco[3] + "_" + sco[4] + ")"
		name += " (hup: " + sco[17] + "_" + sco[18] + "_" + sco[19] + "_" + sco[20] + ")"
		name += " (def: " + sco[5] + "_" + sco[6] + "_" + sco[7] + "_" + sco[8] + ")"
		name += " (hup: " + sco[21] + "_" + sco[22] + "_" + sco[23] + "_" + sco[24] + ")"
		document.title = name
		window.status = name
		parent.document.title = name
		parent.window.status = name
	}
}

//===========================
function act(action, direction)
{
	if (!can_act) return
    var curtime, m, s, t, h
    if (uid == "")
    {
        alert("Please log in before you can take action.")
        return
    }
	if ((uside == 0) && (action != 0))
	{
	    alert("Please join one of the kingdoms.")
	    return
	}
    
    if (((uside > 0) && (umoves == uleft)) || ((uside == 0) && (action == 0)))
	{
		curtime = new Date()
		t = Math.ceil(curtime.valueOf()/1000)
		h = Math.round(curtime.getTimezoneOffset()/60)
		s = screen.width + "+" + screen.height + "+" + screen.colorDepth
		m = escape(navigator.appMinorVersion)
		
	    document.frm_act.a.value = action
	    document.frm_act.b.value = uacts
	    document.frm_act.d.value = direction
	    document.frm_act.t.value = t
		document.frm_act.h.value = h
		document.frm_act.s.value = s
		document.frm_act.m.value = m
		document.frm_act.submit()
	}	
	else if (uside > 0)
	{
		curtime = new Date()
		t = Math.ceil(curtime.valueOf()/1000)
		
	    document.frm_act.a.value = action
	    document.frm_act.b.value = uacts
	    document.frm_act.d.value = direction
	    document.frm_act.t.value = t
    	document.frm_act.submit()
	}
	can_act = false
}

//===========================
function yes()
{}

//===========================
function get_data(in_url)
{
    var xml
    try
    {
        xml=new XMLHttpRequest()
    }
    catch (e)
    {
        try
        {
            xml=new ActiveXObject("Msxml2.XMLHTTP")
        }
        catch (e)
        {      
            try
            {
                xml=new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e)
            {
                // Do traditional form post.
                alert("Your browser does not support AJAX.")
                return
            }
        }
    }
    
    // Process the server response here.
    xml.onreadystatechange=function()
    {
        if(xml.readyState==4)
        {
            alert(xml.responseText);
        }
    }
    
    // Send the request.
    xml.open("POST","tk_act.aspx",true);
    xml.send(null);
}

//===========================
function show_menu()
{
    var moveprice
    moveprice = Math.ceil(urank / umovecost)
    var s
    s = "<table cellspacing=0 cellpadding=5 align=center class=menu width=100%>"
    if (uid == "") s += "<tr><td colspan=3 bgcolor=navy align=center><form method=post action=login.aspx><input type=hidden name=a value=login>Username <input type=text name=username style='width:150px' maxlength=30> Password1 <input type=password name=password1 style='width:150px' maxlength=30> <input type=submit name=s value='Log In'> &nbsp; &nbsp; <a href=login.aspx class=menu target=_blank>Register</a></form></td></tr>"
    else if (uside == 0) s += "<tr><td colspan=3 bgcolor=navy align=center><input type=button onclick=act(0,1) value=\"Join " + tk_kingdom[1] + "\" class=join> <input type=button onclick=act(0,2) value=\"Join " + tk_kingdom[2] + "\" class=join> <input type=button onclick=act(0,3) value=\"Join " + tk_kingdom[3] + "\" class=join> <input type=button onclick=act(0,4) value=\"Join " + tk_kingdom[4] + "\" class=join> <input type=button onclick=act(0,5) value=\"Join " + tk_kingdom[5] + "\" class=join> <input type=button onclick=act(0,6) value=\"Join " + tk_kingdom[6] + "\" class=join> <input type=button onclick=act(0,7) value=\"Join " + tk_kingdom[7] + "\" class=join> <input type=button onclick=act(0,8) value=\"Join " + tk_kingdom[8] + "\" class=join></form></td></tr>"
    s += "<tr><td width=35%>" + username + " - " + tk_kingdom[uside] + " - rank: " + tk_level[urank] + " - <a href=login.aspx target=_blank class=menu>profile</a> - <a href=login.aspx?a=logout class=menu>logout</a><br>location: " + ucol + " x " + urow + " - maneuvers: " + umoves + " - hup: " + uhup + " - axes: " + uaxes + "<br>resupply: " + uresupply + " - now: " + unow + "</td>"
    s += "<td width=30% align=center><table cellspacing=0 cellpadding=0><tr><td><table cellspacing=0 cellpadding=0><tr><td><input type=button class=ma id=m4 onclick=act(1,4) value=\"\\\"></td><td><input type=button class=ma id=m3 onclick=act(1,3) value=\"|\"></td><td><input type=button class=ma id=m2 onclick=act(1,2) value=\"/\"></td></tr><tr><td><input type=button class=ma id=m5 onclick=act(1,5) value=\"--\"></td><td style=\"text-align:center\">" + moveprice + "</td><td><input type=button class=ma id=m1 onclick=act(1,1) value=\"--\"></td></tr><tr><td><input type=button class=ma id=m6 onclick=act(1,6) value=\"/\"></td><td><input type=button class=ma id=m7 onclick=act(1,7) value=\"|\"></td><td><input type=button class=ma id=m8 onclick=act(1,8) value=\"\\\"></td></tr></table></td><td><table cellspacing=0 cellpadding=0><tr><td align=center>20 hups</td></tr><tr><td align=center style=\"padding:0px 15px 0px 15px;\"><input type=button class=def id=def onclick=act(2,0) value=\"defense\"></td></tr><tr><td align=center><span style=\"float:left\">move</span> <span style=\"float:right\">attack</span></td></tr></table></td><td><table cellspacing=0 cellpadding=0><tr><td><input type=button class=ma id=a4 onclick=act(3,4) value=\"\\\"></td><td><input type=button class=ma id=a3 onclick=act(3,3) value=\"|\"></td><td><input type=button class=ma id=a2 onclick=act(3,2) value=\"/\"></td></tr><tr><td><input type=button class=ma id=a5 onclick=act(3,5) value=\"--\"></td><td><input type=button class=ma id=a0 onclick=act(3,0) value=\"O\"></td><td><input type=button class=ma id=a1 onclick=act(3,1) value=\"--\"></td></tr><tr><td><input type=button class=ma id=a6 onclick=act(3,6) value=\"/\"></td><td><input type=button class=ma id=a7 onclick=act(3,7) value=\"|\"></td><td><input type=button class=ma id=a8 onclick=act(3,8) value=\"\\\"></td></tr></table></td></tr></table></td>"
    s += "<td width=35% align=right><a href=tk_forum.aspx target=_blank><font color=yellow>DIPLOMACY</font></a> - - - <a href=tk_map.aspx class=menu>refresh map</a> - - - <font color=yellow>map by GuoJia</font><br><a href=tk_rules.aspx class=menu target=_blank>Game 52's Rules</a> - <a href=tk_info.aspx class=menu target=_blank>Statistics</a><br><a href=tk.aspx?a=view&z=0 class=menu>full</a> - <a href=tk.aspx?a=view&z=1 class=menu>north</a> - <a href=tk.aspx?a=view&z=4 class=menu>middle</a> - <a href=tk.aspx?a=view&z=2 class=menu>south</a> - <a href=tk.aspx?a=view&z=3 class=menu>fast3</a> - <a href=tk.aspx?a=view&z=5 class=menu>fast5</a> - <a href=tk.aspx?a=view&z=-1 class=menu>hide</a></td></tr>"
    s += "<form name=frm_act method=post action=tk.aspx>"
    s += "<input type=hidden name=a><input type=hidden name=b><input type=hidden name=d><input type=hidden name=t><input type=hidden name=h><input type=hidden name=s><input type=hidden name=m>"
    s += "</form></table>"
    document.getElementById("div_menu").innerHTML = s
}


//-->


