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=2400, 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("80 mph","70 mph","60 mph","50 mph")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest001 = new Question(
"Question 1",
0,
"What is the national speed limit for cars and motorcycles when travelling in the right-hand lane of a motorway?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Give way to the pedestrian","Continue ahead","Move on as soon as the lights turn green","Beep your horn at the pedestrian")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest002 = new Question(
"Question 2",
0,
"You stop at a pelican crossing. The amber light begins to flash as a pedestrian steps onto the crossing. You should",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Driving with your headlights on full beam.","Bumping another car whilst parking","Following another vehicle too closely","Skidding on a dry road")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest003 = new Question(
"Question 3",
0,
"What does tailgating mean?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Red","Flashing amber","Green","Steady amber")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest004 = new Question(
"Question 4",
0,
"At a puffin crossing which light won't you see?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Reduce oil consumption","Reduce fuel consumption","Reduce toxic exhaust gases","Increase acceleration")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest005 = new Question(
"Question 5",
0,
"The purpose of a catalytic converter is to",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Tap water","Battery acid","Distilled water","Water that has been boiled")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest006 = new Question(
"Question 6",
0,
"When the fluid level in your battery is low you should top it up with",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("5 mm","1.6 mm","2.6 mm","4 mm")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest007 = new Question(
"Question 7",
0,
"The legal minimum depth of tread for car tyres over three quarters of the bredth is",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("On a cold morning","Every 5000 miles","Before starting a long journey","Before an MOT test")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest008 = new Question(
"Question 8",
0,
"When should you especially check the engine oil level?<br>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Damaged brakes","Driving too fast","The weather","The driver")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest009 = new Question(
"Question 9",
0,
"What is the main cause of skidding?<br>",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("16 metres","14 metres","38 metres","25 metres")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest010 = new Question(
"Question 10",
0,
"In normal conditions the braking distance when travelling at 50 mph is",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("5 metres","8 metres","10 metres","15 metres")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest011 = new Question(
"Question 11",
0,
"What is the nearest you can park your vehicle to a junction?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Bicycles","Buses","Lorries","Motorcycles")
corr=new Array("1","0","0","1")
comm=""
valu=""
quest012 = new Question(
"Question 12",
1,
"Which TWO should you allow extra room when overtaking?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("When approaching a roundabout","On narrow road","Just before you turn left","On a right hand bend")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest013 = new Question(
"Question 13",
0,
"You should never attempt to overtake a cyclist",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Steer into it","Steer away from it","Brake hard and not steer at all","Remove your hand's from the steering wheel and let the vehicle steer itself")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest014 = new Question(
"Question 14",
0,
"How should you correct a rear wheel skid?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Red","Green","Orange","Blue")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest015 = new Question(
"Question 15",
0,
"What colour are the reflective studs between a motorway and its slip road?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Immediately","After 14 days","When you sell the vehicle","Before an MOT")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest016 = new Question(
"Question 16",
0,
"After buying a secondhand vehicle you should tell the licensing authority",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("To tell you that they are giving way to you","To warn you danger is ahead","To warn you when you're breaking the speed limit","To warn you of their presence")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest017 = new Question(
"Question 17",
0,
"In what situation are other drivers allowed to flash their headlights at you?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("In a garage","On a quiet side street","On a drivway","In a carpark")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest018 = new Question(
"Question 18",
0,
"The safest place to park your vehicle at night is",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("70 mph","60 mph","50 mph","40 mph")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest019 = new Question(
"Question 19",
0,
"What is the national speed limit for towing a trailor on a motorway?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Sound your horn and flash your lights","Steer around them and drive on","Be patient and wait for them to move on","Shout instructions")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest020 = new Question(
"Question 20",
0,
"A learner driver you are following stalls at a junction. What should you do?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Remove the safety helmet","Move them to the pavement","Seek medical assistance")
corr=new Array("0","0","1")
comm=""
valu=""
quest021 = new Question(
"Question 21",
0,
"An injured motorcyclist is lying unconscious in the road. You should",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Listening to loud music","Looking at road maps","Reading road signs","Adjusting the temperature control")
corr=new Array("1","1","0","0")
comm=""
valu=""
quest022 = new Question(
"Question 22",
1,
"Which TWO are most likely to make you lose concentration while driving?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("To slow traffic down","To prevent junctions becoming blocked by queuing traffic","To speed traffic up","To stop you turning right at a crossroads")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest023 = new Question(
"Question 23",
0,
"The main purpose of a box junction is",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Seven times","Five times","Four times","Ten times")
corr=new Array("0","0","0","1")
comm=""
valu=""
quest024 = new Question(
"Question 24",
0,
"In freezing conditions you should expect stopping distances to increase by up to",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Have the brakes checked immediately","Check the brake fluid level","Check the handbrake is working","Perform an emergency stop")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest025 = new Question(
"Question 25",
0,
"Your anti-lock brakes warning light stays on. What should you do?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("The area covered by the rear view mirror","The area covered by your left mirror","An area not seen in your mirrors","An area immediately behind the car")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest026 = new Question(
"Question 26",
0,
"For a driver, what doe the term Blind Spot mean?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Sidelights","Dipped headlights","Full beam headlights","Interior light")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest027 = new Question(
"Question 27",
0,
"You are driving on a clear night. The road is busy with traffic. Which lights should you use?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Staying in high gears","Aggressive braking","Driving above 50 mph","Poor steering control")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest028 = new Question(
"Question 28",
0,
"What is most likely to cause high fuel consumption?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Poor acceleration","The tyres to wear out","The steering to vibrate","Poor braking")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest029 = new Question(
"Question 29",
0,
"Unbalanced wheels on a car may cause",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("The steering","The braking","The fuel consumption","The suspension")
corr=new Array("1","1","0","0")
comm=""
valu=""
quest030 = new Question(
"Question 30",
1,
"In very hot weather the road surface can get soft. Which TWO of the following will be affected most.",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("On their own","On a dual carriageway","At night","On a motorway")
corr=new Array("1","0","0","1")
comm=""
valu=""
quest031 = new Question(
"Question 31",
1,
"A provisional license holder must not drive a motor car<br><br>Mark two answers.",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Continue as normal","Be prepared to stop","Slow down and give them plenty of room","Warn them of your presence by sounding your horn")
corr=new Array("0","1","1","0")
comm=""
valu=""
quest032 = new Question(
"Question 32",
1,
"You are appraoching a roundabout. Just ahead of you are there are horses. Which TWO should you do?",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Doubled","Tripled","Up to 15 times greater","Quadrupled")
corr=new Array("1","0","0","0")
comm=""
valu=""
quest033 = new Question(
"Question 33",
0,
"You are travelling in heavy rain. Your overall stopping distance is likely to be",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("Keep your rear fog light on","Use your headlights on dipped beam","Switch off your fog lights","Use your windscreen wipers")
corr=new Array("0","0","1","0")
comm=""
valu=""
quest034 = new Question(
"Question 34",
0,
"After driving out of fog and when visibility has returned to normal, you must",
resp,
comm,
corr,
"",
valu,
1,
0,
0,
"");

resp=new Array("In a one-way street","At a bus stop","Near a police station","In a country lane")
corr=new Array("0","1","0","0")
comm=""
valu=""
quest035 = new Question(
"Question 35",
0,
"In which place must you NOT park?",
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,quest022,quest023,quest024,quest025,quest026,quest027,quest028,quest029,quest030,quest031,quest032,quest033,quest034,quest035)

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>Mock Theory Test #3</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>"
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('Time is over, correcting questionnaire now.')

correct(document.WapForm)}}
function checkTime(){
tmMx=-waitTime;
if (tmMx!=0){
alert('Time to complete your questionnaire is: '+stms(Math.abs(tmMx))+'\n\nPlease check time count.');
shtm((tmMx>0) ? 0 : tmMx)}}
