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("Vero","Falso")
corr=new Array("1","0")
comm=""
valu=""
quest001 = new Question(
"Domanda 1",
0,
"Una circonferenza si pu&ograve; disegnare se si conoscono centro e raggio",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Vero","Falso")
corr=new Array("0","1")
comm=""
valu=""
quest002 = new Question(
"Domanda 2",
0,
"Il diametro più lungo di una circonferenza è quello che passa per il centro",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Vero","Falso")
corr=new Array("0","1")
comm=""
valu=""
quest003 = new Question(
"Domanda 3",
0,
"In una circonferenza di raggio 10cm non è possibile disegnare una corda di 11cm",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("equilatero","isoscele","rettangolo")
corr=new Array("0","1","0")
comm=""
valu=""
quest004 = new Question(
"Domanda 4",
0,
"In una circonferenza, se si uniscono gli estremi di una corda con il centro si ottiene un triangolo",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Il raggio è la corda più piccola","Il diametro è la corda più lunga")
corr=new Array("0","1")
comm=""
valu=""
quest005 = new Question(
"Domanda 5",
1,
"Quali delle seguenti affermazioni relative a una circonferenza sono vere?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="16"
comm=valu=""
quest006 = new Question(
"Domanda 6",
5,
"Nel disegno seguente, la circonferenza ha raggio 5cm, la corda AB misura 6cm, O è il centro della circonferenza. Calcola il perimetro del triangolo AOB. Scrivi la misura in centimetri, senza riportare l'unità di misura.<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst6_1.PNG\" width=300 height=302 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("secante","esterna","tangente")
corr=new Array("0","0","1")
comm=""
valu=""
quest007 = new Question(
"Domanda 7",
0,
"Quale delle seguenti rette incontra la circonferenza in un solo punto?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("esterno alla circonferenza","interno alla circonferenza","si trova sulla circonferenza","nessuna delle risposte precedenti")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest008 = new Question(
"Domanda 8",
0,
"Un punto P si trova a 10cm dal centro O di una circonferenza C di raggio 11cm. Il punto P è",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("OB è un raggio","CB è un diametro","AB è una corda","OB è una corda")
corr=new Array("1","1","1","0")
comm=""
valu=""
quest009 = new Question(
"Domanda 9",
1,
"Relativamente al disegno, quali affermazioni sono vere?<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst9_1.PNG\" width=263 height=244 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="12"
comm=valu=""
quest010 = new Question(
"Domanda 10",
5,
"Quanti centimetri misura il diametro di una circonferenza che ha il raggio di 6cm? Rispondi con un numero intero senza l'unità di misura.",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("corona circolare","circonferenza esterna","segmento circolare","concentrica")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest011 = new Question(
"Domanda 11",
0,
"Nel seguente segnale stradale, la parte colorata in rosso si chiama<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst11_1.PNG\" width=100 height=147 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("BOA","BPA","EOG","CEG","CGE","COE")
corr=new Array("1","0","1","0","0","1")
comm=""
valu=""
quest012 = new Question(
"Domanda 12",
1,
"Quali angoli della seguente figura sono angoli al centro?<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst12_1.PNG\" width=393 height=357 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="30"
comm=valu=""
quest013 = new Question(
"Domanda 13",
5,
"Relativamente alla seguente figura, sapendo che AOB misura 60&deg;, quanto misura l'angolo ACB? Rispondi con un numero intero senza riportare il simbolo dei gradi.<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst13_1.PNG\" width=374 height=302 border=0>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("tangenti internamente","tangenti esternamente","secanti","esterne","una interna all'altra","concentriche")
corr=new Array("0","1","0","0","0","0")
comm=""
valu=""
quest014 = new Question(
"Domanda 14",
0,
"Una circonferenza ha il diametro di 10cm, un'altra ha il diametro di 16cm. La distanza tra i loro centri è di 13cm. Le due circonferenze sono",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=""
corr="2.5"
comm=valu=""
quest015 = new Question(
"Domanda 15",
6,
"Un tubo di plastica cilindrico, come in figura, ha per sezione una corona circolare. Il diametro esterno del tubo è 16cm. Il diametro interno è 11. Qual è lo spessore della plastica in cm? Riporta la risposta in numero decimale con una cifra dopo la virgola, senza scrivere l'unità di misura.<br><img src=\"http://www.matematicamente.it/test_vari/circonferenza2/wbqst15_1.PNG\" width=281 height=146 border=0>",
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/circonferenza2/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>Circonferenza - II anno scuola di primo grado</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,12,14,15);
maxval=new Array(8,11,13,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 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)}}

