// Gas Laws - Avogadro's Law Script
thepage="Gas Laws - Avogadro's Law"
//updated 11/18/02-netscape 7
//global variables
//refnumber=55
attempts=0
which=0
theanswer=0
corrt=0
totl=0
tried=0
missing=""
function parts(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10){
	this.p1=p1
	this.p2=p2
	this.p3=p3
	this.p4=p4
	this.p5=p5
	this.p6=p6
	this.p7=p7
	this.p8=p8
	this.p9=p9
	this.p10=p10
}
avos="<br>V<SUB>1</SUB>/n<SUB>1</SUB>=V<SUB>2</SUB>/n<SUB>2</SUB>"
avoslaws=new Array("=>V<SUB>1</SUB>=V<SUB>2</SUB>n<SUB>1</SUB>/n<SUB>2</SUB>","=>n<SUB>1</SUB>=V<SUB>1</SUB>n<SUB>2</SUB>/V<SUB>2</SUB>","=>V<SUB>2</SUB>=V<SUB>1</SUB>n<SUB>2</SUB>/n<SUB>1</SUB>","=>n<SUB>2</SUB>=V<SUB>2</SUB>n<SUB>1</SUB>/V<SUB>1</SUB>")
seq=new Array(2,1,3,0,3,2,0,3,1,2,1,0)
labels=new Array("V<SUB>1</SUB>","n<SUB>1</SUB>","V<SUB>2</SUB>","n<SUB>2</SUB>")
dimens=new Array("volume","number of moles","volume","number of moles")
units=new Array(" L"," moles"," L"," moles"," mL"," moles"," mL"," moles")
data=new Array()
question=new Array()
question[0]=new parts("A gas system has an initial "," of "," with the "," unknown. When the "," changes to ",", under conditions of constant P and T, the "," is found to be "," What was the initial ","","?")
question[1]=new parts("A gas system has initial volume and moles of "," and ",". If the "," changes to ",", under conditions of constant P and T, what will the resultant "," be ","?")
ansphrase=new parts("First, organize the data converting the quantities into the needed dimensions:<br>","Rearrange Avagadro's Law to solve for the missing quantity<br>","<br>Substitute in the knowns and solve:<br>")
function startit(){
	clear()
	totl++
	document.forms[0].total.value=totl
	//first calculate three values data[0]=V1,data[1]=n1,data[2]=V2,data[4]=n2
	V1=number((10*Math.random()),3,3)
	n1=number((Math.random()),3,3)
	V2=number((10*Math.random()),3,3)
	n2=number((n1*(V2/V1)),3,3)
	//set up arrays with v in L and mL;n is only in moles
	data=new Array()
	data[0]=new Array(V1,number((V1*1000),3,3))
	data[1]=new Array(n1,n1)
	data[2]=new Array(V2,number((V2*1000),3,3))
	data[3]=new Array(n2,n2)
	buildquest()
}
function buildquest(){
	missing=new Array(Math.floor(4*Math.random()),Math.floor(2*Math.random()))
	choose=new Array()
	for(j=0;j<=3;j++)choose[j]=Math.floor(2*Math.random());
	thequest=""
	if(missing[0]==0|| missing[0]==1){
		missing[0]==0?given=1:given=0;
		thequest=question[0].p1+dimens[given]+question[0].p2+data[given][choose[given]]+units[given+4*choose[given]]+question[0].p3+dimens[missing[0]]+question[0].p4+dimens[given]+question[0].p5+data[given+2][choose[given+2]]+units[given+4*choose[given+2]]+question[0].p6+dimens[missing[0]]+question[0].p7+data[missing[0]+2][choose[missing[0]+2]]+units[missing[0]+4*choose[missing[0]+2]]+question[0].p8+dimens[missing[0]]+question[0].p9
		missing[0]==0?thequest+=(" in "+units[missing[0]+4*missing[1]]+question[0].p10):thequest+=question[0].p10;
	}
	else{
		missing[0]==2?given=3:given=2;
		thequest=question[1].p1+data[0][choose[0]]+units[0+4*choose[0]]+question[1].p2+data[1][choose[1]]+units[1+4*choose[1]]+question[1].p3+dimens[given]+question[1].p4+data[given][choose[given]]+units[given+4*choose[given]]+question[1].p5+dimens[missing[0]]+question[1].p6
		missing[0]==2?thequest+=(" in "+units[missing[0]+4*missing[1]]+question[1].p7):thequest+=question[1].p7;
	}
	showquest(thequest);
	buildanswer(data,choose)
}
function buildanswer(data,choose){
	datatable=""
	if(missing[0]==0 || missing[0]==2){pdim=missing[1];vdim=choose[1]}
	else {vdim=missing[1];pdim=choose[0]}
	lines=new Array()
	for(j=0;j<=3;j++){
		if(j==missing[0])lines[j]=labels[j]+"=?(in "+units[missing[0]+4*missing[1]]+")<br>";
		else{
			if(j==0 || j==2){
				choose[j]==pdim?lines[j]=labels[j]+"="+data[j][choose[j]]+units[j+4*choose[j]]+"<br>":lines[j]=labels[j]+"="+data[j][choose[j]]+units[j+4*choose[j]]+"=>"+data[j][pdim]+units[j+4*pdim]+"<br>";
			}
			if(j==1 || j==3){
				lines[j]=labels[j]+"="+data[j][0]+"moles<br>";
			}
		}}
	for(j=0;j<=3;j++)datatable+=lines[j];
	finish=buildeqn()
	theanswer=ansphrase.p1+datatable+ansphrase.p2+avos+avoslaws[missing[0]]+ansphrase.p3+finish
}
function buildeqn(){
	st=3*missing[0]
	finish=data[seq[st]][pdim]+"*"+data[seq[st+1]][vdim]+"/"
	missing[0]==1||missing[0]==3?finish+=data[seq[st+2]][vdim]:finish+=data[seq[st+2]][pdim];
	finish+=("="+data[missing[0]][missing[1]])
	return finish
}
function answer(theans){
	if(tried==1)alert("You've done this one! Get a new problem.");
	else{
	if(tried==2){totl++;document.forms[0].total.value=totl};
	attempts++
	if(theans>.95*data[missing[0]][missing[1]] & theans<1.05*data[missing[0]][missing[1]]){
		document.forms[0].results.value="Correct"
		corrt++
		document.forms[0].correct.value=corrt
		tried=1
	}
	else{
		document.forms[0].results.value="Incorrect"
		tried=2
	}
}}
