function boxClick() {
	name=this.id
	action=""
	if (this.checked)
		action="check"
	else
		action="uncheck"
	
	eval(name+"."+action+"()")

}

function check() {
	if (!this.box.checked)
		this.box.checked=true
	var i=0
	for (i=0; i<this.parents.length; i++)
		this.parents[i].check()
	
}

function uncheck(toUncheck) {
	if (this.box.checked)
		this.box.checked=false
	var i=0
	for (i=0; i<this.children.length; i++)
		this.children[i].uncheck()
}

function weaponTreeNode(name) {
	this.box=document.getElementById(name)
	this.children=new Array()
	this.parents=new Array()
	
	this.check=check
	this.uncheck=uncheck
	this.boxClick=boxClick
	
	this.box.onclick=this.boxClick
	
	var i=1
	for (i=1; i<arguments.length; i++)
		relate(arguments[i], this)
}

function relate(parent, child) {
	parent.children[parent.children.length]=child
	child.parents[child.parents.length]=parent
}

anyWeapon=new weaponTreeNode("anyWeapon")
	anyMelee=new weaponTreeNode("anyMelee", anyWeapon)
		oneHmelee=new weaponTreeNode("oneHmelee", anyMelee)
		twoHmelee=new weaponTreeNode("twoHmelee", anyMelee)
		polearmGrp=new weaponTreeNode("polearmGrp", anyMelee)
		axeGrp=new weaponTreeNode("axeGrp", anyMelee)
			battleaxe=new weaponTreeNode("battleaxe", axeGrp, oneHmelee)
			greataxe=new weaponTreeNode("greataxe", axeGrp, twoHmelee)
			halberd=new weaponTreeNode("halberd", axeGrp, twoHmelee, polearmGrp)
			handaxe=new weaponTreeNode("handaxe", axeGrp, oneHmelee)
		flailGrp=new weaponTreeNode("flailGrp", anyMelee)
			flail=new weaponTreeNode("flail", flailGrp, oneHmelee)
			greatclub=new weaponTreeNode("greatclub", flailGrp, twoHmelee)
			heavyFlail=new weaponTreeNode("heavyFlail", flailGrp, twoHmelee)
			spikedChain=new weaponTreeNode("spikedChain", flailGrp, twoHmelee)
		hammerGrp=new weaponTreeNode("hammerGrp", anyMelee)
			throwingHammer=new weaponTreeNode("throwingHammer", hammerGrp, oneHmelee)
			maul=new weaponTreeNode("maul", hammerGrp, twoHmelee)
			warhammer=new weaponTreeNode("warhammer", hammerGrp, oneHmelee)
		heavyBladeGrp=new weaponTreeNode("heavyBladeGrp", anyMelee)
			bastardSword=new weaponTreeNode("bastardSword", heavyBladeGrp, oneHmelee)
			longsword=new weaponTreeNode("longsword", heavyBladeGrp, oneHmelee)
			scimitar=new weaponTreeNode("scimitar", heavyBladeGrp, oneHmelee)
			falchion=new weaponTreeNode("falchion", heavyBladeGrp, twoHmelee)
			greatsword=new weaponTreeNode("greatsword", heavyBladeGrp, twoHmelee)
			scythe=new weaponTreeNode("scythe", heavyBladeGrp, twoHmelee)
			glaive=new weaponTreeNode("glaive", heavyBladeGrp, twoHmelee, polearmGrp)
		lightBladeGrp=new weaponTreeNode("lightBladeGrp", anyMelee)
			dagger=new weaponTreeNode("dagger", lightBladeGrp, oneHmelee)
			katar=new weaponTreeNode("katar", lightBladeGrp, oneHmelee)
			rapier=new weaponTreeNode("rapier", lightBladeGrp, oneHmelee)
			sickle=new weaponTreeNode("sickle", lightBladeGrp, oneHmelee)
			shortSword=new weaponTreeNode("shortSword", lightBladeGrp, oneHmelee)
		maceGrp=new weaponTreeNode("maceGrp", anyMelee)
			club=new weaponTreeNode("club", maceGrp, oneHmelee)
			mace=new weaponTreeNode("mace", maceGrp, oneHmelee)
			morningstar=new weaponTreeNode("morningstar", maceGrp, twoHmelee)
		pickGrp=new weaponTreeNode("pickGrp", anyMelee)
			warPick=new weaponTreeNode("warPick", pickGrp, oneHmelee)
		spearGrp=new weaponTreeNode("spearGrp", anyMelee)
			javelin=new weaponTreeNode("javelin", spearGrp, oneHmelee)
			longspear=new weaponTreeNode("longspear", spearGrp, twoHmelee, polearmGrp)
			spear=new weaponTreeNode("spear", spearGrp, oneHmelee)
		staffGrp=new weaponTreeNode("staffGrp", anyMelee)
			quarterstaff=new weaponTreeNode("quarterstaff", staffGrp, twoHmelee)
	anyRanged=new weaponTreeNode("anyRanged", anyWeapon)
		bowGrp=new weaponTreeNode("bowGrp", anyRanged)
			longbow=new weaponTreeNode("longbow", bowGrp)
			shortbow=new weaponTreeNode("shortbow", bowGrp)
		crossbowGrp=new weaponTreeNode("crossbowGrp", anyRanged)
			crossbow=new weaponTreeNode("crossbow", crossbowGrp)
			handCrossbow=new weaponTreeNode("handCrossbow", crossbowGrp)
		slingGrp=new weaponTreeNode("slingGrp", anyRanged)
			sling=new weaponTreeNode("sling", slingGrp)
		lightBladeRangedGrp=new weaponTreeNode("lightBladeRangedGrp", anyRanged)
		thrownGrp=new weaponTreeNode("thrownGrp", anyRanged)
			shuriken=new weaponTreeNode("shuriken", lightBladeRangedGrp, thrownGrp)
		

/* Adventurer's Vault */
broadsword=new weaponTreeNode("broadsword", heavyBladeGrp, oneHmelee);
craghammer=new weaponTreeNode("craghammer", hammerGrp, oneHmelee);
doubleAxe=new weaponTreeNode("doubleAxe", axeGrp, twoHmelee);
doubleFlail=new weaponTreeNode("doubleFlail", flailGrp, twoHmelee);
doubleSword=new weaponTreeNode("doubleSword", heavyBladeGrp, lightBladeGrp, twoHmelee);
executionAxe=new weaponTreeNode("executionAxe", axeGrp, twoHmelee);
fullblade=new weaponTreeNode("fullblade", heavyBladeGrp, twoHmelee);
greatbow=new weaponTreeNode("greatbow", bowGrp);
greatspear=new weaponTreeNode("greatspear", polearmGrp, spearGrp, twoHmelee);
heavyWarPick=new weaponTreeNode("heavyWarPick", pickGrp, twoHmelee);
khopesh=new weaponTreeNode("khopesh", axeGrp, heavyBladeGrp, oneHmelee);
kukri=new weaponTreeNode("kukri", lightBladeGrp, oneHmelee);
lightWarPick=new weaponTreeNode("lightWarPick", pickGrp, oneHmelee);
mordenkrad=new weaponTreeNode("mordenkrad", hammerGrp, twoHmelee);
parryingDagger=new weaponTreeNode("parryingDagger", lightBladeGrp, oneHmelee);
repeatingCrossbow=new weaponTreeNode("repeatingCrossbow", crossbowGrp);
scourge=new weaponTreeNode("scourge", flailGrp, oneHmelee);
spikedGauntlet=new weaponTreeNode("spikedGauntlet", oneHmelee);
spikedShield=new weaponTreeNode("spikedShield", lightBladeGrp, oneHmelee);
superiorCrossbow=new weaponTreeNode("superiorCrossbow", crossbowGrp);
tratnyr=new weaponTreeNode("tratnyr", spearGrp, oneHmelee);
trident=new weaponTreeNode("trident", spearGrp, oneHmelee);
tripleHeadedFlail=new weaponTreeNode("tripleHeadedFlail", flailGrp, oneHmelee);
urgrosh=new weaponTreeNode("urgrosh", axeGrp, spearGrp, twoHmelee);
waraxe=new weaponTreeNode("waraxe", axeGrp, oneHmelee);
