//copyright 2001 Robert M. Hanson, St. Olaf College, Northfield, MN 55057

//showmod is an external reference--what happens when the user clicks



Compound=new Array()
Compound[0]=new Array(0,0,0,0,0,0) //benzene
Compound[1]=new Array(0,0,0,0,0,0) //benzene
hwidth=null

function getCompoundfromlist(Cmpd,s){
 var S=s.split(",")
 for (var i=0;i<6;i++)Cmpd[i]=findsub(Group,S[i])
}

function drawsub(cmpd,which,i,ishighlight){
 var newsub=Group[i][0]
 var cpoint=newsub.indexOf("|")
 if(hwidth==null)hwidth=divwidth("H"+cmpd+"1")
 if(which<=3){
	sgroup=newsub.substring(0,cpoint);
 }else{
	sgroup=newsub.substring(cpoint+1,newsub.length);
 }
 if(i>0)sgroup=setsubs(sgroup,Group[i][1])
 if(ishighlight)sgroup="<font color=red>"+sgroup+"</color>"
 writediv("H"+cmpd+""+which,sgroup)
 if(which>3)movedivleft("H"+cmpd+""+which,startleft[cmpd]+hwidth-divwidth("H"+cmpd+""+which))
 return (ishighlight?1:0)
}

function doclick(icmpd,which){
	var d=getdivlistbox("info"+icmpd,"form"+icmpd+".thegroup")
	ipt=d.selectedIndex-1
	var i=-1
	while(i<0){
		ipt++
		i=d[ipt].value
	}
	d.selectedIndex=ipt
        if(Compound[icmpd][which]==i)i=0
        Compound[icmpd][which]=i
 	drawsub(icmpd,which,i,0)
	showmod(icmpd)
}

function findsub(A,s){
 for(var i=0;i<A.length;i++){
	if(A[i][0].indexOf(s+"|")==0)return i
 }
 return 0
}



function groupname(i){
 var s=Group[i][0]
 return s.substring(0,s.indexOf("|"))
}

function getCompoundfromlist(Cmpd,s){
 var S=s.split(",")
 for (var i=0;i<6;i++)Cmpd[i]=findsub(Group,S[i])
}


////utilities////

minussign="&#150;"
sdigits=" 0123456789"

function rand(n){return Math.floor(Math.random()*n)}

function copyarray(A,B, inot){
 for(var i=0;i<A.length;i++)B[i]=(i==inot?0:A[i])
}

function setsubs(sform,icharge)
{
 var s=""
 var sf=""
 for (var i=0;i<sform.length;i++)
 {
  s=sform.charAt(i)
  sf=sf + (sdigits.indexOf(s)>0?"<sub>"+s+"</sub>":s)
 }
//# 630
 if(icharge)sf+="<sup>"
  +(icharge==1 || icharge==-1?"":Math.abs(icharge))
  +(icharge>0?"+":minussign)
  +"</sup>"
 return sf
}

function strsub(ssub,ch1,ch2)
{
//# 430
 if (ssub.length==0) return ""
 if (ch1.length==0 || ch2.length>0 && ch2.indexOf(ch1)>=0) return ssub
 var s=ssub
 var i=s.indexOf(ch1)
 while (i>=0)
 {
  s=s.substring(0,i) + ch2 + s.substring(i+ch1.length,s.length)
  i=s.indexOf(ch1)
 }
 return s
}

function setselect(iaction,what,A,idef,skeepset,skeep){
 var sout=(arguments.length==5?"<option value=0>"+skeepset+"</option>":"")
 var ipt=0
 var s=""
 var itest=(arguments.length>=6)
 for (var i=0;i<A.length;i++){
  s=(A[i].length<6?A[i][0]:A[i])
  ipt=s.indexOf("|")
  if(ipt>=0){
	if(itest && skeepset.indexOf(s.charAt(ipt+1))>=0){
		if(skeep.length>0 && skeep.indexOf(s.charAt(ipt+1))<0)s=""
	}			
	s=s.substring(0,ipt)
	ipt=i
  }else{
	ipt=-1
  }
  if(s.length)sout+="\n<option "+(i==idef?"selected ":"")+" value='"+ipt+"'>"+s+"</option>"
 }

 s="<br><select  name="+what+(iaction>=0?" onchange='do"+what+"("+iaction+")'":"")+">"+sout+"\n</select>"
 return s
}

thisquest=-1
questlist=""

function nextquest(ntypes){
 if(questlist.length==0){
  questlist=randomlist(ntypes,2)
  if(thisquest>=0)alert("You have tried all the examples. Starting over.")
 }
 thisquest=parseInt(questlist.substring(0,2))
 questlist=questlist.substring(2,questlist.length)
 return thisquest
}

function randomlist(ntypes,nlen){
 var s=""
 for (var i=1;i<=ntypes;i++){
  var si=i+"    "
  if(Math.random()>0.5){
	s+=si.substring(0,nlen)
  }else{
	s=si.substring(0,nlen)+s
  }
 }	
 return s
}
