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("capacità","volume","peso","lunghezza")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest001 = new Question(
"Domanda 1",
0,
"Quale grandezza si può misurare dell'altezza di una persona?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("capacità","volume","lunghezza","larghezza")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest002 = new Question(
"Domanda 2",
0,
"Quale grandezza si può misurare del latte?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("peso","profumo","colore","volume","temperatura","gusto")
corr=new Array("1","0","0","1","1","0")
comm=""
valu=""
quest003 = new Question(
"Domanda 3",
1,
"Quali delle seguenti caratteristiche di una torta sono grandezze misurabili?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("dire a quale numero corrisponde","stabilire quanto è grande","confrontarla con una unità di misura","confrontarla con più grandezze omogenee")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest004 = new Question(
"Domanda 4",
0,
"Misurare una grandezza significa",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("volume","massa","lunghezza","temperatura")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest005 = new Question(
"Domanda 5",
0,
"A quale grandezza si riferisce l'unità di misura g (grammo)",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("volume","capacità","massa","lunghezza")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest006 = new Question(
"Domanda 6",
0,
"A quale grandezza si riferisce l'unità di misura km?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="100"
comm=valu=""
quest007 = new Question(
"Domanda 7",
3,
"Quanti centimetri ci sono in un metro? Indicane il numero",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("1","10","100","1000")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest008 = new Question(
"Domanda 8",
0,
"Quanti litri corrispondono a 1 metrocubo?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("lunghezza del piede - distanza percorsa","età - durata di un film","volume di un libro - peso del libro","lunghezza del piede - peso della persona","volume della benzina - velocità della macchina","altezza di una persona - lunghezza dell'autostrada")
corr=new Array("1","1","0","0","0","1")
comm=""
valu=""
quest009 = new Question(
"Domanda 9",
1,
"Quali delle seguenti coppie di grandezze sono omogenee",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("moltiplica per 100","moltiplica per 1000","divide per 10","divide per 1000")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest010 = new Question(
"Domanda 10",
0,
"Per trasformare da millimetri a metri si",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("3","2","3,5","7")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest011 = new Question(
"Domanda 11",
0,
"Quante unità u misura il segmento AB?<br><img src=\"http://www.matematicamente.it/test_vari/misura_grandezze_geometria/wbqst11_1.PNG\" width=352 height=83 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("23 cm","203 cm","230 cm","320 cm")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest012 = new Question(
"Domanda 12",
0,
"A quanti centimetri corrispondono 2m e 30mm?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("1m<sup>2</sup>","10dm<sup>2</sup>","1dm<sup>2</sup>","0,1m<sup>2</sup>")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest013 = new Question(
"Domanda 13",
0,
"100 cm<sup>2</sup> corrispondono a",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("g","ha","m","m<sup>3</sup>")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest014 = new Question(
"Domanda 14",
0,
"Quale delle seguenti unità può essere utilizzata per misurare il volume?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("ps=P:V","ps=PxV","ps=V:P","<img src=\"http://www.matematicamente.it/test_vari/misura_grandezze_geometria/wbans315_1.PNG\" align=\"middle\" width=84 height=25 border=0>")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest015 = new Question(
"Domanda 15",
0,
"Quali delle seguenti formule relativa al calcolo del peso specifico è corretta?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("10hg","100hg","1000hg","10000hg")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest016 = new Question(
"Domanda 16",
0,
"100kg=",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("2m","20m","200m","2000m")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest017 = new Question(
"Domanda 17",
0,
"0,2km=",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("0,201cm","201cm","21dm","20,01cm")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest018 = new Question(
"Domanda 18",
0,
"0,2m+0,01cm=",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("45cm=4,5m","1,5 dal=15 l","0,1cm<sup>3</sup>=100mm<sup>3</sup>","355km=0,355m")
corr=new Array("0","1","1","0")
comm=""
valu=""
quest019 = new Question(
"Domanda 19",
1,
"Quali delle seguenti eguaglianze sono corrette?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="590"
comm=valu=""
quest020 = new Question(
"Domanda 20",
5,
"Con 82 dal di birra si riempiono 25 barili di 25 litri ciascuno. La parte di birra rimanente viene imbottigliata in lattine da 33cl. Quante lattine di birra si riempiono interamente?",
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,quest016,quest017,quest018,quest019,quest020)

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/misura_grandezze_geometria/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; i<questions.length; i++) {
for (ii=0; ii<wapf.elements.length; ii++) {
if (questions[i].type>3 && questions[i].type<7 && CheckQName(wapf,ii,i,multi,selection)) {
if (InputCheck(wapf.elements[ii],questions[i].type-4)==false) return;}}}
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>Misura delle grandezze</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,9,13,17,20);
maxval=new Array(8,12,16,19,20);
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 InputCheck(elem,format)
{
var mes, oks, checkOK, checkStr, nam, allValid;
checkStr=elem.value;
nam=elem.name;
mes=new Array("Inserire solo lettere e spazio nel campo ","Inserire solo cifre nel campo ","Inserire un numero valido nel campo ");
oks=new Array("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f","0123456789-","0123456789-.");
checkOK=oks[format]
allValid=true
for (i = 0;  i < checkStr.length;  i++)
{ ch = checkStr.charAt(i);
for (j = 0;  j < checkOK.length;  j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{allValid = false;break;}}
if (!allValid)
{alert(mes[format]+nam);elem.focus();return (false);}
return (true);
}
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)}}

