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=new Array("14 metres","19 metres","25 metres","30 metres")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest001 = new Question(
"Question 1",
0,
"What is the braking distance when travelling at 30mph?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("60 metres","65 metres","70 metres","73 metres")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest002 = new Question(
"Question 2",
0,
"How long would it take you to stop at 60mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Double","Treble","Quadruple","Ten times greater")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest003 = new Question(
"Question 3",
0,
"How would the rain or a wet road surface affect your stopping distance?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("30 mph","40 mph","50 mph","60 mph")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest004 = new Question(
"Question 4",
0,
"You are towing a small caravan on a dual carriageway. You must not exceed",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("53 metres","62 metres","68 metres","70 metres")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest005 = new Question(
"Question 5",
0,
"How long would it take to stop at 50mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("87 metres","96 metres","102 metres","109 metres")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest006 = new Question(
"Question 6",
0,
"How long would it take you to stop at 70 mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("30 mph","40 mph","50 mph","60 mph")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest007 = new Question(
"Question 7",
0,
"What is the speed limit in a built up area?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("30 mph","40 mph","50 mph","60 mph","70 mph")
corr=new Array("0","0","0","1","0")
comm=""
valu=""
quest008 = new Question(
"Question 8",
0,
"What is the speed limit on an unrestricted single carriageway?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("10 metres","12 metres","18 metres","21 metres")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest009 = new Question(
"Question 9",
0,
"How long would it take you to stop at 20 mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("18 metres","23 metres","32 metres","37 metres")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest010 = new Question(
"Question 10",
0,
"How long would it take you to stop at 30 mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("50 mph","60 mph","70 mph","80 mph")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest011 = new Question(
"Question 11",
0,
"What is the speed limit on an unrestricted dual carriageway?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("20 mph","30 mph","40 mph","50 mph")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest012 = new Question(
"Question 12",
0,
"What is the speed limit in a built up area when towing a trailer or caravan?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("40 mph","50 mph","60 mph","70 mph")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest013 = new Question(
"Question 13",
0,
"What is the speed limit on a motorway whilst towing a trailer or caravan?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("28 metres","32 metres","36 metres","41 metres")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest014 = new Question(
"Question 14",
0,
"How long would it take you to stop at 40 mph in good dry conditions?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Double it","Treble it","Make it 5 times greater","Make it 10 times greater")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest015 = new Question(
"Question 15",
0,
"How would snow or ice affect your stopping distance?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("2 metres","3 metres","4 metres","5 metres")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest016 = new Question(
"Question 16",
0,
"Stopping distances are made up from thinking distance plus braking distance. For every 10 mph of speed what is your thinking distance?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("14 metres (46 feet)","24 metres (80 feet)","38 metres (125 feet)","55 metres (180 feet)")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest017 = new Question(
"Question 17",
0,
"Overall stopping distance is made up of thinking and braking distance. You are on a good, dry road surface with good brakes and tyres. What is the typical BRAKING distance at 50 mph?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("In the rain","In fog","At Night","In strong winds")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest018 = new Question(
"Question 18",
0,
"Overall stopping distance will be much longer when driving",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("8 mph","12 mph","16 mph","20 mph")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest019 = new Question(
"Question 19",
0,
"Powered vehicles, such as wheelchairs or scooters, used by disabled people have a maximum speed of",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Local speed limit applies","No waiting on the carriageway","National speed limit applies","No speed limit applies")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest020 = new Question(
"Question 20",
0,
"What is the meaning of this sign?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"national-speed-limit.gif");

resp=new Array("By hazard warning lines","By street lighting","By pedestrian islands","By double or single yellow lines")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest021 = new Question(
"Question 21",
0,
"There are no speed limit signs on the road. How is a 30 mph speed limit indicated?",
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,quest021)

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;


document.writeln ("<a name=\""+questions[quest].qname+"\"></a>")
document.write("\n")
document.write("    <tr>\n")
document.write("      <td width=\"5%\" align=\"center\" valign=\"top\" bgcolor=\"#E6E6FF\"><font face=\"Verdana\"\n")
document.write("      color=\"#000080\"><strong><small>")
document.write(numord)
document.write("</small></strong></font></td>\n")
document.write("      <td width=\"95%\" valign=\"top\" bgcolor=\"#F4F4FF\"><font face=\"Verdana\"><font color=\"#000080\"><strong><small>\n")
document.write("      ")
if (questions[quest].img!="") {
document.write("\n")
document.write("         <img border=\"0\" hspace=\"10\" vspace=\"5\" 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("</small></strong></font><br>\n")
document.write("      <br><small><small>\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("      </small></small></font></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>You have made the following errors</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>Congratulations, you haven't made any errors</h3>";
cachewrite("<html><head><title>Results</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;Results</b></font></td></tr></table>",0)
now= new Date()
cachewrite("<small><p>"+fill((now.getMonth()+1),2)+"/"+fill(now.getDate(),2)+"/"+now.getYear()+"&nbsp;&nbsp;"+fill(now.getHours(),2)+":"+fill(now.getMinutes(),2)+"</p>",0)
cachewrite("<b>Stopping distances and speed limit test</b><br><br>\n",0);
if (udat.length>0) {
cachewrite("<b>Information</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,"The checkbox  <i>"+questions[i].response[selection]+"</i>  shouldn't have been selected.",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,"The checkbox  <i>"+questions[i].response[selection]+"</i>  should have been selected.",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,"The right answer was <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>You have made "+errori+" "+(errori==1?"error":"errors")+".</b>",2);
cachewrite("<br><b>Total score: "+total+".</b><br>",2);

cachewrite("</small><hr noshade><center><form>",2)
printest=(((navigator.appName=="Netscape") && (navigator.appVersion.charAt(0)>="4")) || (testIE5plus() == true))? "print()": "alert('This button can be used with Netscape Navigator 4 or Microsoft Internet Explorer 5 only. If you want to print with other browsers, please select the Print command in the File menu.')"
cachewrite("<input type='button' value='Print...' onClick='"+printest+"'>&nbsp;&nbsp;&nbsp;&nbsp;",2)
cachewrite("<input type='button' value='Close' 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='Print...';
document.forms[0].elements[1].value='Close';
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>Created and managed with <a title='Click here to visit WebQuiz site' href='http://www.smartlite.it/go.asp?OLDLP' target = '_blank'>SmartLite WebQuiz</a></small></small></p>"
