function Question (qname,
type,
qstring,
response,
comment,
corrects,
explan,
score,
ifcorrect,ifwrong,ifnull,
img)
{this.qname=qname;
this.type=type;
this.qstring=qstring;
this.response=response;
this.comment=comment;
this.corrects=corrects;
this.explan=explan;
this.score=score;
this.ifcorrect=ifcorrect;
this.ifwrong=ifwrong;
this.ifnull=ifnull;
this.img=img;
}

var zin=1,top=0, mycount=0, waitTime=3000, qright=0, mycomment;
var global=new Array(3);
var recent, recent2, recdone=false, opera7, opera=CheckOpera56();
function cachewrite(s,idx){global[idx]+=s;}
function CheckOpera56()
{
var version;
if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) return false;
version=parseInt(navigator.appVersion.toLowerCase());
if (version>6) {opera7=true; return false;}
if (version<5) return false;
return true;
}
resp=new Array("due fattori","due prodotti","due rapporti","due numeri")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest001 = new Question(
"Domanda 1",
0,
"Una proporzione è un'uguaglianza tra",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("2 e 15 sono i medi, 10 e 3 sono gli estremi","10 e 3 sono i medi, 2 e 15 sono gli estremi","10 e 15 sono i medi, 2 e 3 sono gli estremi","10 e 2 sono i medi, 15 e 3 sono gli estremi")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest002 = new Question(
"Domanda 2",
1,
"Quali delle seguenti affermazioni sono vere con riferimento alla proporzione<br>10:2=15:3",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("associativa","commutativa","del comporre","dell'invertire","del permutare","del rapporto inverso")
corr=new Array("0","0","1","1","1","0")
comm=""
valu=""
quest003 = new Question(
"Domanda 3",
1,
"Quali delle seguenti sono proprietà delle proporzioni?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans04_1.PNG\" align=\"middle\" width=143 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans14_1.PNG\" align=\"middle\" width=143 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans24_1.PNG\" align=\"middle\" width=144 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans34_1.PNG\" align=\"middle\" width=141 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans44_1.PNG\" align=\"middle\" width=171 height=24 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans54_1.PNG\" align=\"middle\" width=172 height=41 border=0>")
corr=new Array("1","0","1","0","1","0")
comm=""
valu=""
quest004 = new Question(
"Domanda 4",
1,
"Quali delle seguenti proporzioni sono state risolte correttamente?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="100"
comm=valu=""
quest005 = new Question(
"Domanda 5",
3,
"Calcola il termine incognito della seguente proporzione<br>x:10=20:2",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="20"
comm=valu=""
quest006 = new Question(
"Domanda 6",
3,
"Calcola il termine incognito della seguente proporzione<br>8:x=x:50",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="3"
comm=valu=""
quest007 = new Question(
"Domanda 7",
3,
"Calcola il termine incognito della seguente proporzione<br>x:(4,5-x)=16:8",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="12"
comm=valu=""
quest008 = new Question(
"Domanda 8",
3,
"I due lati di un rettangolo sono proporzionali ai numeri 3 e 4, il perimetro del rettangolo misura 56. Quanto misura il lato minore del rettangolo?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("30&deg;, 40&deg;, 60&deg;","30&deg;, 60&deg;, 90&deg;","35&deg;, 45&deg;, 100&deg;","40&deg;, 80&deg;, 60&deg;","50&deg;, 60&deg;, 120&deg;","22&deg;, 44&deg;, 114&deg;")
corr=new Array("0","1","0","0","0","0")
comm=""
valu=""
quest009 = new Question(
"Domanda 9",
0,
"Gli angoli interni di un triangolo sono proporzionali ai numeri 2, 4, 6. Quanto misurano gli angoli?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("5:3","5+3=3+5","5:3=x:5","5:3=10:6")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest010 = new Question(
"Domanda 10",
0,
"Quale dei seguenti è un rapporto tra due numeri?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("x:v=y:w","w:v=y:x","(x+y):v=(v+w):v","w:y=v:x","(x+y):x=(v+w):v","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans511_1.PNG\" align=\"middle\" width=72 height=17 border=0>")
corr=new Array("1","1","0","1","1","0")
comm=""
valu=""
quest011 = new Question(
"Domanda 11",
1,
"Se x:y=v:w, quali delle seguenti uguaglianze sono vere?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="6"
comm=valu=""
quest012 = new Question(
"Domanda 12",
3,
"Calcola il termine incognito della seguente proporzione<br>(11-x):10=x:12",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="20"
comm=valu=""
quest013 = new Question(
"Domanda 13",
3,
"Calcola il valore di x nella seguente proporzione<br>x:y=10:9, sapendo che x+y=38",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("3","2","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans214_1.PNG\" align=\"middle\" width=16 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans314_1.PNG\" align=\"middle\" width=23 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans414_1.PNG\" align=\"middle\" width=16 height=41 border=0>","<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbans514_1.PNG\" align=\"middle\" width=24 height=41 border=0>")
corr=new Array("0","0","1","0","0","0")
comm=""
valu=""
quest014 = new Question(
"Domanda 14",
0,
"<img src=\"http://www.matematicamente.it/test_vari/proporzioni/wbqst14_1.PNG\" align=\"middle\" width=65 height=41 border=0><br>Il valore di x nella seguente proporzione &egrave;<br>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("375 m","3,75km","60km","37,5km")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest015 = new Question(
"Domanda 15",
0,
"La distanza tra due carte località su una carta geografica è 2,5cm. Sapendo che la scala della carta è 1:150000, qual è la distanza reale tra le due località?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

questions = new Array (
quest001,quest002,quest003,quest004,quest005,quest006,quest007,quest008,quest009,quest010,quest011,quest012,quest013,quest014,quest015)

function doQuestion(quest)
{
var numdo;
var numord=eval(quest+1);
var i=-1, ii, type, myname, gadget;
type=questions[quest].type;
numdo=type>=3?1:questions[quest].response.length;
if (type<3) {
respcopy=new Array(numdo);corrcopy=new Array(numdo);
for (i=0; i<numdo; i++) respcopy[i]=questions[quest].response[i];
respcopy.sort(myrandom);
for (i=0; i<numdo; i++) {
for (ii=0; ii<numdo; ii++) {
if (respcopy[i]==questions[quest].response[ii]) {
corrcopy[i]=questions[quest].corrects[ii];break;}}}
questions[quest].response=respcopy;
questions[quest].corrects=corrcopy;}

document.writeln ("<a name=\""+questions[quest].qname+"\"></a>")
document.write("\n")
document.write("  <tr>\n")
document.write("    <td>\n")
document.write("      <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" onmouseover=\"this.className='graybg'\" onmouseout=\"this.className='whitebg'\">\n")
document.write("      <tr height=5>\n")
document.write("        <td colSpan=5></td>\n")
document.write("      </tr>\n")
document.write("      <tr>\n")
document.write("        <td width=\"5%\" rowspan=\"3\"></td>\n")
document.write("        <td class=\"numord\" width=\"9%\" rowspan=\"3\" valign=\"top\" align=\"center\"><font face=\"Verdana\" size=\"7\" color=\"#C0C0C0\">")
document.write(numord)
document.write("</font></td>\n")
document.write("        <td width=\"1%\" rowspan=\"3\" background=\"http://www.matematicamente.it/test_vari/proporzioni/s_vline.gif\">&nbsp;</td>\n")
document.write("        <td width=\"80%\" class=\"question\" valign=\"top\">\n")
document.write("         ")
if (questions[quest].img!="") {
document.write("\n")
document.write("         <img border=\"0\" hspace=\"10\" vspace=\"0\" align=\"left\" src=\"")
document.write(questions[quest].img)
document.write("\">\n")
document.write("         ")
}
document.write("\n")
document.write("          ")
document.writeln(questions[quest].qstring)
document.write("\n")
document.write("        </td>\n")
document.write("        <td width=\"5%\"></td>\n")
document.write("      </tr>\n")
document.write("      <tr height=10>\n")
document.write("        <td width=\"80%\"></td>\n")
document.write("        <td width=\"5%\"></td>\n")
document.write("      </tr>\n")
document.write("      <tr>\n")
document.write("        <td width=\"80%\" class=\"answer\">\n")
document.write("          ")
for (i=0; i<numdo; i++) {
myname=questions[quest].qname;
gadget="radio";
if (type>=3) gadget="text";
else if (type==1) {
myname+="_"+(i<9?"0":"")+(i+1);
gadget="checkbox";}
document.write("\n")
document.write("          ")
document.write(type==7?"<textarea name=\""+myname+"\" rows=5 cols=30 class=\"input\">":" <input type="+gadget+" name=\""+myname);
if (type<3) document.write("\" value=\""+i+"\">\n")
else document.write(type==7?"</textarea>":"\" class=\"input\" value=\"\">\n")
if (type<3) document.write(questions[quest].response[i]);
document.write("<br>\n")
document.write("          ")
}
document.write("\n")
document.write("        </td>\n")
document.write("        <td width=\"5%\"></td>\n")
document.write("      </tr>\n")
document.write("      <tr height=5>\n")
document.write("        <td colSpan=5></td>\n")
document.write("      </tr>\n")
document.write("      </table>\n")
document.write("    </td>\n")
document.write("  </tr>\n")
document.write("  <tr height=10>\n")
document.write("    <td>&nbsp;</td>\n")
document.write("  </tr>\n")
document.write("  ")
}
function doTest() {
var count, i;

count=questions.length;
for (i=0; i<count; i++) doQuestion(i);
}
function fill(s,l){
s=s+""
for (y=1;y<=l;y++)
if (s.length>=l) break; else s="0"+s;
return s
}
function CheckQName(wapf,ii,i,multi,selection){
var len;
if (!multi) return(wapf.elements[ii].name==questions[i].qname);
len=questions[i].qname.length;
if (wapf.elements[ii].name.substring(0,len)!=questions[i].qname) return false;
if (wapf.elements[ii].name.substring(len,len+1)!="_") return false;
if (eval(wapf.elements[ii].name.substring(len+1,len+3))==(selection+1)) return true;
return false;
}
function errore(uno,due,tre)
{
if (!errori) global[1]="<H3>Hai commesso i seguenti errori</H3>";
++errori;
cachewrite("<p><b>"+uno+"</b><br>"+due+"<br>"+mycomment+tre+"</p>",2);
mycomment="";
}
function testIE5plus(){
var pos=navigator.appVersion.lastIndexOf('MSIE ');
if (pos != -1) {
pos+=5;
if (eval(navigator.appVersion.charAt(pos))>4)
return true;}
return false;}
function correct(wapf)
{
var i, ii, t, re, tmp, selection, multi, multipage=0, type, isnull, iswrong, iscorrect, evaluation=0, total=0, udat;
errori=waitTime=0;
udat=new Array();
for (i=0, ii=0; i<wapf.elements.length; i++)
{tmp=wapf.elements[i];
if (tmp.name.substring(0,13)=="Quiz.UserData"){
t=tmp.name.substring(14,tmp.name.length);
re=new RegExp("_", "g");
t=t.replace(re," ");
udat[ii++]=t+": <i>"+tmp.value+"</i><br>";
if (opera) tmp.value="";}}
global[0]=global[2]="";
global[1]="<h3>Complimenti, non hai commesso alcun errore</h3>";
cachewrite("<html><head><title>Risultati</title><BASE target='_blank'></head><body bgcolor='#FFFFFF'><font face='Verdana, Arial'><table border=0 cellpadding=0 cellspacing=0 width='100%' bgcolor='#C0C0C0'><tr><td width='100%'><font face='Verdana, Arial' size=5 color='#FFFFFF'><b>&nbsp;Risultati</b></font></td></tr></table>",0)
now= new Date()
cachewrite("<small><p>"+fill(now.getDate(),2)+"/"+fill((now.getMonth()+1),2)+"/"+now.getYear()+"&nbsp;&nbsp;"+fill(now.getHours(),2)+":"+fill(now.getMinutes(),2)+"</p>",0)
cachewrite("<b>Rapporti e proporzioni</b><br><br>\n",0);
if (udat.length>0) {
cachewrite("<b>Dati utente</b><br>\n",0);
for (i=0; i<udat.length; i++) cachewrite(udat[i],0);}
if (opera7 && multipage) {
for (i=0; i<questions.length; i++) {
id=document.getElementById("q"+(i+1));
id2=document.getElementById("q"+(i+1)+"a");
id.style.display=id2.style.display="block";}}

for (i=0; i<questions.length; i++) {
if (opera && multipage) {
id=document.getElementById("q"+(i+1));
id2=document.getElementById("q"+(i+1)+"a");
id.style.visibility=id2.style.visibility="visible";}
type=questions[i].type;
if (type==1) multi=1;
else multi=0;
isnull=true;
iscorrect=false;iswrong=false;
selection=0;
evaluation=0;
mycomment="";
for (ii=0; ii<wapf.elements.length; ii++) {
if (CheckQName(wapf,ii,i,multi,selection)) {
if (type>=3 && wapf.elements[ii].value!="") {
isnull=false;
if (wapf.elements[ii].value.toLowerCase()==questions[i].corrects.toLowerCase()) iscorrect=true;
else iswrong=true;
++selection;}
else if (wapf.elements[ii].checked) {
if (questions[i].score!="") evaluation+=questions[i].score[selection];
if (isnull) isnull=false;
if (questions[i].corrects[selection]=="1") iscorrect=(iswrong==false)?true:false;
else {
iswrong=true;
if (multi && questions[i].corrects!='') errore(questions[i].qname,"La casella  <i>"+questions[i].response[selection]+"</i>  non andava selezionata.",questions[i].explan)
}
if (questions[i].comment!="" && questions[i].comment[selection]!="")
mycomment+=((iscorrect || questions[i].corrects=='')?"<b>"+questions[i].qname+"</b><br>":"")+"<small>"+questions[i].comment[selection]+"</small><br>";
} else {
if (questions[i].corrects[selection]=="1") {
iswrong=true;
if (multi && questions[i].corrects!='') errore(questions[i].qname,"La casella  <i>"+questions[i].response[selection]+"</i>  andava selezionata.",questions[i].explan);
}}
++selection;
}}
if (multi==false && (isnull || iswrong)) {
var okresp="", z;
if (type>=3) okresp=questions[i].corrects;
else {
for (z=0; z<questions[i].corrects.length; z++) {
if (questions[i].corrects[z]==1) {
okresp=questions[i].response[z];
break;
}}}
if (okresp!="") errore(questions[i].qname,"La risposta corretta era <i>"+okresp+".</i>",questions[i].explan);
}
if (mycomment!="") cachewrite(mycomment,2);
if (questions[i].corrects!="") ++qright;
if (isnull) evaluation+=questions[i].ifnull;
else if (iswrong) evaluation+=questions[i].ifwrong;
else if (iscorrect) evaluation+=questions[i].ifcorrect;
total+=evaluation;}
if (qright==0) global[1]="<br>";
if (errori) cachewrite("<br><b>In totale hai commesso "+errori+" "+(errori==1?"errore":"errori")+".</b>",2);
cachewrite("<br><b>Punteggio totale realizzato: "+total+".</b><br>",2);

cachewrite("<br><b>Valutazione:</b><br>"+GetEval(total)+"<br>",2);
cachewrite("</small><hr noshade><center><form>",2)
printest=(((navigator.appName=="Netscape") && (navigator.appVersion.charAt(0)>="4")) || (testIE5plus() == true))? "print()": "alert('Questo pulsante funziona soltanto con Netscape Navigator 4 o Microsoft Internet Explorer 5 (o versioni successive). Per stampare con gli altri browser, seleziona il comando Stampa nel menu File.')"
cachewrite("<input type='button' value='Stampa...' onClick='"+printest+"'>&nbsp;&nbsp;&nbsp;&nbsp;",2)
cachewrite("<input type='button' value='Chiudi questa finestra' onClick='window.close()'></form></center>",2)
winr=window.open('','wapres', 'titlebar=1,location=0,directories=0,menubar=1,toolbar=0,scrollbars=1,resizable=1,status=1')
for (i=0; i<3; i++) winr.document.write(global[i]);winr.document.close()
if ((opera || opera7) && multipage) {
document.forms[0].elements[0].value='Stampa...';
document.forms[0].elements[1].value='Chiudi questa finestra';
for (i=0; i<questions.length-1; i++) {
id=document.getElementById("q"+(i+1));
id2=document.getElementById("q"+(i+1)+"a");
opera?id.style.visibility=id2.style.visibility="hidden":id.style.display=id2.style.display="none";}}
}
function myrandom(a,b)
{
var rc;
do {rc=Math.floor(Math.random()*3)-1;} while (rc==2);
return(rc);
}
function GetEval(total)
{
var minval, maxval, valstr, top, i;
minval=new Array(0,6,9,13,15);
maxval=new Array(5,8,12,14,15);
valstr=new Array("INSUFFICIENTE","SUFFICIENTE","DISCRETO","BUONO","ECCELLENTE","non disponibile.");
top=minval.length;
for (i=0;i<top;i++) if (total>=minval[i] && total<=maxval[i]) break;
return(valstr[i]);}
function update_time(t) {
self.status=t;}
function stms(s){
if (Math.abs(tmMx)>=3600){
h=Math.floor(s/3600);m=Math.floor((s%3600)/60);s=((s%3600)%60);return fill(h,2)+':'+fill(m,2)+':'+fill(s,2);
}else{m=Math.floor(s/60);s=s%60;return fill(m,2)+':'+fill(s,2);}}
function shtm(t){
tmVl=t+1;update_time(stms(Math.abs(t)))
if (waitTime==0) return;
tmId = setTimeout('shtm(tmVl)',1000)
if (t==((tmMx>0)? tmMx : 0)){
clearTimeout(tmId)
alert('Il tempo è scaduto! Si procede alla correzione.')

correct(document.WapForm)}}
function checkTime(){
tmMx=-waitTime;
if (tmMx!=0){
alert('Il tempo a disposizione per completare il questionario è: '+stms(Math.abs(tmMx))+'\n\nPuoi controllare il cronometro.');
shtm((tmMx>0) ? 0 : tmMx)}}

