Multi=new Array("","","di","tri","tetra","penta","hexa","hepta","octa")
Symmetry=new Array("0,0,0,0,0,0","1,2,3,4,5,6",0,""
//used in arosel and arosyn
//substituents,equiv. Hs,#uniquesubs,naming info
 ,"1,0,0,0,0,0","0,1,2,3,2,1",1,"|1"
 ,"0,1,1,0,0,0","1,0,0,1,2,2",1,"o-di|1"
 ,"0,1,0,1,0,0","1,0,2,0,1,3",1,"m-di|1" 
 ,"0,1,0,0,1,0","1,0,1,1,0,1",1,"p-di|1"
 ,"0,1,1,1,0,0","1,0,0,0,1,2",1,"1,2,3-tri|1"
 ,"0,1,1,0,1,0","1,0,0,2,0,3",1,"1,2,4-tri|1"
 ,"0,1,0,1,1,0","1,0,2,0,0,3",1,"1,2,4-tri|1"
 ,"0,1,0,1,0,1","1,0,1,0,1,0",1,"1,3,5-tri|1"
 ,"0,1,1,1,1,0","1,0,0,0,0,1",1,"1,2,3,4-tetra|1"
 ,"0,1,1,1,0,1","1,0,0,0,1,0",1,"1,2,3,5-tetra|1"
 ,"0,1,1,0,1,1","1,0,0,1,0,0",1,"1,2,4,5-tetra|1"
 ,"0,1,1,1,1,1","1,0,0,0,0,0",1,"penta|1"
 ,"1,1,1,1,1,1","0,0,0,0,0,0",1,"hexa|1"
 ,"0,1,2,0,0,0","1,0,0,2,3,4",2,""
 ,"0,2,1,0,0,0","1,0,0,2,3,4",2,""
 ,"0,1,0,2,0,0","1,0,2,0,3,4",2,""
 ,"0,2,0,1,0,0","1,0,2,0,3,4",2,""
 ,"0,1,0,0,2,0","1,0,1,2,0,2",2,""
 ,"0,1,2,1,0,0","1,0,0,0,1,2",2,""
 ,"0,2,1,2,0,0","1,0,0,0,1,2",2,""
 ,"0,1,0,1,0,2","1,0,2,0,1,0",2,"" 
 ,"0,2,0,2,0,1","1,0,2,0,1,0",2,"" 
 ,"0,1,0,2,2,2","1,0,1,0,0,0",2,""
 ,"0,2,0,1,1,1","1,0,1,0,0,0",2,""
 ,"0,1,2,2,1,0","1,0,0,0,0,1",2,""
 ,"0,1,0,2,1,2","1,0,1,0,0,0",2,""
 ,"0,2,0,1,2,1","1,0,1,0,0,0",2,""
 ,"0,1,2,0,1,2","1,0,0,1,0,0",2,""
 ,"0,2,1,0,2,1","1,0,0,1,0,0",2,""
 ,"0,1,2,1,0,3","1,0,0,0,1,0",3,""
 ,"0,2,1,2,0,3","1,0,0,0,1,0",3,""
 ,"0,2,3,2,0,1","1,0,0,0,1,0",3,""
)

function checksymmetry(S,A){
 //returns array A:
 //A[0]=pointer into Symmetry
 //A[1]=rotational position into Symmetry[A[0]]
 //A[2]=#uniuesubs
 //A[3]=nameinfo
 //A[4]=Symmetry entry already rotated
 //returns scalar A[0]*100+A[1]
 var isnew=false
 var ipos=-1
 var st=""
 var N=new Array(0,0,0,0,0,0)
 var nsubs=getsubsets(S,N)
 var s=N.toString()
 if(nsubs==0)return 0
 for(var i=0;i<Symmetry.length;i+=4){
	st=Symmetry[i]+","+Symmetry[i]
	ipos=st.indexOf(s)
	if(ipos>=0){
		isnew=i*100+ipos/2
		A[0]=i
		A[1]=ipos/2
		A[2]=Symmetry[i+2]
		A[3]=Symmetry[i+3]
		A[4]=s
		return isnew
	}
 }
 return -1
}

function getsubsets(S,N){
 var isnew=false
 var nnew=0
 var nsubs=0
 var ifirst=-1
 for(var i=0;i<6;i++){
   if(S[i]>0){
    if(ifirst<0)ifirst=i
    nsubs++
    isnew=true
    for(var j=0;j<i;j++){
	if(isnew && S[j]==S[i]){
		if(N[j]==0){nnew++;N[j]=nnew}
		N[i]=N[j]
		isnew=false
	}
    }
    if(isnew){nnew++;N[i]=nnew}
   }
 }
 return nnew
}

