O=[];
BR=ce('br');

function main()
	{
	boss=0;
	heart=0;
	subcap=0;
	for(i=0;i<24;i+=3){if(c(i)){boss++;}}
	for(i=1;i<24;i+=3){if(c(i)){heart++;}}
	for(i=2;i<24;i+=3){if(c(i)){subcap++;}}

	if(boss==8)
		{
		if(n(0)||n(1)||n(2))
			{
			alert("You can\'t have X-Hunters wandering the map during the Sigma Stages.\n\nThese values will be reset for you.");
			S(0);di(24,0);
			S(1);di(25,0);
			S(2);di(26,0);
			}
		}

	O[0]=(heart&1)?(c(15))?(c(22))?5:4:(c(22))?3:2:(c(15))?c(22)?6:1:(c(22))?8:7;
	O[1]=(c(25))?(c(8))?(c(13))?4:6:(c(13))?3:7:(c(8))?c(13)?1:5:(c(13))?2:8;
	O[2]=(subcap&1)?(c(24))?(c(9))?5:3:(c(9))?1:8:(c(24))?c(9)?7:4:(c(9))?6:2;
	O[3]=(sl(1,3))?(c(0))?(c(5))?2:5:(c(5))?6:3:(c(0))?c(5)?4:8:(c(5))?7:1;
	O[4]=(n(2))?(c(23))?(c(19))?4:1:(c(19))?2:5:(c(23))?c(19)?6:8:(c(19))?3:7;
	O[5]=(sl(2,3)||v(3,4))?(c(16))?5:7:(c(16))?3:2;
	O[6]=(n(0)+sl(1,2)+n(2)+c(27)&1)?(sl(0,4)+v(3,1)+v(3,3)&1)?(c(12))?1:2:(c(12))?4:7:(sl(0,4)+v(3,1)+v(3,3)&1)?c(12)?8:6:(c(12))?5:3;
	O[7]=(sl(1,4))?(c(20))?(c(1))?5:4:(c(1))?3:1:(c(20))?c(1)?7:8:(c(1))?6:2;
	O[8]=(sl(1,0))?(c(17))?(c(10))?4:8:(c(10))?2:7:(c(17))?c(10)?6:1:(c(10))?5:3;
	O[9]=(c(26))?(c(21))?(c(4))?7:5:(c(4))?6:4:(c(21))?c(4)?8:2:(c(4))?3:1;
	O[10]=(n(1)||c(25))?(sl(0,0))?(c(18))?7:1:(c(18))?8:4:(sl(0,0))?c(18)?6:3:(c(18))?2:5;
	O[11]=(c(14))?c(6)?8:6:c(6)?4:1;
	O[12]=(c(3))?c(2)?7:8:c(2)?5:2;
	O[13]=(boss&1)?(sl(0,3))?(c(7))?3:8:(c(7))?5:4:(sl(0,3))?c(7)?1:7:(c(7))?2:6;
	O[14]=(n(0))?(sl(2,4))?(c(11))?1:6:(c(11))?5:8:(sl(2,4))?c(11)?7:3:(c(11))?2:4;
//	O[14]=(n(0))?((sl(2,4))&&boss!=8)?(c(11))?1:6:(c(11))?5:8:(sl(2,4))?c(11)?7:3:(c(11))?2:4;

	if(c(24)+sl(0,1)+c(26)+v(3,1)+v(3,3)+v(3,4)&1)
		{
		if(v(2,0)||v(2,2)||v(2,5)){O[15]=3;}
		if(v(2,1)||v(2,7)||v(3,2)||v(3,3)){O[15]=1;}
		if(v(2,3)||v(2,8)){O[15]=2;}
		if(v(2,4)||v(2,6)){O[15]=6;}
		}
	else
		{
		if(v(2,0)||v(2,2)||v(2,5)){O[15]=6;}
		if(v(2,1)||v(2,7)||v(3,2)||v(3,3)){O[15]=2;}
		if(v(2,3)||v(2,8)){O[15]=1;}
		if(v(2,4)||v(2,6)){O[15]=3;}
		}
	sig();
	gen();
	}

function res()
	{
	OUT=gid('out');
	if(OUT.firstChild){OUT.removeChild(OUT.firstChild);}
	}

function sl(X,Y)
	{
	X=s(X);
	switch(Y)
		{
		case 0:
			return (X==1||X==3||X==7||X==8)?1:0;
		case 1:
			return (X==1||X==4||X==6||X==7)?1:0;
		case 2:
			return (X==2||X==3||X==5||X==8)?1:0;
		case 3:
			return (X==3||X==5||X==6||X==7)?1:0;
		case 4:
			return (X==4||X==5||X==7||X==8)?1:0;
		}
	}

function xhb(X,Y)
	{
	if(c(X))
		{
		if(boss<2)
			{
			if(!confirm("This won\'t have a permanent effect on your password until you beat 2 Mavericks.\n\nContinue anyway?")){C(X,0);return;}
			}
		ds(Y);
		}
	else{if(!c(27)){ds(Y,0);}}
	}

function xhl(X)
	{
	if(n(X)){di(X+24);}
	else{di(X+24,0);}
	}

function newgame()
	{
	if(c(27))
		{
		if(confirm('All Weapon, Heart, Sub-Tank, and Capsule data will be lost. Continue?'))
			{
			for(i=0;i<24;i++){C(i,0);di(i);}
			for(i=0;i<3;i++){S(i);ds(i);di(i+25,0);}
			}
		else{C(27,0);}
		}
	else
		{
		for(i=0;i<24;i++){di(i,0);}
		for(i=0;i<3;i++){if(!(c(i+24))){ds(i,0);}}
		}
	}

function sig()
	{
	if(boss<8)
		{
		if(s(3)>0){alert('You can\'t change this until you beat all the Mavericks.');S(3);}
		}
	}

function gen()
	{
	res();
	RES=ce('div');
	for(i=0;i<16;i++)
		{
		RES.appendChild(ctn(O[i]));
		if(!((i+1)&3)){RES.appendChild(BR.cloneNode(0));}
		}
	OUT.appendChild(RES);
	}
