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=0, 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=""
corr="Cocco"
comm=valu=""
quest001 = new Question(
"Domanda 1",
4,
"<img src=\"wbqst1_1.PNG\" width=84 height=84 border=0>",
resp,
comm,
corr,
"<small><img src=\"wbexp1_1.PNG\" width=150 height=230 border=0></small>",
valu,
1,
0,
0,
"");

questions = new Array (
quest001)

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.write("<br/><span class=\"ClassQuizNumeroDomanda\">Domanda nr&deg;"+numord+"</span><br/>");

//document.write("<a name=\""+questions[quest].qname+"\"></a><br/>");

//document.write("\n")

document.write(questions[quest].qstring)

document.write("<br/><br/>")

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("<div class=\"ClassQuizInputRisposta\">")

document.write(type==7?"<textarea name=\""+myname+"\" rows=5 cols=30 class=\"FormElementVuoto\">":" <input size=\"45\" type="+gadget+" name=\""+myname);

if (type<3) document.write("\" value=\""+i+"\" class=\"FormElementVuoto\">\n")

else document.write(type==7?"</textarea>":"\" class=\"FormElementVuoto\" value=\"\">\n")

document.write("</div>\n")

document.write("<div class=\"ClassQuizInputTestoRispostaLibera\">")

if (type<3) document.write(questions[quest].response[i]);

document.write("</div>\n")
document.write("<br class=\"ClearFloat\" />\n")

}


document.write("<div class=\"ClassSeparatoreCentrale\" ></div>\n")


}

function doTest() {

var count, i;

questions.sort(myrandom);

for (i=0; i<questions.length; i++) {

questions[i].qname="Domanda "+(i+1);}

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>Picture Quiz</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("</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)

cachewrite(aknw,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";}}

}

aknw="<br><p align='center'><small><small>Creato e gestito con SmartLite WebQuiz</small></small></p>"

function myrandom(a,b)

{

var rc;

do {rc=Math.floor(Math.random()*3)-1;} while (rc==2);

return(rc);

}

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);

}
