var hnum=0;
var onum=0;
var moving=0;
var head=new Array;
var angle=new Array;
var dird=new Array;
var diru=new Array;
var spec="nothing";
var spechead=0;
var selected=0;
var bkup=0;
var majorH=25;
var minorH=15;

function header(n, nu)
{
this.name=n;
this.numb=nu;
hnum++;
onum+=nu;
}

function endtag()
{
this.numb=0;
}

function clear() {for (i=0; i<(hnum+onum); i++) angle[i]=0;}

function scrollTo(layerName,left,top)
{
if (type=="NN") eval("document."+layerName+".top="+top);
if (type=="IE") eval(layerName+".style.posTop="+top);
if (type=="NN") eval("document."+layerName+".left="+left);
if (type=="IE") eval(layerName+".style.posLeft="+left);
}

function move(name,number,srcleft,srctop,destleft,desttop)
{
var lft,tp;
lft=(destleft-srcleft)*((1-Math.cos(angle[number]*3.141592/90))/2);
tp=(desttop-srctop)*((1-Math.cos(angle[number]*3.141592/90))/2);
angle[number]+=6;
scrollTo(name,srcleft+lft,srctop+tp);
if (angle[number]<=90) {timer=setTimeout("move(\""+name+"\","+number+","+srcleft+","+srctop+","+destleft+","+desttop+")",25);}
else {moving--;angle[number]=0;
if (moving==0)
	{
	if (spec=="mvopts") mvopts(spechead);
	if (spec=="mvheads") {bkup=spechead;spec="nothing";cl(21);}
	if (spec=="cl") {spec="mvopts";cl(spechead);}
	}
}
}

function start()
{
head[0]=new header("A",11);
head[1]=new header("B",3);
head[2]=new header("C",2);
head[3]=new header("D",4);
head[4]=new header("E",9);
head[5]=new header("F",2);
head[6]=new header("G",2);
head[7]=new header("H",2);
head[8]=new header("I",9);
head[9]=new header("J",3);
head[21]=new endtag();
clear();
for (i=0; i<hnum; i++) {moving++;timer=setTimeout("move(\""+head[i].name+"\","+i+","+(-500)+","+(50+(i*majorH*2))+","+(10)+","+(10+(i*majorH))+")",i*100);}
}

function hit(number)
{
if (moving==0)
{
if (spec=="nothing")
{
bkup=21;
spec="mvopts";
spechead=number;
cl(number);
if (hnum-1-number==0) mvopts(spechead);
}
else if (spec=="select" && selected==number)
{
var opn=head[number].numb/2;
for (i=0; i<head[number].numb; i++) {moving++;timer=setTimeout("move(\""+head[number].name+i+"\","+i+","+(10)+","+(10+majorH+(number*majorH)+(i*minorH))+","+(-500)+","+(10+majorH+(number*majorH)+(majorH*(0.5+i-opn))+(i*minorH))+")",i*100);};
spec="mvheads";
spechead=number;
}
else if (spec=="select" && selected!=number)
{
var opn=head[selected].numb/2;
for (i=0; i<head[selected].numb; i++) {moving++;timer=setTimeout("move(\""+head[selected].name+i+"\","+i+","+(10)+","+(10+majorH+(selected*majorH)+(i*minorH))+","+(-500)+","+(10+majorH+(selected*majorH)+(majorH*(0.5+i-opn))+(i*minorH))+")",i*100);};
spec="cl";
spechead=number;
bkup=selected;
}
}
}

function cl(number)
{
var start=new Array;
var end=new Array;
var up=0,down=0,start,end;
for (i=1; i<hnum; i++) {
start[i]=(10+(i*majorH));
if (i>bkup) {start[i]+=head[bkup].numb*minorH}
end[i]=(10+(i*majorH));
if (i>number) {end[i]+=head[number].numb*minorH}
if (start[i]<end[i]) {dird[down]=i;down++;}
else if (end[i]<start[i]) {diru[up]=i;up++;}
}
for (i=0; i<down; i++)
{
moving++;timer=setTimeout("move(\""+head[dird[i]].name+"\","+dird[i]+","+(10)+","+start[dird[i]]+","+(10)+","+end[dird[i]]+")",(down-i)*100);
}
for (i=0; i<up; i++)
{
moving++;timer=setTimeout("move(\""+head[diru[i]].name+"\","+diru[i]+","+(10)+","+start[diru[i]]+","+(10)+","+end[diru[i]]+")",i*100);
}
}

function mvopts(number)
{
var opn=head[number].numb/2;
for (i=0; i<head[number].numb; i++) {moving++;timer=setTimeout("move(\""+head[number].name+i+"\","+i+","+(-500)+","+(10+majorH+(number*majorH)+(majorH*(0.5+i-opn))+(i*minorH))+","+(10)+","+(10+majorH+(number*majorH)+(i*minorH))+")",i*100);};
spec="select";
selected=number;
}