var ahex = new Array(64)
ahex["111111"]=1;ahex["000000"]=2;ahex["100010"]=3;ahex["010001"]=4
ahex["111010"]=5;ahex["010111"]=6;ahex["010000"]=7;ahex["000010"]=8
ahex["111011"]=9;ahex["110111"]=10;ahex["111000"]=11;ahex["000111"]=12
ahex["101111"]=13;ahex["111101"]=14;ahex["001000"]=15;ahex["000100"]=16
ahex["100110"]=17;ahex["011001"]=18;ahex["110000"]=19;ahex["000011"]=20
ahex["100101"]=21;ahex["101001"]=22;ahex["000001"]=23;ahex["100000"]=24
ahex["100111"]=25;ahex["111001"]=26;ahex["100001"]=27;ahex["011110"]=28
ahex["010010"]=29;ahex["101101"]=30;ahex["001110"]=31;ahex["011100"]=32
ahex["001111"]=33;ahex["111100"]=34;ahex["000101"]=35;ahex["101000"]=36
ahex["101011"]=37;ahex["110101"]=38;ahex["001010"]=39;ahex["010100"]=40
ahex["110001"]=41;ahex["100011"]=42;ahex["111110"]=43;ahex["011111"]=44
ahex["000110"]=45;ahex["011000"]=46;ahex["010110"]=47;ahex["011010"]=48
ahex["101110"]=49;ahex["011101"]=50;ahex["100100"]=51;ahex["001001"]=52
ahex["001011"]=53;ahex["110100"]=54;ahex["101100"]=55;ahex["001101"]=56
ahex["011011"]=57;ahex["110110"]=58;ahex["010011"]=59;ahex["110010"]=60
ahex["110011"]=61;ahex["001100"]=62;ahex["101010"]=63;ahex["010101"]=64


function synchnrs(frm) {
	if (validate(frm, false)) {
		var sHexorg = ""
		var sHexcha = ""

		for (nr=1;nr<=6;nr++) {
			sHexorg += frm["line" + nr].value %2 ? '1':'0'
			sHexcha += frm["line" + nr].value <8 ? '1':'0'
		}

		frm["hexorg"].value = ahex[sHexorg]
		frm["hexchange"].value = ahex[sHexcha]
	}
}


function synchlines(bHexorg) {
	var hexnr, aLines, i, lntype
	var frm=document.forms[0]

	if (bHexorg)
		hexnr=frm["hexorg"].value
	else
		hexnr=frm["hexchange"].value

	if((hexnr.length>0) && hexnr!=String(parseInt(hexnr))) {
		hexnr=parseInt(hexnr);
		if (isNaN(hexnr))
			hexnr=""
		if (bHexorg)
			frm["hexorg"].value=hexnr
		else
			frm["hexchange"].value=hexnr
	}

	aLines=gethexlines(hexnr)

	for (i=6; i>0; i--) {
		if (aLines==false) {
			frm["CheckChange" + i].checked = false
			if (!bHexorg)
				setLine("X", i, linetype["A" + i], linestate["A" + i])
		} else {
			if (aLines[i]==0)
				lntype="yin"
			else
				lntype="yang"

			if (bHexorg)
				setLine("A", i, lntype, false)
			else
				setLine("X", i, lntype, false)

			if (bHexorg && (frm["hexchange"].value.length==0))
				setLine("X", i, linetype["A"+i], linestate["A"+i])

			if ((linetype["A"+i]!="empty") && (linetype["X"+i]!="empty"))
				frm["CheckChange"+i].checked = (linetype["A"+i] != linetype["X"+i])
		}
	}
}


function gethexlines(hexnr) {
	var h1, h2, h3, h4, h5, h6
	var lines, aLines
	aLines=new Array(6)

	if (hexnr<1 || hexnr>64)
		return false

	for (h1=0; h1<=1; h1++) {
		for (h2=0; h2<=1; h2++) {
			for (h3=0; h3<=1; h3++) {
				for (h4=0; h4<=1; h4++) {
					for (h5=0; h5<=1; h5++) {
						for (h6=0; h6<=1; h6++) {
							lines=String(h1)+String(h2)+String(h3)+String(h4)+String(h5)+String(h6)
							if (ahex[lines]==hexnr) {
								aLines[1]=h1
								aLines[2]=h2
								aLines[3]=h3
								aLines[4]=h4
								aLines[5]=h5
								aLines[6]=h6

								return aLines;
							}
						}
					}
				}
			}
		}
	}
	return false
}
